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