use standard functions for directory scanning (which Windows doesn't have?)
This commit is contained in:
@@ -23,6 +23,10 @@
|
|||||||
#include <map>
|
#include <map>
|
||||||
#include <set>
|
#include <set>
|
||||||
|
|
||||||
|
#if !defined(WIN32)
|
||||||
|
#include <dirent.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
unsigned long randseed = time(NULL);
|
unsigned long randseed = time(NULL);
|
||||||
|
|
||||||
/* Return a positive x mod y. */
|
/* Return a positive x mod y. */
|
||||||
@@ -1000,6 +1004,7 @@ void FileSet::LoadFromDir(const CString &dir)
|
|||||||
GetCwd(oldpath);
|
GetCwd(oldpath);
|
||||||
if(chdir(dir) == -1) return;
|
if(chdir(dir) == -1) return;
|
||||||
|
|
||||||
|
#if defined(WIN32)
|
||||||
WIN32_FIND_DATA fd;
|
WIN32_FIND_DATA fd;
|
||||||
HANDLE hFind = FindFirstFile( "*", &fd );
|
HANDLE hFind = FindFirstFile( "*", &fd );
|
||||||
|
|
||||||
@@ -1021,7 +1026,23 @@ void FileSet::LoadFromDir(const CString &dir)
|
|||||||
files.insert(f);
|
files.insert(f);
|
||||||
} while( FindNextFile( hFind, &fd ) );
|
} while( FindNextFile( hFind, &fd ) );
|
||||||
FindClose(hFind);
|
FindClose(hFind);
|
||||||
|
#else
|
||||||
|
DIR *d = opendir(".");
|
||||||
|
|
||||||
|
while(struct dirent *ent = readdir(d))
|
||||||
|
{
|
||||||
|
if(!strcmp(ent->d_name, ".")) continue;
|
||||||
|
if(!strcmp(ent->d_name, "..")) continue;
|
||||||
|
|
||||||
|
File f;
|
||||||
|
f.dir = IsADirectory(ent->d_name);
|
||||||
|
f.name=ent->d_name;
|
||||||
|
|
||||||
|
files.insert(f);
|
||||||
|
}
|
||||||
|
|
||||||
|
closedir(d);
|
||||||
|
#endif
|
||||||
chdir(oldpath);
|
chdir(oldpath);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user