From 6d6b27dd1e5b758deceff837d312af712aa3d02d Mon Sep 17 00:00:00 2001 From: Patrick LeBlanc Date: Fri, 31 May 2019 14:30:48 -0500 Subject: [PATCH] Added an 'ls' type tool, and fixed a couple things in IOC around handling things that aren't .meta files. --- CMakeLists.txt | 3 +++ src/IOCoordinator.cpp | 10 +++++++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 9db657222..988ad6c9f 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -81,6 +81,9 @@ target_link_libraries(smcat storagemanager) add_executable(smput src/smput.cpp) target_link_libraries(smput storagemanager) +add_executable(smls src/smls.cpp) +target_link_libraries(smls storagemanager) + #install(TARGETS StorageManager DESTINATION ${ENGINE_BINDIR} COMPONENT platform) diff --git a/src/IOCoordinator.cpp b/src/IOCoordinator.cpp index 342d7aca5..29de4a0dd 100755 --- a/src/IOCoordinator.cpp +++ b/src/IOCoordinator.cpp @@ -519,7 +519,12 @@ int IOCoordinator::listDirectory(const char *dirname, vector *listing) bf::directory_iterator end; for (bf::directory_iterator it(p); it != end; it++) - listing->push_back(it->path().stem().string()); + { + if (bf::is_directory(it->path())) + listing->push_back(it->path().filename().string()); + else + listing->push_back(it->path().stem().string()); + } return 0; } @@ -528,6 +533,9 @@ int IOCoordinator::stat(const char *_path, struct stat *out) bf::path p(_path); const char *path = p.string().c_str(); + if (bf::is_directory(metaPath/p)) + return ::stat((metaPath/p).string().c_str(), out); + ScopedReadLock s(this, path); MetadataFile meta(path, MetadataFile::no_create_t()); return meta.stat(out);