Compare commits
7 Commits
v2.1.0-rc-
...
f1e82d8f9f
Author | SHA1 | Date | |
---|---|---|---|
f1e82d8f9f | |||
f5c4aebdac | |||
f2f9e8fd15 | |||
2a673915af | |||
df3db38ae7 | |||
b0b69c6dd4 | |||
11b118a30f |
15
CHANGELOG.md
15
CHANGELOG.md
@@ -1,7 +1,22 @@
|
|||||||
# Changelog
|
# Changelog
|
||||||
|
|
||||||
|
## v2.0.6-release
|
||||||
|
|
||||||
|
### Issues
|
||||||
|
|
||||||
|
* ~~\#12 [Unit Test] Complete all providers unit tests~~
|
||||||
|
* ~~\#21 [Unit Test] Complete WinFSP unit tests~~
|
||||||
|
* ~~\#22 [Unit Test] Complete FUSE unit tests~~
|
||||||
|
* ~~\#33 Complete initial v2.0 documentation~~
|
||||||
|
* \#42 [bug] Remote mount directory listing on Windows connected to Linux is failing
|
||||||
|
|
||||||
|
### Changes from v2.0.5-rc
|
||||||
|
|
||||||
|
* Drive letters in UI should always be lowercase
|
||||||
|
|
||||||
## v2.0.5-rc
|
## v2.0.5-rc
|
||||||
|
|
||||||
|
<!-- markdownlint-disable-next-line -->
|
||||||
### Issues
|
### Issues
|
||||||
|
|
||||||
* \#39 Create management portal in Flutter
|
* \#39 Create management portal in Flutter
|
||||||
|
@@ -10,7 +10,7 @@ PROJECT_DESC="Mount utility for Sia and S3"
|
|||||||
|
|
||||||
PROJECT_MAJOR_VERSION=2
|
PROJECT_MAJOR_VERSION=2
|
||||||
PROJECT_MINOR_VERSION=0
|
PROJECT_MINOR_VERSION=0
|
||||||
PROJECT_REVISION_VERSION=5
|
PROJECT_REVISION_VERSION=6
|
||||||
PROJECT_RELEASE_NUM=0
|
PROJECT_RELEASE_NUM=0
|
||||||
PROJECT_RELEASE_ITER=rc
|
PROJECT_RELEASE_ITER=rc
|
||||||
|
|
||||||
|
@@ -1390,7 +1390,7 @@ auto remote_server::winfsp_read_directory(PVOID file_desc, PWSTR /*pattern*/,
|
|||||||
|
|
||||||
item_list.clear();
|
item_list.clear();
|
||||||
|
|
||||||
const auto handle = reinterpret_cast<remote::file_handle>(file_desc);
|
auto handle = reinterpret_cast<remote::file_handle>(file_desc);
|
||||||
auto ret = static_cast<packet::error_type>(
|
auto ret = static_cast<packet::error_type>(
|
||||||
has_open_info(static_cast<native_handle>(handle), STATUS_INVALID_HANDLE));
|
has_open_info(static_cast<native_handle>(handle), STATUS_INVALID_HANDLE));
|
||||||
if (ret == STATUS_SUCCESS) {
|
if (ret == STATUS_SUCCESS) {
|
||||||
@@ -1680,29 +1680,30 @@ auto remote_server::json_release_directory_snapshot(
|
|||||||
}
|
}
|
||||||
|
|
||||||
auto remote_server::update_to_windows_format(json &item) -> json & {
|
auto remote_server::update_to_windows_format(json &item) -> json & {
|
||||||
const auto api_path = item["path"].get<std::string>();
|
auto api_path = item[JSON_API_PATH].get<std::string>();
|
||||||
item["meta"][META_ACCESSED] = std::to_string(
|
item[JSON_META][META_ACCESSED] = std::to_string(
|
||||||
utils::string::to_uint64(empty_as_zero(item["meta"][META_ACCESSED])));
|
utils::string::to_uint64(empty_as_zero(item[JSON_META][META_ACCESSED])));
|
||||||
item["meta"][META_CREATION] = std::to_string(
|
item[JSON_META][META_CREATION] = std::to_string(
|
||||||
utils::string::to_uint64(empty_as_zero(item["meta"][META_CREATION])));
|
utils::string::to_uint64(empty_as_zero(item[JSON_META][META_CREATION])));
|
||||||
item["meta"][META_MODIFIED] = std::to_string(
|
item[JSON_META][META_MODIFIED] = std::to_string(
|
||||||
utils::string::to_uint64(empty_as_zero(item["meta"][META_MODIFIED])));
|
utils::string::to_uint64(empty_as_zero(item[JSON_META][META_MODIFIED])));
|
||||||
|
|
||||||
if (item["meta"][META_WRITTEN].empty() ||
|
if (item[JSON_META][META_WRITTEN].empty() ||
|
||||||
(item["meta"][META_WRITTEN].get<std::string>() == "0") ||
|
(item[JSON_META][META_WRITTEN].get<std::string>() == "0") ||
|
||||||
(item["meta"][META_WRITTEN].get<std::string>() ==
|
(item[JSON_META][META_WRITTEN].get<std::string>() ==
|
||||||
std::to_string(utils::time::WIN32_TIME_CONVERSION))) {
|
std::to_string(utils::time::WIN32_TIME_CONVERSION))) {
|
||||||
drive_.set_item_meta(api_path, META_WRITTEN,
|
drive_.set_item_meta(api_path, META_WRITTEN,
|
||||||
item["meta"][META_MODIFIED].get<std::string>());
|
item[JSON_META][META_MODIFIED].get<std::string>());
|
||||||
item["meta"][META_WRITTEN] = item["meta"][META_MODIFIED];
|
item[JSON_META][META_WRITTEN] = item[JSON_META][META_MODIFIED];
|
||||||
}
|
}
|
||||||
|
|
||||||
if (item["meta"][META_ATTRIBUTES].empty()) {
|
if (item[JSON_META][META_ATTRIBUTES].empty()) {
|
||||||
item["meta"][META_ATTRIBUTES] =
|
item[JSON_META][META_ATTRIBUTES] =
|
||||||
item["directory"].get<bool>() ? std::to_string(FILE_ATTRIBUTE_DIRECTORY)
|
item[JSON_DIRECTORY].get<bool>()
|
||||||
: std::to_string(FILE_ATTRIBUTE_ARCHIVE);
|
? std::to_string(FILE_ATTRIBUTE_DIRECTORY)
|
||||||
|
: std::to_string(FILE_ATTRIBUTE_ARCHIVE);
|
||||||
drive_.set_item_meta(api_path, META_ATTRIBUTES,
|
drive_.set_item_meta(api_path, META_ATTRIBUTES,
|
||||||
item["meta"][META_ATTRIBUTES].get<std::string>());
|
item[JSON_META][META_ATTRIBUTES].get<std::string>());
|
||||||
}
|
}
|
||||||
|
|
||||||
return item;
|
return item;
|
||||||
|
@@ -23,6 +23,8 @@
|
|||||||
#include "backward.hpp"
|
#include "backward.hpp"
|
||||||
#endif // defined(PROJECT_ENABLE_BACKWARD_CPP)
|
#endif // defined(PROJECT_ENABLE_BACKWARD_CPP)
|
||||||
|
|
||||||
|
#include <algorithm>
|
||||||
|
|
||||||
#include "cli/actions.hpp"
|
#include "cli/actions.hpp"
|
||||||
#include "initialize.hpp"
|
#include "initialize.hpp"
|
||||||
#include "types/repertory.hpp"
|
#include "types/repertory.hpp"
|
||||||
@@ -44,7 +46,7 @@ auto main(int argc, char **argv) -> int {
|
|||||||
std::vector<const char *> args;
|
std::vector<const char *> args;
|
||||||
{
|
{
|
||||||
auto args_span = std::span(argv, static_cast<std::size_t>(argc));
|
auto args_span = std::span(argv, static_cast<std::size_t>(argc));
|
||||||
std::copy(args_span.begin(), args_span.end(), std::back_inserter(args));
|
std::ranges::copy(args_span, std::back_inserter(args));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (argc == 1) {
|
if (argc == 1) {
|
||||||
|
@@ -326,9 +326,9 @@ void handlers::handle_put_mount_location(const httplib::Request &req,
|
|||||||
void handlers::handle_get_available_locations(httplib::Response &res) {
|
void handlers::handle_get_available_locations(httplib::Response &res) {
|
||||||
#if defined(_WIN32)
|
#if defined(_WIN32)
|
||||||
constexpr const std::array<std::string_view, 26U> letters{
|
constexpr const std::array<std::string_view, 26U> letters{
|
||||||
"A:", "B:", "C:", "D:", "E:", "F:", "G:", "H:", "I:",
|
"a:", "b:", "c:", "d:", "e:", "f:", "g:", "h:", "i:",
|
||||||
"J:", "K:", "L:", "M:", "N:", "O:", "P:", "Q:", "R:",
|
"j:", "k:", "l:", "m:", "n:", "o:", "p:", "q:", "r:",
|
||||||
"S:", "T:", "U:", "V:", "W:", "X:", "Y:", "Z:",
|
"s:", "t:", "u:", "v:", "w:", "x:", "y:", "z:",
|
||||||
};
|
};
|
||||||
|
|
||||||
auto available = std::accumulate(
|
auto available = std::accumulate(
|
||||||
|
Reference in New Issue
Block a user