diff options
-rw-r--r-- | acinclude.m4 | 26 | ||||
-rw-r--r-- | configure.ac | 7 | ||||
-rw-r--r-- | src/buffer.c | 12 | ||||
-rw-r--r-- | src/suffix.c | 30 |
4 files changed, 55 insertions, 20 deletions
diff --git a/acinclude.m4 b/acinclude.m4 new file mode 100644 index 00000000..fff919af --- /dev/null +++ b/acinclude.m4 @@ -0,0 +1,26 @@ +dnl Special Autoconf macros for GNU Tar -*- autoconf -*- +dnl Copyright (C) 2009 Free Software Foundation, Inc. +dnl +dnl GNU tar is free software; you can redistribute it and/or modify +dnl it under the terms of the GNU General Public License as published by +dnl the Free Software Foundation; either version 3, or (at your option) +dnl any later version. +dnl +dnl GNU tar is distributed in the hope that it will be useful, +dnl but WITHOUT ANY WARRANTY; without even the implied warranty of +dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +dnl GNU General Public License for more details. +dnl +dnl You should have received a copy of the GNU General Public License along +dnl with GNU tar. If not, see <http://www.gnu.org/licenses/>. + +AC_DEFUN([TAR_COMPR_PROGRAM],[ + m4_pushdef([tar_compr_define],translit($1,[a-z+-],[A-ZX_])[_PROGRAM]) + m4_pushdef([tar_compr_var],[tar_cv_compressor_]translit($1,[+-],[x_])) + AC_ARG_WITH([--with-]$1, + AC_HELP_STRING([--with-]$1[=PROG], + [use PROG as ]$1[ compressor program]), + [tar_compr_var=${withvar}], + [tar_compr_var=m4_if($2,,$1,$2)]) + AC_DEFINE_UNQUOTED(tar_compr_define, "$tar_compr_var", + [Define to the program name of ]$1[ compressor program])]) diff --git a/configure.ac b/configure.ac index 1b1831af..7521d648 100644 --- a/configure.ac +++ b/configure.ac @@ -121,6 +121,13 @@ else [Define to the full path of your rsh, if any.]) fi +TAR_COMPR_PROGRAM(compress) +TAR_COMPR_PROGRAM(gzip) +TAR_COMPR_PROGRAM(bzip2) +TAR_COMPR_PROGRAM(lzma) +TAR_COMPR_PROGRAM(lzop) +TAR_COMPR_PROGRAM(xz) + AC_MSG_CHECKING(for default archive format) AC_ARG_VAR([DEFAULT_ARCHIVE_FORMAT], diff --git a/src/buffer.c b/src/buffer.c index fa9ccc23..d7ff214f 100644 --- a/src/buffer.c +++ b/src/buffer.c @@ -220,12 +220,12 @@ struct zip_magic static struct zip_magic const magic[] = { { ct_tar }, { ct_none, }, - { ct_compress, 2, "\037\235", "compress", "-Z" }, - { ct_gzip, 2, "\037\213", "gzip", "-z" }, - { ct_bzip2, 3, "BZh", "bzip2", "-j" }, - { ct_lzma, 6, "\xFFLZMA", "lzma", "--lzma" }, - { ct_lzop, 4, "\211LZO", "lzop", "--lzop" }, - { ct_xz, 6, "\0xFD7zXZ", "xz", "-J" }, + { ct_compress, 2, "\037\235", COMPRESS_PROGRAM, "-Z" }, + { ct_gzip, 2, "\037\213", GZIP_PROGRAM, "-z" }, + { ct_bzip2, 3, "BZh", BZIP2_PROGRAM, "-j" }, + { ct_lzma, 6, "\xFFLZMA", LZMA_PROGRAM, "--lzma" }, + { ct_lzop, 4, "\211LZO", LZOP_PROGRAM, "--lzop" }, + { ct_xz, 6, "\0xFD7zXZ", XZ_PROGRAM, "-J" }, }; #define NMAGIC (sizeof(magic)/sizeof(magic[0])) diff --git a/src/suffix.c b/src/suffix.c index a044d5aa..cd9c01a2 100644 --- a/src/suffix.c +++ b/src/suffix.c @@ -27,21 +27,23 @@ struct compression_suffix }; static struct compression_suffix compression_suffixes[] = { -#define S(s,p) #s, sizeof (#s) - 1, #p - { S(gz, gzip) }, - { S(tgz, gzip) }, - { S(taz, gzip) }, - { S(Z, compress) }, - { S(taZ, compress) }, - { S(bz2, bzip2) }, - { S(tbz, bzip2) }, - { S(tbz2, bzip2) }, - { S(tz2, bzip2) }, - { S(lzma, lzma) }, - { S(tlz, lzma) }, - { S(lzo, lzop) }, - { S(xz, xz) }, +#define __CAT2__(a,b) a ## b +#define S(s,p) #s, sizeof (#s) - 1, __CAT2__(p,_PROGRAM) + { S(gz, GZIP) }, + { S(tgz, GZIP) }, + { S(taz, GZIP) }, + { S(Z, COMPRESS) }, + { S(taZ, COMPRESS) }, + { S(bz2, BZIP2) }, + { S(tbz, BZIP2) }, + { S(tbz2, BZIP2) }, + { S(tz2, BZIP2) }, + { S(lzma, LZMA) }, + { S(tlz, LZMA) }, + { S(lzo, LZOP) }, + { S(xz, XZ) }, #undef S +#undef __CAT2__ }; static int nsuffixes = sizeof (compression_suffixes) / |