From 92295506a7ce825c7e71a0680fe364baeb01eb62 Mon Sep 17 00:00:00 2001 From: "Scott E. Graves" Date: Wed, 9 Oct 2024 13:56:40 -0500 Subject: [PATCH] refactor --- .../remotewinfsp/remote_winfsp_drive.cpp | 67 +++++++++---------- .../src/drives/winfsp/winfsp_drive.cpp | 16 +++-- 2 files changed, 42 insertions(+), 41 deletions(-) diff --git a/repertory/librepertory/src/drives/winfsp/remotewinfsp/remote_winfsp_drive.cpp b/repertory/librepertory/src/drives/winfsp/remotewinfsp/remote_winfsp_drive.cpp index bc2d0e38..b39280b9 100644 --- a/repertory/librepertory/src/drives/winfsp/remotewinfsp/remote_winfsp_drive.cpp +++ b/repertory/librepertory/src/drives/winfsp/remotewinfsp/remote_winfsp_drive.cpp @@ -42,7 +42,7 @@ remote_winfsp_drive::winfsp_service::winfsp_service( lock_data &lock, remote_winfsp_drive &drive, std::vector drive_args, app_config &config) : Service(&(L"RepertoryRemote_" + - utils::string::from_utf8(lock.get_unique_id()))[0u]), + utils::string::from_utf8(lock.get_unique_id()))[0U]), config_(config), lock_(lock), drive_(drive), @@ -54,22 +54,22 @@ auto remote_winfsp_drive::winfsp_service::OnStart(ULONG, PWSTR *) -> NTSTATUS { static_cast(__FUNCTION__), }; - const auto mount_location = utils::string::to_lower( - utils::path::absolute((drive_args_.size() > 1u) ? drive_args_[1u] : "")); + const auto mount_location = utils::string::to_lower(utils::path::absolute( + (drive_args_.size() > 1U) ? drive_args_.at(1U) : "")); const auto drive_letter = - ((mount_location.size() == 2u) || - ((mount_location.size() == 3u) && (mount_location[2u] == '\\'))) && - (mount_location[1u] == ':'); + ((mount_location.size() == 2U) || + ((mount_location.size() == 3U) && (mount_location.at(2U) == '\\'))) && + (mount_location[1U] == ':'); auto ret = drive_letter ? STATUS_DEVICE_BUSY : STATUS_NOT_SUPPORTED; if ((drive_letter && not utils::file::directory(mount_location).exists())) { auto unicode_mount_location = utils::string::from_utf8(mount_location); - host_.SetFileSystemName(&unicode_mount_location[0u]); + host_.SetFileSystemName(&unicode_mount_location[0U]); if (config_.get_enable_mount_manager()) { unicode_mount_location = - std::wstring(L"\\\\.\\") + unicode_mount_location[0u] + L":"; + std::wstring(L"\\\\.\\") + unicode_mount_location[0U] + L":"; } - ret = host_.Mount(&unicode_mount_location[0u]); + ret = host_.Mount(&unicode_mount_location[0U]); } else { std::cerr << (drive_letter ? "Mount location in use: " : "Mount location not supported: ") @@ -136,15 +136,15 @@ auto remote_winfsp_drive::Create(PWSTR file_name, UINT32 create_options, remote::file_info fi{}; std::string normalized_name; BOOLEAN exists = 0; - const auto ret = remote_instance_->winfsp_create( + auto ret = remote_instance_->winfsp_create( file_name, create_options, granted_access, attributes, allocation_size, file_desc, &fi, normalized_name, exists); if (ret == STATUS_SUCCESS) { set_file_info(ofi->FileInfo, fi); const auto file_path = utils::string::from_utf8(normalized_name); - wcsncpy(ofi->NormalizedName, &file_path[0], wcslen(&file_path[0])); + wcsncpy(ofi->NormalizedName, file_path.data(), wcslen(file_path.c_str())); ofi->NormalizedNameSize = - static_cast(wcslen(&file_path[0]) * sizeof(WCHAR)); + static_cast(wcslen(file_path.c_str()) * sizeof(WCHAR)); } return ret; @@ -153,7 +153,7 @@ auto remote_winfsp_drive::Create(PWSTR file_name, UINT32 create_options, auto remote_winfsp_drive::Flush(PVOID /*file_node*/, PVOID file_desc, FileInfo *file_info) -> NTSTATUS { remote::file_info fi{}; - const auto ret = remote_instance_->winfsp_flush(file_desc, &fi); + auto ret = remote_instance_->winfsp_flush(file_desc, &fi); set_file_info(*file_info, fi); return ret; } @@ -161,7 +161,7 @@ auto remote_winfsp_drive::Flush(PVOID /*file_node*/, PVOID file_desc, auto remote_winfsp_drive::GetFileInfo(PVOID /*file_node*/, PVOID file_desc, FileInfo *file_info) -> NTSTATUS { remote::file_info fi{}; - const auto ret = remote_instance_->winfsp_get_file_info(file_desc, &fi); + auto ret = remote_instance_->winfsp_get_file_info(file_desc, &fi); set_file_info(*file_info, fi); return ret; } @@ -170,16 +170,16 @@ auto remote_winfsp_drive::GetSecurityByName( PWSTR file_name, PUINT32 attributes, PSECURITY_DESCRIPTOR descriptor, SIZE_T *descriptor_size) -> NTSTATUS { std::wstring string_descriptor; - std::uint64_t sds = descriptor_size ? *descriptor_size : 0; + std::uint64_t sds = (descriptor_size == nullptr) ? 0 : *descriptor_size; auto ret = remote_instance_->winfsp_get_security_by_name( file_name, attributes, descriptor_size ? &sds : nullptr, string_descriptor); *descriptor_size = static_cast(sds); if ((ret == STATUS_SUCCESS) && *descriptor_size) { - PSECURITY_DESCRIPTOR sd = nullptr; - ULONG sz2 = 0u; + PSECURITY_DESCRIPTOR sd{nullptr}; + ULONG sz2{0U}; if (::ConvertStringSecurityDescriptorToSecurityDescriptorW( - &string_descriptor[0u], SDDL_REVISION_1, &sd, &sz2)) { + string_descriptor.data(), SDDL_REVISION_1, &sd, &sz2)) { if (sz2 > *descriptor_size) { ret = STATUS_BUFFER_TOO_SMALL; } else { @@ -196,15 +196,15 @@ auto remote_winfsp_drive::GetSecurityByName( auto remote_winfsp_drive::GetVolumeInfo(VolumeInfo *volume_info) -> NTSTATUS { std::string volume_label; - const auto ret = remote_instance_->winfsp_get_volume_info( + auto ret = remote_instance_->winfsp_get_volume_info( volume_info->TotalSize, volume_info->FreeSize, volume_label); if (ret == STATUS_SUCCESS) { const auto byte_size = static_cast(volume_label.size() * sizeof(WCHAR)); - wcscpy_s(&volume_info->VolumeLabel[0u], 32, - &utils::string::from_utf8(volume_label)[0u]); + wcscpy_s(&volume_info->VolumeLabel[0U], 32, + utils::string::from_utf8(volume_label).c_str()); volume_info->VolumeLabelLength = - std::min(static_cast(64u), byte_size); + std::min(static_cast(64U), byte_size); } return ret; } @@ -214,7 +214,7 @@ auto remote_winfsp_drive::Init(PVOID host) -> NTSTATUS { if (not config_.get_enable_mount_manager()) { file_system_host->SetPrefix( &(L"\\repertory\\" + - std::wstring(file_system_host->FileSystemName()).substr(0, 1))[0u]); + std::wstring(file_system_host->FileSystemName()).substr(0U, 1U))[0U]); } file_system_host->SetFileSystemName(std::wstring{REPERTORY_W}.data()); file_system_host->SetFlushAndPurgeOnCleanup(TRUE); @@ -258,8 +258,7 @@ auto remote_winfsp_drive::mount(const std::vector &drive_args) c = std::make_unique(config_.get_event_level()); } event_system::instance().start(); - const auto ret = - winfsp_service(lock_, *this, parsed_drive_args, config_).Run(); + auto ret = winfsp_service(lock_, *this, parsed_drive_args, config_).Run(); event_system::instance().raise(std::to_string(ret)); event_system::instance().stop(); c.reset(); @@ -290,7 +289,7 @@ auto remote_winfsp_drive::Open(PWSTR file_name, UINT32 create_options, OpenFileInfo *ofi) -> NTSTATUS { remote::file_info fi{}; std::string normalize_name; - const auto ret = + auto ret = remote_instance_->winfsp_open(file_name, create_options, granted_access, file_desc, &fi, normalize_name); if (ret == STATUS_SUCCESS) { @@ -310,7 +309,7 @@ auto remote_winfsp_drive::Overwrite(PVOID /*file_node*/, PVOID file_desc, UINT64 allocation_size, FileInfo *file_info) -> NTSTATUS { remote::file_info fi{}; - const auto ret = remote_instance_->winfsp_overwrite( + auto ret = remote_instance_->winfsp_overwrite( file_desc, attributes, replace_attributes, allocation_size, &fi); set_file_info(*file_info, fi); return ret; @@ -347,10 +346,10 @@ auto remote_winfsp_drive::ReadDirectory(PVOID /*file_node*/, PVOID file_desc, PVOID buffer, ULONG buffer_length, PULONG bytes_transferred) -> NTSTATUS { json item_list; - NTSTATUS ret = remote_instance_->winfsp_read_directory(file_desc, pattern, - marker, item_list); + auto ret = remote_instance_->winfsp_read_directory(file_desc, pattern, marker, + item_list); if (ret == STATUS_SUCCESS) { - PVOID *directory_buffer = nullptr; + PVOID *directory_buffer{nullptr}; if ((ret = remote_instance_->winfsp_get_dir_buffer( file_desc, directory_buffer)) == STATUS_SUCCESS) { if (FspFileSystemAcquireDirectoryBuffer( @@ -425,7 +424,7 @@ auto remote_winfsp_drive::SetBasicInfo(PVOID /*file_node*/, PVOID file_desc, UINT64 change_time, FileInfo *file_info) -> NTSTATUS { remote::file_info fi{}; - const auto ret = remote_instance_->winfsp_set_basic_info( + auto ret = remote_instance_->winfsp_set_basic_info( file_desc, attributes, creation_time, last_access_time, last_write_time, change_time, &fi); set_file_info(*file_info, fi); @@ -452,8 +451,8 @@ auto remote_winfsp_drive::SetFileSize(PVOID /*file_node*/, PVOID file_desc, BOOLEAN set_allocation_size, FileInfo *file_info) -> NTSTATUS { remote::file_info fi{}; - const auto ret = remote_instance_->winfsp_set_file_size( - file_desc, new_size, set_allocation_size, &fi); + auto ret = remote_instance_->winfsp_set_file_size(file_desc, new_size, + set_allocation_size, &fi); set_file_info(*file_info, fi); return ret; } @@ -480,7 +479,7 @@ auto remote_winfsp_drive::Write(PVOID /*file_node*/, PVOID file_desc, PULONG bytes_transferred, FileInfo *file_info) -> NTSTATUS { remote::file_info fi{}; - const auto ret = remote_instance_->winfsp_write( + auto ret = remote_instance_->winfsp_write( file_desc, buffer, offset, length, write_to_end, constrained_io, reinterpret_cast(bytes_transferred), &fi); set_file_info(*file_info, fi); diff --git a/repertory/librepertory/src/drives/winfsp/winfsp_drive.cpp b/repertory/librepertory/src/drives/winfsp/winfsp_drive.cpp index 4556842a..8605e891 100644 --- a/repertory/librepertory/src/drives/winfsp/winfsp_drive.cpp +++ b/repertory/librepertory/src/drives/winfsp/winfsp_drive.cpp @@ -181,6 +181,7 @@ VOID winfsp_drive::Cleanup(PVOID file_node, PVOID file_desc, file.reset(); if (directory_buffer != nullptr) { + std::cout << "delete 1" << std::endl; FspFileSystemDeleteDirectoryBuffer(&directory_buffer); } @@ -283,6 +284,7 @@ VOID winfsp_drive::Close(PVOID /*file_node*/, PVOID file_desc) { } fm_->close(handle); if (directory_buffer != nullptr) { + std::cout << "delete 2" << std::endl; FspFileSystemDeleteDirectoryBuffer(&directory_buffer); } } @@ -922,10 +924,10 @@ auto winfsp_drive::ReadDirectory(PVOID /*file_node*/, PVOID file_desc, if (error == api_error::success) { directory_iterator iterator(std::move(list)); auto status_result = STATUS_SUCCESS; - auto *directory_buffer = - file->get_open_data(handle).directory_buffer; + auto **directory_buffer = + &file->get_open_data(handle).directory_buffer; if (FspFileSystemAcquireDirectoryBuffer( - &directory_buffer, static_cast(nullptr == marker), + directory_buffer, static_cast(nullptr == marker), &status_result) != 0U) { directory_item dir_item{}; auto offset = @@ -969,15 +971,15 @@ auto winfsp_drive::ReadDirectory(PVOID /*file_node*/, PVOID file_desc, display_name.data()); FspFileSystemFillDirectoryBuffer( - &directory_buffer, directory_info, &status_result); + directory_buffer, directory_info, &status_result); } - FspFileSystemReleaseDirectoryBuffer(&directory_buffer); + FspFileSystemReleaseDirectoryBuffer(directory_buffer); } if (status_result == STATUS_SUCCESS) { - FspFileSystemReadDirectoryBuffer(&directory_buffer, marker, - buffer, buffer_length, + FspFileSystemReadDirectoryBuffer(directory_buffer, marker, buffer, + buffer_length, bytes_transferred); if (error == api_error::directory_end_of_files) { error = api_error::success;