loader: Expose program title.
This commit is contained in:
		@@ -166,6 +166,15 @@ public:
 | 
			
		||||
        return ResultStatus::ErrorNotImplemented;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Get the title of the application
 | 
			
		||||
     * @param title Reference to store the application title into
 | 
			
		||||
     * @return ResultStatus result of function
 | 
			
		||||
     */
 | 
			
		||||
    virtual ResultStatus ReadTitle(std::string& title) {
 | 
			
		||||
        return ResultStatus::ErrorNotImplemented;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
protected:
 | 
			
		||||
    FileUtil::IOFile file;
 | 
			
		||||
    bool is_loaded = false;
 | 
			
		||||
 
 | 
			
		||||
@@ -4,7 +4,9 @@
 | 
			
		||||
 | 
			
		||||
#include <algorithm>
 | 
			
		||||
#include <cinttypes>
 | 
			
		||||
#include <codecvt>
 | 
			
		||||
#include <cstring>
 | 
			
		||||
#include <locale>
 | 
			
		||||
#include <memory>
 | 
			
		||||
#include "common/logging/log.h"
 | 
			
		||||
#include "common/string_util.h"
 | 
			
		||||
@@ -420,4 +422,22 @@ ResultStatus AppLoader_NCCH::ReadRomFS(std::shared_ptr<FileUtil::IOFile>& romfs_
 | 
			
		||||
    return ResultStatus::ErrorNotUsed;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
ResultStatus AppLoader_NCCH::ReadTitle(std::string& title) {
 | 
			
		||||
    std::vector<u8> data;
 | 
			
		||||
    Loader::SMDH smdh;
 | 
			
		||||
    ReadIcon(data);
 | 
			
		||||
 | 
			
		||||
    if (!Loader::IsValidSMDH(data)) {
 | 
			
		||||
        return ResultStatus::ErrorInvalidFormat;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    memcpy(&smdh, data.data(), sizeof(Loader::SMDH));
 | 
			
		||||
 | 
			
		||||
    const auto& short_title = smdh.GetShortTitle(SMDH::TitleLanguage::English);
 | 
			
		||||
    auto title_end = std::find(short_title.begin(), short_title.end(), u'\0');
 | 
			
		||||
    title = Common::UTF16ToUTF8(std::u16string{short_title.begin(), title_end});
 | 
			
		||||
 | 
			
		||||
    return ResultStatus::Success;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
} // namespace Loader
 | 
			
		||||
 
 | 
			
		||||
@@ -191,23 +191,13 @@ public:
 | 
			
		||||
 | 
			
		||||
    ResultStatus ReadLogo(std::vector<u8>& 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
 | 
			
		||||
     * @param offset     Offset in the file to the RomFS
 | 
			
		||||
     * @param size       Size of the RomFS in bytes
 | 
			
		||||
     * @return ResultStatus result of function
 | 
			
		||||
     */
 | 
			
		||||
    ResultStatus ReadRomFS(std::shared_ptr<FileUtil::IOFile>& romfs_file, u64& offset,
 | 
			
		||||
                           u64& size) override;
 | 
			
		||||
 | 
			
		||||
    ResultStatus ReadTitle(std::string& title) override;
 | 
			
		||||
 | 
			
		||||
private:
 | 
			
		||||
    /**
 | 
			
		||||
     * Reads an application ExeFS section of an NCCH file into AppLoader (e.g. .code, .logo, etc.)
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user