savedata_factory: Expose accessors for SaveDataSpace
This commit is contained in:
parent
f2f679bf3f
commit
df264d2ccb
|
@ -83,6 +83,24 @@ ResultVal<VirtualDir> SaveDataFactory::Open(SaveDataSpaceId space, SaveDataDescr
|
||||||
return MakeResult<VirtualDir>(std::move(out));
|
return MakeResult<VirtualDir>(std::move(out));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
VirtualDir SaveDataFactory::GetSaveDataSpaceDirectory(SaveDataSpaceId space) {
|
||||||
|
return dir->GetDirectoryRelative(GetSaveDataSpaceIdPath(space));
|
||||||
|
}
|
||||||
|
|
||||||
|
std::string SaveDataFactory::GetSaveDataSpaceIdPath(SaveDataSpaceId space) {
|
||||||
|
switch (space) {
|
||||||
|
case SaveDataSpaceId::NandSystem:
|
||||||
|
return "/system/";
|
||||||
|
case SaveDataSpaceId::NandUser:
|
||||||
|
return "/user/";
|
||||||
|
case SaveDataSpaceId::TemporaryStorage:
|
||||||
|
return "/temp/";
|
||||||
|
default:
|
||||||
|
ASSERT_MSG(false, "Unrecognized SaveDataSpaceId: {:02X}", static_cast<u8>(space));
|
||||||
|
return "/unrecognized/"; ///< To prevent corruption when ignoring asserts.
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
std::string SaveDataFactory::GetFullPath(SaveDataSpaceId space, SaveDataType type, u64 title_id,
|
std::string SaveDataFactory::GetFullPath(SaveDataSpaceId space, SaveDataType type, u64 title_id,
|
||||||
u128 user_id, u64 save_id) {
|
u128 user_id, u64 save_id) {
|
||||||
// According to switchbrew, if a save is of type SaveData and the title id field is 0, it should
|
// According to switchbrew, if a save is of type SaveData and the title id field is 0, it should
|
||||||
|
@ -90,21 +108,7 @@ std::string SaveDataFactory::GetFullPath(SaveDataSpaceId space, SaveDataType typ
|
||||||
if (type == SaveDataType::SaveData && title_id == 0)
|
if (type == SaveDataType::SaveData && title_id == 0)
|
||||||
title_id = Core::CurrentProcess()->GetTitleID();
|
title_id = Core::CurrentProcess()->GetTitleID();
|
||||||
|
|
||||||
std::string out;
|
std::string out = GetSaveDataSpaceIdPath(space);
|
||||||
|
|
||||||
switch (space) {
|
|
||||||
case SaveDataSpaceId::NandSystem:
|
|
||||||
out = "/system/";
|
|
||||||
break;
|
|
||||||
case SaveDataSpaceId::NandUser:
|
|
||||||
out = "/user/";
|
|
||||||
break;
|
|
||||||
case SaveDataSpaceId::TemporaryStorage:
|
|
||||||
out = "/temp/";
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
ASSERT_MSG(false, "Unrecognized SaveDataSpaceId: {:02X}", static_cast<u8>(space));
|
|
||||||
}
|
|
||||||
|
|
||||||
switch (type) {
|
switch (type) {
|
||||||
case SaveDataType::SystemSaveData:
|
case SaveDataType::SystemSaveData:
|
||||||
|
|
|
@ -52,6 +52,9 @@ public:
|
||||||
|
|
||||||
ResultVal<VirtualDir> Open(SaveDataSpaceId space, SaveDataDescriptor meta);
|
ResultVal<VirtualDir> Open(SaveDataSpaceId space, SaveDataDescriptor meta);
|
||||||
|
|
||||||
|
VirtualDir GetSaveDataSpaceDirectory(SaveDataSpaceId space);
|
||||||
|
|
||||||
|
static std::string GetSaveDataSpaceIdPath(SaveDataSpaceId space);
|
||||||
static std::string GetFullPath(SaveDataSpaceId space, SaveDataType type, u64 title_id,
|
static std::string GetFullPath(SaveDataSpaceId space, SaveDataType type, u64 title_id,
|
||||||
u128 user_id, u64 save_id);
|
u128 user_id, u64 save_id);
|
||||||
|
|
||||||
|
|
|
@ -309,6 +309,16 @@ ResultVal<FileSys::VirtualDir> OpenSaveData(FileSys::SaveDataSpaceId space,
|
||||||
return save_data_factory->Open(space, save_struct);
|
return save_data_factory->Open(space, save_struct);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ResultVal<FileSys::VirtualDir> OpenSaveDataSpace(FileSys::SaveDataSpaceId space) {
|
||||||
|
LOG_TRACE(Service_FS, "Opening Save Data Space for space_id={:01X}", static_cast<u8>(space));
|
||||||
|
|
||||||
|
if (save_data_factory == nullptr) {
|
||||||
|
return ResultCode(ErrorModule::FS, FileSys::ErrCodes::TitleNotFound);
|
||||||
|
}
|
||||||
|
|
||||||
|
return MakeResult(save_data_factory->GetSaveDataSpaceDirectory(space));
|
||||||
|
}
|
||||||
|
|
||||||
ResultVal<FileSys::VirtualDir> OpenSDMC() {
|
ResultVal<FileSys::VirtualDir> OpenSDMC() {
|
||||||
LOG_TRACE(Service_FS, "Opening SDMC");
|
LOG_TRACE(Service_FS, "Opening SDMC");
|
||||||
|
|
||||||
|
|
|
@ -45,6 +45,7 @@ ResultVal<FileSys::VirtualFile> OpenRomFS(u64 title_id, FileSys::StorageId stora
|
||||||
FileSys::ContentRecordType type);
|
FileSys::ContentRecordType type);
|
||||||
ResultVal<FileSys::VirtualDir> OpenSaveData(FileSys::SaveDataSpaceId space,
|
ResultVal<FileSys::VirtualDir> OpenSaveData(FileSys::SaveDataSpaceId space,
|
||||||
FileSys::SaveDataDescriptor save_struct);
|
FileSys::SaveDataDescriptor save_struct);
|
||||||
|
ResultVal<FileSys::VirtualDir> OpenSaveDataSpace(FileSys::SaveDataSpaceId space);
|
||||||
ResultVal<FileSys::VirtualDir> OpenSDMC();
|
ResultVal<FileSys::VirtualDir> OpenSDMC();
|
||||||
|
|
||||||
std::unique_ptr<FileSys::RegisteredCacheUnion> GetUnionContents();
|
std::unique_ptr<FileSys::RegisteredCacheUnion> GetUnionContents();
|
||||||
|
|
Reference in New Issue