diff options
| author | Dan Engelbrecht <[email protected]> | 2022-05-09 14:00:53 +0200 |
|---|---|---|
| committer | GitHub <[email protected]> | 2022-05-09 14:00:53 +0200 |
| commit | 007d72930c8a5813de8a202e06b8b18f296b94ed (patch) | |
| tree | eea01d61b83c94f2d344392eda0a9b1a06a805a8 /zencore/filesystem.cpp | |
| parent | Merge pull request #90 from EpicGames/de/simplify-cache-bucket-put-standalone (diff) | |
| parent | remove use of Ref<> in ZenCacheStore (diff) | |
| download | zen-007d72930c8a5813de8a202e06b8b18f296b94ed.tar.xz zen-007d72930c8a5813de8a202e06b8b18f296b94ed.zip | |
Merge pull request #89 from EpicGames/de/namespacesv1.0.1.5
Add namespacecachestore layer to allow multiple structured cache namespaces
Diffstat (limited to 'zencore/filesystem.cpp')
| -rw-r--r-- | zencore/filesystem.cpp | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/zencore/filesystem.cpp b/zencore/filesystem.cpp index 437741161..bd85f5a11 100644 --- a/zencore/filesystem.cpp +++ b/zencore/filesystem.cpp @@ -1022,6 +1022,40 @@ MaximizeOpenFileCount() #endif } +void +GetDirectoryContent(const std::filesystem::path& RootDir, uint8_t Flags, DirectoryContent& OutContent) +{ + FileSystemTraversal Traversal; + struct Visitor : public FileSystemTraversal::TreeVisitor + { + Visitor(uint8_t Flags, DirectoryContent& OutContent) : Flags(Flags), Content(OutContent) {} + + virtual void VisitFile([[maybe_unused]] const std::filesystem::path& Parent, + [[maybe_unused]] const path_view& File, + [[maybe_unused]] uint64_t FileSize) override + { + if (Flags & DirectoryContent::IncludeFilesFlag) + { + Content.Files.push_back(Parent / File); + } + } + + virtual bool VisitDirectory([[maybe_unused]] const std::filesystem::path& Parent, const path_view& DirectoryName) override + { + if (Flags & DirectoryContent::IncludeDirsFlag) + { + Content.Directories.push_back(Parent / DirectoryName); + } + return (Flags & DirectoryContent::RecursiveFlag) != 0; + } + + const uint8_t Flags; + DirectoryContent& Content; + } Visit(Flags, OutContent); + + Traversal.TraverseFileSystem(RootDir, Visit); +} + ////////////////////////////////////////////////////////////////////////// // // Testing related code follows... |