fixes
Some checks are pending
BlockStorage/repertory/pipeline/head Build queued...

This commit is contained in:
Scott E. Graves 2024-08-03 15:50:16 -05:00
parent 68d79c73cf
commit 89fc0fb372
18 changed files with 43 additions and 34 deletions

View File

@ -24,14 +24,14 @@
#include "types/repertory.hpp" #include "types/repertory.hpp"
#include "utils/string.hpp" #include "utils/string.hpp"
#include "utils/time.hpp"
#include "utils/utils.hpp" #include "utils/utils.hpp"
namespace repertory { namespace repertory {
namespace utils::aws { namespace utils::aws {
#if defined(_WIN32) #if defined(_WIN32)
[[nodiscard]] inline auto format_time(std::uint64_t t) -> std::uint64_t { [[nodiscard]] inline auto format_time(std::uint64_t t) -> std::uint64_t {
FILETIME ft{}; auto ft = utils::time::unix_time_to_filetime(t);
utils::unix_time_to_filetime(t, ft);
return static_cast<std::uint64_t>(ft.dwHighDateTime) << 32u | return static_cast<std::uint64_t>(ft.dwHighDateTime) << 32u |
ft.dwLowDateTime; ft.dwLowDateTime;
} }
@ -75,7 +75,7 @@ struct head_object_result {
struct tm tm1 {}; struct tm tm1 {};
// Mon, 17 Dec 2012 02:14:10 GMT // Mon, 17 Dec 2012 02:14:10 GMT
#if defined(_WIN32) #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 #else
strptime(date.c_str(), "%a, %d %b %Y %H:%M:%S %Z", &tm1); strptime(date.c_str(), "%a, %d %b %Y %H:%M:%S %Z", &tm1);
#endif #endif

View File

@ -23,6 +23,7 @@
#include "platform/platform.hpp" #include "platform/platform.hpp"
#include "types/startup_exception.hpp" #include "types/startup_exception.hpp"
#include "utils/common.hpp"
#include "utils/error_utils.hpp" #include "utils/error_utils.hpp"
#include "utils/file_utils.hpp" #include "utils/file_utils.hpp"
#include "utils/path.hpp" #include "utils/path.hpp"

View File

@ -24,6 +24,7 @@
#include "platform/platform.hpp" #include "platform/platform.hpp"
#include "types/remote.hpp" #include "types/remote.hpp"
#include "types/repertory.hpp" #include "types/repertory.hpp"
#include "utils/common.hpp"
#include "utils/encryption.hpp" #include "utils/encryption.hpp"
#include "utils/error_utils.hpp" #include "utils/error_utils.hpp"
#include "utils/string.hpp" #include "utils/string.hpp"

View File

@ -39,6 +39,7 @@
#include "types/startup_exception.hpp" #include "types/startup_exception.hpp"
#include "utils/base64.hpp" #include "utils/base64.hpp"
#include "utils/collection.hpp" #include "utils/collection.hpp"
#include "utils/common.hpp"
#include "utils/error_utils.hpp" #include "utils/error_utils.hpp"
#include "utils/polling.hpp" #include "utils/polling.hpp"
#include "utils/time.hpp" #include "utils/time.hpp"

View File

@ -32,6 +32,7 @@
#include "platform/platform.hpp" #include "platform/platform.hpp"
#include "rpc/server/server.hpp" #include "rpc/server/server.hpp"
#include "types/remote.hpp" #include "types/remote.hpp"
#include "utils/common.hpp"
#include "utils/error_utils.hpp" #include "utils/error_utils.hpp"
#include "utils/file_utils.hpp" #include "utils/file_utils.hpp"
#include "utils/path.hpp" #include "utils/path.hpp"

View File

@ -31,6 +31,7 @@
#include "platform/platform.hpp" #include "platform/platform.hpp"
#include "types/remote.hpp" #include "types/remote.hpp"
#include "types/repertory.hpp" #include "types/repertory.hpp"
#include "utils/common.hpp"
#include "utils/error_utils.hpp" #include "utils/error_utils.hpp"
#include "utils/file.hpp" #include "utils/file.hpp"
#include "utils/path.hpp" #include "utils/path.hpp"

View File

@ -34,10 +34,13 @@
#include "drives/winfsp/remotewinfsp/i_remote_instance.hpp" #include "drives/winfsp/remotewinfsp/i_remote_instance.hpp"
#include "events/event_system.hpp" #include "events/event_system.hpp"
#include "events/events.hpp" #include "events/events.hpp"
#include "platform/platform.hpp"
#include "types/remote.hpp" #include "types/remote.hpp"
#include "types/repertory.hpp" #include "types/repertory.hpp"
#include "utils/common.hpp"
#include "utils/file_utils.hpp" #include "utils/file_utils.hpp"
#include "utils/path.hpp" #include "utils/path.hpp"
#include "utils/time.hpp"
#if !defined(_SH_DENYNO) #if !defined(_SH_DENYNO)
#define _SH_DENYRW 0x10 // deny read/write mode #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( directory ? 2 + drive_.get_directory_item_count(
utils::path::create_api_path(path)) utils::path::create_api_path(path))
: 1); : 1);
r_stat.st_atimespec = utils::time64_to_unix_time(unix_st.st_atime); r_stat.st_atimespec = utils::time::time64_to_unix_time(unix_st.st_atime);
r_stat.st_birthtimespec = utils::time64_to_unix_time(unix_st.st_ctime); r_stat.st_birthtimespec = utils::time::time64_to_unix_time(unix_st.st_ctime);
r_stat.st_ctimespec = utils::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::time64_to_unix_time(unix_st.st_mtime); r_stat.st_mtimespec = utils::time::time64_to_unix_time(unix_st.st_mtime);
r_stat.st_size = static_cast<remote::file_size>(unix_st.st_size); r_stat.st_size = static_cast<remote::file_size>(unix_st.st_size);
r_stat.st_mode = unix_st.st_mode; r_stat.st_mode = unix_st.st_mode;
} }
@ -544,7 +547,8 @@ auto remote_server::fuse_write(
errno = EFAULT; errno = EFAULT;
if ((write_size == 0) || if ((write_size == 0) ||
native_file::attach(os_handle)->write_bytes( native_file::attach(os_handle)->write_bytes(
buffer, static_cast<std::size_t>(write_size), write_offset, reinterpret_cast<const unsigned char *>(buffer),
static_cast<std::size_t>(write_size), write_offset,
bytes_written)) { bytes_written)) {
res = 0; res = 0;
errno = 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.dwLowDateTime = now & 0xFFFFFFFF;
access_time_ptr = &access_time; access_time_ptr = &access_time;
} else if (op0 != UTIME_OMIT) { } 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; 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.dwLowDateTime = now & 0xFFFFFFFF;
write_time_ptr = &write_time; write_time_ptr = &write_time;
} else if (op1 != UTIME_OMIT) { } 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; write_time_ptr = &write_time;
} }

View File

@ -30,6 +30,7 @@
#include "platform/platform.hpp" #include "platform/platform.hpp"
#include "rpc/server/server.hpp" #include "rpc/server/server.hpp"
#include "utils/collection.hpp" #include "utils/collection.hpp"
#include "utils/common.hpp"
#include "utils/error_utils.hpp" #include "utils/error_utils.hpp"
#include "utils/file_utils.hpp" #include "utils/file_utils.hpp"
#include "utils/path.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( const auto display_name = utils::string::from_utf8(
utils::path::strip_to_file_name(item_path)); utils::path::strip_to_file_name(item_path));
if (not marker || (marker && item_found)) { 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 { union {
UINT8 B[FIELD_OFFSET(FSP_FSCTL_DIR_INFO, FileNameBuf) + UINT8 B[FIELD_OFFSET(FSP_FSCTL_DIR_INFO, FileNameBuf) +
((MAX_PATH + 1) * sizeof(WCHAR))]; ((MAX_PATH + 1) * sizeof(WCHAR))];
@ -389,7 +390,7 @@ auto remote_winfsp_drive::ReadDirectory(PVOID /*file_node*/, PVOID file_desc,
break; break;
} }
} }
} // }
} else { } else {
item_found = display_name == std::wstring(marker); item_found = display_name == std::wstring(marker);
} }

View File

@ -33,6 +33,7 @@
#include "types/repertory.hpp" #include "types/repertory.hpp"
#include "types/startup_exception.hpp" #include "types/startup_exception.hpp"
#include "utils/collection.hpp" #include "utils/collection.hpp"
#include "utils/common.hpp"
#include "utils/error_utils.hpp" #include "utils/error_utils.hpp"
#include "utils/file_utils.hpp" #include "utils/file_utils.hpp"
#include "utils/polling.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)}))); api_path, {utils::string::to_utf8(marker)})));
while ((error = iterator.get_directory_item( while ((error = iterator.get_directory_item(
offset++, dir_item)) == api_error::success) { offset++, dir_item)) == api_error::success) {
if (utils::path::is_ads_file_path(dir_item.api_path) || // if (utils::path::is_ads_file_path(dir_item.api_path) ||
dir_item.api_path == "." || dir_item.api_path == "..") { // dir_item.api_path == "." || dir_item.api_path == "..") {
continue; // continue;
} // }
if (dir_item.meta.empty()) { if (dir_item.meta.empty()) {
utils::error::raise_api_path_error( utils::error::raise_api_path_error(

View File

@ -29,6 +29,7 @@
#include "providers/i_provider.hpp" #include "providers/i_provider.hpp"
#include "types/repertory.hpp" #include "types/repertory.hpp"
#include "types/startup_exception.hpp" #include "types/startup_exception.hpp"
#include "utils/common.hpp"
#include "utils/encrypting_reader.hpp" #include "utils/encrypting_reader.hpp"
#include "utils/error_utils.hpp" #include "utils/error_utils.hpp"
#include "utils/file_utils.hpp" #include "utils/file_utils.hpp"

View File

@ -26,6 +26,7 @@
#include "providers/i_provider.hpp" #include "providers/i_provider.hpp"
#include "types/repertory.hpp" #include "types/repertory.hpp"
#include "types/startup_exception.hpp" #include "types/startup_exception.hpp"
#include "utils/common.hpp"
#include "utils/error_utils.hpp" #include "utils/error_utils.hpp"
#include "utils/file_utils.hpp" #include "utils/file_utils.hpp"
#include "utils/path.hpp" #include "utils/path.hpp"

View File

@ -26,6 +26,7 @@
#include "platform/platform.hpp" #include "platform/platform.hpp"
#include "providers/i_provider.hpp" #include "providers/i_provider.hpp"
#include "types/repertory.hpp" #include "types/repertory.hpp"
#include "utils/common.hpp"
#include "utils/encrypting_reader.hpp" #include "utils/encrypting_reader.hpp"
#include "utils/file_utils.hpp" #include "utils/file_utils.hpp"
#include "utils/path.hpp" #include "utils/path.hpp"

View File

@ -33,6 +33,7 @@
#include "utils/file_utils.hpp" #include "utils/file_utils.hpp"
#include "utils/path.hpp" #include "utils/path.hpp"
#include "utils/polling.hpp" #include "utils/polling.hpp"
#include "utils/time.hpp"
namespace { namespace {
const std::string directory_table = "directory"; const std::string directory_table = "directory";
@ -98,20 +99,22 @@ auto encrypt_provider::create_api_file(
file.modified_date = file.modified_date =
buf.st_mtimespec.tv_nsec + (buf.st_mtimespec.tv_sec * NANOS_PER_SECOND); buf.st_mtimespec.tv_nsec + (buf.st_mtimespec.tv_sec * NANOS_PER_SECOND);
#elif defined(_WIN32) #elif defined(_WIN32)
FILETIME ft{}; auto ft = utils::time::unix_time_to_filetime(
utils::unix_time_to_filetime(utils::time64_to_unix_time(buf.st_atime), ft); utils::time::time64_to_unix_time(buf.st_atime));
file.accessed_date = file.accessed_date =
(static_cast<std::uint64_t>(ft.dwHighDateTime) << 32U) | ft.dwLowDateTime; (static_cast<std::uint64_t>(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 = file.changed_date =
(static_cast<std::uint64_t>(ft.dwHighDateTime) << 32U) | ft.dwLowDateTime; (static_cast<std::uint64_t>(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 = file.creation_date =
(static_cast<std::uint64_t>(ft.dwHighDateTime) << 32U) | ft.dwLowDateTime; (static_cast<std::uint64_t>(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 = file.modified_date =
(static_cast<std::uint64_t>(ft.dwHighDateTime) << 32U) | ft.dwLowDateTime; (static_cast<std::uint64_t>(ft.dwHighDateTime) << 32U) | ft.dwLowDateTime;
#else #else

View File

@ -31,6 +31,7 @@
#include "utils/native_file.hpp" #include "utils/native_file.hpp"
#include "utils/path.hpp" #include "utils/path.hpp"
#include "utils/string.hpp" #include "utils/string.hpp"
#include "utils/time.hpp"
namespace repertory::utils { namespace repertory::utils {
void calculate_allocation_size(bool directory, std::uint64_t file_size, 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 {}; struct tm tm1 {};
#if defined(_WIN32) #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 #else
strptime(date_time.c_str(), "%Y-%m-%dT%T", &tm1); strptime(date_time.c_str(), "%Y-%m-%dT%T", &tm1);
#endif #endif

View File

@ -176,18 +176,6 @@ auto run_process_elevated(std::vector<const char *> args) -> int {
void set_last_error_code(DWORD error_code) { ::SetLastError(error_code); } 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<const char *>(s + input.tellg());
}
auto unix_access_mask_to_windows(std::int32_t mask) -> int { auto unix_access_mask_to_windows(std::int32_t mask) -> int {
if (mask & 1) { if (mask & 1) {
mask -= 1; mask -= 1;

View File

@ -26,6 +26,7 @@
#include "test_common.hpp" #include "test_common.hpp"
#include "drives/winfsp/i_winfsp_drive.hpp" #include "drives/winfsp/i_winfsp_drive.hpp"
#include "utils/common.hpp"
#include "utils/file_utils.hpp" #include "utils/file_utils.hpp"
#include "utils/path.hpp" #include "utils/path.hpp"
#include "utils/time.hpp" #include "utils/time.hpp"

View File

@ -30,6 +30,7 @@
#include "mocks/mock_upload_manager.hpp" #include "mocks/mock_upload_manager.hpp"
#include "platform/platform.hpp" #include "platform/platform.hpp"
#include "types/repertory.hpp" #include "types/repertory.hpp"
#include "utils/common.hpp"
#include "utils/encrypting_reader.hpp" #include "utils/encrypting_reader.hpp"
#include "utils/event_capture.hpp" #include "utils/event_capture.hpp"
#include "utils/file_utils.hpp" #include "utils/file_utils.hpp"

View File

@ -34,6 +34,7 @@
#endif #endif
#include "drives/fuse/remotefuse/remote_client.hpp" #include "drives/fuse/remotefuse/remote_client.hpp"
#include "types/repertory.hpp" #include "types/repertory.hpp"
#include "utils/common.hpp"
#include "utils/time.hpp" #include "utils/time.hpp"
#include "utils/utils.hpp" #include "utils/utils.hpp"