Commit dda6367c authored by Bdale Garbee's avatar Bdale Garbee
Browse files

Imported Upstream version 1.25

parent ee168310
2010-11-07 Sergey Poznyakoff <>
Version 1.25
* Version 1.25
* NEWS: Describe the changes.
2010-11-05 Sergey Poznyakoff <>
Run alternative decompression programs if the principal one is
not available.
Some compression programs are able to handle various compression
(e.g. `gzip' can decompress files created by `compress', `xz'
is able
to handle lzma, etc.) Tar tries to use such programs for
if the principal decompressor cannot be started.
* src/buffer.c (compress_type): Swap ct_none and ct_tar.
(archive_compression_type): New static variable.
(zip_magic): Remove program and option fields.
(zip_program): New structure and static.
(compress_program): Remove macro.
(find_zip_program): New static function.
(first_decompress_program,next_decompress_program): New functions.
(open_compressed_archive): Set archive_compression_type instead of
* src/common.h (first_decompress_program)
(next_decompress_program): New functions.
* src/warning.c (warning_args): Add "decompress-program".
(warning_types): Add WARN_DECOMPRESS_PROGRAM.
* src/system.c (run_decompress_program): New function.
(sys_child_open_for_uncompress): Use run_decompress_program
instead of calling execlp directly.
2010-11-02 Paul Eggert <>
tests: fix some issues with signals, timestamps, "test" typo
* tests/ Add --warning=no-timestamp, to avoid
bogus warning due to NFS clock skew.
* tests/ Discard diagnostics that some shells
generate about broken pipes.
* tests/ Likewise.
* tests/ Fix typo: "test $EC" was written where
"test $EC -ne 0" was intended.
2010-11-01 Sergey Poznyakoff <>
Fix extraction of device nodes.
* src/extract.c (extract_node): Do not mask out node type.
The bug was introduced in commit ea964cce.
2010-10-28 Paul Eggert <>
tar: don't cross struct member boundaries with OLDGNU_MAGIC
* src/create.c (write_gnu_long_link, start_header): Access
header->buffer + offsetof (struct posix_header, magic), instead of
header->header.magic, when reading or writing the OLDGNU_MAGIC
pattern. The code violates the C standard without this change,
and GCC warns about this if fortify checking is enabled. It's not
a bug on traditional (i.e., non-debugging) platforms, but it does
violate the C standard so it should be fixed. Problem originally
reported by John Emil Karlson in
* src/list.c (decode_header): Likewise.
tests: port to sh variants that squirrel away file descriptors
OpenBSD /bin/sh, and some other sh variants, squirrel away file
descriptors before closing them. For example, for "cat 3<&-" they
first dup file descriptor 3 to a fd that is 10 or greater, then
close 3 (because if "cat" had been a builtin command like ":" then
they would have wanted to avoid the fork and restore the fd after
":" finished); and they treat ordinary (forking) commands the same
as builtin commands. This approach fails after "ulimit -n 10".
Work around this deficiency by closing the file descriptors before
invoking ulimit. Problem reported by Christian Weisgerber in
solution suggested by Jilles Tjoelker in
* tests/ (scarce file descriptors): Close file
descriptors before invoking ulimit -n.
2010-10-27 Sergey Poznyakoff <>
Transform file names when updating and appendig to archives.
This complements 28e91b48.
* src/common.h (transform_stat_info): New prototype.
* src/list.c (transform_stat_info): Remove static qualifier.
* src/update.c (update_archive): Call transform_stat_info.
* tests/ (TESTSUITE_AT): Add
* tests/ Include
2010-10-27 Paul Eggert <>
tests: port to Solaris diff
* tests/ Don't assume that "diff -c" outputs nothing
when there are no differences. This is not true on Solaris,
where it outputs "No differences encounted".
tar: fix -x --overwrite bug (no --dereference, ! O_NOFOLLOW)
This bug was discovered on Solaris 8. On older hosts lacking
O_NOFOLLOW, tar -x --overwrite (without --dereference) follows
symbolic links, causing the "extract over symlinks" test to fail.
* src/extract.c (open_output_file): If O_NOFOLLOW is needed but
does not work, check for a symlink separately.
tar: don't use "((" in shell scripts
* tests/ Replace "((" with "( (" in shell scripts, as
"((" is not portable to the Korn shell, and POSIX 1003.1-2008 says
that "((" is not portable.
2010-10-26 Sergey Poznyakoff <>
Make sure name matching occurs before name transformation.
The commit 9c194c99 altered that order.
* src/list.c (transform_stat_info): New function. Split off from
(read_and): Call transform_stat_info right before do_something,
and after deciding if we should proceed with this member name,
so that name matching occurs before name transformation.
* tests/ New file.
* tests/ (TESTSUITE_AT): Add
* tests/ Include
2010-10-26 Paul Eggert <>
tar: don't assume stdin is open when testing fd limits
* tests/ Redirect stdin from /dev/null, in case
the parent 'make' is running with stdin closed.
2010-10-26 Sergey Poznyakoff <>
Further fixes in bootstrap.
* bootstrap: Restore the default for gnulib_path
(symlink_to_dir): Re-apply 67cad07.
2010-10-26 Paul Eggert <>
tar: fix bug with -C and extracting directories
Problem reported by Denis Excoffier in
* src/extract.c (extract_dir): Use mkdirat, not mkdir.
* tests/ New file, to test for this bug.
* tests/ (TESTSUITE_AT): Add it.
* tests/ Include it.
This file is a placeholder. It will be replaced with the actual
by make dist. Run make ChangeLog if you wish to create it
2010-10-25 Sergey Poznyakoff <>
Version 1.24
GNU tar NEWS - User visible changes. 2010-10-24
GNU tar NEWS - User visible changes. 2010-11-07
Please send GNU tar bug reports to <>
version 1.25 - Sergey Poznyakoff, 2010-11-07
* Fix extraction of empty directories with the -C option in effect.
* Fix extraction of device nodes.
* Make sure name matching occurs before eventual name transformation.
Tar 1.24 changed the ordering of name matching and name transformation
so that the former saw already transformed file names. This made it
impossible to match file names in certain cases. It is fixed now.
* Fix the behavior of tar -x --overwrite on hosts lacking O_NOFOLLOW.
* Improve the testsuite.
* Alternative decompression programs.
If extraction from a compressed archive fails because the corresponding
compression program is not installed and the following two conditions
are met, tar retries extraction using an alternative decompressor:
1. Another compression program supported by tar is able to handle this
compression format.
2. The compression program was not explicitly requested in the command
line by the use of such options as -z, -j, etc.
For example, if `compress' is not available, tar will try `gzip'.
version 1.24 - Sergey Poznyakoff, 2010-10-24
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
# Generated by GNU Autoconf 2.63 for GNU tar 1.24.
# Generated by GNU Autoconf 2.63 for GNU tar 1.25.
# Report bugs to <>.
......@@ -596,8 +596,8 @@ SHELL=${CONFIG_SHELL-/bin/sh}
# Identity of this package.
......@@ -1919,7 +1919,7 @@ if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
\`configure' configures GNU tar 1.24 to adapt to many kinds of systems.
\`configure' configures GNU tar 1.25 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
......@@ -1989,7 +1989,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
short | recursive ) echo "Configuration of GNU tar 1.24:";;
short | recursive ) echo "Configuration of GNU tar 1.25:";;
cat <<\_ACEOF
......@@ -2127,7 +2127,7 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
GNU tar configure 1.24
GNU tar configure 1.25
generated by GNU Autoconf 2.63
Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
......@@ -2141,7 +2141,7 @@ cat >config.log <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
It was created by GNU tar $as_me 1.24, which was
It was created by GNU tar $as_me 1.25, which was
generated by GNU Autoconf 2.63. Invocation command line was
$ $0 $@
......@@ -3119,7 +3119,7 @@ fi
# Define the identity of the package.
cat >>confdefs.h <<_ACEOF
......@@ -55063,7 +55063,7 @@ exec 6>&1
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
This file was extended by GNU tar $as_me 1.24, which was
This file was extended by GNU tar $as_me 1.25, which was
generated by GNU Autoconf 2.63. Invocation command line was
......@@ -55126,7 +55126,7 @@ Report bugs to <>."
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
GNU tar config.status 1.24
GNU tar config.status 1.25
configured by $0, generated by GNU Autoconf 2.63,
with options \\"`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"
......@@ -19,7 +19,7 @@
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
# 02110-1301, USA.
AC_INIT([GNU tar], [1.24], [])
AC_INIT([GNU tar], [1.25], [])
@set UPDATED 24 October 2010
@set UPDATED-MONTH October 2010
@set EDITION 1.24
@set VERSION 1.24
@set UPDATED 5 November 2010
@set UPDATED-MONTH November 2010
@set EDITION 1.25
@set VERSION 1.25
This is, produced by makeinfo version 4.13 from tar.texi.
This manual is for GNU `tar' (version 1.24, 24 October 2010), which
This manual is for GNU `tar' (version 1.25, 5 November 2010), which
creates and extracts files from archives.
Copyright (C) 1992, 1994, 1995, 1996, 1997, 1999, 2000, 2001, 2003,
......@@ -31,7 +31,7 @@ END-INFO-DIR-ENTRY

Indirect: 1255 301175 301801

Tag Table:
......@@ -244,186 +244,188 @@ Ref: block-number128032
Ref: verbose-Footnote-1129059
Node: checkpoints129166
Node: warnings134560
Node: interactive137284
Node: operations139366
Node: Basic tar139625
Ref: Basic tar-Footnote-1142729
Node: Advanced tar142873
Node: Operations143718
Node: append145617
Ref: append-Footnote-1148712
Node: appending files148875
Node: multiple150593
Node: update153285
Node: how to update154261
Node: concatenate156045
Ref: concatenate-Footnote-1159293
Node: delete159436
Node: compare161209
Node: create options162641
Node: override163099
Node: Ignore Failed Read166527
Node: extract options166747
Node: Reading167580
Node: read full records169080
Node: Ignore Zeros169416
Node: Writing170407
Node: Dealing with Old Files170964
Node: Overwrite Old Files173391
Node: Keep Old Files174848
Node: Keep Newer Files175358
Node: Unlink First175648
Node: Recursive Unlink176052
Node: Data Modification Times176605
Node: Setting Access Permissions177415
Node: Directory Modification Times and Permissions178047
Node: Writing to Standard Output181659
Node: Writing to an External Program183194
Node: remove files186333
Node: Scarce186526
Node: Starting File186774
Node: Same Order187575
Node: backup188411
Node: Applications191497
Node: looking ahead192958
Node: Backups193784
Node: Full Dumps195365
Node: Incremental Dumps197171
Ref: --level=0200085
Ref: device numbers200618
Ref: incremental-op204596
Ref: Incremental Dumps-Footnote-1204970
Ref: Incremental Dumps-Footnote-2205120
Node: Backup Levels205608
Node: Backup Parameters207995
Node: General-Purpose Variables209176
Ref: RSH212337
Node: Magnetic Tape Control214216
Node: User Hooks215554
Node: backup-specs example216883
Node: Scripted Backups218026
Ref: Scripted Backups-Footnote-1220889
Node: Scripted Restoration221273
Node: Choosing223884
Node: file225006
Ref: remote-dev227642
Ref: local and remote archives228027
Node: Selecting Archive Members229058
Ref: input name quoting229739
Node: files231725
Ref: files-Footnote-1234998
Node: nul235156
Node: exclude237555
Node: problems with exclude242729
Node: wildcards244774
Node: controlling pattern-matching247358
Ref: controlling pattern-matching-Footnote-1251348
Node: quoting styles251564
Ref: escape sequences251910
Node: transform258045
Ref: show-transformed-names260036
Node: after266227
Node: recurse269829
Node: one272553
Node: directory273986
Node: absolute277048
Ref: absolute-Footnote-1280219
Node: Date input formats280570
Node: General date syntax282892
Node: Calendar date items285843
Node: Time of day items287840
Node: Time zone items290036
Node: Day of week items291270
Node: Relative items in date strings292259
Node: Pure numbers in date strings295061
Node: Seconds since the Epoch296042
Node: Specifying time zone rules297663
Node: Authors of parse_datetime300033
Ref: Authors of get_date300212
Node: Formats301175
Node: Compression305863
Node: gzip306155
Ref: auto-compress311603
Ref: gzip-Footnote-1313843
Node: lbzip2313892
Node: sparse314989
Node: Attributes318043
Node: Portability323864
Node: Portable Names325350
Node: dereference326055
Node: hard links327182
Ref: hard links-Footnote-1330080
Node: old330136
Node: ustar331320
Node: gnu331911
Node: posix332788
Node: PAX keywords333269
Node: Checksumming338879
Node: Large or Negative Values340805
Node: Other Tars342405
Node: Split Recovery343541
Node: Sparse Recovery347273
Ref: extracting sparse v.0.x350906
Ref: Sparse Recovery-Footnote-1354195
Ref: Sparse Recovery-Footnote-2354218
Node: cpio354339
Node: Media359096
Node: Device361043
Ref: size-suffixes365832
Node: Remote Tape Server366942
Node: Common Problems and Solutions370665
Node: Blocking371057
Node: Format Variations377501
Node: Blocking Factor378413
Node: Many390065
Node: Tape Positioning393859
Node: mt395732
Node: Using Multiple Tapes397287
Node: Multi-Volume Archives399353
Ref: tape-length400838
Ref: change volume prompt401398
Ref: volno-file402269
Ref: info-script402821
Ref: Multi-Volume Archives-Footnote-1408008
Ref: Multi-Volume Archives-Footnote-2408118
Node: Tape Files408186
Node: Tarcat409668
Node: label410713
Ref: --test-label option412287
Ref: label-Footnote-1415732
Ref: label-Footnote-2415841
Ref: label-Footnote-3415974
Node: verify416209
Node: Write Protection419509
Node: Reliability and security420339
Node: Reliability420727
Node: Permissions problems421505
Node: Data corruption and repair421944
Node: Race conditions422870
Node: Security424610
Node: Privacy425213
Node: Integrity426462
Node: Live untrusted data428503
Node: Security rules of thumb430843
Node: Changes432372
Node: Configuring Help Summary435987
Node: Fixing Snapshot Files442488
Node: Tar Internals444674
Node: Standard445006
Node: Extensions467207
Node: Sparse Formats469767
Node: Old GNU Format471057
Node: PAX 0473458
Node: PAX 1476589
Node: Snapshot Files478327
Node: Dumpdir482788
Node: Genfile486034
Node: Generate Mode487127
Node: Status Mode491424
Node: Exec Mode493223
Node: Free Software Needs Free Documentation495968
Node: GNU Free Documentation License500950
Node: Index of Command Line Options526163
Node: Index551662
Node: interactive137910
Node: operations139992
Node: Basic tar140251
Ref: Basic tar-Footnote-1143355
Node: Advanced tar143499
Node: Operations144344
Node: append146243
Ref: append-Footnote-1149338
Node: appending files149501
Node: multiple151219
Node: update153911
Node: how to update154887
Node: concatenate156671
Ref: concatenate-Footnote-1159919
Node: delete160062
Node: compare161835
Node: create options163267
Node: override163725
Node: Ignore Failed Read167153
Node: extract options167373
Node: Reading168206
Node: read full records169706
Node: Ignore Zeros170042
Node: Writing171033
Node: Dealing with Old Files171590
Node: Overwrite Old Files174017
Node: Keep Old Files175474
Node: Keep Newer Files175984
Node: Unlink First176274
Node: Recursive Unlink176678
Node: Data Modification Times177231
Node: Setting Access Permissions178041
Node: Directory Modification Times and Permissions178673
Node: Writing to Standard Output182285
Node: Writing to an External Program183820
Node: remove files186959
Node: Scarce187152
Node: Starting File187400
Node: Same Order188201
Node: backup189037
Node: Applications192123
Node: looking ahead193584
Node: Backups194410
Node: Full Dumps195991
Node: Incremental Dumps197797
Ref: --level=0200711
Ref: device numbers201244
Ref: incremental-op205222
Ref: Incremental Dumps-Footnote-1205596
Ref: Incremental Dumps-Footnote-2205746
Node: Backup Levels206234
Node: Backup Parameters208621
Node: General-Purpose Variables209802
Ref: RSH212963
Node: Magnetic Tape Control214842
Node: User Hooks216180
Node: backup-specs example217509
Node: Scripted Backups218652
Ref: Scripted Backups-Footnote-1221515
Node: Scripted Restoration221899
Node: Choosing224510
Node: file225632
Ref: remote-dev228268
Ref: local and remote archives228653
Node: Selecting Archive Members229684
Ref: input name quoting230365
Node: files232351
Ref: files-Footnote-1235624
Node: nul235782
Node: exclude238181
Node: problems with exclude243355
Node: wildcards245400
Node: controlling pattern-matching247984
Ref: controlling pattern-matching-Footnote-1251974
Node: quoting styles252190
Ref: escape sequences252536
Node: transform258671
Ref: show-transformed-names260662
Node: after266853
Node: recurse270455
Node: one273179
Node: directory274612
Node: absolute277674
Ref: absolute-Footnote-1280845
Node: Date input formats281196
Node: General date syntax283518
Node: Calendar date items286469
Node: Time of day items288466
Node: Time zone items290662
Node: Day of week items291896
Node: Relative items in date strings292885
Node: Pure numbers in date strings295687
Node: Seconds since the Epoch296668
Node: Specifying time zone rules298289
Node: Authors of parse_datetime300659
Ref: Authors of get_date300838
Node: Formats301801
Node: Compression306489
Node: gzip306781
Ref: alternative decompression programs308990
Ref: auto-compress312821
Ref: gzip-Footnote-1315061
Ref: gzip-Footnote-2315110
Node: lbzip2315250
Node: sparse316347
Node: Attributes319401
Node: Portability325222
Node: Portable Names326708
Node: dereference327413
Node: hard links328540
Ref: hard links-Footnote-1331438
Node: old331494
Node: ustar332678
Node: gnu333269
Node: posix334146
Node: PAX keywords334627
Node: Checksumming340237
Node: Large or Negative Values342163
Node: Other Tars343763
Node: Split Recovery344899
Node: Sparse Recovery348631
Ref: extracting sparse v.0.x352264
Ref: Sparse Recovery-Footnote-1355553
Ref: Sparse Recovery-Footnote-2355576
Node: cpio355697
Node: Media360454
Node: Device362401
Ref: size-suffixes367190
Node: Remote Tape Server368300
Node: Common Problems and Solutions372023
Node: Blocking372415
Node: Format Variations378859
Node: Blocking Factor379771
Node: Many391423
Node: Tape Positioning395217
Node: mt397090
Node: Using Multiple Tapes398645
Node: Multi-Volume Archives400711
Ref: tape-length402196
Ref: change volume prompt402756
Ref: volno-file403627
Ref: info-script404179
Ref: Multi-Volume Archives-Footnote-1409366
Ref: Multi-Volume Archives-Footnote-2409476
Node: Tape Files409544
Node: Tarcat411026
Node: label412071
Ref: --test-label option413645
Ref: label-Footnote-1417090
Ref: label-Footnote-2417199
Ref: label-Footnote-3417332
Node: verify417567
Node: Write Protection420867
Node: Reliability and security421697
Node: Reliability422085
Node: Permissions problems422863
Node: Data corruption and repair423302
Node: Race conditions424228
Node: Security425968
Node: Privacy426571
Node: Integrity427820
Node: Live untrusted data429861
Node: Security rules of thumb432201
Node: Changes433730
Node: Configuring Help Summary437345
Node: Fixing Snapshot Files443846