]> Dogcows Code - chaz/tar/commitdiff
Allow installers to specify alternative program names for compression programs.
authorSergey Poznyakoff <gray@gnu.org.ua>
Sat, 10 Oct 2009 14:29:18 +0000 (17:29 +0300)
committerSergey Poznyakoff <gray@gnu.org.ua>
Sat, 10 Oct 2009 14:30:53 +0000 (17:30 +0300)
This adds --with-gzip, --with-bzip2 etc. switches to the configure, so that
one can do, e.g. ./configure --with-bzip2=lbzip2 and have lbzip2 executed
whenever user calls `tar --bzip2'.

* acinclude.m4: New file.
* configure.ac: Add TAR_COMPR_PROGRAM invocations for
the supported compressors.
* src/buffer.c (magic): Use *_COMPRESSOR defines instead
of hardcoded program names.
* src/suffix.c (compression_suffixes): Likewise.

acinclude.m4 [new file with mode: 0644]
configure.ac
src/buffer.c
src/suffix.c

diff --git a/acinclude.m4 b/acinclude.m4
new file mode 100644 (file)
index 0000000..fff919a
--- /dev/null
@@ -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])])
index 1b1831afcea9d4ab890fda4a3fa4b40c436a345e..7521d6484772dfd9a409135f3d676a5405ba0d1b 100644 (file)
@@ -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],
index fa9ccc231c53c32d07fa2285ba1c8919640beede..d7ff214f604070cbec9087d672b695823506b668 100644 (file)
@@ -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]))
index a044d5aaaf4f2d83a8193c2bab092ee2a4e814f1..cd9c01a2ee87e1dae6f8c988ac151908e2a18c7d 100644 (file)
@@ -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) /
This page took 0.023879 seconds and 4 git commands to generate.