diff options
author | Subv <subv2112@gmail.com> | 2015-12-28 16:03:09 +0100 |
---|---|---|
committer | Subv <subv2112@gmail.com> | 2016-03-20 20:28:17 +0100 |
commit | 96f0e32f836b19edb3d14ce4f87a7aed1ac6a8e1 (patch) | |
tree | 9eed35100efe7714f7ef5a39ff2c3bbf897f3dae /src/core/file_sys/disk_archive.cpp | |
parent | HLE/FS: Corrected the error codes for DeleteFile (diff) | |
download | yuzu-96f0e32f836b19edb3d14ce4f87a7aed1ac6a8e1.tar yuzu-96f0e32f836b19edb3d14ce4f87a7aed1ac6a8e1.tar.gz yuzu-96f0e32f836b19edb3d14ce4f87a7aed1ac6a8e1.tar.bz2 yuzu-96f0e32f836b19edb3d14ce4f87a7aed1ac6a8e1.tar.lz yuzu-96f0e32f836b19edb3d14ce4f87a7aed1ac6a8e1.tar.xz yuzu-96f0e32f836b19edb3d14ce4f87a7aed1ac6a8e1.tar.zst yuzu-96f0e32f836b19edb3d14ce4f87a7aed1ac6a8e1.zip |
Diffstat (limited to '')
-rw-r--r-- | src/core/file_sys/disk_archive.cpp | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/src/core/file_sys/disk_archive.cpp b/src/core/file_sys/disk_archive.cpp index 0c55a4863..2dca895fd 100644 --- a/src/core/file_sys/disk_archive.cpp +++ b/src/core/file_sys/disk_archive.cpp @@ -124,17 +124,23 @@ bool DiskFile::Open() { return file->IsOpen(); } -size_t DiskFile::Read(const u64 offset, const size_t length, u8* buffer) const { +ResultVal<size_t> DiskFile::Read(const u64 offset, const size_t length, u8* buffer) const { + if (!mode.read_flag && !mode.write_flag) + return ResultCode(ErrorDescription::FS_InvalidOpenFlags, ErrorModule::FS, ErrorSummary::Canceled, ErrorLevel::Status); + file->Seek(offset, SEEK_SET); - return file->ReadBytes(buffer, length); + return MakeResult<size_t>(file->ReadBytes(buffer, length)); } -size_t DiskFile::Write(const u64 offset, const size_t length, const bool flush, const u8* buffer) const { +ResultVal<size_t> DiskFile::Write(const u64 offset, const size_t length, const bool flush, const u8* buffer) const { + if (!mode.write_flag) + return ResultCode(ErrorDescription::FS_InvalidOpenFlags, ErrorModule::FS, ErrorSummary::Canceled, ErrorLevel::Status); + file->Seek(offset, SEEK_SET); size_t written = file->WriteBytes(buffer, length); if (flush) file->Flush(); - return written; + return MakeResult<size_t>(written); } u64 DiskFile::GetSize() const { |