From e4b96fade542151fca17b5ac61e3eaad263ce92c Mon Sep 17 00:00:00 2001 From: Dan Engelbrecht Date: Fri, 6 May 2022 11:53:11 +0200 Subject: Added GetDirectoryContent utility --- zenstore/blockstore.cpp | 40 ++++++++++------------------------------ 1 file changed, 10 insertions(+), 30 deletions(-) (limited to 'zenstore/blockstore.cpp') 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 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 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 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) -- cgit v1.2.3