From 40b0ea1086627e88c124f2ebfc6089183a5112b5 Mon Sep 17 00:00:00 2001 From: MerryMage Date: Thu, 15 Dec 2016 09:53:26 +0000 Subject: archive_source_sd_savedata: Add static method to get a specific save data path --- src/core/file_sys/archive_source_sd_savedata.cpp | 5 +++++ src/core/file_sys/archive_source_sd_savedata.h | 2 ++ 2 files changed, 7 insertions(+) (limited to 'src/core') diff --git a/src/core/file_sys/archive_source_sd_savedata.cpp b/src/core/file_sys/archive_source_sd_savedata.cpp index 2d8a950a3..287322d3e 100644 --- a/src/core/file_sys/archive_source_sd_savedata.cpp +++ b/src/core/file_sys/archive_source_sd_savedata.cpp @@ -90,4 +90,9 @@ ResultVal ArchiveSource_SDSaveData::GetFormatInfo(u64 program return MakeResult(info); } +std::string ArchiveSource_SDSaveData::GetSaveDataPathFor(const std::string& mount_point, + u64 program_id) { + return GetSaveDataPath(GetSaveDataContainerPath(mount_point), program_id); +} + } // namespace FileSys diff --git a/src/core/file_sys/archive_source_sd_savedata.h b/src/core/file_sys/archive_source_sd_savedata.h index b33126c31..b5fe43cc1 100644 --- a/src/core/file_sys/archive_source_sd_savedata.h +++ b/src/core/file_sys/archive_source_sd_savedata.h @@ -23,6 +23,8 @@ public: ResultCode Format(u64 program_id, const FileSys::ArchiveFormatInfo& format_info); ResultVal GetFormatInfo(u64 program_id) const; + static std::string GetSaveDataPathFor(const std::string& mount_point, u64 program_id); + private: std::string mount_point; }; -- cgit v1.2.3 From 351b5d23f4b332a36e4b5c7668809deae4de4af1 Mon Sep 17 00:00:00 2001 From: MerryMage Date: Thu, 15 Dec 2016 09:54:25 +0000 Subject: loader: Implement ReadProgramId --- src/core/loader/loader.h | 9 +++++++++ src/core/loader/ncch.cpp | 12 ++++++++++++ src/core/loader/ncch.h | 7 +++++++ 3 files changed, 28 insertions(+) (limited to 'src/core') diff --git a/src/core/loader/loader.h b/src/core/loader/loader.h index 5e3d46638..a6c2a745f 100644 --- a/src/core/loader/loader.h +++ b/src/core/loader/loader.h @@ -143,6 +143,15 @@ public: return ResultStatus::ErrorNotImplemented; } + /** + * Get the program id of the application + * @param out_program_id Reference to store program id into + * @return ResultStatus result of function + */ + virtual ResultStatus ReadProgramId(u64& out_program_id) { + return ResultStatus::ErrorNotImplemented; + } + /** * Get the RomFS of the application * Since the RomFS can be huge, we return a file reference instead of copying to a buffer diff --git a/src/core/loader/ncch.cpp b/src/core/loader/ncch.cpp index d4be61e0e..6f2164428 100644 --- a/src/core/loader/ncch.cpp +++ b/src/core/loader/ncch.cpp @@ -344,6 +344,18 @@ ResultStatus AppLoader_NCCH::ReadLogo(std::vector& buffer) { return LoadSectionExeFS("logo", buffer); } +ResultStatus AppLoader_NCCH::ReadProgramId(u64& out_program_id) { + if (!file.IsOpen()) + return ResultStatus::Error; + + ResultStatus result = LoadExeFS(); + if (result != ResultStatus::Success) + return result; + + out_program_id = ncch_header.program_id; + return ResultStatus::Success; +} + ResultStatus AppLoader_NCCH::ReadRomFS(std::shared_ptr& romfs_file, u64& offset, u64& size) { if (!file.IsOpen()) diff --git a/src/core/loader/ncch.h b/src/core/loader/ncch.h index bcf3ae6e3..6c93d46d8 100644 --- a/src/core/loader/ncch.h +++ b/src/core/loader/ncch.h @@ -219,6 +219,13 @@ public: */ ResultStatus ReadLogo(std::vector& buffer) override; + /** + * Get the program id of the application + * @param out_program_id Reference to store program id into + * @return ResultStatus result of function + */ + ResultStatus ReadProgramId(u64& out_program_id) override; + /** * Get the RomFS of the application * @param romfs_file Reference to buffer to store data -- cgit v1.2.3