]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/fileutils.cpp
Add a method for getting a list of files in a directory.
[user/henk/code/inspircd.git] / src / fileutils.cpp
index 731e4ea01a9dd74268532fc1dee39f54b21e1409..d5e1e58397977a27c513debb680b170d22bb0685 100644 (file)
@@ -86,6 +86,40 @@ bool FileSystem::FileExists(const std::string& file)
        return !access(file.c_str(), F_OK);
 }
 
+bool FileSystem::GetFileList(const std::string& directory, std::vector<std::string>& entries, const std::string& match)
+{
+#ifdef _WIN32
+       const std::string search_path = directory + "\\" + match;
+
+       WIN32_FIND_DATAA wfd;
+       HANDLE fh = FindFirstFileA(search_path.c_str(), &wfd);
+       if (fh == INVALID_HANDLE_VALUE)
+               return false;
+
+       do
+       {
+               entries.push_back(wfd.cFileName);
+       } while (FindNextFile(fh, &wfd) != 0);
+
+       FindClose(fh);
+       return true;
+#else
+       DIR* library = opendir(directory.c_str());
+       if (!library)
+               return false;
+
+       dirent* entry = NULL;
+       while ((entry = readdir(library)))
+       {
+               if (InspIRCd::Match(entry->d_name, match, ascii_case_insensitive_map))
+                       entries.push_back(entry->d_name);
+       }
+       closedir(library);
+       return true;
+#endif
+}
+
+
 std::string FileSystem::GetFileName(const std::string& name)
 {
 #ifdef _WIN32