diff --git a/usr.bin/tar/bsdtar.c b/usr.bin/tar/bsdtar.c index b070d8ed8277..535c10716399 100644 --- a/usr.bin/tar/bsdtar.c +++ b/usr.bin/tar/bsdtar.c @@ -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; diff --git a/usr.bin/tar/write.c b/usr.bin/tar/write.c index f236876cc850..2ac519f426d9 100644 --- a/usr.bin/tar/write.c +++ b/usr.bin/tar/write.c @@ -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))