|
|
|
@ -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
|