mirror of
https://git.suyu.dev/suyu/suyu.git
synced 2024-11-25 21:06:58 -05:00
FileSys: w->rw permission lift only happens in SDMC archive
This commit is contained in:
parent
0987783699
commit
0647f86649
4 changed files with 14 additions and 2 deletions
|
@ -19,6 +19,17 @@ namespace FileSys {
|
|||
|
||||
ResultVal<std::unique_ptr<FileBackend>> SDMCArchive::OpenFile(const Path& path,
|
||||
const Mode& mode) const {
|
||||
Mode modified_mode;
|
||||
modified_mode.hex = mode.hex;
|
||||
|
||||
// SDMC archive always opens a file with at least read permission
|
||||
modified_mode.read_flag.Assign(1);
|
||||
|
||||
return OpenFileBase(path, modified_mode);
|
||||
}
|
||||
|
||||
ResultVal<std::unique_ptr<FileBackend>> SDMCArchive::OpenFileBase(const Path& path,
|
||||
const Mode& mode) const {
|
||||
LOG_DEBUG(Service_FS, "called path=%s mode=%01X", path.DebugStr().c_str(), mode.hex);
|
||||
|
||||
const PathParser path_parser(path);
|
||||
|
|
|
@ -36,6 +36,7 @@ public:
|
|||
u64 GetFreeBytes() const override;
|
||||
|
||||
protected:
|
||||
ResultVal<std::unique_ptr<FileBackend>> OpenFileBase(const Path& path, const Mode& mode) const;
|
||||
std::string mount_point;
|
||||
};
|
||||
|
||||
|
|
|
@ -21,7 +21,7 @@ ResultVal<std::unique_ptr<FileBackend>> SDMCWriteOnlyArchive::OpenFile(const Pat
|
|||
LOG_ERROR(Service_FS, "Read flag is not supported");
|
||||
return ERROR_INVALID_READ_FLAG;
|
||||
}
|
||||
return SDMCArchive::OpenFile(path, mode);
|
||||
return SDMCArchive::OpenFileBase(path, mode);
|
||||
}
|
||||
|
||||
ResultVal<std::unique_ptr<DirectoryBackend>> SDMCWriteOnlyArchive::OpenDirectory(
|
||||
|
|
|
@ -163,7 +163,7 @@ u64 DiskArchive::GetFreeBytes() const {
|
|||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
ResultVal<size_t> DiskFile::Read(const u64 offset, const size_t length, u8* buffer) const {
|
||||
if (!mode.read_flag && !mode.write_flag)
|
||||
if (!mode.read_flag)
|
||||
return ResultCode(ErrorDescription::FS_InvalidOpenFlags, ErrorModule::FS,
|
||||
ErrorSummary::Canceled, ErrorLevel::Status);
|
||||
|
||||
|
|
Loading…
Reference in a new issue