Subject: CVS commit: pkgsrc/archivers
From: Thomas Klausner
Date: 2010-12-12 14:10:40
Message id:

Log Message:
Update gtar to 1.25.

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

* The --full-time option.

New command line option `--full-time' instructs tar to output file
time stamps to the full resolution.

* Bugfixes.

** More reliable directory traversal when creating archives

Tar now checks for inconsistencies caused when a file system is
modified while tar is creating an archive.  In the new approach, tar
maintains a cache of file descriptors to directories, so it uses more
file descriptors than before, but it adjusts to system limits on
the number of file descriptors.  Tar also takes more care when
a file system is modified while tar is extracting from an archive.

The new checks are implemented via the openat and related calls
standardized by POSIX.1-2008.  On an older system where these calls do
not exist or do not return useful results, tar emulates the calls at
some cost in efficiency and reliability.

** Symbolic link attributes

When extracting symbolic links, tar now restores attributes such as
last-modified time and link permissions, if the operating system
supports this.  For example, recent versions of the Linux kernel
support setting times on symlinks, and some BSD kernels also support
symlink permissions.

** --dereference consistency

The --dereference (-h) option now applies to files that are copied
into or out of archives, independently of other options.  For example,
if F is a symbolic link and archive.tar contains a regular-file member
also named F, "tar --overwrite -x -f archive.tar F" now overwrites F
itself, rather than the file that F points to.  (To overwrite the file
that F points to, add the --dereference (-h) option.)  Formerly,
--dereference was intended to apply only when using the -c option, but
the implementation was not consistent.

Also, the --dereference option no longer affects accesses to other
files, such as archives and time stamp files.  Symbolic links to these
files are always followed.  Previously, the links were usually but not
always followed.

** Spurious error diagnostics on broken pipe.

When receiving SIGPIPE, tar would exit with error status and
"write error" diagnostics. In particular, this occurred if
invoked as in the example below:

   tar tf archive.tar | head -n 1

** --remove-files

`Tar --remove-files' failed to remove a directory which contained
symlinks to another files within that directory.

** --test-label behavior

In case of a mismatch, `tar --test-label LABEL' exits with code 1,
not 2 as it did in previous versions.

The `--verbose' option used with `--test-label' provides additional

Several volume labels may be specified in a command line, e.g.:

   tar --test-label -f archive 'My volume' 'New volume' 'Test volume'

In this case, tar exits with code 0 if any one of the arguments
matches the actual volume label.

** --label used with --update

The `--label' option can be used with `--update' to prevent accidental
update of an archive:

  tar -rf archive --label 'My volume' .

This did not work in previous versions, in spite of what the docs said.

** --record-size and --tape-length (-L) options

Usual size suffixes are allowed for these options.  For example,
-L10k stands for a 10 kilobyte tape length.

** Fix dead loop on extracting existing symlinks with the -k option.