From 7064699bec27f7e84295363d0dcd466124220631 Mon Sep 17 00:00:00 2001 From: Vitali Lovich Date: Mon, 23 Jun 2014 15:23:35 -0700 Subject: [PATCH] configurable zip compression Have zip format honor compression-level. --- libarchive/archive_write_set_format_zip.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/libarchive/archive_write_set_format_zip.c b/libarchive/archive_write_set_format_zip.c index 332611c86..c161c738e 100644 --- a/libarchive/archive_write_set_format_zip.c +++ b/libarchive/archive_write_set_format_zip.c @@ -223,6 +223,23 @@ archive_write_zip_options(struct archive_write *a, const char *key, ret = ARCHIVE_OK; } return (ret); + } else if (strcmp(key, "compression-level") == 0) { + if (val == NULL || !(val[0] >= '0' && val[0] <= '9') || val[1] != '\0') { + return ARCHIVE_WARN; + } + + if (val[0] == '0') { + zip->requested_compression = COMPRESSION_STORE; + return ARCHIVE_OK; + } + +#ifdef HAVE_ZLIB_H + zip->requested_compression = val[0] - '0'; + return ARCHIVE_OK; +#else + archive_set_error(&a->archive, ARCHIVE_ERRNO_MISC, + "deflate compression not supported"); +#endif } else if (strcmp(key, "experimental") == 0) { if (val == NULL || val[0] == 0) { zip->flags &= ~ ZIP_FLAG_EXPERIMENT_xl; -- 2.47.2