]> Creatis software - gdcm.git/blobdiff - Example/SplitIntoDirectories.cxx
Allow strange file names
[gdcm.git] / Example / SplitIntoDirectories.cxx
index abcfbe75c18877f16da89cde16d99ce83750d474..dc7b5db61979c2a6e7a2556c3fb544960f01f0b2 100755 (executable)
@@ -3,8 +3,8 @@
   Program:   gdcm
   Module:    $RCSfile: SplitIntoDirectories.cxx,v $
   Language:  C++
-  Date:      $Date: 2009/05/28 15:44:34 $
-  Version:   $Revision: 1.5 $
+  Date:      $Date: 2011/04/20 14:06:50 $
+  Version:   $Revision: 1.7 $
                                                                                 
   Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
   l'Image). All rights reserved. See Doc/License.txt or
@@ -185,7 +185,7 @@ int main(int argc, char *argv[])
    if ( ! GDCM_NAME_SPACE::DirList::IsDirectory(dirNameout) )    // dirout not found
    {
       std::string strDirNameout(dirNameout);          // to please gcc 4
-      systemCommand = "mkdir " +strDirNameout;        // create it!
+      systemCommand = "mkdir \"" +strDirNameout + "\"";        // create it!
       if (verbose)
          std::cout << systemCommand << std::endl;
       system (systemCommand.c_str());
@@ -354,8 +354,8 @@ int main(int argc, char *argv[])
       ///this is a trick to build up a lexicographical compliant name :
       ///     eg : fich001.ima vs fich100.ima as opposed to fich1.ima vs fich100.ima
       std::string name = GDCM_NAME_SPACE::Util::GetName( *it );
-
-      std::cout << "name :[" << name << "]\n";
+      if (verbose)
+         std::cout << "name :[" << name << "]\n";
 
       if (hasSkel)
       {
@@ -435,11 +435,11 @@ int main(int argc, char *argv[])
       GDCM_NAME_SPACE::Util::Tokenize (it2->first, tokens, token);
       
       currentPatientName            = tokens[IND_PatientName];
-      currentStudyInstanceUID       = tokens[IND_StudyInstanceUID];      
+      currentStudyInstanceUID       = tokens[IND_StudyInstanceUID];     
       currentSerieInstanceUID       = tokens[IND_SerieInstanceUID];
       currentSerieDescription       = tokens[IND_SerieDescription];
       currentSerieNumber            = tokens[IND_SerieNumber];
-             
+
       if (previousPatientName != currentPatientName)
       {  
          previousPatientName = currentPatientName;
@@ -452,7 +452,7 @@ int main(int argc, char *argv[])
 
          currentPatientWriteDir = writeDir + currentPatientName;
 
-         systemCommand   = "mkdir " + currentPatientWriteDir;
+         systemCommand   = "mkdir \"" + currentPatientWriteDir + "\"";
          if (verbose || listonly)
             std::cout << "[" << systemCommand << "]" << std::endl;
          if (!listonly)
@@ -468,7 +468,7 @@ int main(int argc, char *argv[])
 
          currentStudyWriteDir  = currentPatientWriteDir + GDCM_NAME_SPACE::GDCM_FILESEPARATOR
                              + currentStudyInstanceUID;
-         systemCommand   = "mkdir " + currentStudyWriteDir;
+         systemCommand   = "mkdir \"" + currentStudyWriteDir + "\"";
          
          if (listonly)
            std::cout << "[" << systemCommand << "]" << std::endl;         
@@ -487,12 +487,14 @@ int main(int argc, char *argv[])
          if (seriedescr) // more human readable!
             currentSerieWriteDir  = currentStudyWriteDir + GDCM_NAME_SPACE::GDCM_FILESEPARATOR
                                   + currentSerieDescription + "_" + currentSerieNumber
-                                  + "_" + currentSerieInstanceUID;
+                                  /*+ "_" + currentSerieInstanceUID */
+                                  ;
+
          else
             currentSerieWriteDir  = currentStudyWriteDir + GDCM_NAME_SPACE::GDCM_FILESEPARATOR
                                   + currentSerieInstanceUID;         
                       
-         systemCommand   = "mkdir " + currentSerieWriteDir;
+         systemCommand   = "mkdir \"" + currentSerieWriteDir + "\"";
          
          if (listonly)
             std::cout << "[" << systemCommand << "]" << std::endl;         
@@ -510,7 +512,7 @@ int main(int argc, char *argv[])
       fullWriteFilename = currentSerieWriteDir + GDCM_NAME_SPACE::GDCM_FILESEPARATOR 
                                          + lastFilename; 
 
-      systemCommand   = "cp " + fullFilename + " " + fullWriteFilename;
+      systemCommand   = "cp \"" + fullFilename + "\"" + " \"" + fullWriteFilename + " \"";
       
       if (listonly)
          std::cout << "[" << systemCommand << "]" << std::endl;