diff options
Diffstat (limited to 'src/core')
-rw-r--r-- | src/core/file_sys/romfs_factory.cpp | 51 |
1 files changed, 25 insertions, 26 deletions
diff --git a/src/core/file_sys/romfs_factory.cpp b/src/core/file_sys/romfs_factory.cpp index d027a8d59..4994c2532 100644 --- a/src/core/file_sys/romfs_factory.cpp +++ b/src/core/file_sys/romfs_factory.cpp @@ -39,36 +39,35 @@ ResultVal<VirtualFile> RomFSFactory::OpenCurrentProcess() { } ResultVal<VirtualFile> RomFSFactory::Open(u64 title_id, StorageId storage, ContentRecordType type) { + std::shared_ptr<NCA> res; + switch (storage) { - case StorageId::NandSystem: { - const auto res = Service::FileSystem::GetSystemNANDContents()->GetEntry(title_id, type); - if (res == nullptr) { - // TODO(DarkLordZach): Find the right error code to use here - return ResultCode(-1); - } - const auto romfs = res->GetRomFS(); - if (romfs == nullptr) { - // TODO(DarkLordZach): Find the right error code to use here - return ResultCode(-1); - } - return MakeResult<VirtualFile>(romfs); - } - case StorageId::NandUser: { - const auto res = Service::FileSystem::GetUserNANDContents()->GetEntry(title_id, type); - if (res == nullptr) { - // TODO(DarkLordZach): Find the right error code to use here - return ResultCode(-1); - } - const auto romfs = res->GetRomFS(); - if (romfs == nullptr) { - // TODO(DarkLordZach): Find the right error code to use here - return ResultCode(-1); - } - return MakeResult<VirtualFile>(romfs); - } + case StorageId::None: + res = Service::FileSystem::GetUnionContents()->GetEntry(title_id, type); + break; + case StorageId::NandSystem: + res = Service::FileSystem::GetSystemNANDContents()->GetEntry(title_id, type); + break; + case StorageId::NandUser: + res = Service::FileSystem::GetUserNANDContents()->GetEntry(title_id, type); + break; + case StorageId::SdCard: + res = Service::FileSystem::GetSDMCContents()->GetEntry(title_id, type); + break; default: UNIMPLEMENTED_MSG("Unimplemented storage_id={:02X}", static_cast<u8>(storage)); } + + if (res == nullptr) { + // TODO(DarkLordZach): Find the right error code to use here + return ResultCode(-1); + } + const auto romfs = res->GetRomFS(); + if (romfs == nullptr) { + // TODO(DarkLordZach): Find the right error code to use here + return ResultCode(-1); + } + return MakeResult<VirtualFile>(romfs); } } // namespace FileSys |