fix
This commit is contained in:
		| @@ -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, | ||||
|   | ||||
| @@ -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<remote::file_size>(attr->size); | ||||
|   attributes.acctime = ((static_cast<remote::file_time>(attr->acctime.tv_sec) * | ||||
|                          utils::time::NANOS_PER_SECOND) + | ||||
|                         static_cast<remote::file_time>(attr->acctime.tv_nsec)); | ||||
|   attributes.modtime = ((static_cast<remote::file_time>(attr->modtime.tv_sec) * | ||||
|                          utils::time::NANOS_PER_SECOND) + | ||||
|                         static_cast<remote::file_time>(attr->modtime.tv_nsec)); | ||||
|   attributes.crtime = ((static_cast<remote::file_time>(attr->crtime.tv_sec) * | ||||
|                         utils::time::NANOS_PER_SECOND) + | ||||
|                        static_cast<remote::file_time>(attr->crtime.tv_nsec)); | ||||
|   attributes.chgtime = ((static_cast<remote::file_time>(attr->chgtime.tv_sec) * | ||||
|                          utils::time::NANOS_PER_SECOND) + | ||||
|                         static_cast<remote::file_time>(attr->chgtime.tv_nsec)); | ||||
|   attributes.bkuptime = | ||||
|       ((attr->bkuptime.tv_sec * utils::time::NANOS_PER_SECOND) + | ||||
|        attr->bkuptime.tv_nsec); | ||||
|       ((static_cast<remote::file_time>(attr->bkuptime.tv_sec) * | ||||
|         utils::time::NANOS_PER_SECOND) + | ||||
|        static_cast<remote::file_time>(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<remote::file_size>(attr->size); | ||||
|   attributes.acctime = ((static_cast<remote::file_time>(attr->acctime.tv_sec) * | ||||
|                          utils::time::NANOS_PER_SECOND) + | ||||
|                         static_cast<remote::file_time>(attr->acctime.tv_nsec)); | ||||
|   attributes.modtime = ((static_cast<remote::file_time>(attr->modtime.tv_sec) * | ||||
|                          utils::time::NANOS_PER_SECOND) + | ||||
|                         static_cast<remote::file_time>(attr->modtime.tv_nsec)); | ||||
|   attributes.crtime = ((static_cast<remote::file_time>(attr->crtime.tv_sec) * | ||||
|                         utils::time::NANOS_PER_SECOND) + | ||||
|                        static_cast<remote::file_time>(attr->crtime.tv_nsec)); | ||||
|   attributes.chgtime = ((static_cast<remote::file_time>(attr->chgtime.tv_sec) * | ||||
|                          utils::time::NANOS_PER_SECOND) + | ||||
|                         static_cast<remote::file_time>(attr->chgtime.tv_nsec)); | ||||
|   attributes.bkuptime = | ||||
|       ((attr->bkuptime.tv_sec * utils::time::NANOS_PER_SECOND) + | ||||
|        attr->bkuptime.tv_nsec); | ||||
|       ((static_cast<remote::file_time>(attr->bkuptime.tv_sec) * | ||||
|         utils::time::NANOS_PER_SECOND) + | ||||
|        static_cast<remote::file_time>(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<remote::file_time>(bkuptime->tv_sec) * | ||||
|         utils::time::NANOS_PER_SECOND) + | ||||
|        static_cast<remote::file_time>(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<remote::file_time>(chgtime->tv_sec) * | ||||
|         utils::time::NANOS_PER_SECOND) + | ||||
|        static_cast<remote::file_time>(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<remote::file_time>(crtime->tv_sec) * | ||||
|         utils::time::NANOS_PER_SECOND) + | ||||
|        static_cast<remote::file_time>(crtime->tv_nsec)); | ||||
|   return utils::to_api_error( | ||||
|       remote_instance_->fuse_setcrtime(api_path.c_str(), repertory_crtime)); | ||||
| } | ||||
|   | ||||
| @@ -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; | ||||
|   | ||||
		Reference in New Issue
	
	Block a user