summaryrefslogtreecommitdiff
path: root/Source/Core/Common/FileSearch.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Source/Core/Common/FileSearch.cpp')
-rw-r--r--Source/Core/Common/FileSearch.cpp21
1 files changed, 9 insertions, 12 deletions
diff --git a/Source/Core/Common/FileSearch.cpp b/Source/Core/Common/FileSearch.cpp
index 3f810132f5..4b3b0820d2 100644
--- a/Source/Core/Common/FileSearch.cpp
+++ b/Source/Core/Common/FileSearch.cpp
@@ -46,14 +46,15 @@ FileSearchWithTest(const std::vector<std::string>& directories, bool recursive,
return result;
}
-static std::vector<std::string> DoFileSearchNoSTL(const std::vector<std::string>& directories,
- const std::vector<std::string>& exts,
- bool recursive)
+std::vector<std::string> DoFileSearch(const std::vector<std::string>& directories,
+ const std::vector<std::string>& exts, bool recursive)
{
bool accept_all = exts.empty();
return FileSearchWithTest(directories, recursive, [&](const File::FSTEntry& entry) {
if (accept_all)
return true;
+ if (entry.isDirectory)
+ return false;
std::string name = entry.virtualName;
std::transform(name.begin(), name.end(), name.begin(), ::tolower);
return std::any_of(exts.begin(), exts.end(), [&](const std::string& ext) {
@@ -63,12 +64,6 @@ static std::vector<std::string> DoFileSearchNoSTL(const std::vector<std::string>
});
}
-std::vector<std::string> DoFileSearch(const std::vector<std::string>& directories,
- const std::vector<std::string>& exts, bool recursive)
-{
- return DoFileSearchNoSTL(directories, exts, recursive);
-}
-
#else
std::vector<std::string> DoFileSearch(const std::vector<std::string>& directories,
@@ -120,9 +115,11 @@ std::vector<std::string> DoFileSearch(const std::vector<std::string>& directorie
std::sort(result.begin(), result.end());
result.erase(std::unique(result.begin(), result.end()), result.end());
- // Dolphin expects to be able to use "/" (DIR_SEP) everywhere. std::filesystem uses the OS
- // separator.
- if (fs::path::preferred_separator != DIR_SEP_CHR)
+ // Dolphin expects to be able to use "/" (DIR_SEP) everywhere.
+ // std::filesystem uses the OS separator.
+ constexpr fs::path::value_type os_separator = fs::path::preferred_separator;
+ static_assert(os_separator == DIR_SEP_CHR || os_separator == '\\', "Unsupported path separator");
+ if (os_separator != DIR_SEP_CHR)
for (auto& path : result)
std::replace(path.begin(), path.end(), '\\', DIR_SEP_CHR);