From 4d63fe9b715d3971892cbf3b16b06b56af7cf0bf Mon Sep 17 00:00:00 2001 From: neru Date: Mon, 11 May 2026 08:07:56 -0300 Subject: [PATCH] fix: consider all mounts for listDirectory --- src/lib/seallib/vfs.cpp | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/src/lib/seallib/vfs.cpp b/src/lib/seallib/vfs.cpp index 578fa21..0056f37 100644 --- a/src/lib/seallib/vfs.cpp +++ b/src/lib/seallib/vfs.cpp @@ -3,6 +3,7 @@ #include #include #include +#include using namespace seallib; @@ -155,11 +156,22 @@ VFSResult VirtualFileSystem::createDirectory(const std::string& path) std::vector VirtualFileSystem::listDirectory(const std::string& path) const { std::shared_lock lock(_mutex); - std::string relativePath; - const MountPoint* mount = findBestMount(path, relativePath); + std::string searchPath = trimPathSeparators(normalizePath(path)); - if (!mount) return {}; - return mount->provider->listDirectory(relativePath); + std::set mergedFiles; + + 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