Review fixes
This commit is contained in:
@@ -30,7 +30,7 @@
|
||||
#define CONFIG_DIR "config"
|
||||
#define CACHE_DIR "cache"
|
||||
#define SDMC_DIR "sdmc"
|
||||
#define SAVE_DIR "save"
|
||||
#define NAND_DIR "nand"
|
||||
#define SYSDATA_DIR "sysdata"
|
||||
#define LOG_DIR "log"
|
||||
|
||||
|
||||
@@ -711,7 +711,7 @@ const std::string& GetUserPath(const unsigned int DirIDX, const std::string& new
|
||||
}
|
||||
#endif
|
||||
paths[D_SDMC_IDX] = paths[D_USER_IDX] + SDMC_DIR DIR_SEP;
|
||||
paths[D_SAVE_IDX] = paths[D_USER_IDX] + SAVE_DIR DIR_SEP;
|
||||
paths[D_NAND_IDX] = paths[D_USER_IDX] + NAND_DIR DIR_SEP;
|
||||
paths[D_SYSDATA_IDX] = paths[D_USER_IDX] + SYSDATA_DIR DIR_SEP;
|
||||
// TODO: Put the logs in a better location for each OS
|
||||
paths[D_LOGS_IDX] = paths[D_USER_IDX] + LOG_DIR DIR_SEP;
|
||||
@@ -735,7 +735,7 @@ const std::string& GetUserPath(const unsigned int DirIDX, const std::string& new
|
||||
paths[D_CONFIG_IDX] = paths[D_USER_IDX] + CONFIG_DIR DIR_SEP;
|
||||
paths[D_CACHE_IDX] = paths[D_USER_IDX] + CACHE_DIR DIR_SEP;
|
||||
paths[D_SDMC_IDX] = paths[D_USER_IDX] + SDMC_DIR DIR_SEP;
|
||||
paths[D_SAVE_IDX] = paths[D_USER_IDX] + SAVE_DIR DIR_SEP;
|
||||
paths[D_NAND_IDX] = paths[D_USER_IDX] + NAND_DIR DIR_SEP;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -23,7 +23,7 @@ enum {
|
||||
D_CONFIG_IDX,
|
||||
D_CACHE_IDX,
|
||||
D_SDMC_IDX,
|
||||
D_SAVE_IDX,
|
||||
D_NAND_IDX,
|
||||
D_SYSDATA_IDX,
|
||||
D_LOGS_IDX,
|
||||
NUM_PATH_INDICES
|
||||
|
||||
@@ -18,8 +18,8 @@ std::string SaveStructDebugInfo(SaveStruct save_struct) {
|
||||
save_struct.user_id[1], save_struct.user_id[0], save_struct.save_id);
|
||||
}
|
||||
|
||||
SaveDataFactory::SaveDataFactory(std::string save_directory)
|
||||
: save_directory(std::move(save_directory)) {}
|
||||
SaveDataFactory::SaveDataFactory(std::string nand_directory)
|
||||
: nand_directory(std::move(nand_directory)) {}
|
||||
|
||||
ResultVal<std::unique_ptr<FileSystemBackend>> SaveDataFactory::Open(SaveDataSpaceId space,
|
||||
SaveStruct meta) {
|
||||
@@ -113,16 +113,31 @@ ResultCode SaveDataFactory::Format(SaveDataSpaceId space, SaveStruct meta) {
|
||||
|
||||
std::string SaveDataFactory::GetFullPath(SaveDataSpaceId space, SaveDataType type, u64 title_id,
|
||||
u128 user_id, u64 save_id) const {
|
||||
static std::vector<std::string> space_names = {"sysnand", "usrnand", "sd", "temp"};
|
||||
static std::vector<std::string> type_names = {"system", "user", "bcat",
|
||||
"device", "temp", "cache"};
|
||||
|
||||
if (type == SaveDataType::SaveData && title_id == 0)
|
||||
title_id = Core::CurrentProcess()->program_id;
|
||||
|
||||
return fmt::format("{}{}/{}/{:016X}/{:016X}{:016X}/{:016X}", save_directory,
|
||||
space_names[static_cast<u8>(space)], type_names[static_cast<u8>(type)],
|
||||
title_id, user_id[1], user_id[0], save_id);
|
||||
std::string prefix;
|
||||
|
||||
switch (space) {
|
||||
case SaveDataSpaceId::NandSystem:
|
||||
prefix = nand_directory + "system/save/";
|
||||
case SaveDataSpaceId::NandUser:
|
||||
prefix = nand_directory + "user/save/";
|
||||
default:
|
||||
ASSERT_MSG(true, "Unrecognized SaveDataSpaceId: {:02X}", static_cast<u8>(space));
|
||||
}
|
||||
|
||||
switch (type) {
|
||||
case SaveDataType::SystemSaveData:
|
||||
return fmt::format("{}{:016X}/{:016X}{:016X}", prefix, save_id, user_id[1], user_id[0]);
|
||||
case SaveDataType::SaveData:
|
||||
return fmt::format("{}{:08X}/{:016X}{:016X}/{:016X}", prefix, 0, user_id[1], user_id[0],
|
||||
title_id);
|
||||
default:
|
||||
ASSERT_MSG(true, "Unrecognized SaveDataType: {:02X}", static_cast<u8>(type));
|
||||
}
|
||||
|
||||
return "";
|
||||
}
|
||||
|
||||
} // namespace FileSys
|
||||
|
||||
@@ -38,15 +38,17 @@ static_assert(sizeof(SaveStruct) == 0x40, "SaveStruct has incorrect size.");
|
||||
std::string SaveStructDebugInfo(SaveStruct save_struct);
|
||||
|
||||
/// File system interface to the SaveData archive
|
||||
// nand_directory should be the root of nand, sd_directory should be the root of sd
|
||||
class SaveDataFactory {
|
||||
public:
|
||||
explicit SaveDataFactory(std::string save_directory);
|
||||
SaveDataFactory(std::string nand_directory);
|
||||
|
||||
ResultVal<std::unique_ptr<FileSystemBackend>> Open(SaveDataSpaceId space, SaveStruct meta);
|
||||
ResultCode Format(SaveDataSpaceId space, SaveStruct meta);
|
||||
|
||||
private:
|
||||
std::string save_directory;
|
||||
std::string nand_directory;
|
||||
std::string sd_directory;
|
||||
|
||||
std::string GetFullPath(SaveDataSpaceId space, SaveDataType type, u64 title_id, u128 user_id,
|
||||
u64 save_id) const;
|
||||
|
||||
@@ -90,10 +90,10 @@ void RegisterFileSystems() {
|
||||
save_data = nullptr;
|
||||
sdmc = nullptr;
|
||||
|
||||
std::string save_directory = FileUtil::GetUserPath(D_SAVE_IDX);
|
||||
std::string nand_directory = FileUtil::GetUserPath(D_NAND_IDX);
|
||||
std::string sd_directory = FileUtil::GetUserPath(D_SDMC_IDX);
|
||||
|
||||
auto savedata = std::make_unique<FileSys::SaveDataFactory>(std::move(save_directory));
|
||||
auto savedata = std::make_unique<FileSys::SaveDataFactory>(std::move(nand_directory));
|
||||
RegisterSaveData(std::move(savedata));
|
||||
|
||||
auto sdcard = std::make_unique<FileSys::SDMCFactory>(std::move(sd_directory));
|
||||
|
||||
Reference in New Issue
Block a user