diff --git a/repertory/librepertory/include/drives/winfsp/winfsp_drive.hpp b/repertory/librepertory/include/drives/winfsp/winfsp_drive.hpp index b432cd79..0a14c208 100644 --- a/repertory/librepertory/include/drives/winfsp/winfsp_drive.hpp +++ b/repertory/librepertory/include/drives/winfsp/winfsp_drive.hpp @@ -170,7 +170,7 @@ public: FileInfo *f_info) -> NTSTATUS override; [[nodiscard]] auto populate_file_info(const std::string &api_path, - remote::f_info &r_info) const + remote::file_info &r_info) const -> api_error override; auto Read(PVOID file_node, PVOID file_desc, PVOID buffer, UINT64 offset, 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 1faa893f..2a099869 100644 --- a/repertory/librepertory/src/drives/fuse/remotefuse/remote_fuse_drive.cpp +++ b/repertory/librepertory/src/drives/fuse/remotefuse/remote_fuse_drive.cpp @@ -145,18 +145,23 @@ api_error remote_fuse_drive::fsetattr_x_impl(std::string api_path, attributes.mode = attr->mode; attributes.uid = attr->uid; attributes.gid = attr->gid; - attributes.size = attr->size; - attributes.acctime = ((attr->acctime.tv_sec * utils::time::NANOS_PER_SECOND) + - attr->acctime.tv_nsec); - attributes.modtime = ((attr->modtime.tv_sec * utils::time::NANOS_PER_SECOND) + - attr->modtime.tv_nsec); - attributes.crtime = ((attr->crtime.tv_sec * utils::time::NANOS_PER_SECOND) + - attr->crtime.tv_nsec); - attributes.chgtime = ((attr->chgtime.tv_sec * utils::time::NANOS_PER_SECOND) + - attr->chgtime.tv_nsec); + attributes.size = static_cast(attr->size); + attributes.acctime = ((static_cast(attr->acctime.tv_sec) * + utils::time::NANOS_PER_SECOND) + + static_cast(attr->acctime.tv_nsec)); + attributes.modtime = ((static_cast(attr->modtime.tv_sec) * + utils::time::NANOS_PER_SECOND) + + static_cast(attr->modtime.tv_nsec)); + attributes.crtime = ((static_cast(attr->crtime.tv_sec) * + utils::time::NANOS_PER_SECOND) + + static_cast(attr->crtime.tv_nsec)); + attributes.chgtime = ((static_cast(attr->chgtime.tv_sec) * + utils::time::NANOS_PER_SECOND) + + static_cast(attr->chgtime.tv_nsec)); attributes.bkuptime = - ((attr->bkuptime.tv_sec * utils::time::NANOS_PER_SECOND) + - attr->bkuptime.tv_nsec); + ((static_cast(attr->bkuptime.tv_sec) * + utils::time::NANOS_PER_SECOND) + + static_cast(attr->bkuptime.tv_nsec)); attributes.flags = attr->flags; return utils::to_api_error(remote_instance_->fuse_fsetattr_x( api_path.c_str(), attributes, f_info->fh)); @@ -486,18 +491,23 @@ api_error remote_fuse_drive::setattr_x_impl(std::string api_path, attributes.mode = attr->mode; attributes.uid = attr->uid; attributes.gid = attr->gid; - attributes.size = attr->size; - attributes.acctime = ((attr->acctime.tv_sec * utils::time::NANOS_PER_SECOND) + - attr->acctime.tv_nsec); - attributes.modtime = ((attr->modtime.tv_sec * utils::time::NANOS_PER_SECOND) + - attr->modtime.tv_nsec); - attributes.crtime = ((attr->crtime.tv_sec * utils::time::NANOS_PER_SECOND) + - attr->crtime.tv_nsec); - attributes.chgtime = ((attr->chgtime.tv_sec * utils::time::NANOS_PER_SECOND) + - attr->chgtime.tv_nsec); + attributes.size = static_cast(attr->size); + attributes.acctime = ((static_cast(attr->acctime.tv_sec) * + utils::time::NANOS_PER_SECOND) + + static_cast(attr->acctime.tv_nsec)); + attributes.modtime = ((static_cast(attr->modtime.tv_sec) * + utils::time::NANOS_PER_SECOND) + + static_cast(attr->modtime.tv_nsec)); + attributes.crtime = ((static_cast(attr->crtime.tv_sec) * + utils::time::NANOS_PER_SECOND) + + static_cast(attr->crtime.tv_nsec)); + attributes.chgtime = ((static_cast(attr->chgtime.tv_sec) * + utils::time::NANOS_PER_SECOND) + + static_cast(attr->chgtime.tv_nsec)); attributes.bkuptime = - ((attr->bkuptime.tv_sec * utils::time::NANOS_PER_SECOND) + - attr->bkuptime.tv_nsec); + ((static_cast(attr->bkuptime.tv_sec) * + utils::time::NANOS_PER_SECOND) + + static_cast(attr->bkuptime.tv_nsec)); attributes.flags = attr->flags; return utils::to_api_error( remote_instance_->fuse_setattr_x(api_path.c_str(), attributes)); @@ -506,7 +516,9 @@ api_error remote_fuse_drive::setattr_x_impl(std::string api_path, api_error remote_fuse_drive::setbkuptime_impl(std::string api_path, const struct timespec *bkuptime) { remote::file_time repertory_bkuptime = - ((bkuptime->tv_sec * utils::time::NANOS_PER_SECOND) + bkuptime->tv_nsec); + ((static_cast(bkuptime->tv_sec) * + utils::time::NANOS_PER_SECOND) + + static_cast(bkuptime->tv_nsec)); return utils::to_api_error( remote_instance_->fuse_setbkuptime(api_path.c_str(), repertory_bkuptime)); } @@ -514,7 +526,9 @@ api_error remote_fuse_drive::setbkuptime_impl(std::string api_path, api_error remote_fuse_drive::setchgtime_impl(std::string api_path, const struct timespec *chgtime) { remote::file_time repertory_chgtime = - ((chgtime->tv_sec * utils::time::NANOS_PER_SECOND) + chgtime->tv_nsec); + ((static_cast(chgtime->tv_sec) * + utils::time::NANOS_PER_SECOND) + + static_cast(chgtime->tv_nsec)); return utils::to_api_error( remote_instance_->fuse_setchgtime(api_path.c_str(), repertory_chgtime)); } @@ -522,7 +536,9 @@ api_error remote_fuse_drive::setchgtime_impl(std::string api_path, api_error remote_fuse_drive::setcrtime_impl(std::string api_path, const struct timespec *crtime) { remote::file_time repertory_crtime = - ((crtime->tv_sec * utils::time::NANOS_PER_SECOND) + crtime->tv_nsec); + ((static_cast(crtime->tv_sec) * + utils::time::NANOS_PER_SECOND) + + static_cast(crtime->tv_nsec)); return utils::to_api_error( remote_instance_->fuse_setcrtime(api_path.c_str(), repertory_crtime)); } diff --git a/repertory/librepertory/src/drives/winfsp/winfsp_drive.cpp b/repertory/librepertory/src/drives/winfsp/winfsp_drive.cpp index 0bf2b24c..2577cee5 100644 --- a/repertory/librepertory/src/drives/winfsp/winfsp_drive.cpp +++ b/repertory/librepertory/src/drives/winfsp/winfsp_drive.cpp @@ -813,9 +813,9 @@ auto winfsp_drive::populate_file_info(const std::string &api_path, api_meta_map meta{}; auto ret = provider_.get_item_meta(api_path, meta); if (ret == api_error::success) { - FSP_FSCTL_FILE_INFO info{}; - populate_file_info(utils::string::to_uint64(meta[META_SIZE]), meta, info); - set_file_info(r_info, info); + FSP_FSCTL_FILE_INFO f_info{}; + populate_file_info(utils::string::to_uint64(meta[META_SIZE]), meta, f_info); + set_file_info(r_info, f_info); } return ret;