svn commit: r203569 - head/usr.bin/tar
Tim Kientzle
kientzle at FreeBSD.org
Sat Feb 6 20:36:15 UTC 2010
Author: kientzle
Date: Sat Feb 6 20:36:14 2010
New Revision: 203569
URL: http://svn.freebsd.org/changeset/base/203569
Log:
bsdtar doesn't actually know what compression is supported by libarchive
and it should not pretend that it does. It should just pass along the
user's request and handle an error if it's not supported.
Modified:
head/usr.bin/tar/bsdtar.c
head/usr.bin/tar/write.c
Modified: head/usr.bin/tar/bsdtar.c
==============================================================================
--- head/usr.bin/tar/bsdtar.c Sat Feb 6 20:27:36 2010 (r203568)
+++ head/usr.bin/tar/bsdtar.c Sat Feb 6 20:36:14 2010 (r203569)
@@ -299,30 +299,18 @@ main(int argc, char **argv)
bsdtar->optarg);
break;
case 'j': /* GNU tar */
-#if HAVE_LIBBZ2
if (bsdtar->create_compression != '\0')
bsdtar_errc(1, 0,
"Can't specify both -%c and -%c", opt,
bsdtar->create_compression);
bsdtar->create_compression = opt;
-#else
- bsdtar_warnc(0,
- "bzip2 compression not supported by this version of bsdtar");
- usage();
-#endif
break;
case 'J': /* GNU tar 1.21 and later */
-#if HAVE_LIBLZMA
if (bsdtar->create_compression != '\0')
bsdtar_errc(1, 0,
"Can't specify both -%c and -%c", opt,
bsdtar->create_compression);
bsdtar->create_compression = opt;
-#else
- bsdtar_warnc(0,
- "xz compression not supported by this version of bsdtar");
- usage();
-#endif
break;
case 'k': /* GNU tar */
bsdtar->extract_flags |= ARCHIVE_EXTRACT_NO_OVERWRITE;
@@ -338,17 +326,11 @@ main(int argc, char **argv)
bsdtar->option_warn_links = 1;
break;
case OPTION_LZMA:
-#if HAVE_LIBLZMA
if (bsdtar->create_compression != '\0')
bsdtar_errc(1, 0,
"Can't specify both -%c and -%c", opt,
bsdtar->create_compression);
bsdtar->create_compression = opt;
-#else
- bsdtar_warnc(0,
- "lzma compression not supported by this version of bsdtar");
- usage();
-#endif
break;
case 'm': /* SUSv2 */
bsdtar->extract_flags &= ~ARCHIVE_EXTRACT_TIME;
@@ -510,17 +492,11 @@ main(int argc, char **argv)
set_mode(bsdtar, opt);
break;
case 'y': /* FreeBSD version of GNU tar */
-#if HAVE_LIBBZ2
if (bsdtar->create_compression != '\0')
bsdtar_errc(1, 0,
"Can't specify both -%c and -%c", opt,
bsdtar->create_compression);
bsdtar->create_compression = opt;
-#else
- bsdtar_warnc(0,
- "bzip2 compression not supported by this version of bsdtar");
- usage();
-#endif
break;
case 'Z': /* GNU tar */
if (bsdtar->create_compression != '\0')
@@ -530,17 +506,11 @@ main(int argc, char **argv)
bsdtar->create_compression = opt;
break;
case 'z': /* GNU tar, star, many others */
-#if HAVE_LIBZ
if (bsdtar->create_compression != '\0')
bsdtar_errc(1, 0,
"Can't specify both -%c and -%c", opt,
bsdtar->create_compression);
bsdtar->create_compression = opt;
-#else
- bsdtar_warnc(0,
- "gzip compression not supported by this version of bsdtar");
- usage();
-#endif
break;
case OPTION_USE_COMPRESS_PROGRAM:
bsdtar->compress_program = bsdtar->optarg;
Modified: head/usr.bin/tar/write.c
==============================================================================
--- head/usr.bin/tar/write.c Sat Feb 6 20:27:36 2010 (r203568)
+++ head/usr.bin/tar/write.c Sat Feb 6 20:36:14 2010 (r203569)
@@ -185,34 +185,33 @@ tar_mode_c(struct bsdtar *bsdtar)
} else {
switch (bsdtar->create_compression) {
case 0:
- archive_write_set_compression_none(a);
+ r = archive_write_set_compression_none(a);
break;
-#ifdef HAVE_LIBBZ2
case 'j': case 'y':
- archive_write_set_compression_bzip2(a);
+ r = archive_write_set_compression_bzip2(a);
break;
-#endif
-#ifdef HAVE_LIBLZMA
case 'J':
- archive_write_set_compression_xz(a);
+ r = archive_write_set_compression_xz(a);
break;
case OPTION_LZMA:
- archive_write_set_compression_lzma(a);
+ r = archive_write_set_compression_lzma(a);
break;
-#endif
-#ifdef HAVE_LIBZ
case 'z':
- archive_write_set_compression_gzip(a);
+ r = archive_write_set_compression_gzip(a);
break;
-#endif
case 'Z':
- archive_write_set_compression_compress(a);
+ r = archive_write_set_compression_compress(a);
break;
default:
bsdtar_errc(1, 0,
"Unrecognized compression option -%c",
bsdtar->create_compression);
}
+ if (r != ARCHIVE_OK) {
+ bsdtar_errc(1, 0,
+ "Unsupported compression option -%c",
+ bsdtar->create_compression);
+ }
}
if (ARCHIVE_OK != archive_write_set_options(a, bsdtar->option_options))
More information about the svn-src-head
mailing list