#pragma once struct TRPHeader { be_t trp_magic; be_t trp_version; be_t trp_file_size; be_t trp_files_count; be_t trp_element_size; be_t trp_dev_flag; unsigned char sha1[20]; unsigned char padding[16]; }; struct TRPEntry { char name[32]; be_t offset; be_t size; be_t unknown; char padding[12]; }; class TRPLoader final { const fs::file& trp_f; TRPHeader m_header; std::vector m_entries; public: TRPLoader(const fs::file& f); bool Install(const std::string& dest, bool show = false); bool LoadHeader(bool show = false); u64 GetRequiredSpace() const; bool ContainsEntry(const char *filename); void RemoveEntry(const char *filename); void RenameEntry(const char *oldname, const char *newname); };