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>
This commit is contained in:
Aaron Durbin
2015-10-23 17:38:40 -05:00
committed by Patrick Georgi
parent cd9ba8ac03
commit 5213c53f6f
4 changed files with 17 additions and 7 deletions

View File

@@ -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;
}