[coreboot-gerrit] New patch to review for coreboot: cbfstool: add decompression wrappers
Patrick Georgi (pgeorgi@google.com)
gerrit at coreboot.org
Wed Aug 26 14:24:53 CEST 2015
Patrick Georgi (pgeorgi at google.com) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/11362
-gerrit
commit 7f7bc420db96fb6d4ac7e60df93427bf62ef2082
Author: Patrick Georgi <patrick at georgi-clan.de>
Date: Wed Aug 26 12:53:41 2015 +0200
cbfstool: add decompression wrappers
Change-Id: I86a071a61fd6c1ef842f8ffe51f12f0cefdaf2fe
Signed-off-by: Patrick Georgi <patrick at georgi-clan.de>
---
util/cbfstool/common.h | 2 ++
util/cbfstool/compress.c | 27 +++++++++++++++++++++++++++
2 files changed, 29 insertions(+)
diff --git a/util/cbfstool/common.h b/util/cbfstool/common.h
index 5fb1906..8ba96aa 100644
--- a/util/cbfstool/common.h
+++ b/util/cbfstool/common.h
@@ -147,9 +147,11 @@ const char *arch_to_string(uint32_t a);
uint32_t string_to_arch(const char *arch_string);
typedef int (*comp_func_ptr) (char *, int, char *, int *);
+typedef int (*decomp_func_ptr) (char *, int, char *, int);
enum comp_algo { CBFS_COMPRESS_NONE = 0, CBFS_COMPRESS_LZMA = 1 };
comp_func_ptr compression_function(enum comp_algo algo);
+decomp_func_ptr decompression_function(enum comp_algo algo);
uint64_t intfiletype(const char *name);
diff --git a/util/cbfstool/compress.c b/util/cbfstool/compress.c
index ab94b35..2bde7df 100644
--- a/util/cbfstool/compress.c
+++ b/util/cbfstool/compress.c
@@ -31,6 +31,10 @@ static int lzma_compress(char *in, int in_len, char *out, int *out_len)
return do_lzma_compress(in, in_len, out, out_len);
}
+static int lzma_decompress(char *in, int in_len, char *out, unused int out_len)
+{
+ return do_lzma_uncompress(out, out_len, in, in_len);
+}
static int none_compress(char *in, int in_len, char *out, int *out_len)
{
memcpy(out, in, in_len);
@@ -38,6 +42,12 @@ static int none_compress(char *in, int in_len, char *out, int *out_len)
return 0;
}
+static int none_decompress(char *in, int in_len, char *out, unused int out_len)
+{
+ memcpy(out, in, in_len);
+ return 0;
+}
+
comp_func_ptr compression_function(enum comp_algo algo)
{
comp_func_ptr compress;
@@ -54,3 +64,20 @@ comp_func_ptr compression_function(enum comp_algo algo)
}
return compress;
}
+
+decomp_func_ptr decompression_function(enum comp_algo algo)
+{
+ decomp_func_ptr decompress;
+ switch (algo) {
+ case CBFS_COMPRESS_NONE:
+ decompress = none_decompress;
+ break;
+ case CBFS_COMPRESS_LZMA:
+ decompress = lzma_decompress;
+ break;
+ default:
+ ERROR("Unknown compression algorithm %d!\n", algo);
+ return NULL;
+ }
+ return decompress;
+}
More information about the coreboot-gerrit
mailing list