]> Creatis software - bbtk.git/blobdiff - packages/std/src/bbstdFilesFromDirectory.cxx
*** empty log message ***
[bbtk.git] / packages / std / src / bbstdFilesFromDirectory.cxx
index e91ef23898cf5190eccc0aebbf930ab8c315c42a..9b7ac504d77f59f9be6998fdff5a316fa5d174d8 100644 (file)
@@ -1,5 +1,6 @@
 #include "bbstdFilesFromDirectory.h"
 #include "bbstdPackage.h"
+#include <string>
 
 #ifdef _MSC_VER
    #include <windows.h>
@@ -19,32 +20,29 @@ BBTK_BLACK_BOX_IMPLEMENTATION(FilesFromDirectory,bbtk::AtomicBlackBox);
 
 void FilesFromDirectory::Process()
 {
-
    DirName = bbGetInputIn();
    bool rec = bbGetInputRecursive();
    /*int nbFiles = */ Explore(DirName, rec);
-   bbSetOutputOut(Filenames);
+   bbSetOutputOut(Filenames);   
    
-  
+//  for (int i=0; i<Filenames.size(); i++)
+//     std::cout << "Filenames [" << i << "] = [" << Filenames[i] << "]" << std::endl;  
 }
-void FilesFromDirectory::bbUserConstructor()
-{
 
+void FilesFromDirectory::bbUserSetDefaultValues()
+{
     bbSetInputIn(".");
-    bbSetInputRecursive(false);
-  
+    bbSetInputRecursive(false);  
 }
-void FilesFromDirectory::bbUserCopyConstructor(bbtk::BlackBox::Pointer)
-{
 
-  
+void FilesFromDirectory::bbUserInitializeProcessing() 
+{ 
 }
-void FilesFromDirectory::bbUserDestructor()
-{
 
-  
+void FilesFromDirectory::bbUserFinalizeProcessing() 
+{
 }
-
+  
 /**
  * \brief   Add a SEPARATOR to the end of the name if necessary
  * @param   pathname file/directory name to normalize 
@@ -92,12 +90,21 @@ int FilesFromDirectory::Explore(std::string const &dirpath, bool recursive)
          // Need to check for . and .. to avoid infinite loop
          if ( fileName != "." && fileName != ".." && recursive )
          {
-            numberOfFiles += Explore(dirName+fileName,recursive);
+            numberOfFiles += Explore(dirName+fileName, recursive);
          }
       }
       else
       {
-         Filenames.push_back(dirName+fileName);
+         std::string temp = "\"" +dirName+fileName + "\"";
+         std::string::size_type spacePosition = temp.find_first_of(' ');
+                if (spacePosition != std::string::npos) 
+        {
+   std::cout << "=========================================== File name : [" <<temp << 
+              "] contains space(s); Discarted !" << std::endl;
+           temp.insert(spacePosition, "\\");
+   continue;  /// \TODO : fix the trouble (vtk?)
+        }      
+         Filenames.push_back(temp);
          numberOfFiles++;
       }
    }
@@ -139,17 +146,27 @@ int FilesFromDirectory::Explore(std::string const &dirpath, bool recursive)
    for (d = readdir(dir); d; d = readdir(dir))
    {
       fileName = dirName + d->d_name;
+      std::string temp = fileName;
       if( stat(fileName.c_str(), &buf) != 0 )
       {
          //gdcmErrorMacro( strerror(errno) );
       }
       if ( S_ISREG(buf.st_mode) )    //is it a regular file?
       {
-                 if ( d->d_name[0]!='.')
-                 {     
-              Filenames.push_back( fileName );
-              numberOfFiles++;
-                 }
+         if ( d->d_name[0]!='.')
+         {
+        
+             std::string::size_type /* long int */ spacePosition = temp.find_first_of(' ');
+             if (spacePosition != std::string::npos)
+            {
+   std::cout << "=========================================== File name : [" <<temp << 
+              "] contains space(s); Discarted !" << std::endl;
+                 temp.insert(spacePosition, "\\");
+   continue;   /// \TODO : fix the trouble (vtk?)
+             }
+             Filenames.push_back(temp);         
+             numberOfFiles++;
+         }
       }
       else if ( S_ISDIR(buf.st_mode) ) //directory?
       {