Loading fs/CMakeLists.txt +9 −3 Original line number Diff line number Diff line Loading @@ -16,9 +16,15 @@ set(CMAKE_EXPORT_COMPILE_COMMANDS 1) # required packages find_package(FUSE3 REQUIRED) # boost dependencies, system is required for filesystem #TODO VERSION UNTESTED. I USE 1.62 find_package(Boost 1.56.0 COMPONENTS system filesystem serialization) find_package(Boost 1.62 REQUIRED COMPONENTS system filesystem serialization) include_directories(${FUSE3_INCLUDE_DIR} include/) set(SOURCE_FILES src/main.cpp src/main.h src/fuse_ops.h src/util.cpp src/classes/metadata.h src/classes/metadata.cpp src/adafs_ops/metadata_ops.h src/adafs_ops/metadata_ops.cpp src/adafs_ops/dentry_ops.cpp src/adafs_ops/dentry_ops.h src/configure.h src/fuse_ops/file.cpp src/fuse_ops/directory.cpp src/fuse_ops/access.cpp src/fuse_ops/sync.cpp src/adafs_ops/access.cpp src/adafs_ops/access.h src/fuse_ops/fs.cpp src/fuse_ops/io.cpp src/adafs_ops/io.cpp src/adafs_ops/io.h) set(SOURCE_FILES src/main.cpp src/main.h src/fuse_ops.h src/util.cpp src/classes/metadata.h src/classes/metadata.cpp src/adafs_ops/metadata_ops.h src/adafs_ops/metadata_ops.cpp src/adafs_ops/dentry_ops.cpp src/adafs_ops/dentry_ops.h src/configure.h src/fuse_ops/file.cpp src/fuse_ops/directory.cpp src/fuse_ops/access.cpp src/fuse_ops/sync.cpp src/adafs_ops/access.cpp src/adafs_ops/access.h src/fuse_ops/fs.cpp src/fuse_ops/io.cpp src/adafs_ops/io.cpp src/adafs_ops/io.h) add_executable(adafs ${SOURCE_FILES} src/main.cpp) target_link_libraries(adafs ${FUSE3_LIBRARIES} -lpthread -lboost_system -lboost_filesystem -lboost_serialization -pg) fs/src/adafs_ops/access.cpp +3 −3 Original line number Diff line number Diff line Loading @@ -23,7 +23,7 @@ int chk_access(const Metadata& md, int mask) { //check user leftmost 3 bits for rwx in md->mode if (md.uid() == fuse_get_context()->uid) { // Because mode comes only with the first 3 bits used, the user bits have to be shifted to the right to compare if ((mask & md.mode() >> 6) == (unsigned int) mask) if ((mask & md.mode() >> 6) == static_cast<unsigned int>(mask)) return 0; else return -EACCES; Loading @@ -31,7 +31,7 @@ int chk_access(const Metadata& md, int mask) { //check group middle 3 bits for rwx in md->mode if (md.gid() == fuse_get_context()->gid) { if ((mask & md.mode() >> 3) == (unsigned int) mask) if ((mask & md.mode() >> 3) == static_cast<unsigned int>(mask)) return 0; else return -EACCES; Loading @@ -39,7 +39,7 @@ int chk_access(const Metadata& md, int mask) { //check other rightmost 3 bits for rwx in md->mode. // Because they are the rightmost bits they don't need to be shifted if ((mask & md.mode()) == (unsigned int) mask) { if ((mask & md.mode()) == static_cast<unsigned int>(mask)) { return 0; } Loading fs/src/adafs_ops/dentry_ops.cpp +5 −6 Original line number Diff line number Diff line Loading @@ -64,12 +64,11 @@ int read_dentries(vector<string>& dir, const unsigned long hash) { // shortcut if path is empty = no files in directory if (bfs::is_empty(path)) return 0; // Below can be simplified with a C++11 range based loop? But how? :( XXX bfs::directory_iterator end_dir_it; for (bfs::directory_iterator dir_it(path); dir_it != end_dir_it; ++dir_it) { const bfs::path cp = (*dir_it); dir.push_back(cp.filename().string()); auto dir_it = bfs::directory_iterator(path); for (const auto& it : dir_it) { dir.push_back(it.path().filename().string()); } return 0; } Loading fs/src/adafs_ops/io.cpp +3 −3 Original line number Diff line number Diff line Loading @@ -24,7 +24,7 @@ int init_chunk_space(const unsigned long hash) { chnk_path /= "data"s; bfs::ofstream ofs{chnk_path}; return bfs::exists(chnk_path); return static_cast<int>(bfs::exists(chnk_path)); } /** * Remove the directory in the chunk dir of a file. Loading @@ -39,5 +39,5 @@ int destroy_chunk_space(const unsigned long hash) { // create chunk dir bfs::remove_all(chnk_path); return !bfs::exists(chnk_path); return static_cast<int>(!bfs::exists(chnk_path)); } fs/src/fuse_ops/access.cpp +5 −5 Original line number Diff line number Diff line Loading @@ -41,11 +41,11 @@ int adafs_chmod(const char* p, mode_t mode, struct fuse_file_info* fi) { auto md = make_shared<Metadata>(); auto err = get_metadata(*md, path); if (err) return err; if (err != 0) return err; // for change_access only the uid matters AFAIK err = chk_uid(*md); if (err) return err; if (err != 0) return err; return change_access(*md, mode, path); } Loading @@ -64,11 +64,11 @@ int adafs_chown(const char* p, uid_t uid, gid_t gid, struct fuse_file_info* fi) auto md = make_shared<Metadata>(); auto err = get_metadata(*md, path); if (err) return err; if (err != 0) return err; // any ownership change requires the user of the object err = chk_uid(*md); if (err) return err; if (err != 0) return err; return change_permissions(*md, uid, gid, path); } Loading
fs/CMakeLists.txt +9 −3 Original line number Diff line number Diff line Loading @@ -16,9 +16,15 @@ set(CMAKE_EXPORT_COMPILE_COMMANDS 1) # required packages find_package(FUSE3 REQUIRED) # boost dependencies, system is required for filesystem #TODO VERSION UNTESTED. I USE 1.62 find_package(Boost 1.56.0 COMPONENTS system filesystem serialization) find_package(Boost 1.62 REQUIRED COMPONENTS system filesystem serialization) include_directories(${FUSE3_INCLUDE_DIR} include/) set(SOURCE_FILES src/main.cpp src/main.h src/fuse_ops.h src/util.cpp src/classes/metadata.h src/classes/metadata.cpp src/adafs_ops/metadata_ops.h src/adafs_ops/metadata_ops.cpp src/adafs_ops/dentry_ops.cpp src/adafs_ops/dentry_ops.h src/configure.h src/fuse_ops/file.cpp src/fuse_ops/directory.cpp src/fuse_ops/access.cpp src/fuse_ops/sync.cpp src/adafs_ops/access.cpp src/adafs_ops/access.h src/fuse_ops/fs.cpp src/fuse_ops/io.cpp src/adafs_ops/io.cpp src/adafs_ops/io.h) set(SOURCE_FILES src/main.cpp src/main.h src/fuse_ops.h src/util.cpp src/classes/metadata.h src/classes/metadata.cpp src/adafs_ops/metadata_ops.h src/adafs_ops/metadata_ops.cpp src/adafs_ops/dentry_ops.cpp src/adafs_ops/dentry_ops.h src/configure.h src/fuse_ops/file.cpp src/fuse_ops/directory.cpp src/fuse_ops/access.cpp src/fuse_ops/sync.cpp src/adafs_ops/access.cpp src/adafs_ops/access.h src/fuse_ops/fs.cpp src/fuse_ops/io.cpp src/adafs_ops/io.cpp src/adafs_ops/io.h) add_executable(adafs ${SOURCE_FILES} src/main.cpp) target_link_libraries(adafs ${FUSE3_LIBRARIES} -lpthread -lboost_system -lboost_filesystem -lboost_serialization -pg)
fs/src/adafs_ops/access.cpp +3 −3 Original line number Diff line number Diff line Loading @@ -23,7 +23,7 @@ int chk_access(const Metadata& md, int mask) { //check user leftmost 3 bits for rwx in md->mode if (md.uid() == fuse_get_context()->uid) { // Because mode comes only with the first 3 bits used, the user bits have to be shifted to the right to compare if ((mask & md.mode() >> 6) == (unsigned int) mask) if ((mask & md.mode() >> 6) == static_cast<unsigned int>(mask)) return 0; else return -EACCES; Loading @@ -31,7 +31,7 @@ int chk_access(const Metadata& md, int mask) { //check group middle 3 bits for rwx in md->mode if (md.gid() == fuse_get_context()->gid) { if ((mask & md.mode() >> 3) == (unsigned int) mask) if ((mask & md.mode() >> 3) == static_cast<unsigned int>(mask)) return 0; else return -EACCES; Loading @@ -39,7 +39,7 @@ int chk_access(const Metadata& md, int mask) { //check other rightmost 3 bits for rwx in md->mode. // Because they are the rightmost bits they don't need to be shifted if ((mask & md.mode()) == (unsigned int) mask) { if ((mask & md.mode()) == static_cast<unsigned int>(mask)) { return 0; } Loading
fs/src/adafs_ops/dentry_ops.cpp +5 −6 Original line number Diff line number Diff line Loading @@ -64,12 +64,11 @@ int read_dentries(vector<string>& dir, const unsigned long hash) { // shortcut if path is empty = no files in directory if (bfs::is_empty(path)) return 0; // Below can be simplified with a C++11 range based loop? But how? :( XXX bfs::directory_iterator end_dir_it; for (bfs::directory_iterator dir_it(path); dir_it != end_dir_it; ++dir_it) { const bfs::path cp = (*dir_it); dir.push_back(cp.filename().string()); auto dir_it = bfs::directory_iterator(path); for (const auto& it : dir_it) { dir.push_back(it.path().filename().string()); } return 0; } Loading
fs/src/adafs_ops/io.cpp +3 −3 Original line number Diff line number Diff line Loading @@ -24,7 +24,7 @@ int init_chunk_space(const unsigned long hash) { chnk_path /= "data"s; bfs::ofstream ofs{chnk_path}; return bfs::exists(chnk_path); return static_cast<int>(bfs::exists(chnk_path)); } /** * Remove the directory in the chunk dir of a file. Loading @@ -39,5 +39,5 @@ int destroy_chunk_space(const unsigned long hash) { // create chunk dir bfs::remove_all(chnk_path); return !bfs::exists(chnk_path); return static_cast<int>(!bfs::exists(chnk_path)); }
fs/src/fuse_ops/access.cpp +5 −5 Original line number Diff line number Diff line Loading @@ -41,11 +41,11 @@ int adafs_chmod(const char* p, mode_t mode, struct fuse_file_info* fi) { auto md = make_shared<Metadata>(); auto err = get_metadata(*md, path); if (err) return err; if (err != 0) return err; // for change_access only the uid matters AFAIK err = chk_uid(*md); if (err) return err; if (err != 0) return err; return change_access(*md, mode, path); } Loading @@ -64,11 +64,11 @@ int adafs_chown(const char* p, uid_t uid, gid_t gid, struct fuse_file_info* fi) auto md = make_shared<Metadata>(); auto err = get_metadata(*md, path); if (err) return err; if (err != 0) return err; // any ownership change requires the user of the object err = chk_uid(*md); if (err) return err; if (err != 0) return err; return change_permissions(*md, uid, gid, path); }