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