Refactoring vfs to remove a lot of duplicated code.

Progress on #294.
This commit is contained in:
Ben Vanik
2015-06-27 22:37:49 -07:00
parent 1ac19f1b08
commit 83872d8e8f
37 changed files with 877 additions and 1366 deletions

View File

@@ -33,6 +33,9 @@ struct FileInfo {
Type type;
std::wstring name;
size_t total_size;
uint64_t create_timestamp;
uint64_t access_timestamp;
uint64_t write_timestamp;
};
std::vector<FileInfo> ListFiles(const std::wstring& path);

View File

@@ -43,6 +43,8 @@ bool DeleteFolder(const std::wstring& path) {
return SHFileOperation(&op) == 0;
}
#define COMBINE_TIME(t) (((uint64_t)t.dwHighDateTime << 32) | t.dwLowDateTime)
std::vector<FileInfo> ListFiles(const std::wstring& path) {
std::vector<FileInfo> result;
@@ -66,6 +68,9 @@ std::vector<FileInfo> ListFiles(const std::wstring& path) {
(ffd.nFileSizeHigh * (size_t(MAXDWORD) + 1)) + ffd.nFileSizeLow;
}
info.name = ffd.cFileName;
info.create_timestamp = COMBINE_TIME(ffd.ftCreationTime);
info.access_timestamp = COMBINE_TIME(ffd.ftLastAccessTime);
info.write_timestamp = COMBINE_TIME(ffd.ftLastWriteTime);
result.push_back(info);
} while (FindNextFile(handle, &ffd) != 0);
FindClose(handle);