time fixes

This commit is contained in:
2024-08-23 12:41:35 -05:00
parent f654d269a7
commit 9e9d46a9cd
2 changed files with 23 additions and 13 deletions

View File

@ -238,8 +238,10 @@ VOID winfsp_drive::Cleanup(PVOID file_node, PVOID file_desc,
if ((flags & FspCleanupSetChangeTime) != 0U) { if ((flags & FspCleanupSetChangeTime) != 0U) {
auto res = provider_.set_item_meta( auto res = provider_.set_item_meta(
api_path, {{META_CHANGED, std::to_string(now)}, api_path, {
{META_MODIFIED, std::to_string(now)}}); {META_CHANGED, std::to_string(now)},
{META_MODIFIED, std::to_string(now)},
});
if (res != api_error::success) { if (res != api_error::success) {
utils::error::raise_api_path_error( utils::error::raise_api_path_error(
function_name, api_path, res, function_name, api_path, res,
@ -1058,17 +1060,22 @@ auto winfsp_drive::SetBasicInfo(PVOID /*file_node*/, PVOID file_desc,
meta[META_ATTRIBUTES] = std::to_string(attributes); meta[META_ATTRIBUTES] = std::to_string(attributes);
} }
if ((creation_time != 0U) && (creation_time != max_time)) { if ((creation_time != 0U) && (creation_time != max_time)) {
meta[META_CREATION] = std::to_string(creation_time); meta[META_CREATION] = std::to_string(
utils::time::windows_time_to_unix_time(creation_time));
} }
if ((last_access_time != 0U) && (last_access_time != max_time)) { if ((last_access_time != 0U) && (last_access_time != max_time)) {
meta[META_ACCESSED] = std::to_string(last_access_time); meta[META_ACCESSED] = std::to_string(
utils::time::windows_time_to_unix_time(last_access_time));
} }
if ((last_write_time != 0U) && (last_write_time != max_time)) { if ((last_write_time != 0U) && (last_write_time != max_time)) {
meta[META_WRITTEN] = std::to_string(last_write_time); meta[META_WRITTEN] = std::to_string(
utils::time::windows_time_to_unix_time(last_write_time));
} }
if ((change_time != 0U) && (change_time != max_time)) { if ((change_time != 0U) && (change_time != max_time)) {
meta[META_CHANGED] = std::to_string(change_time); meta[META_CHANGED] =
meta[META_MODIFIED] = std::to_string(change_time); std::to_string(utils::time::windows_time_to_unix_time(change_time));
meta[META_MODIFIED] =
std::to_string(utils::time::windows_time_to_unix_time(change_time));
} }
error = provider_.set_item_meta(api_path, meta); error = provider_.set_item_meta(api_path, meta);

View File

@ -23,9 +23,8 @@
#include "utils/windows/windows_utils.hpp" #include "utils/windows/windows_utils.hpp"
#include "types/startup_exception.hpp"
#include "utils/com_init_wrapper.hpp"
#include "utils/string.hpp" #include "utils/string.hpp"
#include "utils/time.hpp"
#if !defined(STATUS_DEVICE_INSUFFICIENT_RESOURCES) #if !defined(STATUS_DEVICE_INSUFFICIENT_RESOURCES)
#define STATUS_DEVICE_INSUFFICIENT_RESOURCES static_cast<NTSTATUS>(0xC0000468L) #define STATUS_DEVICE_INSUFFICIENT_RESOURCES static_cast<NTSTATUS>(0xC0000468L)
@ -88,19 +87,23 @@ auto from_api_error(const api_error &e) -> NTSTATUS {
} }
auto get_accessed_time_from_meta(const api_meta_map &meta) -> std::uint64_t { auto get_accessed_time_from_meta(const api_meta_map &meta) -> std::uint64_t {
return utils::string::to_uint64(meta.at(META_ACCESSED)); return utils::time::unix_time_to_windows_time(
utils::string::to_uint64(meta.at(META_ACCESSED)));
} }
auto get_changed_time_from_meta(const api_meta_map &meta) -> std::uint64_t { auto get_changed_time_from_meta(const api_meta_map &meta) -> std::uint64_t {
return utils::string::to_uint64(meta.at(META_MODIFIED)); return utils::time::unix_time_to_windows_time(
utils::string::to_uint64(meta.at(META_MODIFIED)));
} }
auto get_creation_time_from_meta(const api_meta_map &meta) -> std::uint64_t { auto get_creation_time_from_meta(const api_meta_map &meta) -> std::uint64_t {
return utils::string::to_uint64(meta.at(META_CREATION)); return utils::time::unix_time_to_windows_time(
utils::string::to_uint64(meta.at(META_CREATION)));
} }
auto get_written_time_from_meta(const api_meta_map &meta) -> std::uint64_t { auto get_written_time_from_meta(const api_meta_map &meta) -> std::uint64_t {
return utils::string::to_uint64(meta.at(META_WRITTEN)); return utils::time::unix_time_to_windows_time(
utils::string::to_uint64(meta.at(META_WRITTEN)));
} }
auto unix_access_mask_to_windows(std::int32_t mask) -> int { auto unix_access_mask_to_windows(std::int32_t mask) -> int {