]> Creatis software - gdcm.git/blobdiff - src/gdcmDirList.cxx
Fix an old bug 'DicomDir Private' related.
[gdcm.git] / src / gdcmDirList.cxx
index c0a9feda473503536eadf2ae8fc2bde204dae925..badef7290b15e37f78e7905b6704f611e05a199c 100644 (file)
@@ -3,8 +3,8 @@
   Program:   gdcm
   Module:    $RCSfile: gdcmDirList.cxx,v $
   Language:  C++
-  Date:      $Date: 2005/12/13 13:37:50 $
-  Version:   $Revision: 1.57 $
+  Date:      $Date: 2006/11/15 15:53:08 $
+  Version:   $Revision: 1.60 $
                                                                                 
   Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
   l'Image). All rights reserved. See Doc/License.txt or
@@ -65,7 +65,9 @@ DirList::~DirList()
 bool DirList::IsDirectory(std::string const &dirName)
 {
    struct stat fs;
-   assert( dirName[dirName.size()-1] != '/' );
+   // std::cout << "dirName[dirName.size()-1] [" << dirName[dirName.size()-1] << "]"
+   //           << std::endl;
+   //assert( dirName[dirName.size()-1] != GDCM_FILESEPARATOR );
    if ( stat(dirName.c_str(), &fs) == 0 )
    {
 #if _WIN32
@@ -76,12 +78,38 @@ bool DirList::IsDirectory(std::string const &dirName)
    }
    else
    {
-      const char *str = strerror(errno);
-      gdcmStaticErrorMacro( str );
+      gdcmStaticErrorMacro( strerror(errno) );
       return false;
    }
 }
 
+/**
+ * \brief   Get the first entry while visiting Filenames
+ * \return  The first  if found, otherwhise ""
+ */ 
+std::string DirList::GetFirst()
+{
+   ItDirList = Filenames.begin();
+   if (ItDirList != Filenames.end())
+      return *ItDirList;
+   return "";
+} 
+
+/**
+ * \brief   Get the next entry while visiting Filenames
+ * \return  The next  if found, otherwhise ""
+ */ 
+std::string DirList::GetNext()
+{
+   gdcmAssertMacro (ItDirList != Filenames.end())
+   {
+      ++ItDirList;
+      if (ItDirList != Filenames.end())
+         return *ItDirList;      
+   }
+   return "";
+} 
+
 //-----------------------------------------------------------------------------
 // Protected
 
@@ -100,7 +128,7 @@ int DirList::Explore(std::string const &dirpath, bool recursive)
    std::string dirName = Util::NormalizePath(dirpath);
 #ifdef _MSC_VER
    WIN32_FIND_DATA fileData;
-   assert( dirName[dirName.size()-1] == '/' );
+   //assert( dirName[dirName.size()-1] == '' );
    HANDLE hFile = FindFirstFile((dirName+"*").c_str(), &fileData);
 
    for(BOOL b = (hFile != INVALID_HANDLE_VALUE); b;
@@ -161,8 +189,7 @@ int DirList::Explore(std::string const &dirpath, bool recursive)
       fileName = dirName + d->d_name;
       if( stat(fileName.c_str(), &buf) != 0 )
       {
-         const char *str = strerror(errno);
-         gdcmErrorMacro( str );
+         gdcmErrorMacro( strerror(errno) );
       }
       if ( S_ISREG(buf.st_mode) )    //is it a regular file?
       {
@@ -184,8 +211,7 @@ int DirList::Explore(std::string const &dirpath, bool recursive)
    }
    if( closedir(dir) != 0 )
    {
-      const char *str = strerror(errno);
-      gdcmErrorMacro( str );
+      gdcmErrorMacro( strerror(errno) );
    }
 #endif