#pragma once #include #include #include #include #include #include "Common/File/Path.h" namespace File { struct FileInfo { std::string name; // local name in directory Path fullName; bool exists = false; bool isDirectory = false; bool isWritable = false; uint64_t size = 0; // in bytes // time_t uint64_t atime = 0; uint64_t mtime = 0; uint64_t ctime = 0; // Microseconds, addition to the time_t. int atimeUs = 0; int mtimeUs = 0; int ctimeUs = 0; // Access bitfield uint32_t access = 0; // st_mode & 0x1ff bool operator <(const FileInfo &other) const; }; bool GetFileInfo(const Path &path, FileInfo *fileInfo); enum { GETFILES_GETHIDDEN = 1, GETFILES_GET_NAVIGATION_ENTRIES = 2, // If you don't set this, "." and ".." will be skipped. }; // Note: extensionFilter is ignored for directories, so you can recurse. bool GetFilesInDir(const Path &directory, std::vector *files, const char *extensionFilter = nullptr, int flags = 0, std::string_view prefix = std::string_view()); std::vector ApplyFilter(std::vector files, const char *extensionFilter, std::string_view prefix); #ifdef _WIN32 std::vector GetWindowsDrives(); #endif } // namespace File