This commit is contained in:
parent
68d79c73cf
commit
89fc0fb372
@ -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
|
||||
|
@ -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"
|
||||
|
@ -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"
|
||||
|
@ -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"
|
||||
|
@ -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"
|
||||
|
@ -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"
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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(
|
||||
|
@ -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"
|
||||
|
@ -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"
|
||||
|
@ -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"
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
|
@ -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"
|
||||
|
@ -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"
|
||||
|
@ -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"
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user