[VFS] Fixed opening files with incompatible access flags on posix
This commit is contained in:
@@ -191,10 +191,7 @@ std::unique_ptr<FileHandle> FileHandle::OpenExisting(
|
||||
open_access |= O_WRONLY;
|
||||
}
|
||||
if (desired_access & FileAccess::kGenericExecute) {
|
||||
open_access |= O_RDONLY;
|
||||
}
|
||||
if (desired_access & FileAccess::kGenericAll) {
|
||||
open_access |= O_RDWR;
|
||||
// Unsupported
|
||||
}
|
||||
if (desired_access & FileAccess::kFileReadData) {
|
||||
open_access |= O_RDONLY;
|
||||
@@ -202,6 +199,17 @@ std::unique_ptr<FileHandle> FileHandle::OpenExisting(
|
||||
if (desired_access & FileAccess::kFileWriteData) {
|
||||
open_access |= O_WRONLY;
|
||||
}
|
||||
if (desired_access & FileAccess::kGenericRead &&
|
||||
desired_access & FileAccess::kGenericWrite) {
|
||||
open_access = O_RDWR;
|
||||
}
|
||||
if (desired_access & FileAccess::kFileReadData &&
|
||||
desired_access & FileAccess::kFileWriteData) {
|
||||
open_access = O_RDWR;
|
||||
}
|
||||
if (desired_access & FileAccess::kGenericAll) {
|
||||
open_access = O_RDWR;
|
||||
}
|
||||
if (desired_access & FileAccess::kFileAppendData) {
|
||||
open_access |= O_APPEND;
|
||||
}
|
||||
|
||||
@@ -104,7 +104,7 @@ void UserProfile::WriteProfileIcon(XTileType tile_type,
|
||||
|
||||
const X_STATUS result = kernel_state()->file_system()->OpenFile(
|
||||
nullptr, path, vfs::FileDisposition::kOverwriteIf,
|
||||
vfs::FileAccess::kGenericAll, false, true, &file, &action);
|
||||
vfs::FileAccess::kGenericWrite, false, true, &file, &action);
|
||||
|
||||
if (result != X_STATUS_SUCCESS) {
|
||||
return;
|
||||
|
||||
Reference in New Issue
Block a user