void scanDirectory(const char* path, const char* ext, FileList& list) { fileListClear(list); #ifdef WIN32 _finddata_t dir; char pathWithExt[260]; long fh; strcpy(pathWithExt, path); strcat(pathWithExt, "/*"); strcat(pathWithExt, ext); fh = _findfirst(pathWithExt, &dir); if (fh == -1L) return; do { fileListAdd(list, dir.name); } while (_findnext(fh, &dir) == 0); _findclose(fh); #else dirent* current = 0; DIR* dp = opendir(path); if (!dp) return; while ((current = readdir(dp)) != 0) { int len = strlen(current->d_name); if (len > 4 && strncmp(current->d_name+len-4, ext, 4) == 0) { fileListAdd(list, current->d_name); } } closedir(dp); #endif if (list.size > 1) qsort(list.files, list.size, sizeof(char*), cmp); }
void scanDirectory(const char* path, const char* ext, FileList& list) { fileListClear(list); #ifdef WIN32 _finddata_t dir; char pathWithExt[260]; intptr_t fh; strcpy(pathWithExt, path); strcat(pathWithExt, "/*"); strcat(pathWithExt, ext); fh = _findfirst(pathWithExt, &dir); if (fh == -1L) return; do { fileListAdd(list, std::string(dir.name)); } while (_findnext(fh, &dir) == 0); _findclose(fh); #else dirent* current = 0; DIR* dp = opendir(path); if (!dp) return; while ((current = readdir(dp)) != 0) { int len = strlen(current->d_name); if (len > 4 && strncmp(current->d_name+len-4, ext, 4) == 0) { fileListAdd(list, current->d_name); } } closedir(dp); #endif if (!list.empty()) std::sort(list.begin(), list.end()); }
FileList::~FileList() { fileListClear(*this); }