diff options
| author | Dan Engelbrecht <[email protected]> | 2022-05-06 11:53:11 +0200 |
|---|---|---|
| committer | Dan Engelbrecht <[email protected]> | 2022-05-06 11:53:11 +0200 |
| commit | e4b96fade542151fca17b5ac61e3eaad263ce92c (patch) | |
| tree | 7466cbb6bed79fb4a211a3533210245c21f211eb /zenstore/blockstore.cpp | |
| parent | reverted unnecessary changes (diff) | |
| download | zen-e4b96fade542151fca17b5ac61e3eaad263ce92c.tar.xz zen-e4b96fade542151fca17b5ac61e3eaad263ce92c.zip | |
Added GetDirectoryContent utility
Diffstat (limited to 'zenstore/blockstore.cpp')
| -rw-r--r-- | zenstore/blockstore.cpp | 40 |
1 files changed, 10 insertions, 30 deletions
diff --git a/zenstore/blockstore.cpp b/zenstore/blockstore.cpp index 54a8eb9df..bfd2d63a5 100644 --- a/zenstore/blockstore.cpp +++ b/zenstore/blockstore.cpp @@ -162,7 +162,7 @@ BlockStore::Initialize(const std::filesystem::path& BlocksBasePath, { continue; } - std::string FileName = Path.stem().string(); + std::string FileName = PathToUtf8(Path.stem()); uint32_t BlockIndex; bool OK = ParseHexNumber(FileName, BlockIndex); if (!OK) @@ -1074,35 +1074,15 @@ namespace { std::vector<std::filesystem::path> GetDirectoryContent(std::filesystem::path RootDir, bool Files, bool Directories) { - FileSystemTraversal Traversal; - struct Visitor : public FileSystemTraversal::TreeVisitor - { - virtual void VisitFile(const std::filesystem::path& Parent, const path_view& File, uint64_t) override - { - if (Files) - { - Items.push_back(Parent / File); - } - } - - virtual bool VisitDirectory(const std::filesystem::path& Parent, const path_view& Dir) override - { - if (Directories) - { - Items.push_back(Parent / Dir); - } - return true; - } - - bool Files; - bool Directories; - std::vector<std::filesystem::path> Items; - } Visit; - Visit.Files = Files; - Visit.Directories = Directories; - - Traversal.TraverseFileSystem(RootDir, Visit); - return Visit.Items; + DirectoryContent DirectoryContent; + GetDirectoryContent(RootDir, + DirectoryContent::RecursiveFlag | (Files ? DirectoryContent::IncludeFilesFlag : 0) | + (Directories ? DirectoryContent::IncludeDirsFlag : 0), + DirectoryContent); + std::vector<std::filesystem::path> Result; + Result.insert(Result.end(), DirectoryContent.Directories.begin(), DirectoryContent.Directories.end()); + Result.insert(Result.end(), DirectoryContent.Files.begin(), DirectoryContent.Files.end()); + return Result; }; static IoBuffer CreateChunk(uint64_t Size) |