This commit is contained in:
Scott E. Graves 2024-10-25 11:45:10 -05:00
parent 4c97f6b098
commit 9a1483377c

View File

@ -45,11 +45,14 @@ auto get_directory_files(std::string_view path, bool oldest_first,
auto full_path = utils::path::combine(abs_path, {fd.cFileName});
if ((fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) ==
FILE_ATTRIBUTE_DIRECTORY) {
if (recursive) {
auto sub_files =
get_directory_files(full_path, oldest_first, recursive);
ret.insert(ret.end(), sub_files.begin(), sub_files.end());
std::string name{fd.cFileName};
if (name == "." || name == ".." || not recursive) {
continue;
}
auto sub_files =
get_directory_files(full_path, oldest_first, recursive);
ret.insert(ret.end(), sub_files.begin(), sub_files.end());
} else {
ULARGE_INTEGER li{};
li.HighPart = fd.ftLastWriteTime.dwHighDateTime;
@ -75,14 +78,16 @@ auto get_directory_files(std::string_view path, bool oldest_first,
struct dirent *de{};
while ((de = readdir(root)) != nullptr) {
if (de->d_type == DT_DIR) {
if (recursive) {
auto sub_files = get_directory_files(
utils::path::combine(abs_path, {de->d_name}), oldest_first,
recursive);
ret.insert(ret.end(), sub_files.begin(), sub_files.end());
std::string name{de->d_name};
if (name == "." || name == ".." || not recursive) {
continue;
}
auto sub_files = get_directory_files(
utils::path::combine(abs_path, {name}), oldest_first, recursive);
ret.insert(ret.end(), sub_files.begin(), sub_files.end());
} else {
ret.emplace_back(utils::path::combine(abs_path, {de->d_name}));
ret.emplace_back(utils::path::combine(abs_path, {name}));
}
}
} catch (const std::exception &e) {