winfsp unit tests and fixes
This commit is contained in:
@@ -882,7 +882,7 @@ auto winfsp_drive::ReadDirectory(PVOID /*file_node*/, PVOID file_desc,
|
||||
REPERTORY_USES_FUNCTION_NAME();
|
||||
|
||||
std::string api_path;
|
||||
auto error = api_error::invalid_handle;
|
||||
auto error{api_error::invalid_handle};
|
||||
auto handle =
|
||||
static_cast<std::uint64_t>(reinterpret_cast<std::uintptr_t>(file_desc));
|
||||
if (handle != 0U) {
|
||||
@@ -912,15 +912,35 @@ 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 (dir_item.api_path == "." || dir_item.api_path == "..") {
|
||||
continue;
|
||||
if (dir_item.api_path == ".") {
|
||||
auto res = provider_.get_item_meta(api_path, dir_item.meta);
|
||||
if (res != api_error::success) {
|
||||
error = res;
|
||||
utils::error::raise_api_path_error(function_name,
|
||||
dir_item.api_path, error,
|
||||
"failed to get . meta");
|
||||
break;
|
||||
}
|
||||
} else if (dir_item.api_path == "..") {
|
||||
// TODO handle '/' parent
|
||||
auto res = provider_.get_item_meta(
|
||||
utils::path::get_parent_api_path(api_path),
|
||||
dir_item.meta);
|
||||
if (res != api_error::success) {
|
||||
error = res;
|
||||
utils::error::raise_api_path_error(function_name,
|
||||
dir_item.api_path, error,
|
||||
"failed to get .. meta");
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (dir_item.meta.empty()) {
|
||||
error = api_error::error;
|
||||
utils::error::raise_api_path_error(
|
||||
function_name, dir_item.api_path, api_error::error,
|
||||
"item meta is empty");
|
||||
continue;
|
||||
break;
|
||||
}
|
||||
|
||||
auto display_name = utils::string::from_utf8(
|
||||
|
Reference in New Issue
Block a user