fix: consider all mounts for listDirectory

This commit is contained in:
2026-05-11 08:07:56 -03:00
parent 4a0d387328
commit 4d63fe9b71
+16 -4
View File
@@ -3,6 +3,7 @@
#include <algorithm> #include <algorithm>
#include <cstring> #include <cstring>
#include <cctype> #include <cctype>
#include <set>
using namespace seallib; using namespace seallib;
@@ -155,11 +156,22 @@ VFSResult VirtualFileSystem::createDirectory(const std::string& path)
std::vector<std::string> VirtualFileSystem::listDirectory(const std::string& path) const std::vector<std::string> VirtualFileSystem::listDirectory(const std::string& path) const
{ {
std::shared_lock lock(_mutex); std::shared_lock lock(_mutex);
std::string relativePath; std::string searchPath = trimPathSeparators(normalizePath(path));
const MountPoint* mount = findBestMount(path, relativePath);
if (!mount) return {}; std::set<std::string> mergedFiles;
return mount->provider->listDirectory(relativePath);
for (const auto& mount : _mounts)
{
std::string relativePath;
if (getRelativePath(mount, searchPath, relativePath))
{
auto files = mount.provider->listDirectory(relativePath);
for (const auto& f : files)
mergedFiles.insert(f);
}
}
return {mergedFiles.begin(), mergedFiles.end()};
} }
std::string VirtualFileSystem::normalizePath(const std::string& path) const std::string VirtualFileSystem::normalizePath(const std::string& path) const