diff --git a/source/mijin/virtual_filesystem/filesystem.cpp b/source/mijin/virtual_filesystem/filesystem.cpp index e3060a3..4960d9e 100644 --- a/source/mijin/virtual_filesystem/filesystem.cpp +++ b/source/mijin/virtual_filesystem/filesystem.cpp @@ -54,11 +54,13 @@ std::vector OSFileSystemAdapter::listFiles(const fs::path& folder) info.isHidden = info.path.filename().string().starts_with('.'); // at least for Linux if (info.isFolder) { - MIJIN_TRY + std::error_code errorCode; + fs::directory_iterator dirIt(info.path, errorCode); + if (errorCode != std::error_code{}) { - info.size = std::distance(fs::directory_iterator(info.path), fs::directory_iterator()); + info.size = std::distance(dirIt, fs::directory_iterator()); } - MIJIN_CATCH(std::runtime_error&) + else { info.size = 0; } diff --git a/source/mijin/virtual_filesystem/mapping.hpp b/source/mijin/virtual_filesystem/mapping.hpp index cf8df5c..47c4738 100644 --- a/source/mijin/virtual_filesystem/mapping.hpp +++ b/source/mijin/virtual_filesystem/mapping.hpp @@ -71,6 +71,10 @@ std::vector MappingFileSystemAdapter::listFiles(const fs::pa result = wrapped_.listFiles(adjusted); for (FileInfo& fileInfo : result) { + if (fileInfo.path.is_absolute()) + { + fileInfo.path = fs::relative(fileInfo.path, "/"); + } fileInfo.path = root_ / fileInfo.path; } return result;