From 5264d17ae8f03c305445d77d314faf9a6949bb79 Mon Sep 17 00:00:00 2001 From: "Scott E. Graves" Date: Thu, 16 Jan 2025 19:45:41 -0600 Subject: [PATCH] remote fixes --- .../fuse/remotefuse/remote_fuse_drive.hpp | 4 +-- .../fuse/remotefuse/remote_fuse_drive.cpp | 30 +++++-------------- 2 files changed, 9 insertions(+), 25 deletions(-) diff --git a/repertory/librepertory/include/drives/fuse/remotefuse/remote_fuse_drive.hpp b/repertory/librepertory/include/drives/fuse/remotefuse/remote_fuse_drive.hpp index cab7d9ac..aef87cc2 100644 --- a/repertory/librepertory/include/drives/fuse/remotefuse/remote_fuse_drive.hpp +++ b/repertory/librepertory/include/drives/fuse/remotefuse/remote_fuse_drive.hpp @@ -53,8 +53,8 @@ private: bool was_mounted_ = false; private: - void populate_stat(const remote::stat &r_stat, bool directory, - struct stat &unix_st); + static void populate_stat(const remote::stat &r_stat, bool directory, + struct stat &unix_st); protected: [[nodiscard]] auto access_impl(std::string api_path, diff --git a/repertory/librepertory/src/drives/fuse/remotefuse/remote_fuse_drive.cpp b/repertory/librepertory/src/drives/fuse/remotefuse/remote_fuse_drive.cpp index da943e89..a1699a08 100644 --- a/repertory/librepertory/src/drives/fuse/remotefuse/remote_fuse_drive.cpp +++ b/repertory/librepertory/src/drives/fuse/remotefuse/remote_fuse_drive.cpp @@ -300,10 +300,15 @@ auto remote_fuse_drive::opendir_impl( void remote_fuse_drive::populate_stat(const remote::stat &r_stat, bool directory, struct stat &unix_st) { std::memset(&unix_st, 0, sizeof(struct stat)); + unix_st.st_blksize = r_stat.st_blksize; + unix_st.st_blocks = static_cast(r_stat.st_blocks); + unix_st.st_gid = r_stat.st_gid; + unix_st.st_mode = (directory ? S_IFDIR : S_IFREG) | r_stat.st_mode; + unix_st.st_nlink = r_stat.st_nlink; + unix_st.st_size = static_cast(r_stat.st_size); + unix_st.st_uid = r_stat.st_uid; #if defined(__APPLE__) - unix_st.st_blksize = 0; - unix_st.st_atimespec.tv_nsec = r_stat.st_atimespec % utils::time::NANOS_PER_SECOND; unix_st.st_atimespec.tv_sec = @@ -326,8 +331,6 @@ void remote_fuse_drive::populate_stat(const remote::stat &r_stat, unix_st.st_flags = r_stat.st_flags; #else // !defined(__APPLE__) - unix_st.st_blksize = 4096; - unix_st.st_atim.tv_nsec = static_cast( r_stat.st_atimespec % utils::time::NANOS_PER_SECOND); unix_st.st_atim.tv_sec = static_cast( @@ -343,25 +346,6 @@ void remote_fuse_drive::populate_stat(const remote::stat &r_stat, unix_st.st_mtim.tv_sec = static_cast( r_stat.st_mtimespec / utils::time::NANOS_PER_SECOND); #endif // defined(__APPLE__) - - if (not directory) { - const auto block_size_stat = static_cast(512U); - const auto block_size = static_cast(4096U); - const auto size = - utils::divide_with_ceiling(static_cast(unix_st.st_size), - block_size) * - block_size; - unix_st.st_blocks = static_cast( - std::max(block_size / block_size_stat, - utils::divide_with_ceiling(size, block_size_stat))); - } - - unix_st.st_gid = r_stat.st_gid; - unix_st.st_mode = (directory ? S_IFDIR : S_IFREG) | r_stat.st_mode; - - unix_st.st_nlink = r_stat.st_nlink; - unix_st.st_size = static_cast(r_stat.st_size); - unix_st.st_uid = r_stat.st_uid; } auto remote_fuse_drive::read_impl(std::string api_path, char *buffer,