winfsp unit tests and fixes

This commit is contained in:
Scott E. Graves 2024-11-05 13:52:05 -06:00
parent 3871e44732
commit 8018ce51a0

View File

@ -986,22 +986,22 @@ auto remote_server::winfsp_create(PWSTR file_name, UINT32 create_options,
{utils::string::to_utf8(file_name)}))
.exists());
auto create_flags{FILE_FLAG_BACKUP_SEMANTICS};
attributes |= FILE_FLAG_BACKUP_SEMANTICS;
if ((create_options & FILE_DIRECTORY_FILE) != 0U) {
create_flags |= FILE_FLAG_POSIX_SEMANTICS;
attributes |= FILE_FLAG_POSIX_SEMANTICS;
}
if ((create_options & FILE_DELETE_ON_CLOSE) != 0U) {
create_flags |= FILE_FLAG_DELETE_ON_CLOSE;
attributes |= FILE_FLAG_DELETE_ON_CLOSE;
}
attributes |=
((create_options & FILE_DIRECTORY_FILE) == 0U ? FILE_ATTRIBUTE_ARCHIVE
: FILE_ATTRIBUTE_DIRECTORY);
auto *handle = ::CreateFileW(
file_path.c_str(), granted_access,
FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE, nullptr,
CREATE_NEW, static_cast<DWORD>(create_flags) | attributes, nullptr);
auto *handle =
::CreateFileW(file_path.c_str(), granted_access,
FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE,
nullptr, CREATE_NEW, attributes, nullptr);
if (handle != INVALID_HANDLE_VALUE) {
*file_desc = reinterpret_cast<PVOID>(handle);
normalized_name = utils::string::to_utf8(file_name);