2014-02-15 01:06:12 +01:00
|
|
|
#pragma once
|
|
|
|
|
|
|
|
|
|
struct TRPHeader
|
|
|
|
|
{
|
2014-02-16 02:51:04 +01:00
|
|
|
be_t<u32> trp_magic;
|
|
|
|
|
be_t<u32> trp_version;
|
|
|
|
|
be_t<u64> trp_file_size;
|
|
|
|
|
be_t<u32> trp_files_count;
|
|
|
|
|
be_t<u32> trp_element_size;
|
2017-04-13 19:29:47 +02:00
|
|
|
be_t<u32> trp_dev_flag;
|
2014-02-15 01:06:12 +01:00
|
|
|
unsigned char sha1[20];
|
|
|
|
|
unsigned char padding[16];
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
struct TRPEntry
|
|
|
|
|
{
|
2014-02-16 02:51:04 +01:00
|
|
|
char name[32];
|
|
|
|
|
be_t<u64> offset;
|
|
|
|
|
be_t<u64> size;
|
|
|
|
|
be_t<u32> unknown;
|
2014-02-15 01:06:12 +01:00
|
|
|
char padding[12];
|
|
|
|
|
};
|
|
|
|
|
|
2016-02-01 22:47:09 +01:00
|
|
|
class TRPLoader final
|
2014-02-15 01:06:12 +01:00
|
|
|
{
|
2016-02-01 22:47:09 +01:00
|
|
|
const fs::file& trp_f;
|
2014-02-15 01:06:12 +01:00
|
|
|
TRPHeader m_header;
|
|
|
|
|
std::vector<TRPEntry> m_entries;
|
|
|
|
|
|
|
|
|
|
public:
|
2016-02-01 22:47:09 +01:00
|
|
|
TRPLoader(const fs::file& f);
|
2014-03-17 20:34:19 +01:00
|
|
|
|
2016-02-01 22:47:09 +01:00
|
|
|
bool Install(const std::string& dest, bool show = false);
|
|
|
|
|
bool LoadHeader(bool show = false);
|
2017-11-20 14:08:35 +01:00
|
|
|
u64 GetRequiredSpace() const;
|
2014-03-17 20:34:19 +01:00
|
|
|
|
2016-02-01 22:47:09 +01:00
|
|
|
bool ContainsEntry(const char *filename);
|
|
|
|
|
void RemoveEntry(const char *filename);
|
|
|
|
|
void RenameEntry(const char *oldname, const char *newname);
|
2015-04-16 01:17:42 +02:00
|
|
|
};
|