aboutsummaryrefslogtreecommitdiff
path: root/zenstore/blockstore.cpp
diff options
context:
space:
mode:
authorDan Engelbrecht <[email protected]>2022-05-06 11:53:11 +0200
committerDan Engelbrecht <[email protected]>2022-05-06 11:53:11 +0200
commite4b96fade542151fca17b5ac61e3eaad263ce92c (patch)
tree7466cbb6bed79fb4a211a3533210245c21f211eb /zenstore/blockstore.cpp
parentreverted unnecessary changes (diff)
downloadzen-e4b96fade542151fca17b5ac61e3eaad263ce92c.tar.xz
zen-e4b96fade542151fca17b5ac61e3eaad263ce92c.zip
Added GetDirectoryContent utility
Diffstat (limited to 'zenstore/blockstore.cpp')
-rw-r--r--zenstore/blockstore.cpp40
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)