mirror of
https://github.com/Atmosphere-NX/Atmosphere.git
synced 2025-04-22 04:24:48 +00:00
fs: improve UnsupportedOperation results
This commit is contained in:
parent
4f4a54abda
commit
7004ad3d7f
7 changed files with 58 additions and 30 deletions
|
@ -26,21 +26,15 @@ namespace ams::fs {
|
|||
|
||||
virtual Result Read(s64 offset, void *buffer, size_t size) = 0;
|
||||
|
||||
virtual Result Write(s64 offset, const void *buffer, size_t size) {
|
||||
return fs::ResultUnsupportedOperation();
|
||||
}
|
||||
virtual Result Write(s64 offset, const void *buffer, size_t size) = 0;
|
||||
|
||||
virtual Result Flush() = 0;
|
||||
|
||||
virtual Result SetSize(s64 size) {
|
||||
return fs::ResultUnsupportedOperation();
|
||||
}
|
||||
virtual Result SetSize(s64 size) = 0;
|
||||
|
||||
virtual Result GetSize(s64 *out) = 0;
|
||||
|
||||
virtual Result OperateRange(void *dst, size_t dst_size, OperationId op_id, s64 offset, s64 size, const void *src, size_t src_size) {
|
||||
return fs::ResultUnsupportedOperation();
|
||||
}
|
||||
virtual Result OperateRange(void *dst, size_t dst_size, OperationId op_id, s64 offset, s64 size, const void *src, size_t src_size) = 0;
|
||||
|
||||
virtual Result OperateRange(OperationId op_id, s64 offset, s64 size) {
|
||||
return this->OperateRange(nullptr, 0, op_id, offset, size, nullptr, 0);
|
||||
|
@ -86,21 +80,31 @@ namespace ams::fs {
|
|||
|
||||
virtual ~ReadOnlyStorageAdapter() { /* ... */ }
|
||||
public:
|
||||
virtual Result Read(s64 offset, void *buffer, size_t size) {
|
||||
virtual Result Read(s64 offset, void *buffer, size_t size) override {
|
||||
return this->storage->Read(offset, buffer, size);
|
||||
}
|
||||
|
||||
virtual Result Flush() {
|
||||
virtual Result Flush() override {
|
||||
return this->storage->Flush();
|
||||
}
|
||||
|
||||
virtual Result GetSize(s64 *out) {
|
||||
virtual Result GetSize(s64 *out) override {
|
||||
return this->storage->GetSize(out);
|
||||
}
|
||||
|
||||
virtual Result OperateRange(void *dst, size_t dst_size, OperationId op_id, s64 offset, s64 size, const void *src, size_t src_size) override {
|
||||
return this->storage->OperateRange(dst, dst_size, op_id, offset, size, src, src_size);
|
||||
}
|
||||
|
||||
virtual Result Write(s64 offset, const void *buffer, size_t size) override {
|
||||
/* TODO: Better result? Is it possible to get a more specific one? */
|
||||
return fs::ResultUnsupportedOperation();
|
||||
}
|
||||
|
||||
virtual Result SetSize(s64 size) override {
|
||||
/* TODO: Better result? Is it possible to get a more specific one? */
|
||||
return fs::ResultUnsupportedOperation();
|
||||
}
|
||||
};
|
||||
|
||||
}
|
||||
|
|
|
@ -62,6 +62,10 @@ namespace ams::fs {
|
|||
return ResultSuccess();
|
||||
}
|
||||
|
||||
virtual Result SetSize(s64 size) override {
|
||||
return fs::ResultUnsupportedMemoryStorageSetSize();
|
||||
}
|
||||
|
||||
virtual Result OperateRange(void *dst, size_t dst_size, OperationId op_id, s64 offset, s64 size, const void *src, size_t src_size) override {
|
||||
switch (op_id) {
|
||||
case OperationId::InvalidateCache:
|
||||
|
@ -72,7 +76,7 @@ namespace ams::fs {
|
|||
reinterpret_cast<QueryRangeInfo *>(dst)->Clear();
|
||||
return ResultSuccess();
|
||||
default:
|
||||
return fs::ResultUnsupportedOperation();
|
||||
return fs::ResultUnsupportedMemoryStorageOperateRange();
|
||||
}
|
||||
}
|
||||
};
|
||||
|
|
|
@ -103,13 +103,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(this->resizable, fs::ResultUnsupportedOperation());
|
||||
R_UNLESS(this->resizable, fs::ResultUnsupportedSubStorageSetSizeA());
|
||||
R_UNLESS(IStorage::IsOffsetAndSizeValid(this->offset, size), fs::ResultInvalidSize());
|
||||
|
||||
/* Ensure that we're allowed to set size. */
|
||||
s64 cur_size;
|
||||
R_TRY(this->base_storage->GetSize(std::addressof(cur_size)));
|
||||
R_UNLESS(cur_size == this->offset + this->size, fs::ResultUnsupportedOperation());
|
||||
R_UNLESS(cur_size == this->offset + this->size, fs::ResultUnsupportedSubStorageSetSizeB());
|
||||
|
||||
/* Set the size. */
|
||||
R_TRY(this->base_storage->SetSize(this->offset + size));
|
||||
|
|
|
@ -86,7 +86,7 @@ namespace ams::fs {
|
|||
R_UNLESS(IStorage::IsOffsetAndSizeValid(offset, size), fs::ResultOutOfRange());
|
||||
return this->base_file->OperateRange(dst, dst_size, op_id, offset, size, src, src_size);
|
||||
default:
|
||||
return fs::ResultUnsupportedOperation();
|
||||
return fs::ResultUnsupportedFileStorageOperateRange();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -223,11 +223,11 @@ namespace ams::fs {
|
|||
}
|
||||
|
||||
virtual Result WriteImpl(s64 offset, const void *buffer, size_t size, const fs::WriteOption &option) override {
|
||||
return fs::ResultUnsupportedOperation();
|
||||
return fs::ResultUnsupportedRomFsFileWrite();
|
||||
}
|
||||
|
||||
virtual Result SetSizeImpl(s64 size) override {
|
||||
return fs::ResultUnsupportedOperation();
|
||||
return fs::ResultUnsupportedRomFsFileWrite();
|
||||
}
|
||||
|
||||
virtual Result OperateRangeImpl(void *dst, size_t dst_size, fs::OperationId op_id, s64 offset, s64 size, const void *src, size_t src_size) override {
|
||||
|
@ -239,7 +239,7 @@ namespace ams::fs {
|
|||
R_UNLESS(this->GetSize() >= 0, fs::ResultOutOfRange());
|
||||
}
|
||||
default:
|
||||
return fs::ResultUnsupportedOperation();
|
||||
return fs::ResultUnsupportedRomFsFileOperateRange();
|
||||
}
|
||||
}
|
||||
public:
|
||||
|
@ -438,31 +438,31 @@ namespace ams::fs {
|
|||
}
|
||||
|
||||
Result RomFsFileSystem::CreateFileImpl(const char *path, s64 size, int flags) {
|
||||
return fs::ResultUnsupportedOperation();
|
||||
return fs::ResultUnsupportedRomFsFileSystemWrite();
|
||||
}
|
||||
|
||||
Result RomFsFileSystem::DeleteFileImpl(const char *path) {
|
||||
return fs::ResultUnsupportedOperation();
|
||||
return fs::ResultUnsupportedRomFsFileSystemWrite();
|
||||
}
|
||||
|
||||
Result RomFsFileSystem::CreateDirectoryImpl(const char *path) {
|
||||
return fs::ResultUnsupportedOperation();
|
||||
return fs::ResultUnsupportedRomFsFileSystemWrite();
|
||||
}
|
||||
|
||||
Result RomFsFileSystem::DeleteDirectoryImpl(const char *path) {
|
||||
return fs::ResultUnsupportedOperation();
|
||||
return fs::ResultUnsupportedRomFsFileSystemWrite();
|
||||
}
|
||||
|
||||
Result RomFsFileSystem::DeleteDirectoryRecursivelyImpl(const char *path) {
|
||||
return fs::ResultUnsupportedOperation();
|
||||
return fs::ResultUnsupportedRomFsFileSystemWrite();
|
||||
}
|
||||
|
||||
Result RomFsFileSystem::RenameFileImpl(const char *old_path, const char *new_path) {
|
||||
return fs::ResultUnsupportedOperation();
|
||||
return fs::ResultUnsupportedRomFsFileSystemWrite();
|
||||
}
|
||||
|
||||
Result RomFsFileSystem::RenameDirectoryImpl(const char *old_path, const char *new_path) {
|
||||
return fs::ResultUnsupportedOperation();
|
||||
return fs::ResultUnsupportedRomFsFileSystemWrite();
|
||||
}
|
||||
|
||||
Result RomFsFileSystem::GetEntryTypeImpl(fs::DirectoryEntryType *out, const char *path) {
|
||||
|
@ -519,19 +519,19 @@ namespace ams::fs {
|
|||
}
|
||||
|
||||
Result RomFsFileSystem::GetFreeSpaceSizeImpl(s64 *out, const char *path) {
|
||||
return fs::ResultUnsupportedOperation();
|
||||
return fs::ResultUnsupportedRomFsFileSystemGetSize();
|
||||
}
|
||||
|
||||
Result RomFsFileSystem::GetTotalSpaceSizeImpl(s64 *out, const char *path) {
|
||||
return fs::ResultUnsupportedOperation();
|
||||
return fs::ResultUnsupportedRomFsFileSystemGetSize();
|
||||
}
|
||||
|
||||
Result RomFsFileSystem::CleanDirectoryRecursivelyImpl(const char *path) {
|
||||
return fs::ResultUnsupportedOperation();
|
||||
return fs::ResultUnsupportedRomFsFileSystemWrite();
|
||||
}
|
||||
|
||||
Result RomFsFileSystem::CommitProvisionallyImpl(s64 counter) {
|
||||
return ResultSuccess();
|
||||
return fs::ResultUnsupportedRomFsFileSystemCommitProvisionally();
|
||||
}
|
||||
|
||||
Result RomFsFileSystem::RollbackImpl() {
|
||||
|
|
|
@ -231,6 +231,16 @@ namespace ams::fs {
|
|||
R_DEFINE_ERROR_RESULT(FileExtensionWithoutOpenModeAllowAppend, 6201);
|
||||
|
||||
R_DEFINE_ERROR_RANGE(UnsupportedOperation, 6300, 6399);
|
||||
R_DEFINE_ERROR_RESULT(UnsupportedSubStorageSetSizeA, 6302);
|
||||
R_DEFINE_ERROR_RESULT(UnsupportedSubStorageSetSizeB, 6303);
|
||||
R_DEFINE_ERROR_RESULT(UnsupportedMemoryStorageSetSize, 6304);
|
||||
R_DEFINE_ERROR_RESULT(UnsupportedMemoryStorageOperateRange, 6305);
|
||||
R_DEFINE_ERROR_RESULT(UnsupportedFileStorageOperateRange, 6306);
|
||||
R_DEFINE_ERROR_RESULT(UnsupportedRomFsFileSystemWrite, 6364);
|
||||
R_DEFINE_ERROR_RESULT(UnsupportedRomFsFileSystemCommitProvisionally, 6365);
|
||||
R_DEFINE_ERROR_RESULT(UnsupportedRomFsFileSystemGetSize, 6366);
|
||||
R_DEFINE_ERROR_RESULT(UnsupportedRomFsFileWrite, 6367);
|
||||
R_DEFINE_ERROR_RESULT(UnsupportedRomFsFileOperateRange, 6368);
|
||||
|
||||
R_DEFINE_ERROR_RANGE(PermissionDenied, 6400, 6449);
|
||||
|
||||
|
|
|
@ -49,6 +49,16 @@ namespace ams::mitm::fs {
|
|||
virtual Result GetSize(s64 *out_size) override;
|
||||
virtual Result Flush() override;
|
||||
virtual Result OperateRange(void *dst, size_t dst_size, ams::fs::OperationId op_id, s64 offset, s64 size, const void *src, size_t src_size) override;
|
||||
|
||||
virtual Result Write(s64 offset, const void *buffer, size_t size) override {
|
||||
/* TODO: Better result code? */
|
||||
return ams::fs::ResultUnsupportedOperation();
|
||||
}
|
||||
|
||||
virtual Result SetSize(s64 size) override {
|
||||
/* TODO: Better result code? */
|
||||
return ams::fs::ResultUnsupportedOperation();
|
||||
}
|
||||
};
|
||||
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue