diff options
author | Subv <subv2112@gmail.com> | 2015-02-07 19:31:51 +0100 |
---|---|---|
committer | Yuri Kunde Schlesner <yuriks@yuriks.net> | 2015-02-10 16:43:46 +0100 |
commit | 0d2b6dd6566b6718c806181c1f1c3bcdcede86ae (patch) | |
tree | fd8b0290d4a0353c11c0e168200b20b5a89e297c | |
parent | Archives: Made the Format function more generic. (diff) | |
download | yuzu-0d2b6dd6566b6718c806181c1f1c3bcdcede86ae.tar yuzu-0d2b6dd6566b6718c806181c1f1c3bcdcede86ae.tar.gz yuzu-0d2b6dd6566b6718c806181c1f1c3bcdcede86ae.tar.bz2 yuzu-0d2b6dd6566b6718c806181c1f1c3bcdcede86ae.tar.lz yuzu-0d2b6dd6566b6718c806181c1f1c3bcdcede86ae.tar.xz yuzu-0d2b6dd6566b6718c806181c1f1c3bcdcede86ae.tar.zst yuzu-0d2b6dd6566b6718c806181c1f1c3bcdcede86ae.zip |
-rw-r--r-- | src/core/hle/service/ptm_u.cpp | 34 |
1 files changed, 13 insertions, 21 deletions
diff --git a/src/core/hle/service/ptm_u.cpp b/src/core/hle/service/ptm_u.cpp index 561849f32..7c8d9ce8c 100644 --- a/src/core/hle/service/ptm_u.cpp +++ b/src/core/hle/service/ptm_u.cpp @@ -139,37 +139,29 @@ const Interface::FunctionInfo FunctionTable[] = { Interface::Interface() { Register(FunctionTable); - // TODO(Subv): This code needs to be updated to not directly create archives and use the - // standard archive.h interfaces. -#if 0 - // Create the SharedExtSaveData archive 0xF000000B and the gamecoin.dat file - // TODO(Subv): In the future we should use the FS service to query this archive - std::string nand_directory = FileUtil::GetUserPath(D_NAND_IDX); - ptm_shared_extsavedata = Common::make_unique<FileSys::Archive_ExtSaveData>(nand_directory, true); - if (!ptm_shared_extsavedata->Initialize()) { - LOG_CRITICAL(Service_PTM, "Could not initialize SharedExtSaveData archive for the PTM:U service"); - return; - } + // Open the SharedExtSaveData archive 0xF000000B and the gamecoin.dat file FileSys::Path archive_path(ptm_shared_extdata_id); - ResultCode result = ptm_shared_extsavedata->Open(archive_path); + auto archive_result = Service::FS::OpenArchive(Service::FS::ArchiveIdCode::SharedExtSaveData, archive_path); // If the archive didn't exist, create the files inside - if (result.description == ErrorDescription::FS_NotFormatted) { - // Format the archive to clear the directories - ptm_shared_extsavedata->Format(archive_path); + if (archive_result.Code().description == ErrorDescription::FS_NotFormatted) { + // Format the archive to create the directories + Service::FS::FormatArchive(Service::FS::ArchiveIdCode::SharedExtSaveData, archive_path); // Open it again to get a valid archive now that the folder exists - ptm_shared_extsavedata->Open(archive_path); + archive_result = Service::FS::OpenArchive(Service::FS::ArchiveIdCode::SharedExtSaveData, archive_path); + _assert_msg_(Service_PTM, archive_result.Succeeded(), "Could not open the PTM SharedExtSaveData archive!"); + FileSys::Path gamecoin_path("gamecoin.dat"); FileSys::Mode open_mode = {}; open_mode.write_flag = 1; open_mode.create_flag = 1; // Open the file and write the default gamecoin information - auto gamecoin = ptm_shared_extsavedata->OpenFile(gamecoin_path, open_mode); - if (gamecoin != nullptr) { - gamecoin->Write(0, sizeof(GameCoin), 1, reinterpret_cast<const u8*>(&default_game_coin)); - gamecoin->Close(); + auto gamecoin_result = Service::FS::OpenFileFromArchive(*archive_result, gamecoin_path, open_mode); + if (gamecoin_result.Succeeded()) { + auto gamecoin = gamecoin_result.MoveFrom(); + gamecoin->backend->Write(0, sizeof(GameCoin), 1, reinterpret_cast<const u8*>(&default_game_coin)); + gamecoin->backend->Close(); } } -#endif } } // namespace |