aboutsummaryrefslogtreecommitdiff
path: root/util/cbfstool/compress.c
diff options
context:
space:
mode:
authorAaron Durbin <adurbin@chromium.org>2015-10-23 17:38:40 -0500
committerPatrick Georgi <pgeorgi@google.com>2015-10-25 13:23:15 +0100
commit5213c53f6f126bf79ca2849d7d04a0e5141811ea (patch)
treeaaf45f052b52a6c8c33a80d8a1ce51093c28ab54 /util/cbfstool/compress.c
parentcd9ba8ac034d9a693066ac3226332053f744299e (diff)
cbfstool: have decompress functions provide ouput data size
Currently cbfs stage files that are compressed do not have the decompressed size readily available. Therefore there's no good way to know actual size of data after it is decompressed. Optionally return the decompressed data size if requested. Change-Id: If371753d28d0ff512118d8bc06fdd48f4a0aeae7 Signed-off-by: Aaron Durbin <adurbin@chromium.org> Reviewed-on: http://review.coreboot.org/12173 Tested-by: build bot (Jenkins) Reviewed-by: Patrick Georgi <pgeorgi@google.com>
Diffstat (limited to 'util/cbfstool/compress.c')
-rw-r--r--util/cbfstool/compress.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/util/cbfstool/compress.c b/util/cbfstool/compress.c
index 2bde7df96a..0313b96898 100644
--- a/util/cbfstool/compress.c
+++ b/util/cbfstool/compress.c
@@ -31,9 +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)
+static int lzma_decompress(char *in, int in_len, char *out, unused int out_len,
+ size_t *actual_size)
{
- return do_lzma_uncompress(out, out_len, in, in_len);
+ return do_lzma_uncompress(out, out_len, in, in_len, actual_size);
}
static int none_compress(char *in, int in_len, char *out, int *out_len)
{
@@ -42,9 +43,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)
+static int none_decompress(char *in, int in_len, char *out, unused int out_len,
+ size_t *actual_size)
{
memcpy(out, in, in_len);
+ if (actual_size != NULL)
+ *actual_size = in_len;
return 0;
}