summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lib/libarchive/archive_read_support_compression_all.c3
-rw-r--r--lib/libarchive/archive_read_support_compression_gzip.c12
2 files changed, 8 insertions, 7 deletions
diff --git a/lib/libarchive/archive_read_support_compression_all.c b/lib/libarchive/archive_read_support_compression_all.c
index 967546d..745f1ff 100644
--- a/lib/libarchive/archive_read_support_compression_all.c
+++ b/lib/libarchive/archive_read_support_compression_all.c
@@ -36,9 +36,8 @@ archive_read_support_compression_all(struct archive *a)
#endif
/* The decompress code doesn't use an outside library. */
archive_read_support_compression_compress(a);
-#if HAVE_ZLIB_H
+ /* Gzip decompress falls back to "gunzip" command-line. */
archive_read_support_compression_gzip(a);
-#endif
#if HAVE_LZMADEC_H
/* LZMA bidding is subject to false positives because
* the LZMA file format has a very weak signature. It
diff --git a/lib/libarchive/archive_read_support_compression_gzip.c b/lib/libarchive/archive_read_support_compression_gzip.c
index 9d06bf6..bc3f143 100644
--- a/lib/libarchive/archive_read_support_compression_gzip.c
+++ b/lib/libarchive/archive_read_support_compression_gzip.c
@@ -91,7 +91,7 @@ archive_read_support_compression_gzip(struct archive *_a)
bidder->bid = gzip_bidder_bid;
bidder->init = gzip_bidder_init;
bidder->options = NULL;
- bidder->free = NULL;
+ bidder->free = NULL; /* No data, so no cleanup necessary. */
return (ARCHIVE_OK);
}
@@ -212,12 +212,14 @@ gzip_bidder_bid(struct archive_read_filter_bidder *self,
* and emit a useful message.
*/
static int
-gzip_bidder_init(struct archive_read_filter *filter)
+gzip_bidder_init(struct archive_read_filter *self)
{
+ int r;
- archive_set_error(&filter->archive->archive, -1,
- "This version of libarchive was compiled without gzip support");
- return (ARCHIVE_FATAL);
+ r = __archive_read_program(self, "gunzip");
+ self->code = ARCHIVE_COMPRESSION_GZIP;
+ self->name = "gzip";
+ return (r);
}
#else
OpenPOWER on IntegriCloud