diff --git a/repertory/librepertory/include/types/s3.hpp b/repertory/librepertory/include/types/s3.hpp index 03ff98b9..20bf1928 100644 --- a/repertory/librepertory/include/types/s3.hpp +++ b/repertory/librepertory/include/types/s3.hpp @@ -24,14 +24,14 @@ #include "types/repertory.hpp" #include "utils/string.hpp" +#include "utils/time.hpp" #include "utils/utils.hpp" namespace repertory { namespace utils::aws { #if defined(_WIN32) [[nodiscard]] inline auto format_time(std::uint64_t t) -> std::uint64_t { - FILETIME ft{}; - utils::unix_time_to_filetime(t, ft); + auto ft = utils::time::unix_time_to_filetime(t); return static_cast(ft.dwHighDateTime) << 32u | ft.dwLowDateTime; } @@ -75,7 +75,7 @@ struct head_object_result { struct tm tm1 {}; // Mon, 17 Dec 2012 02:14:10 GMT #if defined(_WIN32) - utils::strptime(date.c_str(), "%a, %d %b %Y %H:%M:%S %Z", &tm1); + utils::time::strptime(date.c_str(), "%a, %d %b %Y %H:%M:%S %Z", &tm1); #else strptime(date.c_str(), "%a, %d %b %Y %H:%M:%S %Z", &tm1); #endif diff --git a/repertory/librepertory/src/app_config.cpp b/repertory/librepertory/src/app_config.cpp index 0c161b14..87d46ab5 100644 --- a/repertory/librepertory/src/app_config.cpp +++ b/repertory/librepertory/src/app_config.cpp @@ -23,6 +23,7 @@ #include "platform/platform.hpp" #include "types/startup_exception.hpp" +#include "utils/common.hpp" #include "utils/error_utils.hpp" #include "utils/file_utils.hpp" #include "utils/path.hpp" diff --git a/repertory/librepertory/src/comm/packet/packet.cpp b/repertory/librepertory/src/comm/packet/packet.cpp index 6d45c93a..f1907c0d 100644 --- a/repertory/librepertory/src/comm/packet/packet.cpp +++ b/repertory/librepertory/src/comm/packet/packet.cpp @@ -24,6 +24,7 @@ #include "platform/platform.hpp" #include "types/remote.hpp" #include "types/repertory.hpp" +#include "utils/common.hpp" #include "utils/encryption.hpp" #include "utils/error_utils.hpp" #include "utils/string.hpp" diff --git a/repertory/librepertory/src/drives/fuse/fuse_drive.cpp b/repertory/librepertory/src/drives/fuse/fuse_drive.cpp index 05521244..38d3ec4d 100644 --- a/repertory/librepertory/src/drives/fuse/fuse_drive.cpp +++ b/repertory/librepertory/src/drives/fuse/fuse_drive.cpp @@ -39,6 +39,7 @@ #include "types/startup_exception.hpp" #include "utils/base64.hpp" #include "utils/collection.hpp" +#include "utils/common.hpp" #include "utils/error_utils.hpp" #include "utils/polling.hpp" #include "utils/time.hpp" 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 cf76bd45..2331079c 100644 --- a/repertory/librepertory/src/drives/fuse/remotefuse/remote_fuse_drive.cpp +++ b/repertory/librepertory/src/drives/fuse/remotefuse/remote_fuse_drive.cpp @@ -32,6 +32,7 @@ #include "platform/platform.hpp" #include "rpc/server/server.hpp" #include "types/remote.hpp" +#include "utils/common.hpp" #include "utils/error_utils.hpp" #include "utils/file_utils.hpp" #include "utils/path.hpp" diff --git a/repertory/librepertory/src/drives/fuse/remotefuse/remote_server.cpp b/repertory/librepertory/src/drives/fuse/remotefuse/remote_server.cpp index cc1640d0..0c44b19a 100644 --- a/repertory/librepertory/src/drives/fuse/remotefuse/remote_server.cpp +++ b/repertory/librepertory/src/drives/fuse/remotefuse/remote_server.cpp @@ -31,6 +31,7 @@ #include "platform/platform.hpp" #include "types/remote.hpp" #include "types/repertory.hpp" +#include "utils/common.hpp" #include "utils/error_utils.hpp" #include "utils/file.hpp" #include "utils/path.hpp" diff --git a/repertory/librepertory/src/drives/winfsp/remotewinfsp/remote_server.cpp b/repertory/librepertory/src/drives/winfsp/remotewinfsp/remote_server.cpp index 24cb1573..be961850 100644 --- a/repertory/librepertory/src/drives/winfsp/remotewinfsp/remote_server.cpp +++ b/repertory/librepertory/src/drives/winfsp/remotewinfsp/remote_server.cpp @@ -34,10 +34,13 @@ #include "drives/winfsp/remotewinfsp/i_remote_instance.hpp" #include "events/event_system.hpp" #include "events/events.hpp" +#include "platform/platform.hpp" #include "types/remote.hpp" #include "types/repertory.hpp" +#include "utils/common.hpp" #include "utils/file_utils.hpp" #include "utils/path.hpp" +#include "utils/time.hpp" #if !defined(_SH_DENYNO) #define _SH_DENYRW 0x10 // deny read/write mode @@ -96,10 +99,10 @@ void remote_server::populate_stat(const char *path, bool directory, directory ? 2 + drive_.get_directory_item_count( utils::path::create_api_path(path)) : 1); - r_stat.st_atimespec = utils::time64_to_unix_time(unix_st.st_atime); - r_stat.st_birthtimespec = utils::time64_to_unix_time(unix_st.st_ctime); - r_stat.st_ctimespec = utils::time64_to_unix_time(unix_st.st_ctime); - r_stat.st_mtimespec = utils::time64_to_unix_time(unix_st.st_mtime); + r_stat.st_atimespec = utils::time::time64_to_unix_time(unix_st.st_atime); + r_stat.st_birthtimespec = utils::time::time64_to_unix_time(unix_st.st_ctime); + r_stat.st_ctimespec = utils::time::time64_to_unix_time(unix_st.st_ctime); + r_stat.st_mtimespec = utils::time::time64_to_unix_time(unix_st.st_mtime); r_stat.st_size = static_cast(unix_st.st_size); r_stat.st_mode = unix_st.st_mode; } @@ -544,7 +547,8 @@ auto remote_server::fuse_write( errno = EFAULT; if ((write_size == 0) || native_file::attach(os_handle)->write_bytes( - buffer, static_cast(write_size), write_offset, + reinterpret_cast(buffer), + static_cast(write_size), write_offset, bytes_written)) { res = 0; errno = 0; @@ -855,7 +859,7 @@ auto remote_server::fuse_utimens(const char *path, const remote::file_time *tv, access_time.dwLowDateTime = now & 0xFFFFFFFF; access_time_ptr = &access_time; } else if (op0 != UTIME_OMIT) { - utils::unix_time_to_filetime(tv[0U], access_time); + access_time = utils::time::unix_time_to_filetime(tv[0U]); access_time_ptr = &access_time; } @@ -865,7 +869,7 @@ auto remote_server::fuse_utimens(const char *path, const remote::file_time *tv, write_time.dwLowDateTime = now & 0xFFFFFFFF; write_time_ptr = &write_time; } else if (op1 != UTIME_OMIT) { - utils::unix_time_to_filetime(tv[1U], write_time); + write_time = utils::time::unix_time_to_filetime(tv[1U]); write_time_ptr = &write_time; } diff --git a/repertory/librepertory/src/drives/winfsp/remotewinfsp/remote_winfsp_drive.cpp b/repertory/librepertory/src/drives/winfsp/remotewinfsp/remote_winfsp_drive.cpp index 8b212017..c8c238fa 100644 --- a/repertory/librepertory/src/drives/winfsp/remotewinfsp/remote_winfsp_drive.cpp +++ b/repertory/librepertory/src/drives/winfsp/remotewinfsp/remote_winfsp_drive.cpp @@ -30,6 +30,7 @@ #include "platform/platform.hpp" #include "rpc/server/server.hpp" #include "utils/collection.hpp" +#include "utils/common.hpp" #include "utils/error_utils.hpp" #include "utils/file_utils.hpp" #include "utils/path.hpp" @@ -361,7 +362,7 @@ auto remote_winfsp_drive::ReadDirectory(PVOID /*file_node*/, PVOID file_desc, const auto display_name = utils::string::from_utf8( utils::path::strip_to_file_name(item_path)); if (not marker || (marker && item_found)) { - if (not utils::path::is_ads_file_path(item_path)) { + // if (not utils::path::is_ads_file_path(item_path)) { union { UINT8 B[FIELD_OFFSET(FSP_FSCTL_DIR_INFO, FileNameBuf) + ((MAX_PATH + 1) * sizeof(WCHAR))]; @@ -389,7 +390,7 @@ auto remote_winfsp_drive::ReadDirectory(PVOID /*file_node*/, PVOID file_desc, break; } } - } + // } } else { item_found = display_name == std::wstring(marker); } diff --git a/repertory/librepertory/src/drives/winfsp/winfsp_drive.cpp b/repertory/librepertory/src/drives/winfsp/winfsp_drive.cpp index c70767d8..bf5eaf33 100644 --- a/repertory/librepertory/src/drives/winfsp/winfsp_drive.cpp +++ b/repertory/librepertory/src/drives/winfsp/winfsp_drive.cpp @@ -33,6 +33,7 @@ #include "types/repertory.hpp" #include "types/startup_exception.hpp" #include "utils/collection.hpp" +#include "utils/common.hpp" #include "utils/error_utils.hpp" #include "utils/file_utils.hpp" #include "utils/polling.hpp" @@ -928,10 +929,10 @@ auto winfsp_drive::ReadDirectory(PVOID /*file_node*/, PVOID file_desc, api_path, {utils::string::to_utf8(marker)}))); while ((error = iterator.get_directory_item( offset++, dir_item)) == api_error::success) { - if (utils::path::is_ads_file_path(dir_item.api_path) || - dir_item.api_path == "." || dir_item.api_path == "..") { - continue; - } + // if (utils::path::is_ads_file_path(dir_item.api_path) || + // dir_item.api_path == "." || dir_item.api_path == "..") { + // continue; + // } if (dir_item.meta.empty()) { utils::error::raise_api_path_error( diff --git a/repertory/librepertory/src/file_manager/file_manager.cpp b/repertory/librepertory/src/file_manager/file_manager.cpp index c3c9431e..f27477c1 100644 --- a/repertory/librepertory/src/file_manager/file_manager.cpp +++ b/repertory/librepertory/src/file_manager/file_manager.cpp @@ -29,6 +29,7 @@ #include "providers/i_provider.hpp" #include "types/repertory.hpp" #include "types/startup_exception.hpp" +#include "utils/common.hpp" #include "utils/encrypting_reader.hpp" #include "utils/error_utils.hpp" #include "utils/file_utils.hpp" diff --git a/repertory/librepertory/src/file_manager/file_manager_open_file.cpp b/repertory/librepertory/src/file_manager/file_manager_open_file.cpp index 4fa87095..973c6248 100644 --- a/repertory/librepertory/src/file_manager/file_manager_open_file.cpp +++ b/repertory/librepertory/src/file_manager/file_manager_open_file.cpp @@ -26,6 +26,7 @@ #include "providers/i_provider.hpp" #include "types/repertory.hpp" #include "types/startup_exception.hpp" +#include "utils/common.hpp" #include "utils/error_utils.hpp" #include "utils/file_utils.hpp" #include "utils/path.hpp" diff --git a/repertory/librepertory/src/file_manager/file_manager_ring_buffer_open_file.cpp b/repertory/librepertory/src/file_manager/file_manager_ring_buffer_open_file.cpp index 26d99289..f488f4dd 100644 --- a/repertory/librepertory/src/file_manager/file_manager_ring_buffer_open_file.cpp +++ b/repertory/librepertory/src/file_manager/file_manager_ring_buffer_open_file.cpp @@ -26,6 +26,7 @@ #include "platform/platform.hpp" #include "providers/i_provider.hpp" #include "types/repertory.hpp" +#include "utils/common.hpp" #include "utils/encrypting_reader.hpp" #include "utils/file_utils.hpp" #include "utils/path.hpp" diff --git a/repertory/librepertory/src/providers/encrypt/encrypt_provider.cpp b/repertory/librepertory/src/providers/encrypt/encrypt_provider.cpp index 4bd75ec5..07e33b91 100644 --- a/repertory/librepertory/src/providers/encrypt/encrypt_provider.cpp +++ b/repertory/librepertory/src/providers/encrypt/encrypt_provider.cpp @@ -33,6 +33,7 @@ #include "utils/file_utils.hpp" #include "utils/path.hpp" #include "utils/polling.hpp" +#include "utils/time.hpp" namespace { const std::string directory_table = "directory"; @@ -98,20 +99,22 @@ auto encrypt_provider::create_api_file( file.modified_date = buf.st_mtimespec.tv_nsec + (buf.st_mtimespec.tv_sec * NANOS_PER_SECOND); #elif defined(_WIN32) - FILETIME ft{}; - utils::unix_time_to_filetime(utils::time64_to_unix_time(buf.st_atime), ft); + auto ft = utils::time::unix_time_to_filetime( + utils::time::time64_to_unix_time(buf.st_atime)); file.accessed_date = (static_cast(ft.dwHighDateTime) << 32U) | ft.dwLowDateTime; - utils::unix_time_to_filetime(utils::time64_to_unix_time(buf.st_mtime), ft); + ft = utils::time::unix_time_to_filetime( + utils::time::time64_to_unix_time(buf.st_mtime)); file.changed_date = (static_cast(ft.dwHighDateTime) << 32U) | ft.dwLowDateTime; - utils::unix_time_to_filetime(utils::time64_to_unix_time(buf.st_ctime), ft); + ft = utils::time::unix_time_to_filetime( + utils::time::time64_to_unix_time(buf.st_ctime)); file.creation_date = (static_cast(ft.dwHighDateTime) << 32U) | ft.dwLowDateTime; - utils::unix_time_to_filetime(utils::time64_to_unix_time(buf.st_mtime), ft); + ft = utils::time::unix_time_to_filetime(utils::time::time64_to_unix_time(buf.st_mtime)); file.modified_date = (static_cast(ft.dwHighDateTime) << 32U) | ft.dwLowDateTime; #else diff --git a/repertory/librepertory/src/utils/utils.cpp b/repertory/librepertory/src/utils/utils.cpp index e677a116..4c5e9cb0 100644 --- a/repertory/librepertory/src/utils/utils.cpp +++ b/repertory/librepertory/src/utils/utils.cpp @@ -31,6 +31,7 @@ #include "utils/native_file.hpp" #include "utils/path.hpp" #include "utils/string.hpp" +#include "utils/time.hpp" namespace repertory::utils { void calculate_allocation_size(bool directory, std::uint64_t file_size, @@ -61,7 +62,7 @@ auto convert_api_date(const std::string &date) -> std::uint64_t { struct tm tm1 {}; #if defined(_WIN32) - utils::strptime(date_time.c_str(), "%Y-%m-%dT%T", &tm1); + utils::time::strptime(date_time.c_str(), "%Y-%m-%dT%T", &tm1); #else strptime(date_time.c_str(), "%Y-%m-%dT%T", &tm1); #endif diff --git a/repertory/librepertory/src/utils/windows/windows_utils.cpp b/repertory/librepertory/src/utils/windows/windows_utils.cpp index 57bd7aa9..38b69216 100644 --- a/repertory/librepertory/src/utils/windows/windows_utils.cpp +++ b/repertory/librepertory/src/utils/windows/windows_utils.cpp @@ -176,18 +176,6 @@ auto run_process_elevated(std::vector args) -> int { void set_last_error_code(DWORD error_code) { ::SetLastError(error_code); } -// https://stackoverflow.com/questions/321849/strptime-equivalent-on-windows -auto strptime(const char *s, const char *f, struct tm *tm) -> const char * { - std::istringstream input(s); - input.imbue(std::locale(setlocale(LC_ALL, nullptr))); - input >> std::get_time(tm, f); - if (input.fail()) { - return nullptr; - } - - return reinterpret_cast(s + input.tellg()); -} - auto unix_access_mask_to_windows(std::int32_t mask) -> int { if (mask & 1) { mask -= 1; diff --git a/repertory/repertory_test/include/mocks/mock_winfsp_drive.hpp b/repertory/repertory_test/include/mocks/mock_winfsp_drive.hpp index 84f7fde4..50063dd7 100644 --- a/repertory/repertory_test/include/mocks/mock_winfsp_drive.hpp +++ b/repertory/repertory_test/include/mocks/mock_winfsp_drive.hpp @@ -26,6 +26,7 @@ #include "test_common.hpp" #include "drives/winfsp/i_winfsp_drive.hpp" +#include "utils/common.hpp" #include "utils/file_utils.hpp" #include "utils/path.hpp" #include "utils/time.hpp" diff --git a/repertory/repertory_test/src/file_manager_test.cpp b/repertory/repertory_test/src/file_manager_test.cpp index 131e9e86..a7020222 100644 --- a/repertory/repertory_test/src/file_manager_test.cpp +++ b/repertory/repertory_test/src/file_manager_test.cpp @@ -30,6 +30,7 @@ #include "mocks/mock_upload_manager.hpp" #include "platform/platform.hpp" #include "types/repertory.hpp" +#include "utils/common.hpp" #include "utils/encrypting_reader.hpp" #include "utils/event_capture.hpp" #include "utils/file_utils.hpp" diff --git a/repertory/repertory_test/src/remote_fuse_test.cpp b/repertory/repertory_test/src/remote_fuse_test.cpp index f40bd6eb..2fd1d4b9 100644 --- a/repertory/repertory_test/src/remote_fuse_test.cpp +++ b/repertory/repertory_test/src/remote_fuse_test.cpp @@ -34,6 +34,7 @@ #endif #include "drives/fuse/remotefuse/remote_client.hpp" #include "types/repertory.hpp" +#include "utils/common.hpp" #include "utils/time.hpp" #include "utils/utils.hpp"