From d5068781ec2528f88aaa92fbc9a5b9c256d53499 Mon Sep 17 00:00:00 2001 From: David Oberhollenzer Date: Mon, 6 May 2019 12:09:56 +0200 Subject: Implement reading and writing of compressor options - gensquashfs simply asks the backend compressor to write its options to the file and does accounting - rdsquasfs simply asks the backend compressor to transparentyl snort the options from the file - not implemented in any compressor backend yet Signed-off-by: David Oberhollenzer --- lib/comp/gzip.c | 17 +++++++++++++++++ lib/comp/lzo.c | 17 +++++++++++++++++ lib/comp/xz.c | 17 +++++++++++++++++ 3 files changed, 51 insertions(+) (limited to 'lib') diff --git a/lib/comp/gzip.c b/lib/comp/gzip.c index ea634b8..ea86f98 100644 --- a/lib/comp/gzip.c +++ b/lib/comp/gzip.c @@ -29,6 +29,21 @@ static void gzip_destroy(compressor_t *base) free(gzip); } +static int gzip_write_options(compressor_t *base, int fd) +{ + (void)base; + (void)fd; + return 0; +} + +static int gzip_read_options(compressor_t *base, int fd) +{ + (void)base; + (void)fd; + fputs("gzip extra options are not yet implemented\n", stderr); + return -1; +} + static ssize_t gzip_do_block(compressor_t *base, const uint8_t *in, size_t size, uint8_t *out, size_t outsize) { @@ -90,6 +105,8 @@ compressor_t *create_gzip_compressor(bool compress, size_t block_size) gzip->block_size = block_size; base->do_block = gzip_do_block; base->destroy = gzip_destroy; + base->write_options = gzip_write_options; + base->read_options = gzip_read_options; if (compress) { ret = deflateInit(&gzip->strm, Z_BEST_COMPRESSION); diff --git a/lib/comp/lzo.c b/lib/comp/lzo.c index 30b14cb..95ab485 100644 --- a/lib/comp/lzo.c +++ b/lib/comp/lzo.c @@ -14,6 +14,21 @@ typedef struct { uint8_t buffer[LZO1X_999_MEM_COMPRESS]; } lzo_compressor_t; +static int lzo_write_options(compressor_t *base, int fd) +{ + (void)base; + (void)fd; + return 0; +} + +static int lzo_read_options(compressor_t *base, int fd) +{ + (void)base; + (void)fd; + fputs("lzo extra options are not yet implemented\n", stderr); + return -1; +} + static ssize_t lzo_comp_block(compressor_t *base, const uint8_t *in, size_t size, uint8_t *out, size_t outsize) { @@ -67,5 +82,7 @@ compressor_t *create_lzo_compressor(bool compress, size_t block_size) base->destroy = lzo_destroy; base->do_block = compress ? lzo_comp_block : lzo_uncomp_block; + base->write_options = lzo_write_options; + base->read_options = lzo_read_options; return base; } diff --git a/lib/comp/xz.c b/lib/comp/xz.c index 98d740c..dd608ba 100644 --- a/lib/comp/xz.c +++ b/lib/comp/xz.c @@ -12,6 +12,21 @@ typedef struct { size_t block_size; } xz_compressor_t; +static int xz_write_options(compressor_t *base, int fd) +{ + (void)base; + (void)fd; + return 0; +} + +static int xz_read_options(compressor_t *base, int fd) +{ + (void)base; + (void)fd; + fputs("xz extra options are not yet implemented\n", stderr); + return -1; +} + static ssize_t xz_comp_block(compressor_t *base, const uint8_t *in, size_t size, uint8_t *out, size_t outsize) { @@ -86,5 +101,7 @@ compressor_t *create_xz_compressor(bool compress, size_t block_size) xz->block_size = block_size; base->destroy = xz_destroy; base->do_block = compress ? xz_comp_block : xz_uncomp_block; + base->write_options = xz_write_options; + base->read_options = xz_read_options; return base; } -- cgit v1.2.3