svn commit: r189477 - head/lib/libarchive
Tim Kientzle
kientzle at FreeBSD.org
Fri Mar 6 18:51:19 PST 2009
Author: kientzle
Date: Sat Mar 7 02:51:18 2009
New Revision: 189477
URL: http://svn.freebsd.org/changeset/base/189477
Log:
Merge r585,r669 from libarchive.googlecode.com: If zlib is unavailable,
use external "gunzip" instead. With this in place, we can unconditionally
enable gzip read support.
Modified:
head/lib/libarchive/archive_read_support_compression_all.c
head/lib/libarchive/archive_read_support_compression_gzip.c
Modified: head/lib/libarchive/archive_read_support_compression_all.c
==============================================================================
--- head/lib/libarchive/archive_read_support_compression_all.c Sat Mar 7 02:47:04 2009 (r189476)
+++ head/lib/libarchive/archive_read_support_compression_all.c Sat Mar 7 02:51:18 2009 (r189477)
@@ -36,9 +36,8 @@ archive_read_support_compression_all(str
#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
Modified: head/lib/libarchive/archive_read_support_compression_gzip.c
==============================================================================
--- head/lib/libarchive/archive_read_support_compression_gzip.c Sat Mar 7 02:47:04 2009 (r189476)
+++ head/lib/libarchive/archive_read_support_compression_gzip.c Sat Mar 7 02:51:18 2009 (r189477)
@@ -91,7 +91,7 @@ archive_read_support_compression_gzip(st
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_filt
* 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
More information about the svn-src-all
mailing list