From 011d32f9cf63cc854fa7df4a2cf128d90eb23d66 Mon Sep 17 00:00:00 2001 From: "Scott E. Graves" Date: Wed, 16 Apr 2025 11:22:03 -0500 Subject: [PATCH] [bug] Windows-to-Linux remote mount is allowing directory rename when directory is not empty #47 --- .../drives/fuse/remotefuse/remote_server.cpp | 1 + .../src/providers/base_provider.cpp | 34 +++++++++++-------- .../providers/encrypt/encrypt_provider.cpp | 34 +++++++++++-------- 3 files changed, 41 insertions(+), 28 deletions(-) diff --git a/repertory/librepertory/src/drives/fuse/remotefuse/remote_server.cpp b/repertory/librepertory/src/drives/fuse/remotefuse/remote_server.cpp index 906293a1..bd5ed920 100644 --- a/repertory/librepertory/src/drives/fuse/remotefuse/remote_server.cpp +++ b/repertory/librepertory/src/drives/fuse/remotefuse/remote_server.cpp @@ -1740,6 +1740,7 @@ auto remote_server::update_to_windows_format(const std::string &root_api_path, } item[JSON_DIRECTORY] = true; + meta[META_DIRECTORY] = utils::string::to_bool(true); item[JSON_META] = meta; } diff --git a/repertory/librepertory/src/providers/base_provider.cpp b/repertory/librepertory/src/providers/base_provider.cpp index 432f045d..b6705c0d 100644 --- a/repertory/librepertory/src/providers/base_provider.cpp +++ b/repertory/librepertory/src/providers/base_provider.cpp @@ -314,20 +314,26 @@ auto base_provider::get_directory_items(const std::string &api_path, (item1.api_path.compare(item2.api_path) < 0)); }); - list.insert(list.begin(), directory_item{ - "..", - "", - true, - 0U, - {}, - }); - list.insert(list.begin(), directory_item{ - ".", - "", - true, - 0U, - {}, - }); + list.insert(list.begin(), + directory_item{ + "..", + "", + true, + 0U, + { + {META_DIRECTORY, utils::string::from_bool(true)}, + }, + }); + list.insert(list.begin(), + directory_item{ + ".", + "", + true, + 0U, + { + {META_DIRECTORY, utils::string::from_bool(true)}, + }, + }); return api_error::success; } diff --git a/repertory/librepertory/src/providers/encrypt/encrypt_provider.cpp b/repertory/librepertory/src/providers/encrypt/encrypt_provider.cpp index 33f612ab..d7926b47 100644 --- a/repertory/librepertory/src/providers/encrypt/encrypt_provider.cpp +++ b/repertory/librepertory/src/providers/encrypt/encrypt_provider.cpp @@ -284,20 +284,26 @@ auto encrypt_provider::get_directory_items(const std::string &api_path, (item1.api_path.compare(item2.api_path) < 0)); }); - list.insert(list.begin(), directory_item{ - "..", - "", - true, - 0U, - {}, - }); - list.insert(list.begin(), directory_item{ - ".", - "", - true, - 0U, - {}, - }); + list.insert(list.begin(), + directory_item{ + "..", + "", + true, + 0U, + { + {META_DIRECTORY, utils::string::from_bool(true)}, + }, + }); + list.insert(list.begin(), + directory_item{ + ".", + "", + true, + 0U, + { + {META_DIRECTORY, utils::string::from_bool(true)}, + }, + }); return api_error::success; }); }