strat: revise fs unsupported operation results, add overflow utils
This commit is contained in:
@@ -64,7 +64,7 @@ namespace ams::fs {
|
||||
|
||||
virtual Result SetSize(s64 size) override {
|
||||
AMS_UNUSED(size);
|
||||
return fs::ResultUnsupportedOperationInMemoryStorageA();
|
||||
return fs::ResultUnsupportedSetSizeForMemoryStorage();
|
||||
}
|
||||
|
||||
virtual Result OperateRange(void *dst, size_t dst_size, OperationId op_id, s64 offset, s64 size, const void *src, size_t src_size) override {
|
||||
@@ -79,7 +79,7 @@ namespace ams::fs {
|
||||
reinterpret_cast<QueryRangeInfo *>(dst)->Clear();
|
||||
return ResultSuccess();
|
||||
default:
|
||||
return fs::ResultUnsupportedOperationInMemoryStorageB();
|
||||
return fs::ResultUnsupportedOperateRangeForMemoryStorage();
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
@@ -52,12 +52,12 @@ namespace ams::fs {
|
||||
AMS_ASSERT(!need_append);
|
||||
|
||||
AMS_UNUSED(buffer);
|
||||
return fs::ResultUnsupportedOperationInReadOnlyFileA();
|
||||
return fs::ResultUnsupportedWriteForReadOnlyFile();
|
||||
}
|
||||
|
||||
virtual Result DoSetSize(s64 size) override final {
|
||||
R_TRY(this->DrySetSize(size, fs::OpenMode_Read));
|
||||
return fs::ResultUnsupportedOperationInReadOnlyFileA();
|
||||
return fs::ResultUnsupportedWriteForReadOnlyFile();
|
||||
}
|
||||
|
||||
virtual Result DoOperateRange(void *dst, size_t dst_size, fs::OperationId op_id, s64 offset, s64 size, const void *src, size_t src_size) override final {
|
||||
@@ -66,7 +66,7 @@ namespace ams::fs {
|
||||
case OperationId::QueryRange:
|
||||
return m_base_file->OperateRange(dst, dst_size, op_id, offset, size, src, src_size);
|
||||
default:
|
||||
return fs::ResultUnsupportedOperationInReadOnlyFileB();
|
||||
return fs::ResultUnsupportedOperateRangeForReadOnlyFile();
|
||||
}
|
||||
}
|
||||
public:
|
||||
@@ -115,57 +115,57 @@ namespace ams::fs {
|
||||
|
||||
virtual Result DoCreateFile(const fs::Path &path, s64 size, int flags) override final {
|
||||
AMS_UNUSED(path, size, flags);
|
||||
return fs::ResultUnsupportedOperationInReadOnlyFileSystemTemplateA();
|
||||
return fs::ResultUnsupportedWriteForReadOnlyFileSystem();
|
||||
}
|
||||
|
||||
virtual Result DoDeleteFile(const fs::Path &path) override final {
|
||||
AMS_UNUSED(path);
|
||||
return fs::ResultUnsupportedOperationInReadOnlyFileSystemTemplateA();
|
||||
return fs::ResultUnsupportedWriteForReadOnlyFileSystem();
|
||||
}
|
||||
|
||||
virtual Result DoCreateDirectory(const fs::Path &path) override final {
|
||||
AMS_UNUSED(path);
|
||||
return fs::ResultUnsupportedOperationInReadOnlyFileSystemTemplateA();
|
||||
return fs::ResultUnsupportedWriteForReadOnlyFileSystem();
|
||||
}
|
||||
|
||||
virtual Result DoDeleteDirectory(const fs::Path &path) override final {
|
||||
AMS_UNUSED(path);
|
||||
return fs::ResultUnsupportedOperationInReadOnlyFileSystemTemplateA();
|
||||
return fs::ResultUnsupportedWriteForReadOnlyFileSystem();
|
||||
}
|
||||
|
||||
virtual Result DoDeleteDirectoryRecursively(const fs::Path &path) override final {
|
||||
AMS_UNUSED(path);
|
||||
return fs::ResultUnsupportedOperationInReadOnlyFileSystemTemplateA();
|
||||
return fs::ResultUnsupportedWriteForReadOnlyFileSystem();
|
||||
}
|
||||
|
||||
virtual Result DoRenameFile(const fs::Path &old_path, const fs::Path &new_path) override final {
|
||||
AMS_UNUSED(old_path, new_path);
|
||||
return fs::ResultUnsupportedOperationInReadOnlyFileSystemTemplateA();
|
||||
return fs::ResultUnsupportedWriteForReadOnlyFileSystem();
|
||||
}
|
||||
|
||||
virtual Result DoRenameDirectory(const fs::Path &old_path, const fs::Path &new_path) override final {
|
||||
AMS_UNUSED(old_path, new_path);
|
||||
return fs::ResultUnsupportedOperationInReadOnlyFileSystemTemplateA();
|
||||
return fs::ResultUnsupportedWriteForReadOnlyFileSystem();
|
||||
}
|
||||
|
||||
virtual Result DoCleanDirectoryRecursively(const fs::Path &path) override final {
|
||||
AMS_UNUSED(path);
|
||||
return fs::ResultUnsupportedOperationInReadOnlyFileSystemTemplateA();
|
||||
return fs::ResultUnsupportedWriteForReadOnlyFileSystem();
|
||||
}
|
||||
|
||||
virtual Result DoGetFreeSpaceSize(s64 *out, const fs::Path &path) override final {
|
||||
AMS_UNUSED(out, path);
|
||||
return fs::ResultUnsupportedOperationInReadOnlyFileSystemTemplateB();
|
||||
return fs::ResultUnsupportedCommitProvisionallyForReadOnlyFileSystem();
|
||||
}
|
||||
|
||||
virtual Result DoGetTotalSpaceSize(s64 *out, const fs::Path &path) override final {
|
||||
AMS_UNUSED(out, path);
|
||||
return fs::ResultUnsupportedOperationInReadOnlyFileSystemTemplateB();
|
||||
return fs::ResultUnsupportedCommitProvisionallyForReadOnlyFileSystem();
|
||||
}
|
||||
|
||||
virtual Result DoCommitProvisionally(s64 counter) override final {
|
||||
AMS_UNUSED(counter);
|
||||
return fs::ResultUnsupportedOperationInReadOnlyFileSystemTemplateC();
|
||||
return fs::ResultUnsupportedGetTotalSpaceSizeForReadOnlyFileSystem();
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -57,7 +57,7 @@ namespace ams::fs {
|
||||
virtual Result DoOperateRange(void *dst, size_t dst_size, fs::OperationId op_id, s64 offset, s64 size, const void *src, size_t src_size) override final {
|
||||
AMS_UNUSED(src, src_size);
|
||||
|
||||
R_UNLESS(op_id == OperationId::QueryRange, fs::ResultUnsupportedOperationInFileServiceObjectAdapterA());
|
||||
R_UNLESS(op_id == OperationId::QueryRange, fs::ResultUnsupportedOperateRangeForFileServiceObjectAdapter());
|
||||
R_UNLESS(dst_size == sizeof(FileQueryRangeInfo), fs::ResultInvalidSize());
|
||||
|
||||
return fsFileOperateRange(std::addressof(m_base_file), static_cast<::FsOperationId>(op_id), offset, size, reinterpret_cast<::FsRangeInfo *>(dst));
|
||||
|
||||
@@ -107,13 +107,13 @@ namespace ams::fs {
|
||||
virtual Result SetSize(s64 size) override {
|
||||
/* Ensure we're initialized and validate arguments. */
|
||||
R_UNLESS(this->IsValid(), fs::ResultNotInitialized());
|
||||
R_UNLESS(m_resizable, fs::ResultUnsupportedOperationInSubStorageA());
|
||||
R_UNLESS(m_resizable, fs::ResultUnsupportedSetSizeForNotResizableSubStorage());
|
||||
R_UNLESS(IStorage::CheckOffsetAndSize(m_offset, size), fs::ResultInvalidSize());
|
||||
|
||||
/* Ensure that we're allowed to set size. */
|
||||
s64 cur_size;
|
||||
R_TRY(m_base_storage->GetSize(std::addressof(cur_size)));
|
||||
R_UNLESS(cur_size == m_offset + m_size, fs::ResultUnsupportedOperationInSubStorageB());
|
||||
R_UNLESS(cur_size == m_offset + m_size, fs::ResultUnsupportedSetSizeForResizableSubStorage());
|
||||
|
||||
/* Set the size. */
|
||||
R_TRY(m_base_storage->SetSize(m_offset + size));
|
||||
@@ -132,7 +132,7 @@ namespace ams::fs {
|
||||
|
||||
virtual Result OperateRange(void *dst, size_t dst_size, OperationId op_id, s64 offset, s64 size, const void *src, size_t src_size) override {
|
||||
/* Ensure we're initialized. */
|
||||
R_UNLESS(this->IsValid(), fs::ResultNotInitialized());
|
||||
R_UNLESS(this->IsValid(), fs::ResultNotInitialized());
|
||||
|
||||
/* Succeed immediately on zero-sized operation. */
|
||||
R_SUCCEED_IF(size == 0);
|
||||
|
||||
@@ -109,12 +109,12 @@ namespace ams::fssystem {
|
||||
|
||||
virtual Result Write(s64 offset, const void *buffer, size_t size) override {
|
||||
AMS_UNUSED(offset, buffer, size);
|
||||
R_THROW(fs::ResultUnsupportedOperationInAesCtrCounterExtendedStorageA());
|
||||
R_THROW(fs::ResultUnsupportedWriteForAesCtrCounterExtendedStorage());
|
||||
}
|
||||
|
||||
virtual Result SetSize(s64 size) override {
|
||||
AMS_UNUSED(size);
|
||||
R_THROW(fs::ResultUnsupportedOperationInAesCtrCounterExtendedStorageB());
|
||||
R_THROW(fs::ResultUnsupportedSetSizeForAesCtrCounterExtendedStorage());
|
||||
}
|
||||
private:
|
||||
Result Initialize(IAllocator *allocator, const void *key, size_t key_size, u32 secure_value, fs::SubStorage data_storage, fs::SubStorage table_storage);
|
||||
|
||||
@@ -110,7 +110,7 @@ namespace ams::fssystem {
|
||||
virtual Result Read(s64 offset, void *buffer, size_t size) override;
|
||||
virtual Result Write(s64 offset, const void *buffer, size_t size) override;
|
||||
|
||||
virtual Result SetSize(s64) override { R_THROW(fs::ResultUnsupportedOperationInBlockCacheBufferedStorageA()); }
|
||||
virtual Result SetSize(s64) override { R_THROW(fs::ResultUnsupportedSetSizeForBlockCacheBufferedStorage()); }
|
||||
virtual Result GetSize(s64 *out) override;
|
||||
|
||||
virtual Result Flush() override;
|
||||
|
||||
@@ -1424,7 +1424,7 @@ namespace ams::fssystem {
|
||||
R_TRY(m_core.QueryRange(dst, dst_size, offset, size));
|
||||
break;
|
||||
default:
|
||||
R_THROW(fs::ResultUnsupportedOperationInCompressedStorageB());
|
||||
R_THROW(fs::ResultUnsupportedOperateRangeForCompressedStorage());
|
||||
}
|
||||
|
||||
R_SUCCEED();
|
||||
@@ -1440,13 +1440,13 @@ namespace ams::fssystem {
|
||||
|
||||
virtual Result Write(s64 offset, const void *buffer, size_t size) override {
|
||||
AMS_UNUSED(offset, buffer, size);
|
||||
R_THROW(fs::ResultUnsupportedOperationInCompressedStorageA());
|
||||
R_THROW(fs::ResultUnsupportedWriteForCompressedStorage());
|
||||
}
|
||||
|
||||
virtual Result SetSize(s64 size) override {
|
||||
AMS_UNUSED(size);
|
||||
/* NOTE: Is Nintendo returning the wrong result here? */
|
||||
R_THROW(fs::ResultUnsupportedOperationInIndirectStorageB());
|
||||
R_THROW(fs::ResultUnsupportedSetSizeForIndirectStorage());
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -162,7 +162,7 @@ namespace ams::fssystem {
|
||||
virtual Result Read(s64 offset, void *buffer, size_t size) override;
|
||||
virtual Result Write(s64 offset, const void *buffer, size_t size) override;
|
||||
|
||||
virtual Result SetSize(s64 size) override { AMS_UNUSED(size); return fs::ResultUnsupportedOperationInHierarchicalIntegrityVerificationStorageA(); }
|
||||
virtual Result SetSize(s64 size) override { AMS_UNUSED(size); return fs::ResultUnsupportedSetSizeForHierarchicalIntegrityVerificationStorage(); }
|
||||
virtual Result GetSize(s64 *out) override;
|
||||
|
||||
virtual Result Flush() override;
|
||||
|
||||
@@ -147,12 +147,12 @@ namespace ams::fssystem {
|
||||
|
||||
virtual Result Write(s64 offset, const void *buffer, size_t size) override {
|
||||
AMS_UNUSED(offset, buffer, size);
|
||||
R_THROW(fs::ResultUnsupportedOperationInIndirectStorageA());
|
||||
R_THROW(fs::ResultUnsupportedWriteForIndirectStorage());
|
||||
}
|
||||
|
||||
virtual Result SetSize(s64 size) override {
|
||||
AMS_UNUSED(size);
|
||||
R_THROW(fs::ResultUnsupportedOperationInIndirectStorageB());
|
||||
R_THROW(fs::ResultUnsupportedSetSizeForIndirectStorage());
|
||||
}
|
||||
protected:
|
||||
BucketTree &GetEntryTable() { return m_table; }
|
||||
|
||||
@@ -48,7 +48,7 @@ namespace ams::fssystem {
|
||||
return m_integrity_storage.Write(offset, buffer, size);
|
||||
}
|
||||
|
||||
virtual Result SetSize(s64 size) override { AMS_UNUSED(size); return fs::ResultUnsupportedOperationInIntegrityRomFsStorageA(); }
|
||||
virtual Result SetSize(s64 size) override { AMS_UNUSED(size); return fs::ResultUnsupportedSetSizeForIntegrityRomFsStorage(); }
|
||||
|
||||
virtual Result GetSize(s64 *out) override {
|
||||
return m_integrity_storage.GetSize(out);
|
||||
|
||||
@@ -55,7 +55,7 @@ namespace ams::fssystem {
|
||||
virtual Result Read(s64 offset, void *buffer, size_t size) override;
|
||||
virtual Result Write(s64 offset, const void *buffer, size_t size) override;
|
||||
|
||||
virtual Result SetSize(s64 size) override { AMS_UNUSED(size); return fs::ResultUnsupportedOperationInIntegrityVerificationStorageA(); }
|
||||
virtual Result SetSize(s64 size) override { AMS_UNUSED(size); return fs::ResultUnsupportedSetSizeForIntegrityVerificationStorage(); }
|
||||
virtual Result GetSize(s64 *out) override;
|
||||
|
||||
virtual Result Flush() override;
|
||||
|
||||
@@ -56,12 +56,12 @@ namespace ams::fssystem {
|
||||
|
||||
virtual Result Write(s64 offset, const void *buffer, size_t size) override {
|
||||
AMS_UNUSED(offset, buffer, size);
|
||||
R_THROW(fs::ResultUnsupportedOperationInZeroStorageA());
|
||||
R_THROW(fs::ResultUnsupportedWriteForZeroStorage());
|
||||
}
|
||||
|
||||
virtual Result SetSize(s64 size) override {
|
||||
AMS_UNUSED(size);
|
||||
R_THROW(fs::ResultUnsupportedOperationInZeroStorageB());
|
||||
R_THROW(fs::ResultUnsupportedSetSizeForZeroStorage());
|
||||
}
|
||||
};
|
||||
private:
|
||||
|
||||
Reference in New Issue
Block a user