]> git.ipfire.org Git - thirdparty/libarchive.git/commitdiff
If the necessary libraries are missing for gzip/bzip2 writing,
authorTim Kientzle <kientzle@gmail.com>
Wed, 1 Apr 2009 07:32:55 +0000 (03:32 -0400)
committerTim Kientzle <kientzle@gmail.com>
Wed, 1 Apr 2009 07:32:55 +0000 (03:32 -0400)
have the public setup function return ARCHIVE_FATAL and a suitable
error message.  Alter the write tests to simply skip if the
initial compression setup returns ARCHIVE_FATAL.  This should
fix these tests on platforms without zlib/bzlib.

SVN-Revision: 893

libarchive/archive_write_set_compression_bzip2.c
libarchive/archive_write_set_compression_gzip.c
libarchive/test/test_write_compress_bzip2.c
libarchive/test/test_write_compress_gzip.c

index 78c97919da9360bd0e74d591b204df32ebec0fee..219ab478bdf8decce277fc270d35127ff811a73d 100644 (file)
@@ -24,6 +24,7 @@
  */
 
 #include "archive_platform.h"
+#undef HAVE_BZLIB_H
 
 __FBSDID("$FreeBSD: src/lib/libarchive/archive_write_set_compression_bzip2.c,v 1.13 2007/12/30 04:58:21 kientzle Exp $");
 
@@ -47,9 +48,10 @@ __FBSDID("$FreeBSD: src/lib/libarchive/archive_write_set_compression_bzip2.c,v 1
 
 #ifndef HAVE_BZLIB_H
 int
-archive_write_set_compression_bzip2(struct archive *_a)
+archive_write_set_compression_bzip2(struct archive *a)
 {
-       /* Unsupported bzip2 compression, we don't have bzlib */
+       archive_set_error(a, ARCHIVE_ERRNO_MISC,
+           "bzip2 compression not supported on this platform");
        return (ARCHIVE_FATAL);
 }
 #else
index 9ec467a67280b9c35af65f3d8a79d299e84a19c7..8a55c9a762d4b8d5798829df36cfffeeb25c70a4 100644 (file)
@@ -24,6 +24,7 @@
  */
 
 #include "archive_platform.h"
+#undef HAVE_ZLIB_H
 
 __FBSDID("$FreeBSD: src/lib/libarchive/archive_write_set_compression_gzip.c,v 1.16 2008/02/21 03:21:50 kientzle Exp $");
 
@@ -47,9 +48,10 @@ __FBSDID("$FreeBSD: src/lib/libarchive/archive_write_set_compression_gzip.c,v 1.
 
 #ifndef HAVE_ZLIB_H
 int
-archive_write_set_compression_gzip(struct archive *_a)
+archive_write_set_compression_gzip(struct archive *a)
 {
-       /* Unsupported gzip compression, we don't have zlib */
+       archive_set_error(a, ARCHIVE_ERRNO_MISC,
+           "gzip compression not supported on this platform");
        return (ARCHIVE_FATAL);
 }
 #else
@@ -122,9 +124,6 @@ archive_compressor_gzip_init(struct archive_write *a)
 
        config = (struct private_config *)a->compressor.config;
 
-       a->archive.compression_code = ARCHIVE_COMPRESSION_GZIP;
-       a->archive.compression_name = "gzip";
-
        if (a->client_opener != NULL) {
                ret = (a->client_opener)(&a->archive, a->client_data);
                if (ret != ARCHIVE_OK)
index f34904ce3aee1d48a8eee6c26347a9a59078c38e..256288f81ec0d5f716fa9cdce87af59dc3ec85c5 100644 (file)
@@ -41,7 +41,7 @@ DEFINE_TEST(test_write_compress_bzip2)
        size_t buffsize, datasize;
        char path[16];
        size_t used1, used2;
-       int i;
+       int i, r;
 
        buffsize = 2000000;
        assert(NULL != (buff = (char *)malloc(buffsize)));
@@ -55,7 +55,12 @@ DEFINE_TEST(test_write_compress_bzip2)
         */
        assert((a = archive_write_new()) != NULL);
        assertA(0 == archive_write_set_format_ustar(a));
-       assertA(0 == archive_write_set_compression_bzip2(a));
+       r = archive_write_set_compression_bzip2(a);
+       if (r == ARCHIVE_FATAL) {
+               skipping("bzip2 writing not supported on this platform");
+               assertEqualInt(ARCHIVE_OK, archive_write_finish(a));
+               return;
+       }
        assertEqualIntA(a, ARCHIVE_OK,
            archive_write_set_bytes_per_block(a, 10));
        assertEqualInt(ARCHIVE_COMPRESSION_BZIP2, archive_compression(a));
index 386b91dd5a45b6a578c6531b43904eaef2d790eb..4b9c84ca65d10231109de8375cd3d82dee516eff 100644 (file)
@@ -55,7 +55,12 @@ DEFINE_TEST(test_write_compress_gzip)
         */
        assert((a = archive_write_new()) != NULL);
        assertA(0 == archive_write_set_format_ustar(a));
-       assertA(0 == archive_write_set_compression_gzip(a));
+       r = archive_write_set_compression_gzip(a);
+       if (r == ARCHIVE_FATAL) {
+               skipping("gzip writing not supported on this platform");
+               assertEqualInt(ARCHIVE_OK, archive_write_finish(a));
+               return;
+       }
        assertEqualIntA(a, ARCHIVE_OK,
            archive_write_set_bytes_per_block(a, 10));
        assertEqualInt(ARCHIVE_COMPRESSION_GZIP, archive_compression(a));
@@ -82,7 +87,7 @@ DEFINE_TEST(test_write_compress_gzip)
        r = archive_read_support_compression_gzip(a);
        if (r == ARCHIVE_WARN) {
                skipping("Can't verify gzip writing by reading back;"
-                   " gzip reading not fully supported");
+                   " gzip reading not fully supported on this platform");
        } else {
                assertEqualIntA(a, ARCHIVE_OK,
                    archive_read_support_compression_all(a));
@@ -143,7 +148,7 @@ DEFINE_TEST(test_write_compress_gzip)
        assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a));
        r = archive_read_support_compression_gzip(a);
        if (r == ARCHIVE_WARN) {
-               skipping("gzip decompression not fully supported");
+               skipping("gzip reading not fully supported on this platform");
        } else {
                assertEqualIntA(a, ARCHIVE_OK,
                    archive_read_support_compression_all(a));
@@ -197,7 +202,7 @@ DEFINE_TEST(test_write_compress_gzip)
        assertA(0 == archive_read_support_compression_all(a));
        r = archive_read_support_compression_gzip(a);
        if (r == ARCHIVE_WARN) {
-               skipping("gzip decompression not fully supported");
+               skipping("gzip reading not fully supported on this platform");
        } else {
                assertEqualIntA(a, ARCHIVE_OK,
                    archive_read_open_memory(a, buff, used2));