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

@@ -2,6 +2,24 @@
#include "format.h"
std::map<std::string_view, format_t> name2fmt;
Fmt2Name fmt2name;
Fmt2Ext fmt2ext;
class FormatInit {
public:
FormatInit() {
name2fmt["gzip"] = GZIP;
name2fmt["xz"] = XZ;
name2fmt["lzma"] = LZMA;
name2fmt["bzip2"] = BZIP2;
name2fmt["lz4"] = LZ4;
name2fmt["lz4_legacy"] = LZ4_LEGACY;
}
};
static FormatInit init;
#define MATCH(s) (len >= (sizeof(s) - 1) && memcmp(buf, s, sizeof(s) - 1) == 0)
format_t check_fmt(const void *buf, size_t len) {
@@ -41,44 +59,51 @@ format_t check_fmt(const void *buf, size_t len) {
}
}
void get_fmt_name(format_t fmt, char *name) {
const char *s;
const char *Fmt2Name::operator[](format_t fmt) {
switch (fmt) {
case CHROMEOS:
s = "chromeos";
break;
return "chromeos";
case AOSP:
s = "aosp";
break;
return "aosp";
case GZIP:
s = "gzip";
break;
return "gzip";
case LZOP:
s = "lzop";
break;
return "lzop";
case XZ:
s = "xz";
break;
return "xz";
case LZMA:
s = "lzma";
break;
return "lzma";
case BZIP2:
s = "bzip2";
break;
return "bzip2";
case LZ4:
s = "lz4";
break;
return "lz4";
case LZ4_LEGACY:
s = "lz4_legacy";
break;
return "lz4_legacy";
case MTK:
s = "mtk";
break;
return "mtk";
case DTB:
s = "dtb";
break;
return "dtb";
default:
s = "raw";
return "raw";
}
}
const char *Fmt2Ext::operator[](format_t fmt) {
switch (fmt) {
case GZIP:
return ".gz";
case LZOP:
return ".lzop";
case XZ:
return ".xz";
case LZMA:
return ".lzma";
case BZIP2:
return ".bz2";
case LZ4:
case LZ4_LEGACY:
return ".lz4";
default:
return "";
}
strcpy(name, s);
}