2 //-----------------------------------------------------------------------------
3 #include "gdcmDirList.h"
9 #if defined(_MSC_VER) || defined (__CYGWIN__)
19 // Constructor / Destructor
21 * \ingroup gdcmDirList
23 * @param dirName root directory name
24 * @param recursive whether we want to explore recursively or not
26 gdcmDirList::gdcmDirList(std::string dirName,bool recursive)
31 Explore(name,recursive);
35 * \ingroup gdcmDirList
38 gdcmDirList::~gdcmDirList(void)
42 //-----------------------------------------------------------------------------
45 //-----------------------------------------------------------------------------
48 * \ingroup gdcmDirList
49 * \brief Get the directory name
50 * @return the directory name
52 std::string gdcmDirList::GetDirName(void)
57 //-----------------------------------------------------------------------------
60 //-----------------------------------------------------------------------------
64 * \ingroup gdcmDirList
65 * \brief Explore a directory with possibility of recursion
66 * @param dirName directory to explore
67 * @param recursive whether we want recursion or not
69 void gdcmDirList::Explore(std::string dirName,bool recursive)
73 NormalizePath(dirName);
75 #if defined(_MSC_VER) || (__CYGWIN__)
76 WIN32_FIND_DATA fileData;
77 HANDLE hFile=FindFirstFile((dirName+"*").c_str(),&fileData);
80 while( (hFile!=INVALID_HANDLE_VALUE) && (found) )
82 fileName=fileData.cFileName;
83 if(fileData.dwFileAttributes&FILE_ATTRIBUTE_DIRECTORY)
85 if( (fileName!=".") && (fileName!="..") && (recursive) )
86 Explore(dirName+fileName,recursive);
90 this->push_back(dirName+fileName);
93 found=FindNextFile(hFile,&fileData);
97 struct dirent **namelist;
98 int n=scandir(dirName.c_str(), &namelist, 0, alphasort);
100 for (int i= 0;i < n; i++)
102 fileName=namelist[i]->d_name;
103 if(namelist[i]->d_type==DT_DIR)
105 if( (fileName!=".") && (fileName!="..") && (recursive) )
106 Explore(dirName+fileName,recursive);
110 this->push_back(dirName+fileName);
116 //-----------------------------------------------------------------------------