Commit aea069de authored by nanahira's avatar nanahira

no sort files in server mode

parent 87825311
...@@ -111,10 +111,12 @@ public: ...@@ -111,10 +111,12 @@ public:
return MakeDir(dir); return MakeDir(dir);
} }
#ifndef YGOPRO_SERVER_MODE
struct file_unit { struct file_unit {
std::string filename; std::string filename;
bool is_dir; bool is_dir;
}; };
#endif
static void TraversalDir(const char* path, const std::function<void(const char*, bool)>& cb) { static void TraversalDir(const char* path, const std::function<void(const char*, bool)>& cb) {
DIR* dir = nullptr; DIR* dir = nullptr;
...@@ -122,25 +124,36 @@ public: ...@@ -122,25 +124,36 @@ public:
if((dir = opendir(path)) == nullptr) if((dir = opendir(path)) == nullptr)
return; return;
struct stat fileStat; struct stat fileStat;
#ifndef YGOPRO_SERVER_MODE
std::vector<file_unit> file_list; std::vector<file_unit> file_list;
#endif
while ((dirp = readdir(dir)) != nullptr) while ((dirp = readdir(dir)) != nullptr)
{ {
#ifndef YGOPRO_SERVER_MODE
file_unit funit; file_unit funit;
#endif
char fname[1024]; char fname[1024];
strcpy(fname, path); strcpy(fname, path);
strcat(fname, "/"); strcat(fname, "/");
strcat(fname, dirp->d_name); strcat(fname, dirp->d_name);
stat(fname, &fileStat); stat(fname, &fileStat);
#ifdef YGOPRO_SERVER_MODE
cb(dirp->d_name, S_ISDIR(fileStat.st_mode));
#else
funit.filename = std::string(dirp->d_name); funit.filename = std::string(dirp->d_name);
funit.is_dir = S_ISDIR(fileStat.st_mode); funit.is_dir = S_ISDIR(fileStat.st_mode);
file_list.push_back(funit); file_list.push_back(funit);
#endif
} }
closedir(dir); closedir(dir);
#ifndef YGOPRO_SERVER_MODE
std::sort(file_list.begin(), file_list.end(), TraversalDirSort); std::sort(file_list.begin(), file_list.end(), TraversalDirSort);
for (file_unit funit : file_list) for (file_unit funit : file_list)
cb(funit.filename.c_str(), funit.is_dir); cb(funit.filename.c_str(), funit.is_dir);
#endif
} }
#ifndef YGOPRO_SERVER_MODE
static bool TraversalDirSort(file_unit file1, file_unit file2) { static bool TraversalDirSort(file_unit file1, file_unit file2) {
if(file1.is_dir != file2.is_dir) { if(file1.is_dir != file2.is_dir) {
return file1.is_dir; return file1.is_dir;
...@@ -148,6 +161,7 @@ public: ...@@ -148,6 +161,7 @@ public:
return file1.filename < file2.filename; return file1.filename < file2.filename;
} }
} }
#endif
static void TraversalDir(const wchar_t* wpath, const std::function<void(const wchar_t*, bool)>& cb) { static void TraversalDir(const wchar_t* wpath, const std::function<void(const wchar_t*, bool)>& cb) {
char path[1024]; char path[1024];
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment