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 "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<std::uint64_t>(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

View File

@ -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"

View File

@ -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"

View File

@ -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"

View File

@ -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"

View File

@ -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"

View File

@ -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<remote::file_size>(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<std::size_t>(write_size), write_offset,
reinterpret_cast<const unsigned char *>(buffer),
static_cast<std::size_t>(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;
}

View File

@ -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);
}

View File

@ -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(

View File

@ -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"

View File

@ -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"

View File

@ -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"

View File

@ -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<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 =
(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 =
(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 =
(static_cast<std::uint64_t>(ft.dwHighDateTime) << 32U) | ft.dwLowDateTime;
#else

View File

@ -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

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); }
// 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 {
if (mask & 1) {
mask -= 1;

View File

@ -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"

View File

@ -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"

View File

@ -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"