Fix testsuite and bootstrap. Implement -I.

* bootstrap.conf: Include size_max.
* gnulib.modules: Remove memset, rmdir. Replace strdup with
strdup-posix. Patch by Eric Blake.
* src/tar.c: Implement -I as a shorthand for --use-compress-program.
* doc/tar.texi: Document -I.
* tests/pipe.at, tests/shortrec.at: Account for eventual 'Record
size' output.
* tests/testsuite.at (AT_TAR_CHECK_HOOK): New define
(AT_TAR_WITH_HOOK, TAR_IGNREC_HOOK): New macros.
This commit is contained in:
Sergey Poznyakoff
2008-12-29 09:27:00 +00:00
parent 970f999818
commit 7b68ef3d91
8 changed files with 52 additions and 31 deletions

View File

@@ -1,3 +1,15 @@
2008-12-29 Sergey Poznyakoff <gray@gnu.org.ua>
* bootstrap.conf: Include size_max.
* gnulib.modules: Remove memset, rmdir. Replace strdup with
strdup-posix. Patch by Eric Blake.
* src/tar.c: Implement -I as a shorthand for --use-compress-program.
* doc/tar.texi: Document -I.
* tests/pipe.at, tests/shortrec.at: Account for eventual 'Record
size' output.
* tests/testsuite.at (AT_TAR_CHECK_HOOK): New define
(AT_TAR_WITH_HOOK, TAR_IGNREC_HOOK): New macros.
2008-11-30 Sergey Poznyakoff <gray@gnu.org.ua>
* src/xheader.c: Remove duplicate inclusion of fnmatch.h. Reported

View File

@@ -1,6 +1,6 @@
# Bootstrap configuration.
# Copyright (C) 2006, 2007 Free Software Foundation, Inc.
# Copyright (C) 2006, 2007, 2008 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -22,7 +22,6 @@
# includes them because of gettext dependencies.
avoided_gnulib_modules='
--avoid=lock
--avoid=size_max
'
# gnulib modules used by this package.
@@ -52,7 +51,6 @@ excluded_files='
m4/lcmessage.m4
m4/lock.m4
m4/printf-posix.m4
m4/size_max.m4
m4/uintmax_t.m4
m4/ulonglong.m4
m4/visibility.m4

View File

@@ -3309,6 +3309,7 @@ name quoting}.
@opsummary{use-compress-program}
@item --use-compress-program=@var{prog}
@itemx -I=@var{prog}
Instructs @command{tar} to access the archive through @var{prog}, which is
presumed to be a compression program of some sort. @xref{gzip}.
@@ -8570,6 +8571,7 @@ Filter the archive through @command{compress}. Otherwise like @option{--gzip}.
@opindex use-compress-program
@item --use-compress-program=@var{prog}
@itemx -I=@var{prog}
Use external compression program @var{prog}. Use this option if you
have a compression program that @GNUTAR{} does not support. There
are two requirements to which @var{prog} should comply:
@@ -8608,14 +8610,14 @@ Suppose you name it @file{gpgz} and save it somewhere in your
archive signed with your private key:
@smallexample
$ @kbd{tar -cf foo.tar.gpgz --use-compress=gpgz .}
$ @kbd{tar -cf foo.tar.gpgz -Igpgz .}
@end smallexample
@noindent
Likewise, the following command will list its contents:
Likewise, the command below will list its contents:
@smallexample
$ @kbd{tar -tf foo.tar.gpgz --use-compress=gpgz .}
$ @kbd{tar -tf foo.tar.gpgz -Igpgz .}
@end smallexample
@ignore

View File

@@ -27,13 +27,11 @@ human
inttypes
lchown
localcharset
memset
mkdtemp
modechange
obstack
quote
quotearg
rmdir
rpmatch
safe-read
save-cwd
@@ -44,7 +42,7 @@ stat-time
stdbool
stdint
stpcpy
strdup
strdup-posix
strerror
strtol
strtoul

View File

@@ -323,7 +323,6 @@ enum
TRANSFORM_OPTION,
UNQUOTE_OPTION,
USAGE_OPTION,
USE_COMPRESS_PROGRAM_OPTION,
UTC_OPTION,
VERSION_OPTION,
VOLNO_FILE_OPTION,
@@ -352,7 +351,7 @@ The version control may be set with --backup or VERSION_CONTROL, values are:\n\n
/* NOTE:
Available option letters are DEIQY and eqy. Consider the following
Available option letters are DEQY and eqy. Consider the following
assignments:
[For Solaris tar compatibility =/= Is it important at all?]
@@ -360,7 +359,6 @@ The version control may be set with --backup or VERSION_CONTROL, values are:\n\n
E use extended headers (--format=posix)
[q alias for --occurrence=1 =/= this would better be used for quiet?]
[I same as T =/= will harm star compatibility]
y per-file gzip compression
Y per-block gzip compression */
@@ -610,7 +608,7 @@ static struct argp_option options[] = {
N_("filter the archive through lzma"), GRID+1 },
{"lzop", LZOP_OPTION, 0, 0,
N_("filter the archive through lzop"), GRID+8 },
{"use-compress-program", USE_COMPRESS_PROGRAM_OPTION, N_("PROG"), 0,
{"use-compress-program", 'I', N_("PROG"), 0,
N_("filter through PROG (must accept -d)"), GRID+1 },
#undef GRID
@@ -1364,12 +1362,6 @@ parse_opt (int key, char *arg, struct argp_state *state)
ignore_zeros_option = true;
break;
case 'I':
USAGE_ERROR ((0, 0,
_("Warning: the -I option is not supported;"
" perhaps you meant -j or -T?")));
break;
case 'j':
set_use_compress_program_option ("bzip2");
break;
@@ -1905,7 +1897,7 @@ parse_opt (int key, char *arg, struct argp_state *state)
set_transform_expr (arg);
break;
case USE_COMPRESS_PROGRAM_OPTION:
case 'I':
set_use_compress_program_option (arg);
break;

View File

@@ -1,7 +1,7 @@
# Process this file with autom4te to create testsuite. -*- Autotest -*-
# Test suite for GNU tar.
# Copyright (C) 2004, 2005, 2006, 2007 Free Software Foundation, Inc.
# Copyright (C) 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -30,7 +30,8 @@ AT_SETUP([decompressing from stdin])
AT_KEYWORDS([pipe])
AT_TAR_CHECK([
AT_TAR_WITH_HOOK([TAR_IGNREC_HOOK],
[AT_TAR_CHECK([
AT_SORT_PREREQ
mkdir directory
@@ -49,6 +50,7 @@ directory/file1
directory/file2
separator
separator
])
],
[stderr])])
AT_CLEANUP

View File

@@ -1,7 +1,7 @@
# Process this file with autom4te to create testsuite. -*- Autotest -*-
# Test suite for GNU tar.
# Copyright (C) 2005, 2007 Free Software Foundation, Inc.
# Copyright (C) 2005, 2007, 2008 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -23,17 +23,22 @@
# used to create the archive.
AT_SETUP([short records])
AT_KEYWORDS([shortrec.at])
AT_KEYWORDS([shortrec])
AT_TAR_CHECK([
AT_TAR_WITH_HOOK([TAR_IGNREC_HOOK],
[AT_TAR_CHECK([
mkdir directory
(cd directory && touch a b c d e f g h i j k l m n o p q r)
tar -c -b 1 -f - directory | tar -t -f - >/dev/null
tar -c -b 1 -f - directory | tar -t -f -
tar -c -b 1 -f archive directory
tar -t -f archive >/dev/null
tar -t -f - < archive >/dev/null
tar -t -f archive
tar -t -f - < archive
rm -r directory
],
[0],
[ignore],
[stderr])
])
AT_CLEANUP

View File

@@ -1,7 +1,7 @@
# Process this file with autom4te to create testsuite. -*- Autotest -*-
# Test suite for GNU tar.
# Copyright (C) 2004, 2005, 2006, 2007 Free Software Foundation, Inc.
# Copyright (C) 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -21,6 +21,7 @@
# We need a recent Autotest.
m4_version_prereq([2.52g])
m4_define([AT_TAR_CHECK_HOOK])
m4_define([AT_TAR_CHECK],[
AT_XFAIL_IF(test -f $[]XFAILFILE)
m4_foreach([FMT],
@@ -33,9 +34,20 @@ export TEST_TAR_FORMAT
TAR_OPTIONS="-H FMT"
export TAR_OPTIONS
rm -rf *
$1)],$2,$3,$4,$5,$6)])
$1)],$2,$3,$4,$5,$6)
AT_TAR_CHECK_HOOK])
])
m4_define([AT_TAR_WITH_HOOK],[
m4_pushdef([AT_TAR_CHECK_HOOK],[$1])
$2
m4_popdef([AT_TAR_CHECK_HOOK])])
m4_define([TAR_IGNREC_HOOK],[
AT_CHECK([grep -v '^.*tar: Record size = ' stderr; exit 0])
])
m4_define([RE_CHECK],[
AT_DATA([$1.re],[$2])
awk '{print NR " " $[]0}' $1 > $[]$.1