summaryrefslogtreecommitdiffstats
path: root/src/common/fs
diff options
context:
space:
mode:
authorMorph <39850852+Morph1984@users.noreply.github.com>2021-06-11 08:20:36 +0200
committerMorph <39850852+Morph1984@users.noreply.github.com>2021-06-12 07:39:07 +0200
commitc978f3144cae1a59a612088aa99752bc74cf9e03 (patch)
treea3d41920a0f2a99dcf6506f4a7e503a2ce306a3c /src/common/fs
parentMerge pull request #6453 from lat9nq/libusb-fix-msvc (diff)
downloadyuzu-c978f3144cae1a59a612088aa99752bc74cf9e03.tar
yuzu-c978f3144cae1a59a612088aa99752bc74cf9e03.tar.gz
yuzu-c978f3144cae1a59a612088aa99752bc74cf9e03.tar.bz2
yuzu-c978f3144cae1a59a612088aa99752bc74cf9e03.tar.lz
yuzu-c978f3144cae1a59a612088aa99752bc74cf9e03.tar.xz
yuzu-c978f3144cae1a59a612088aa99752bc74cf9e03.tar.zst
yuzu-c978f3144cae1a59a612088aa99752bc74cf9e03.zip
Diffstat (limited to 'src/common/fs')
-rw-r--r--src/common/fs/fs.cpp18
1 files changed, 16 insertions, 2 deletions
diff --git a/src/common/fs/fs.cpp b/src/common/fs/fs.cpp
index d492480d9..d3159e908 100644
--- a/src/common/fs/fs.cpp
+++ b/src/common/fs/fs.cpp
@@ -321,7 +321,8 @@ bool RemoveDirContentsRecursively(const fs::path& path) {
std::error_code ec;
- for (const auto& entry : fs::recursive_directory_iterator(path, ec)) {
+ // TODO (Morph): Replace this with recursive_directory_iterator once it's fixed in MSVC.
+ for (const auto& entry : fs::directory_iterator(path, ec)) {
if (ec) {
LOG_ERROR(Common_Filesystem,
"Failed to completely enumerate the directory at path={}, ec_message={}",
@@ -337,6 +338,12 @@ bool RemoveDirContentsRecursively(const fs::path& path) {
PathToUTF8String(entry.path()), ec.message());
break;
}
+
+ // TODO (Morph): Remove this when MSVC fixes recursive_directory_iterator.
+ // recursive_directory_iterator throws an exception despite passing in a std::error_code.
+ if (entry.status().type() == fs::file_type::directory) {
+ return RemoveDirContentsRecursively(entry.path());
+ }
}
if (ec) {
@@ -475,7 +482,8 @@ void IterateDirEntriesRecursively(const std::filesystem::path& path,
std::error_code ec;
- for (const auto& entry : fs::recursive_directory_iterator(path, ec)) {
+ // TODO (Morph): Replace this with recursive_directory_iterator once it's fixed in MSVC.
+ for (const auto& entry : fs::directory_iterator(path, ec)) {
if (ec) {
break;
}
@@ -495,6 +503,12 @@ void IterateDirEntriesRecursively(const std::filesystem::path& path,
break;
}
}
+
+ // TODO (Morph): Remove this when MSVC fixes recursive_directory_iterator.
+ // recursive_directory_iterator throws an exception despite passing in a std::error_code.
+ if (entry.status().type() == fs::file_type::directory) {
+ IterateDirEntriesRecursively(entry.path(), callback, filter);
+ }
}
if (callback_error || ec) {