Modernize compress and decompress

This commit is contained in:
topjohnwu
2019-02-20 20:49:26 -05:00
parent 86d8026301
commit e59c5c8780
7 changed files with 192 additions and 180 deletions

View File

@@ -1,26 +1,32 @@
#ifndef _FORMAT_H_
#define _FORMAT_H_
#include <map>
#include <string_view>
typedef enum {
UNKNOWN,
/* Boot formats */
CHROMEOS,
AOSP,
ELF32,
ELF64,
DHTB,
BLOB,
/* Compression formats */
GZIP,
LZOP,
XZ,
LZMA,
BZIP2,
LZ4,
LZ4_LEGACY,
/* Misc */
LZOP,
MTK,
DTB,
DHTB,
BLOB
} format_t;
#define COMPRESSED(fmt) (fmt >= GZIP && fmt <= LZ4_LEGACY)
#define COMPRESSED(fmt) ((fmt) >= GZIP && (fmt) <= LZ4_LEGACY)
#define BOOT_MAGIC "ANDROID!"
#define CHROMEOS_MAGIC "CHROMEOS"
@@ -47,7 +53,20 @@ typedef enum {
#define SUP_LIST ((const char *[]) { "gzip", "xz", "lzma", "bzip2", "lz4", "lz4_legacy", NULL })
#define SUP_EXT_LIST ((const char *[]) { "gz", "xz", "lzma", "bz2", "lz4", "lz4", NULL })
class Fmt2Name {
public:
const char *operator[](format_t fmt);
};
class Fmt2Ext {
public:
const char *operator[](format_t fmt);
};
format_t check_fmt(const void *buf, size_t len);
void get_fmt_name(format_t fmt, char *name);
extern std::map<std::string_view, format_t> name2fmt;
extern Fmt2Name fmt2name;
extern Fmt2Ext fmt2ext;
#endif