From 9a1483377c1d65fef8ec499567ed29318bf1fa2b Mon Sep 17 00:00:00 2001 From: "Scott E. Graves" Date: Fri, 25 Oct 2024 11:45:10 -0500 Subject: [PATCH] refactor --- .../librepertory/src/utils/file_utils.cpp | 25 +++++++++++-------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/repertory/librepertory/src/utils/file_utils.cpp b/repertory/librepertory/src/utils/file_utils.cpp index 379d2ff8..b7eaa161 100644 --- a/repertory/librepertory/src/utils/file_utils.cpp +++ b/repertory/librepertory/src/utils/file_utils.cpp @@ -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) {