diff --git a/src/xenia/base/filesystem_posix.cc b/src/xenia/base/filesystem_posix.cc index 0a759f1f4..f3edca236 100644 --- a/src/xenia/base/filesystem_posix.cc +++ b/src/xenia/base/filesystem_posix.cc @@ -191,10 +191,7 @@ std::unique_ptr 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::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; } diff --git a/src/xenia/kernel/xam/user_profile.cc b/src/xenia/kernel/xam/user_profile.cc index 1ca5d3d84..605cb7cf1 100644 --- a/src/xenia/kernel/xam/user_profile.cc +++ b/src/xenia/kernel/xam/user_profile.cc @@ -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;