re-mark 1.29b-2 as not yet uploaded (merge madness!)
[debian/tar] / ChangeLog
index 7dd05f813922bdf51b3a04afd489f419b3025033..7c7865dc7baba80169d7d3a71908b8beeb3404c0 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
+2016-05-16  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       Version 1.29
+
+       Minor fix
+       * src/names.c (new_name): rename to make_file_name. All uses
+       changed.
+
+2016-04-14  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       Fix argument handling when running external commands.
+       * src/system.c (xexec): Use sh -c to run the command.  This fixed
+       bug introduced by 7b5e80396 (tar 1.27)
+       * doc/tar.texi: Fix checkpoint examples: (1) $TAR_FILENAME
+       is not available when creating archive and (2) --checkpoint
+       can't be used as abbreviation of --checkpoint-action
+
+2016-04-06  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       Remove iotty test
+       The auxiliary utility ttyemu proved to be unreliable.
+       Given existing
+       differences between pty implementations and termios ioctls
+       on various
+       platforms, writing it in a portable way requires effort
+       disproportional
+       to its actual purpose.
+       * configure.ac: Remove check for grantpt
+       * gnulib.modules: Remove posix_openpt, ptsname, and unlockpt
+       * tests/Makefile.am (TESTSUITE_AT): Remove iotty.at
+       (check_PROGRAMS): Remove ttyemu.
+       * tests/testsuite.at: Remove iotty.at
+       * tests/iotty.at: Remove.
+       * tests/ttyemu.c: Remove.
+
+2016-04-05  Pavel Raiskup  <praiskup@redhat.com>
+
+       xattrs: fix build on Darwin
+       Be careful to define HAVE_XATTRS when not all needed xattr-related
+       functions are properly defined either in libc or libattr.
+       Reported independently by Denis Excoffier and Dominyk Tille.
+       * acinclude.m4 (TAR_HEADERS_ATTR_XATTR_H): Check for each xattr
+       function separately.  Don't AC_CHECK_LIB (LIBS is filled by
+       AC_SEARCH_LIBS when necessary).
+       * src/Makefile.am: The LDADD -lattr was redundant.
+
+2016-03-24  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       Remove --preserve option
+       * src/tar.c: Remove --preserve option
+       * NEWS: Update.
+       * doc/tar.texi: Update.
+
+       Fix testcase
+       * tests/time02.at: Sort tar -d output
+
+       Update THANKS file
+
+2016-03-24  Jeremy Bobbio  <lunar@debian.org>
+
+       New option --clamp-mtime
+       The new `--clamp-mtime` option will change the behavior of
+       `--mtime` to only
+       use the time specified if the file mtime is newer than the
+       given time.
+       The `--clamp-mtime` option can only be used together with
+       `--mtime`.
+       Typical use case is to make builds reproducible: to loose less
+       information, it's better to keep the original date of an archive,
+       except for
+       files modified during the build process. In that case, using
+       a reference
+       (and thus reproducible) timestamps for the latter is good
+       enough. See
+       <https://wiki.debian.org/ReproducibleBuilds> for more information.
+       Patch submitted by Jeremy Bobbio and
+       Daniel Kahn Gillmor <dkg@fifthhorseman.net>
+       * doc/tar.1: Document --clamp-mtime
+       * doc/tar.texi: Likewise.
+       * src/common.h (set_mtime_option_mode): New enum
+       (set_mtime_option): Change type to enum set_mtime_option_mode.
+       (NEWER_OPTION_INITIALIZED): Rename to NEWER_OPTION_INITIALIZED.
+       * src/create.c (start_header): Set mtime depending on
+       set_mtime_option.
+       * src/tar.c (options,parse_opt): New option --clamp-mtime
+       (decode_options): Initialize mtime_option
+       * tests/time02.at: New testcase.
+       * tests/Makefile.am: Add new testcase
+       * tests/testsuite.at: Likewise.
+
+2016-03-21  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       Acknowledgments
+       * THANKS: Add Dagobert Michelsen
+
+       Fix the testsuite
+       * tests/sparse06.at: Don't use timeout: depending on the
+       filesystem
+       mounted, current LA and lots of other factors, creation of
+       archive can
+       take much more time than the expected 2 seconds.
+
+       Fix ckmtime
+       * gnulib.modules: Use timespec-sub
+       * tests/ckmtime.c: Use second resolution.
+
+2016-03-20  Sergey Poznyakoff  <gray@gnu.org>
+
+       Fix the testsuite
+       * tests/sparse05.at: Use autom4te magic to generate mapfile,
+       instead of the shell command seq, which is not always available.
+       * tests/listed03.at: Skip the test if xgetcwd fails.
+       * tests/ckmtime.c: New file.
+       * tests/Makefile.am: Build ckmtime
+       * tests/testsuite.at (AT_CHECK_TIMESTAMP): Check whether newly
+       created
+       files have timestamps consistent with the creation time.
+       Skip the test
+       if not.
+       * tests/incr01.at: Use AT_CHECK_TIMESTAMP
+       * tests/incr02.at: Likewise.
+       * tests/incr03.at: Likewise.
+       * tests/incr04.at: Likewise.
+       * tests/incr05.at: Likewise.
+       * tests/incr06.at: Likewise.
+       * tests/incr07.at: Likewise.
+       * tests/incr08.at: Likewise.
+       * tests/incr09.at: Likewise.
+       * tests/incr10.at: Likewise.
+       * tests/incr11.at: Likewise.
+       * tests/incremental.at: Likewise.
+       * tests/listed01.at: Likewise.
+       * tests/listed02.at: Likewise.
+       * tests/listed04.at: Likewise.
+       * tests/listed05.at: Likewise.
+
+2016-03-18  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       Testsuite fixes.
+       * paxutils: Update.
+       * src/unlink.c (flush_deferred_unlinks): OpenSolaris sets EEXIST
+       instead of ENOTEMPTY if trying to remove a non-empty directory.
+       * tests/numeric.at: Avoid using awk -v: some older awks don't
+       support
+       that option.  Also fix environment variable usage.
+       * tests/onetop05.at: Skip test if unable to set initial directory
+       mode bits.
+       * tests/sparse06.at: Use --quiet option.
+
+       Revise docs
+
+       Fix build with --enable-gcc-warnings
+       * configure.ac: Disable stack-protector warnings
+
+2016-03-17  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       Improve testsuite
+       * tests/iotty.at: Skip test if ttyemu can't do its job
+
+2016-03-16  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       Document xattrs, ACL and SELinux-related options.
+       * doc/tar.1: Document all options.
+       * doc/tar.texi: Likewise.
+
+2016-03-15  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       Fix appending to archive with changed blocking factor.
+       * src/buffer.c (flush_archive): If previous reading attempt
+       resulted
+       in short read, correctly use the remaining record space.
+       (backspace_output): Fix position calculation (still has to be
+       improved).
+       * tests/append05.at: New test case.
+       * tests/Makefile.am: Add new test.
+       * tests/testsuite.at: Likewise.
+
+2016-03-14  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       Fix coredump on parsing invalid traditional option
+       * src/tar.c (find_argp_option): Fix loop termination condition.
+
+2016-01-20  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       Update copyright years
+
+       Allow escaped delimiters in transform expressions.
+       Patch provided by Charles McGarvey and Flavio Poletti.
+       * src/transform.c (parse_transform_expr): Allow escaped delimiters
+       in transform expressions.
+       * tests/xform02.at: New test case.
+       * tests/Makefile.am: Add xform02.at
+       * tests/testsuite.at: Include xform02.at
+       * THANKS: Update.
+
+2015-12-17  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       Fix eventual dereference of uninitialized pointer.
+       * src/exclist.c (hg_initfn): Initialize hgopt.
+
+2015-12-17  Pavel Raiskup  <praiskup@redhat.com>
+
+       sparse: fix use of indeterminate value
+       * src/xheader.c (sparse_map_decoder): Move 'e' up from loop-block.
+
+2015-12-11  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       fix a typo
+       * doc/tar.texi (Incremental Dumps): Add missing --file to the
+       '--list' example.
+
+       Minor fixes.
+       * doc/tar.texi: Document position-sensitive options in a
+       separate subsection.
+       * src/names.c (names_argp,names_argp_children): Explicitly
+       initialize
+       all members.
+
+2015-12-11  Sergey Poznyakoff  <gray@gnu.org>
+
+       Minor fix
+
+       Fix handling of filename-selection options.
+       Filename-selection options are --wildcards, --recursive, etc. (see
+       names.c for a complete list).  These options are
+       position-sensitive,
+       i.e. each such option affects all filenames and filename-selection
+       options that appear after it until eventually cancelled by a
+       corresponding counterpart option.
+       These options can appear in "file-from" file lists, which
+       means that
+       they cannot be handled right away, but instead should be put on
+       the "name_elt" list and processed sequentionally, as file name
+       arguments
+       are.
+       * src/common.h (warn_regex_usage): Remove.
+       (name_add_name): Change signature.
+       (name_add_dir, name_add_file): Remove prototypes.
+       * src/names.c (name_add_option, name_add_dir)
+       (name_add_file): Static functions.
+       (names_options, is_file_selection_option, names_parse_opt):
+       Static functions.
+       (names_argp_children): New variable.
+       (NELT_NAME, NELT_CHDIR)
+       (NELT_FILE, NELT_NOOP): Redefine as enum nelt_type.
+       (NELT_FMASK): Remove.
+       (NELT_OPTION): New constant.
+       (name_elt) <type>: Change type.
+       <v.opt>: New member.
+       (name_elt_alloc_matflags): Remove.
+       (name_add_name): Take one argument.
+       (name_add_option): New static function.
+       (name_add_file): Take one argument.
+       (read_next_name): Use filename_terminator and
+       verbatim_files_from_option to initialize file.term and
+       file.verbatim.
+       * src/tar.c: Move handling of filename-selection options to
+       names.c
+       * tests/T-dir00.at: Fix typo.
+       * tests/T-recurse.at: Remove expected failure.
+
+2015-12-10  Pavel Raiskup  <praiskup@redhat.com>
+
+       better test --{,no-}recursion options
+       * tests/recurs02.at: Also test --list mode.
+       * tests/T-recurse.at: New test case.  Test that -T option works
+       correctly together with --{,no-}recursion.
+       * tests/Makefile.am: Mention new test T-recurse.at.
+       * tests/testsuite.at: Likewise.
+
+2015-12-06  Pavel Raiskup  <praiskup@redhat.com>
+
+       Bugfix
+       * src/buffer.c (try_new_volume): Warn if user supplied malformed
+       tar archive.
+       Consistently use WARN (instead of ERROR) when reporting.
+
+2015-12-06  Sergey Poznyakoff  <gray@gnu.org>
+
+       Fix segfault when extracting from a multi-volume archive.
+       Fix suggested by Pavel Raiskup.
+       * src/buffer.c (try_new_volume): Fix dereferencing NULL pointer.
+       * tests/multiv09.at: New testcase.
+       * tests/Makefile.am: Add new testcase.
+       * tests/testsuite.at: Likewise.
+
+       Fix NEWS
+
+2015-12-06  Pavel Raiskup  <praiskup@redhat.com>
+
+       numeric-owner: print big UID/GID correctly
+       * src/list.c (simple_print_header): Do not parse ustar header
+       for UID/GID again (tar_stat_info has already been correctly
+       filled with respect to possible uid/gid extended headers).
+       * tests/numeric.at: New testcase for --numeric-owner option.
+       * tests/Makefile.am: Add new testcase.
+       * tests/testsuite.at: Likewise.
+
+2015-12-06  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       Use SEEK_HOLE for hole detection
+       Based on patch by Pavel Raiskup.
+       Use SEEK_HOLE/SEEK_DATA feature of lseek on systems that support
+       it.  This can make archiving of sparse files much faster.
+       Implement the --hole-detection option to allow users to select
+       hole-detection method.
+       * src/common.h (hole_detection_method): New enum.
+       (hole_detection): New global.
+       * src/sparse.c  (sparse_scan_file_wholesparse): New function as a
+       method for detecting sparse files without any data.
+       (sparse_scan_file_raw): Rename from sparse_scan_file; with edits.
+       (sparse_scan_file_seek): New function.
+       (sparse_scan_file): Reimplement function.
+       * src/tar.c: New option --hole-detection
+       * tests/checkseekhole.c: New file.
+       * tests/.gitignore: Mention two test binaries.
+       * tests/Makefile.am: Add new tests.
+       * tests/testsuite.at (AT_SEEKHOLE_PREREQ): New macro.
+       Include sparse06.at.
+       * tests/sparse06.at: New test case.
+       * tests/sparse02.at: Force raw hole-detection method.
+       * tests/sparsemv.at: Likewise.
+       * tests/sparsemvp.at: Likewise.
+       * doc/tar.1: Document --hole-detection option.
+       * doc/tar.texi: Document hole-detection algorithms and
+       command-line options.
+       * NEWS: Document hole-detection.
+
+2015-12-05  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       Catch compressor execution errors.
+       * src/misc.c (write_fatal_details): Move to buffer.c
+       * src/buffer.c (write_fatal_details): Close the archive and
+       wait for
+       the compressor program to terminate in order to catch eventual
+       execution
+       errors.
+       * src/system.c (sys_child_open_for_compress): Ignore SIGPIPE so
+       tar will
+       not silently terminate when unable to write to the compressor.
+       * tests/comperr.at: New file.
+       * tests/Makefile.am: Add comperr.at
+       * tests/testsuite.at: Include comperr.at
+
+       Upgrade paxutils
+
+2015-11-29  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       Fix extraction from concatenated incremental archives with
+       renamed directories.
+       Complements 15c02c2b.
+       * src/extract.c (delayed_set_stat): Change type of file_name.
+       (delay_set_stat): Allocate file_name member.
+       (free_delayed_set_stat): Free file_name.
+       (fixup_delayed_set_stat): New function.
+       (rename_directory): Call fixup_delayed_set_stat on success.
+       * tests/incr11.at: New testcase.
+       * tests/incr10.at: Improve description.
+       * tests/Makefile.am: Add incr11.at
+       * tests/testsuite.at: Add incr11.at
+
+2015-11-21  Sergey Poznyakoff  <gray@gnu.org>
+
+       Fix bug in the inplementation of --one-top-level.
+       When extracting an archive that contains './' with the
+       --one-top-level option,
+       the mode and ownership of '.' would be incorrectly applied to
+       the current
+       working directory, instead of the requested top-level directory.
+       * src/list.c (enforce_one_top_level): Map '.' to the top-level
+       directory.
+       * tests/Makefile.am: Add onetop05.at
+       * tests/testsuite.at: Include onetop05.at.
+       * tests/onetop05.at: New file.
+       * tests/onetop01.at: Fix keywords.
+       * tests/onetop02.at: Likewise.
+       * tests/onetop03.at: Likewise.
+       * tests/onetop04.at: Likewise.
+
+2015-11-11  Sergey Poznyakoff  <gray@gnu.org>
+
+       Work around unlinkat bug on FreeBSD and GNU/Hurd
+       * src/unlink.c (dunlink_insert): New function.
+       (flush_deferred_unlinks): Skip cwds and nonempty directories
+       at the first pass.  If force is requested, run a second pass
+       removing them.
+       (queue_deferred_unlink): Make sure current working directory
+       entries are sorted in descending order by the value of dir_idx.
+       This makes sure they will be removed in right order, which works
+       around unlinkat bug on FreeBSD and GNU/Hurd.
+       * tests/remfiles08b.at: Remove expected failure.
+       * tests/remfiles09b.at: Likewise.
+
+2015-11-10  Sergey Poznyakoff  <gray@gnu.org>
+
+       Fix coredump on FreeBSD when TAR_OPTIONS is set
+       * src/tar.c (parse_default_options): Use program_name instead of
+       program_invocation_short_name.  On some systems the latter is
+       NULL when
+       the function is called, which causes coredumps.
+       (tar_set_quoting_style): Likewise.
+       * src/names.c: Likewise.
+
+2015-11-02  Sergey Poznyakoff  <gray@gnu.org>
+
+       Use sort in T-dir tests.
+
+       Fix distclean in tests/
+       * tests/Makefile.am: Remove "download"
+
+       New options: --owner-map and --group-map.
+       * NEWS: Update.
+       * doc/tar.1: Document --owner-map and --group-map
+       * doc/tar.texi: Likewise.
+       * src/map.c: New file.
+       * src/Makefile.am: Add map.c
+       * src/common.h (owner_map_read, owner_map_translate)
+       (group_map_read, group_map_translate): New protos.
+       * src/create.c (start_header): Use owner_map_translate
+       and group_map_translate to optionally translate user/group
+       names/ids.
+       * src/tar.c: New options --owner-map and --group-map.
+       * tests/map.at: New file.
+       * tests/Makefile.am: Add map.at
+       * tests/testsuite.at: Include map.at.
+
+2015-09-24  Kir Kolyshkin  <kir@openvz.org>  (tiny change)
+
+       doc: fix font and spelling typos
+       * doc/tar.1: Fix font and spelling typos in man page.
+
+2015-09-24  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Fix problems caught by static checking
+       Most of these can be caught by configuring with
+       --enable-gcc-warnings.
+       Problem reported by Pavel Raiskup in:
+       http://lists.gnu.org/archive/html/bug-tar/2015-09/msg00001.html
+       * src/buffer.c (format_total_stats):
+       Prefer pointer to const when it’s OK to use const.
+       (default_total_format): Now const.
+       * src/buffer.c (default_total_format):
+       * src/exclist.c (excfile_head, excfile_tail, vcs_ignore_files):
+       * src/misc.c (namebuf_add_dir, namebuf_finish):
+       * src/tar.c (verbatim_files_from_option, option_set_in_cl)
+       (optloc_eq, set_old_files_option):
+       Now static.
+       * src/common.h: Adjust to match the other changes described here.
+       * src/exclist.c (info_cleanup_exclist):
+       * src/tar.c (argp_program_version, argp_program_bug_address):
+       Remove; unused.
+       (parse_default_options): Define via prototype instead of old
+       style.
+       (parse_default_options, decode_options):
+       Fill out incomplete initializers.
+
+2015-08-31  Sergey Poznyakoff  <gray@gnu.org>
+
+       Improve option sanity checking
+       Any two conflicting options are reported only if they both
+       occur in
+       the command line.  Otherwise, options defined in the command line
+       silently override those set in the TAR_OPTIONS environment
+       variable.
+       * src/common.h (option_source): New enum.
+       (option_locus): New struct.
+       * src/names.c (name_elt): New member: line.
+       (name_add_file): Initialize line.
+       (read_name_from_file): Keep track of input line number for
+       diagnostic
+       purposes.
+       (handle_option): Take a pointer to struct name_elt as 2nd
+       parameter;
+       pass locus info to more_options().
+       * src/tar.c (tar_args): New member: loc.
+       (option_class): New enum.
+       (optloc_save,optloc_lookup)
+       (option_set_in_cl,optloc_eq): New functions.
+       (set_use_compress_program_option): Take into account option
+       location.
+       (set_old_files_option): New function.
+       (parse_opt): Keep track of option locations.
+       (more_options): Improve error reporting.
+       (parse_default_options): New function.
+       (decode_options): Parse TAR_OPTION and command line separately.
+       Options from the latter silently override those from the former.
+       * lib/prepargs.c: Remove.
+       * lib/prepargs.h: Remove.
+       * lib/Makefile.am: Update.
+
+2015-08-24  Sergey Poznyakoff  <gray@gnu.org>
+
+       Improve check-full
+       * tests/atlocal.in: Download external archives to
+       $abs_builddir/download.
+       (tarball_prereq): Create destination directory if necessary.
+       * tests/.gitignore: Add download
+
+       Fix check-full
+       * tests/atlocal.in (TAR_DATA_URL): Berlios is dead.  Get
+       test archives from gnu.org.ua
+
+       Include gnulib and paxutils as submodules.
+       * .gitmodules: New file.
+       * README-alpha: Update.
+       * README-hacking: Update.
+       * bootstrap: Install slightly modified version from the gnulib
+       repo.
+       * bootstrap.conf: Add paxutils-related stuff.
+       * .gitignore: Update.
+       * doc/.gitignore: Update.
+       * po/.gitignore: Update.
+       * gnu/Makefile.am
+
+       Update docs.
+       * doc/tar.1: Document --verbatim-files-from option.
+
+2015-08-20  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       Add missing VCS files to --exclude-vcs list
+       * src/tar.c (vcs_file_table): Add .gitmodules and .gitattributes
+       * doc/tar.texi: Update.
+
+2015-08-03  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       Options to control option handling in file lists.
+       The --verbatim-files-from option disables option handling in
+       file lists.  The --no-verbatim-files-from reverts its effect.
+       The --null option implies --verbatim-files-from.  This restores
+       the documented behavior, broken by 26538c9b.
+       * src/common.h (verbatim_files_from_option): New global.
+       * src/names.c (name_elt): New member: file.verbatim
+       (name_add_file): Take 'verbatim' state as its third parameter.
+       (read_next_name): Don't call handle_option if file.verbatim
+       is set.
+       * src/tar.c: New options --verbatim-files-from and
+       --no-verbatim-files-from.
+       * doc/tar.texi: Document --verbatim-files-from and
+       --no-verbatim-files-from options.
+       * NEWS: Update.
+       * configure.ac: Version 1.28.90
+       * tests/T-null2.at: New testcase.
+       * tests/Makefile.am: Update.
+       * tests/testsuite.at: Update.
+
+2015-07-25  Anders Jonsson  <anders.jonsson@norsjovallen.se>  (tiny
+change)
+
+       Fix typos (preceeded etc.)
+
+2015-07-13  Paul Eggert  <eggert@cs.ucla.edu>
+
+       tar: fix symlink race and symlink transform bug
+       Problem reported by Tobias Stoeckmann in:
+       http://lists.gnu.org/archive/html/bug-tar/2015-07/msg00004.html
+       * gnulib.modules: Add areadlinkat-with-size.
+       * src/create.c: Include areadlink.h.
+       (dump_file0): Use areadlinkat_with_size, rather than trying to do
+       it by hand, incorrectly.  This also avoids assumption that
+       the symlink contents fit on the stack.  Also, use the transformed
+       link name, not the original link name, when deciding whether the
+       name is long enough to require writing a long link.
+
+       tar: port -d to longer symlinks
+       * src/compare.c (diff_symlink):
+       Don't use alloca on symlink length; it might be too big for
+       the stack.
+       Don't assume that readlinkat's return value fits in 'int'.
+       Prefer memcmp to strncmp where either will do.
+
+       tar: port to recent gnulib
+       * gnulib.modules: Remove 'acl' and add 'file-has-acl'.
+
+       tar: pacify GCC 5.1 -Wformat-signedness
+       * lib/wordsplit.c (struct wordsplit_node.flags):
+       Now unsigned, so that 'printf ("%x", p->flags)' doesn't provoke
+       GCC.
+       * src/incremen.c (read_num, dumpdir_ok):
+       Don't printf an int with %x or %o.
+
+2015-04-16  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       Fix extraction from concatenated incremental archives.
+       * src/common.h (remove_delayed_set_stat): New proto.
+       * src/extract.c (free_delayed_set_stat)
+       (remove_delayed_set_stat): New function.
+       (apply_nonancestor_delayed_set_stat): Use free_delayed_set_stat.
+       * src/misc.c (safer_rmdir): Remove delayed_set_stat entry
+       corresponding to the removed directory.
+       * tests/incr10.at: New test case.
+       * tests/Makefile.am: Add new test.
+       * tests/testsuite.at: Likewise.
+
+2015-04-10  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       Fix make installcheck
+       Make installcheck would fail unless make check had been run
+       before it.
+       Reported by Erik Brangs <erik.brangs@gmx.de>
+       * tests/Makefile.am (installcheck-local): Depend on
+       $(check_PROGRAMS)
+
+2015-03-18  Paul Eggert  <eggert@cs.ucla.edu>
+
+       tar: don't assume GZIP
+       * Makefile.am (dist-hook): Port to gzip implementations that
+       warn about nontrivial settings in the GZIP environment var.
+
+2015-03-17  Paul Eggert  <eggert@cs.ucla.edu>
+
+       tar: don't suggest GZIP
+       * doc/tar.texi (gzip): Don't suggest using the GZIP environment
+       variable, as it will be deprecated in the next gzip release.
+
+2015-02-19  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       Improve compression format recognition
+       Some comressed archives can pass the checksum test, which
+       makes tar
+       treat them as uncompressed archives.
+       * src/buffer.c (check_compressed_archive): Test the checksum only
+       if the block we read looks like a valid tar header (i.e. has
+       a magic string).
+
+2015-01-06  Paul Eggert  <eggert@cs.ucla.edu>
+
+       tar: port xattr-at.c to Solaris 10
+       * lib/xattr-at.c (setxattrat, lsetxattrat, getxattrat,
+       lgetxattrat)
+       (listxattrat, llistxattrat): Compile only if HAVE_XATTRS, so that
+       the code doesn't call functions that are not declared.
+
+       tar: port wordsplit attribute to Sun C
+       Reported by Ted Carr in:
+       http://lists.gnu.org/archive/html/bug-tar/2015-01/msg00002.html
+       * lib/wordsplit.h (__WORDSPLIT_ATTRIBUTE_FORMAT):
+       New macro, taken from Gnulib.
+       (struct wordsplit): Use it.
+       * lib/wordsplit.c (_wsplt_error): Use it.
+
+2014-12-17  Sergey Poznyakoff  <gray@gnu.org>
+
+       Silent a cc warning
+       * src/xheader.c (xheader_string_end): Make sure pointer
+       arithmetics applies on char*.
+
+2014-12-12  Paul Eggert  <eggert@cs.ucla.edu>
+
+       tar: port ISFOUND, WASFOUND to C89
+       Problem reported by Romano Maspero in:
+       http://lists.gnu.org/archive/html/bug-tar/2014-12/msg00010.html
+       * src/common.h (ISFOUND, WASFOUND): Port to C89.
+
+2014-12-10  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       Fix tar -c -l file file
+       When the same file is added several times to the archive, count
+       correctly the number of hard links.  See also 37ddfb0b.
+       * src/create.c (dump_hard_link): Don't decrease nlink if it is 0.
+       * tests/link04.at: Test -cl options.
+
+2014-11-07  Sergey Poznyakoff  <gray@gnu.org>
+
+       Honor the pax-option overrides when creating archive.
+       Changes proposed by Denis Excoffier.
+       * NEWS: Fix typos.
+       * doc/tar.texi: Fix typos.  Improve recipe for creation of binary
+       equivalent archives.
+       * src/create.c (write_extended): Use the value of the
+       --mtime option (if specified) as the default for exthdr.mtime.
+       * src/xheader.c (xheader_store): Create the header if at least
+       one override is supplied in --pax-option.
+
+       Add testcase for the previous commit.
+       * tests/sparse05.at: New file.
+       * tests/Makefile.am: Add sparse05.at
+       * tests/testsuite.at: Include sparse05.at
+
+2014-11-07  Pavel Raiskup  <praiskup@redhat.com>
+
+       Fix bug in sparse file listing
+       List posix archives containing sparse files >8GB correctly and
+       do not fail.
+       This fixes also bug in format of listing for sparse files >8GB -
+       now the
+       real size is printed instead of the effective one (this is
+       not strictly
+       posix format related).
+       * src/list.c: Remove redundant assignment.
+       * src/tar.h: Add new 'real_size' and 'real_size_set' fields in
+         tar_stat_info struct.
+       * src/xheader.c: Correctly handle (especially sparse) file sizes
+       directly in
+         xheader_decode().
+
+2014-10-15  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       Fix a typo
+
+2014-10-01  Sergey Poznyakoff  <gray@gnu.org>
+
+       Fix README
+       Remove the reference to PORTS
+
+2014-09-25  Sergey Poznyakoff  <gray@gnu.org>
+
+       Bugfixes.
+       * doc/tar.1: Fix typo in font spec.
+       * src/tar.c (sort_mode_arg, sort_mode_flag): Protect "inode"
+       (SAVEDIR_SORT_INODE) with D_INO_IN_DIRENT
+
+2014-09-18  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       Bugfix: entries read from the -T file did not get proper
+       matching_flag.
+       * src/common.h (name_add_file): Change signature.
+       * src/names.c (name_elt_alloc_matflags): New function.
+       (name_add_name): Use name_elt_alloc_matflags.
+       (name_add_file): Take matching flags as third argument.
+       (read_next_name): Remove trailing slashes.
+       * src/tar.c (parse_opt): Pass matching_flags to name_add_file.
+       * tests/T-dir00.at: New file.
+       * tests/T-dir01.at: New file.
+       * tests/Makefile.am: Add new testcases.
+       * tests/testsuite.at: Likewise.
+
+2014-08-16  Sergey Poznyakoff  <gray@gnu.org>
+
+       Improve documentation.
+       * doc/tar.1: Document --skip-old-files and --warning=existing-file
+       * doc/tar.texi: Document --warning=existing-file
+
+2014-07-27  Sergey Poznyakoff  <gray@gnu.org>
+
+       Version 1.28
+
+2014-07-27  Nathan Stratton Treadway  <nathanst@ontko.com>
+
+       Minor change in docstrings. nor ch#
+
+       Restructure the remfiles testsuite.
+
+2014-07-22  Sergey Poznyakoff  <gray@gnu.org>
+
+       Don't build ttyemu and run tty I/O test if grantpt is not
+       available.
+       * configure.ac (TAR_COND_GRANTPT): Define conditional depending
+       on whether grantpt is available.
+       * gnulib.modules: Remove grantpt. It relies upon a helper binary
+       pt_chown which it installs and which is useless in the testsuite.
+       * tests/Makefile.am [TAR_COND_GRANTPT]: Build ttyemu
+       * tests/iotty.at: Skip test if ttyemu is not build.
+       * tests/ttyemu.c (noecho): Fix error message
+       (main): Use TIOCSCTTY if it is defined.
+
+2014-07-22  Benno Schulenberg  <bensberg@justemail.net>
+
+       Fix a typo and some wordings in the documentation.
+       * doc/tar.texi: Fix some missing articles, and make it clearer
+       that "any" does not mean "anything" but "either of the two".
+
+2014-07-22  Nathan Stratton Treadway  <nathanst@ontko.com>
+
+       Fix the testsuite
+       * tests/incr07.at: Don't assume case-sensitive filesystem.
+
+2014-07-11  Paul Eggert  <eggert@cs.ucla.edu>
+
+       tar: minor fixups related to recent checkpoint.c change
+       * src/checkpoint.c (getwidth, format_checkpoint_string):
+       Use long and strtol, not int, to avoid overflow issues.
+       (getwidth): Don't assume termios.h defines TIOCGWINSZ,
+       as it doesn't on some older hosts.
+
+2014-07-11  Sergey Poznyakoff  <gray@gnu.org>
+
+       Bugfixes
+       * gnulib.modules: Add faccessat
+       * src/checkpoint.c: Include termios.h
+
+2014-06-29  Nathan Stratton Treadway  <nathanst@ontko.com>
+
+       tar: document xgetcwd test case better
+       * src/misc.c (normalize_filename): Add commentary for clarity.
+       * tests/extrac09.at: Retitle test case and add comments for
+       clarity.
+
+2014-06-24  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       Fix typos in ChangeLog
+       * ChangeLog.CVS: Fix typos.
+       * ChangeLog.amend: New file.
+       * Makefile.am: Define changelog_amend_file.
+
+2014-04-30  Paul Eggert  <eggert@cs.ucla.edu>
+
+       tar: do not dereference NULL pointer with '--remove-files .'
+       Problem reported by Thorsten Hirsch in:
+       http://lists.gnu.org/archive/html/bug-tar/2014-04/msg00011.html
+       * src/unlink.c (flush_deferred_unlinks):
+       Do not attempt to find the parent of "." when "." is
+       at the top level.
+       * tests/remfiles10.at: New file.
+       * tests/Makefile.am (TESTSUITE_AT):
+       * tests/testsuite.at: Add it.
+
+2014-03-27  Sergey Poznyakoff  <gray@gnu.org>
+
+       Refuse to write archive contents to a tty.
+       * NEWS: Update.
+       * src/buffer.c (_open_archive): Refuse to write to a tty.
+       * tests/iotty.at: Test output to a tty.
+
+2014-03-26  Vitezslav Cizek  <vcizek@suse.cz>
+
+       fix an eternal loop in handle_option
+       * src/names.c (handle_option): increment loop counter
+
+2014-03-20  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       Fail if archive comes from a terminal.
+       Based on patch from Pavel Raiskup <praiskup@redhat.com>.
+       * gnulib.modules: Add new modules.
+       * src/buffer.c (_open_archive): Refuse to read archive from a tty.
+       * tests/Makefile.am (TESTSUITE_AT): Add iotty.at
+       (check_PROGRAMS): New program ttyemu
+       * tests/testsuite.at: Include iotty.at
+       * tests/iotty.at: New file.
+       * tests/ttyemu.c: New file.
+
+2014-03-13  Paul Eggert  <eggert@cs.ucla.edu>
+
+       tar: port to Solaris 9
+       Problem reported by Jesse C in:
+       http://lists.gnu.org/archive/html/bug-tar/2014-03/msg00034.html
+       * gnulib.modules: Add strtoimax and strtoumax, since tar invokes
+       these functions directly and they don't exist on Solaris 9.
+
+2014-02-25  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       Test the --[no-]recursive options (see commit 2bd9c153).
+       * tests/recurs02.at: New test case.
+       * tests/Makefile.am: Add new file.
+       * tests/testsuite.at: Add new file.
+
+2014-02-22  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       Support exclusion patterns from various VCS ignore lists.
+       * src/Makefile.am (tar_SOURCES): Add exclist.c
+       * src/common.h (EXCL_DEFAULT, EXCL_RECURSIVE)
+       (EXCL_NON_RECURSIVE): New flags.
+       (excfile_add, info_attach_exclist)
+       (info_cleanup_exclist,info_free_exclist)
+       (exclude_vcs_ignores): New prototypes.
+       * src/create.c (dump_dir0): Call info_attach_exclist.
+       * src/exclist.c: New file.
+       * src/incremen.c (scan_directory): Call info_attach_exclist.
+       * src/names.c (excluded_name): Moved to exclist.c. Change
+       signature.
+       All uses updated.
+       * src/tar.c: New options: --exclude-ignore,
+       --exclude-ignore-recursive
+       and --exclude-vcs-ignores.
+       (tar_stat_destroy): Free exclist.
+       * src/tar.h (tar_stat_info): New member exclude_list.
+       * NEWS: Document new exclusion options.
+       * doc/tar.texi: Likewise.
+       * doc/tar.1: Likewise.
+
+2014-02-14  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       Fix in testsuite
+       * acls03.at: Fix improper invocation of setfacl.
+
+2014-02-14  Pavel Raiskup  <praiskup@redhat.com>
+
+       testsuite: add test for buggy default ACLs
+       * tests/Makefile.am: Mention acls03.at.
+       * tests/testsuite.at: Likewise.
+       * tests/acls03.at: New testcase.
+
+       acls: bugfix for default ACLs extraction
+       When --acls option is on (regardless of tarball contents or
+       tarball format), we should explicitly set OR delete default ACLs
+       for extracted directories.  Prior to this update, we always
+       created arbitrary default ACLs based standard file permissions.
+       * configure.ac (with_posix_acls): Check also for acl_free and
+       acl_delete_def_file to mark IEEE 1003.1e ACLs as supported.
+       * src/xattrs.c (acl_delete_def_file_at): New function.
+       (xattrs__acls_set): Do not treat acls_option at all;  Delete
+       default ACLs if appropriate.
+       References:
+       http://www.mail-archive.com/bug-tar@gnu.org/msg04355.html
+       Thanks: Juan J. MartĂ­nez and Mark Steinborn
+
+       tar: imply --xattrs when --xattrs-{inc,exc}lude used
+       Options --xattrs-include=MASK and --xattrs-exclude=MASK now turn
+       on the --xattrs option.
+       Fix also bug in printing in xattrs.c - don't print when option is
+       negative.
+       * src/tar.c (set_xattr_option): New static function.
+       (parse_opt): Call new function when --xatrrs, --xattrs-include or
+       --xattrs-exclude option is used.
+       * src/xattrs.c (xattrs_print, xattrs_print_char): Expect positive
+       values in options.
+
+2014-02-14  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       THANKS: Add Anthony G. Basile.
+
+       Use correct headers/libraries when providing xattr support
+       See https://savannah.gnu.org/patch/index.php?8252. Patch provided
+       by Anthony G. Basile.
+       * acinclude.m4 (TAR_HEADERS_ATTR_XATTR_H): Look for <sys/xattr.h>
+       first and then for <attr/xattr.h>.  Link against libattr.so if
+       needed.
+       * lib/xattr-at.h: Include sys/xattr.h or attr/xattr.h, depending
+       on which one is detected.
+       * src/Makefile.am [TAR_LIB_ATTR] (tar_LDADD): Link against -lattr.
+
+       Minor change
+       * src/tar.c (decode_options): Silently ignore --one-top-level
+       if used with a non-reading command.
+
+2014-02-14  Sergey Poznyakoff  <gray@gnu.org>
+
+       New option --sort=ORDER
+       This option makes tar sort the entries of directories that will be
+       added to an archive according to ORDER (none, name, or inode).
+       Based on proposition by Dick Streefland
+       (https://savannah.gnu.org/patch/?7892).
+       * src/common.h (savedir_sort_order): New global.
+       * src/create.c: Pass savedir_sort_order to streamsavedir.
+       * src/misc.c: Likewise.
+       * src/tar.c: New option --sort.
+       * NEWS: Update.
+       * doc/tar.texi: Document the --sort option.
+       * doc/tar.1: Likewise.
+
+2014-02-13  Sergey Poznyakoff  <gray@gnu.org>
+
+       Fix the testsuite
+       * tests/opcomp01.at: Update expected error messages.
+       * tests/opcomp03.at: Likewise.
+
+2014-02-13  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       Fix --one-top-level used together with --list.
+       * src/extract.c: Move one_top_level stuff to tar.c
+       (decode_options).
+       * src/tar.c (option_conflict_error): New function.
+       (decode_options): Use option_conflict_error to complain about
+       conflicting options in a uniform manner.
+       Process one_top_level options here.
+       (request_stdin): Fix error message.
+       * tests/onetop04.at: New testcase: check --one-top-level with
+       --list.
+       * tests/Makefile.am: Add new testcase.
+       * tests/testsuite.at: Add new testcase.
+
+       Fix NEWS
+       * NEWS: Remove duplicate description of the --one-top-level
+       option.
+
+2014-02-12  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       configure.ac: look for host-prefixed ar
+       See https://savannah.gnu.org/patch/?8183
+
+2014-02-10  Sergey Poznyakoff  <gray@gnu.org>
+
+       Bugfix
+       * src/suffix.c (find_compression_suffix): Fix eventual coredump.
+
+2014-02-10  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       Fix docs.
+
+       Update docs.
+       * NEWS: Document --one-top-level
+       * THANKS: Mention Connor Behan
+
+2014-01-30  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       Update copyright years.
+
+2014-01-28  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       Improve one-top-level functionality
+       Make sure the changes become visible with
+       --show-transformed-names.
+       * src/common.h (strip_compression_suffix): New function.
+       (one_top_level): Rename to one_top_level_dir. All uses changed.
+       * src/extract.c (extr_init): Use strip_compression_suffix.
+       Bail out if unable to determine top-level directory.
+       (maybe_prepend_name): Remove. All uses removed.
+       * src/tar.c (options): --one-top-level takes optional argument.
+       (parse_opt): Handle it.
+       * src/list.c (enforce_one_top_level): New function.
+       (transform_stat_info): Call enforce_one_top_level if required.
+       * src/suffix.c (compression_suffixes): List "tar" (no
+       compression);
+       terminate with NULL entry.
+       (find_compression_suffix): New static.
+       (strip_compression_suffix): New function.
+       * doc/tar.1: Update.
+       * doc/tar.texi: Update.
+       * tests/onetop01.at: New testcase.
+       * tests/onetop02.at: New testcase.
+       * tests/onetop03.at: New testcase.
+       * tests/Makefile.am: Add new testcases.
+       * tests/testsuite.at: Likewise.
+
+2014-01-27  Connor Behan  <connor.behan@gmail.com>
+
+       Detect tarbombs while extracting
+       * src/common.h (one_top_level_option): New global.
+       (one_top_level): New global.
+       * src/extract.c (extr_init): If one_top_level_option is set,
+       determine
+       the name one_top_level that might have to be prepended.
+       (extract_archive): If one_top_level_option is set, prepend
+       one_top_level
+       to all names that don't already start with it.
+       * src/tar.c (ONE_TOP_LEVEL_OPTION): New content.
+       (options): New option --one-top-level.
+       (parse_opt): Handle this option.
+       (decode_options): Make it conflict with --absolute-names.
+
+2014-01-27  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       Don't install rmt.8 if rmt is not built.
+       * doc/Makefile.am [PU_RMT_COND]: Define RMT_8
+       (dist_man_MANS): use RMT_8 instead of the hardcoded rmt.8
+
+       Provide tar(1) and rmt(8) manpages.
+       * NEWS: Update.
+       * doc/Makefile.am: Add manpages.
+       * doc/tar.1: New file.
+       * src/tar.c (tar_help_filter): Handle LZOP_OPTION.
+
+2014-01-23  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       Make sure transformed file names retain trailing slash in listing.
+       * src/list.c (simple_print_header): Print trailing slash
+       if using the transformed name.
+       Use had_trailing_slash instead of analyzing last byte if temp_name
+
+2014-01-22  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       checkpoint actions: further improvements.
+       * NEWS: Update.
+       * doc/tar.texi: Update.
+       * src/buffer.c (print_stats): Avoid use of additional string
+       buffer.
+       Allow for text to be NULL.
+       Call gettext if it is not.
+       (format_total_stats): Don't use gettext when calling print_stats.
+       * src/checkpoint.c (def_format): Change default format.
+       (format_checkpoint_string): Implement optional arguments for
+       T conversion.
+       (finish_checkpoint_actions): Rename to checkpoint_flush_actions,
+       make extern.  All uses changed.
+       * src/common.h (checkpoint_flush_actions): New proto.
+       * src/tar.c (main): Set error_hook
+
+2014-01-22  Sergey Poznyakoff  <gray@gnu.org>
+
+       Improve checkpoint interface.
+       * src/buffer.c (format_total_stats): The format arg is const
+       All uses updated.
+       (default_total_format): const
+       * src/checkpoint.c (tty, tty_cleanup): New static.
+       (format_checkpoint_string): New "canned" format %c
+       (checkpoint_finish): New function.
+       * src/common.h (checkpoint_finish): New proto.
+       * src/tar.c (main): Call checkpoint_finish.`
+
+2014-01-21  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       Implement statistics display in checkpoint actions.
+       * NEWS: Update.
+       * configure.ac: Version 1.27.90
+       * gnulib.modules: Add fprintftime.
+       * doc/tar.texi: Document the "totals" action and new format
+       specifiers
+       for echo and ttyout checkpoint actions.
+       * src/buffer.c (compute_duration): Return computed value.
+       (print_stats): Don't print trailing newline.  Return number of
+       characters output.
+       (format_total_stats): New function.
+       (print_total_stats): Rewrite via format_total_stats.
+       * src/checkpoint.c (checkpoint_opcode) <cop_totals>: New opcode.
+       (checkpoint_compile_action): Handle cop_totals.
+       (expand_checkpoint_string): Remove.
+       (format_checkpoint_string): New function to be used instead of
+       expand_checkpoint_string.  All callers updated.
+       * src/common.h (TF_READ,TF_WRITE)
+       (TF_DELETED): New constants.
+       (format_total_stats,print_total_stats): New protos.
+
+2014-01-10  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       Remove shar archives from distribution.
+       These are going to phase out in automake 2.0
+
+2014-01-10  Sergey Poznyakoff  <gray@gnu.org>
+
+       Fix the use of --no-recursion and --recursion options.
+       Each option remains in effect until cancelled by the next
+       occurrence
+       of its counterpart, as stated in the documentation.
+       * src/names.c (name_next_elt): Restore recursion_option from the
+       value of matching_flags.
+
+2014-01-09  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       Minor bugfixes
+       * src/compare.c (diff_dumpdir): Close descriptor if fstat failed.
+       (diff_multivol): Make sure the descriptor is closed and eventual
+       errors reported if lseek fails.
+       Both reported by Jiri Kukacka.
+
+2014-01-07  Paul Eggert  <eggert@cs.ucla.edu>
+
+       tar: work around IBM XL C bug
+       * src/incremen.c (show_snapshot_field_ranges)
+       (write_directory_file_entry): Use simpler array size expression,
+       one that evaluates to the same value.  This works around
+       a compiler
+       bug with IBM XL C.  Problem reported by Yannick Bergeron in
+       <http://lists.gnu.org/archive/html/bug-tar/2014-01/msg00009.html>.
+
+2014-01-03  Paul Eggert  <eggert@cs.ucla.edu>
+
+       tar: update ancient configure cruft
+       * configure.ac: Use AC_PROG_CC_STDC, not just AC_PROG_CC.
+       Remove obsolete macros AC_ISC_POSIX, AC_HEADER_SYS_WAIT,
+       AC_HEADER_DIRENT, AC_HEADER_STAT, AC_HEADER_STDC, AC_TYPE_SIGNAL,
+       AC_TYPE_SIZE_T.
+       * lib/prepargs.c (IN_CTYPE_DOMAIN): Remove.  All uses removed.
+       * src/list.c (from_header): Use isspace, not ISSPACE.
+       * src/system.c (pipe_handler, sys_exec_info_script):
+       * src/tar.c (sigstat):
+       Use void, not RETSIGTYPE.
+
+2013-11-17  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       Version 1.27.1
+
+       Fix star compatibility (sparse headers)
+       * src/sparse.c (star_get_sparse_info): Update file->dumped_size
+
+       Fix GNU long link header.
+       * src/create.c (write_gnu_long_link): Set timestamp to
+       0 for backward compatibility.  Bug reported by David Barri.
+       * THANKS: Update.
+
+       Fix unquoting of input file names.
+       * src/names.c (read_next_name): Unquote file names coming from the
+       -T argument.  Bug reported by Nicolas Dudebout.
+       * THANKS: Update.
+
+2013-10-24  Paul Eggert  <eggert@cs.ucla.edu>
+
+       build: fix bug where 'configure --with-posix-acls' disables ACLs
+       Reported by Lars Wendler in
+       <http://lists.gnu.org/archive/html/bug-tar/2013-10/msg00022.html>.
+       * configure.ac (with_posix_acls): Fix typo.
+
+2013-10-23  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Fix core dump on Solaris 10 when "." isn't readable.
+       Reported by Peter Kruse in
+       <http://lists.gnu.org/archive/html/bug-tar/2013-10/msg00017.html>.
+       This doesn't fix all the Solaris 10 test failures, just the
+       core dump.
+       * src/common.h, src/misc.c (tar_getcdpath): Now static.
+       * src/misc.c (normalize_filename): Report a fatal error
+       if cdpath is null, since we don't know the absolute name
+       of the working directory in that case.  FIXME: there should
+       be no need to know absolute file names.
+       (chdir_arg): Simplify wd allocation.
+       Don't assume that xgetcwd returns non-null.
+
+2013-10-06  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       Version 1.27
+       * NEWS: Update.
+       * configure.ac: Update.
+
+       Minor fixes.
+       * src/names.c: Include argp.h
+       * tests/testsuite.at (AT_XATTRS_UTILS_PREREQ)
+       (AT_SELINUX_UTILS_PREREQ,AT_ACLS_UTILS_PREREQ)
+       (AT_CAPABILITIES_UTILS_PREREQ)
+       (AT_XATTRS_PREREQ,AT_SELINUX_PREREQ)
+       (AT_ACLS_PREREQ): Use POSIX-compatible syntax for
+       mktemp.
+       * tests/incr08.at: Fix find usage.
+
+2013-10-05  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       Xfail the remfiles09b test.
+       * tests/remfiles09b.at: Turn into expected failure.
+
+2013-10-05  Nathan Stratton Treadway  <nathanst@ontko.com>
+
+       Tiny change
+       * scripts/tar-snapshot-edit: Mention --show-snapshot-field-ranges
+       option
+
+2013-10-05  Pavel Raiskup  <praiskup@redhat.com>
+
+       Tiny change
+       * configure.ac (RSH): Define as AC_ARG_VAR.
+
+2013-10-05  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       Fix namespace contamination in testsuite.
+       * tests/append01.at: Use m4_pushdef/m4_popdef to define local
+       macros.
+       * tests/delete03.at: Likewise.
+       * tests/exclude06.at: Likewise.
+       * tests/incr04.at: Likewise.
+       * tests/link03.at: Likewise.
+       * tests/long01.at: Likewise.
+       * tests/longv7.at: Likewise.
+       * tests/lustar01.at: Likewise.
+       * tests/lustar02.at: Likewise.
+       * tests/lustar03.at: Likewise.
+       * tests/multiv05.at: Likewise.
+       * tests/sparse04.at: Likewise.
+
+2013-10-05  Nathan Stratton Treadway  <nathanst@ontko.com>
+
+       Provide comprehensive testcases for various file removal modes.
+       * tests/Makefile.am: Add new testcases.
+       * tests/testsuite.at: Likewise.
+       * tests/incr09.at: Add description.
+       * tests/remfiles04a.at: New file.
+       * tests/remfiles05.at: Rename to ...
+       * tests/remfiles04b.at: ... this.
+       * tests/remfiles04.at: Rename to ...
+       * tests/remfiles04c.at: ... this.
+       * tests/remfiles05a.at: New file.
+       * tests/remfiles05b.at: New file.
+       * tests/remfiles06.at: Rename to ...
+       * tests/remfiles05c.at: ... this.
+       * tests/remfiles06a.at: New file.
+       * tests/remfiles06b.at: New file.
+       * tests/remfiles06c.at: New file.
+       * tests/remfiles07a.at: New file.
+       * tests/remfiles07b.at: New file.
+       * tests/remfiles07c.at: New file.
+       * tests/remfiles08a.at: New file.
+       * tests/remfiles08b.at: New file.
+       * tests/remfiles08c.at: New file.
+       * tests/remfiles08.at: Rename to ...
+       * tests/remfiles09a.at: ... this.
+       * tests/remfiles09b.at: New file.
+       * tests/remfiles07.at: Rename to ...
+       * tests/remfiles09c.at: ... this.
+
+2013-10-03  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       Tiny changes.
+       * src/misc.c: Fix comments, rename wd.cwd to wd.abspath (Nathan
+       Stratton
+       Treadway);
+       * src/tar.c (options): Reword description of the --starting-file
+       and
+       --preserve-order options.
+       (decode_options): Both --starting-file and --preserve-order
+       have meaning
+       only when used together with an archive reading command. (Pavel
+       Raiskup).
+
+2013-10-01  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       Revamp tar_getcwd/normalize_filename stuff.
+       The changes are based on the discussion with Nathan.
+       * src/common.h (normalize_filename): Take two arguments. All
+       callers updated.
+       (tar_getcwd): Replaced with ..
+       (tar_getcdpath): New proto.
+       * src/misc.c (normalize_filename): Take two arguments.
+       (chdir_arg): Populate cwd along with creating the
+       structure.
+       (tar_getcwd): Removed.
+       (tar_getcdpath): New function.
+       * tests/incr09.at: New test case.
+       * tests/Makefile.am: Add new tests.
+       * tests/testsuite.at: Likewise.
+
+2013-09-27  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       Bugfix
+       * tests/remfiles08.at: Restore missing find
+
+2013-09-26  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       Use relative addressing in deferred unlinks.
+       * src/common.h (tar_dirname): New function.
+       * src/misc.c (normalize_filename_x): Make extern.
+       (tar_dirname): New function.
+       (tar_getcwd): Take into account absolute pathnames.
+       * src/unlink.c (deferred_unlink) <dir_idx>: New member; keeps the
+       value of chdir_current at the moment of structure allocation.
+       (flush_deferred_unlinks): Use chdir_do and relative addressing.
+       (queue_deferred_unlink): Initialize dir_idx.
+       * tests/Makefile.am: Add new tests.
+       * tests/testsuite.at: Add new tests.
+       * tests/remfiles06.at: Fix description.
+       * tests/remfiles07.at: Fix description.
+       * tests/remfiles08.at: New test case.
+
+2013-09-25  Nathan Stratton Treadway  <nathanst@ontko.com>
+
+       Improve tar-snapshot-edit
+       Support architecture-specific field ranges for the "-c" function.
+       Better handle negative or larger-than-32-bit field values even
+       when running in 32-bit Perl (for the default "print a summary"
+       function)
+
+2013-09-25  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       Improve tar_getcwd
+       * src/common.h (tar_getcwd): Return pointer is const.
+       * src/misc.c (wd) <cwd>: New member.
+       (chdir_arg): Initialize cwd.
+       (tar_getcwd): Use cwd member to cache the result.  Take into
+       account absolute pathnames,
+       (normalize_filename): Don't free the value
+       returned from tar_getcwd.
+       * src/names.c (name_next_elt): Remove leftover call chdir().
+       * tests/Makefile.am: Add new tests.
+       * tests/testsuite.at: Likewise.
+       * tests/incr08.at: New testcase.
+       * tests/remfiles04.at: New testcase.
+       * tests/remfiles05.at: New testcase.
+       * tests/remfiles06.at: New testcase.
+       * tests/remfiles07.at: New testcase.
+
+2013-09-24  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       Fix normalize_filename.
+       The function did not take into account eventual -C options, which
+       in particular led to various problems when using -C and
+       --remove-files
+       together.
+       * src/common.h (namebuf_add_dir,namebuf_finish)
+       (tar_getcwd): New prototypes.
+       * src/misc.c (namebuf_add_dir,namebuf_finish)
+       (tar_getcwd): New functions.
+       (normalize_filename): Use tar_getcwd.
+
+2013-09-23  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       Changes for compatibility with Slackware installation scripts.
+       * src/buffer.c (short_read): the "Record size" message
+       is controlled by the WARN_RECORD_SIZE warning_option bit.
+       * src/common.h (keep_directory_symlink_option): New global.
+       (WARN_RECORD_SIZE): New constant.
+       (WARN_VERBOSE_WARNINGS): Add WARN_RECORD_SIZE.
+       * src/extract.c (extract_dir): If keep_directory_symlink_option is
+       set, follow symlinks to directories.
+       * src/suffix.c (compression_suffixes): Add support for txz
+       suffix.
+       * src/tar.c (KEEP_DIRECTORY_SYMLINK_OPTION): New constant.
+       (options): New option --keep-directory-symlink.
+       (parse_opt): Handle this option.
+       * src/warning.c: Implement "record-size" warning control.
+       * NEWS: Update.
+       * doc/tar.texi: Document new features.
+
+2013-09-21  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       Fix error message (complements 0ea6e686)
+       * src/tar.c (set_subcommand_option): Mention --delete in the
+       error message.
+
+2013-09-15  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       Improve the incr07 test
+
+2013-09-15  Nathan Stratton Treadway  <nathanst@ontko.com>
+
+       Implement the --show-snapshot-field-ranges option
+       * src/common.h (show_snapshot_field_ranges): New prototype.
+       * src/incremen.c (show_snapshot_field_ranges): New function.
+       * src/tar.c: New option --show-snapshot-field-ranges.
+       * doc/snapshot.texi: Document the --show-snapshot-field-ranges
+       option.
+       * doc/tar.texi: Likewise.
+
+2013-09-15  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       Take into account chdir_fd when extracting from incremental dumps.
+       * src/common.h (tar_savedir): New prototype.
+       * src/misc.c (tar_savedir): New function.
+       (remove_any_file): Use tar_savedir.
+       * src/incremen.c (try_purge_directory): Use tar_savedir.
+       * src/update.c (update_archive): Use tar_savedir.
+       * tests/incr07.at: New testcase.
+       * tests/Makefile.am (TESTSUITE_AT): Add new test.
+       * tests/testsuite.at: Likewise.
+       * THANKS: Updated.
+
+       Minor fix
+       * src/tar.c (main): Mention --delete in the error message.
+       * THANKS: Update
+
+2013-09-13  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * src/names.c (file_list_name): Properly prototype.
+
+       tar: don't warn about zero timestamps
+       * src/extract.c (check_time): Suppress warning when t.tv_sec == 0.
+       Problem reported by Denis Excoffier.
+
+2013-08-19  Pavel Raiskup  <praiskup@redhat.com>
+
+       Minor fix in the testsuite.
+       * tests/T-cd.at: sort the 'tar cf' output.
+
+2013-08-17  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       Improve error diagnostics
+       * src/names.c (file_list_name): New static function.
+       (add_file_id): If a filelist is being read twice, print the names
+       of the files that caused it.
+       * tests/T-rec.at: New test case.
+       * tests/Makefile.am: Add new file.
+       * tests/testsuite.at: Include new file.
+
+2013-08-16  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       Revamp initial name collection functions to ensure proper
+       argument ordering.
+       * src/names.c (NELT_NOOP): New constant
+       (name_elt) <next,prev>: New members.
+       (name_array,allocated_entries,entries,scanned): Remove.
+       (check_name_alloc): Remove function.
+       (name_elt_alloc): New static.
+       (name_list_adjust,name_list_advance): New functions.
+       (name_add_name,name_add_dir)
+       (name_add_file): Use new allocation functions.
+       (read_next_name): Advance list head pointer as necessary
+       before returning.
+       (name_next_elt): Read elements from list.
+       * tests/T-cd.at: New file.
+       * tests/T-mult.at: New file.
+       * tests/T-nest.at: New file.
+       * tests/Makefile.am: Add new testcases.
+       * tests/testsuite.at: Likewise.
+
+       Don't treat attempts to read an already read file list as
+       fatal errors.
+       * src/names.c (add_file_id): Report error and return 1 if the file
+       has already been read.
+       (read_next_name): Don't try to open file if add_file_id returns 1.
+       (name_next_elt): Simplify conditional.
+
+       Minor change.
+       * src/names.c (name_next_elt): Simplify conditional.
+
+2013-08-15  Pavel Raiskup  <praiskup@redhat.com>
+
+       Fix use of uninitialized memory
+       * src/names.c (name_add_file): Initialize the ep->v.file.fp
+       pointer
+       after structure allocation.
+
+2013-08-05  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       Minor changes
+       * src/names.c (handle_option): Use program_invocation_short_name
+       instead of the constant string.
+       (read_next_name): Remove unused variable.
+
+2013-08-04  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       Update the docs.
+       * doc/tar.texi: Parsing of the options found in the file list
+       follows the same rules as for command line.  Remove the obsolete
+       description.  This complements 26538c9b.
+
+       Fix interaction of --verbose and --append.
+       * src/buffer.c (_open_archive): don't overwrite existing archive
+       if given the --verify option.
+       * tests/append04.at: New file.
+       * tests/Makefile.am: Add new testcase.
+       * tests/testsuite.at: Add new testcase.
+       * THANKS: Update.
+
+       Bugfix.
+       * src/names.c (read_name_from_file): Fix a typo. Remove
+       unused variable.
+
+       Reduce memory consumption when handling the -T option.
+       The commit cdb27293 made the -T option more flexible, but
+       incurred a very considerable memory overhead by storing
+       all file names in the argument array.  In case of very
+       big file lists this caused tar to run out of memory.  This
+       was reported by Christian Wetzel <wetzel@phoenix-pacs.de>
+       on March 14, 2013
+       (http://lists.gnu.org/archive/html/bug-tar/2013-03/msg00018.html).
+       On the other hand, Michal Å½eidl discovered that tar malfunctioned
+       when given empty file lists or lists with the trailing newline
+       missing in the last entry.  This was reported by Pavel Raiskup
+       on July 23
+       (http://lists.gnu.org/archive/html/bug-tar/2013-07/msg00009.html
+       and
+       msg00010.html).
+       This change fixes both issues.
+       * src/common.h (name_add_file,request_stdin): New prototype.
+       (more_options): New prototype.
+       * src/names.c (NELT_FILE): New entry type.
+       (name_elt) <file>: New union member.
+       (name_add_file): New function.
+       (read_name_from_file): New function, a rewrite of
+       the same function from tar.c
+       (read_next_name,copy_name): New static functions.
+       (name_next_elt): Handle NELT_FILE entries.
+       * src/tar.c (request_stdin): Make extern.
+       (read_name_from_file,add_file_id)
+       (update_argv): Removed.
+       (parse_opt): Change handling of the -T option.
+       (more_options): New function.
+       * tests/T-null.at: Rewrite test.
+       * tests/T-zfile.at: New file.
+       * tests/T-nonl.at: New file.
+       * tests/Makefile.am: Add new testcases.
+       * tests/testsuite.at: Likewise.
+       * THANKS: Update.
+
+2013-06-29  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       Fix the compatibility check for the --occurrence option.
+       * src/tar.c (SUBCL_OCCUR): New class.
+       (subcommand_class): Update.
+       (decode_options): Accept the --occurrence option
+       with any subcommand from the SUBCL_OCCUR class.
+
+2013-06-29  Pavel Raiskup  <praiskup@redhat.com>
+
+       testsuite: do not resist on file order in archive
+       On my Fedora 19 box, the exclude08 & exclude11 tests failed before
+       this fix.  The reason was that the directory traversing chosen the
+       file order differently than the testsuite expected.
+       * tests/exclude08.at: Sort the tarball content output.
+       * tests/exclude09.at: Likewise.
+       * tests/exclude10.at: Likewise.
+       * tests/exclude11.at: Likewise.
+       * tests/exclude12.at: Likewise.
+       * tests/exclude13.at: Likewise.
+       * tests/exclude14.at: Likewise.
+       * tests/exclude15.at: Likewise.
+       * tests/exclude16.at: Likewise.
+
+2013-06-29  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       Improve checks for incompatible options.
+       * src/common.h (READ_LIKE_SUBCOMMAND): Remove define.
+       * src/tar.c (IS_SUBCOMMAND_CLASS): New macro.
+       (decode_options): Use IS_SUBCOMMAND_CLASS in checking
+       option compatibility.
+       Accept the --verify option only with subcommands that
+       write to the archive.
+       * tests/opcomp01.at: New test case.
+       * tests/opcomp02.at: New test case.
+       * tests/opcomp03.at: New test case.
+       * tests/opcomp04.at: New test case.
+       * tests/opcomp05.at: New test case.
+       * tests/opcomp06.at: New test case.
+       * tests/Makefile.am: Add new testcases.
+       * tests/testsuite.at: Likewise.
+
+2013-06-28  Paul Eggert  <eggert@cs.ucla.edu>
+
+       tar: port to Mingw Shell
+       * src/extract.c (extract_symlink) [!HAVE_SYMLINK]:
+       Fix typo by replacing WARN_SYMBOLIC_CAST with WARN_SYMLINK_CAST.
+       Problem reported by kaka in
+       <http://lists.gnu.org/archive/html/bug-tar/2013-06/msg00008.html>.
+
+2013-05-06  Paul Eggert  <eggert@cs.ucla.edu>
+
+       maint: revert previous change
+       It wasn't actually needed.  Reported by Stefano Lattarini in
+       <http://lists.gnu.org/archive/html/bug-tar/2013-04/msg00041.html>.
+       * configure.ac (AM_GNU_GETTEXT_VERSION): Decrease from 0.18.2
+       back to 0.16.
+
+2013-04-25  Paul Eggert  <eggert@cs.ucla.edu>
+
+       maint: port to bleeding-edge Automake by assuming Gettext 0.18.2
+       Reported by Stefano Lattarini in
+       <http://lists.gnu.org/archive/html/bug-tar/2013-04/msg00009.html>.
+       * configure.ac (AM_GNU_GETTEXT_VERSION): Increase from 0.16
+       to 0.18.2.
+       README-alpha says that we do not make any efforts to accommodate
+       older versions of Gettext.
+
+       tar: port to --without-xattrs --enable-gcc-warnings
+       Reported by Pavel Raiskup in
+       <http://lists.gnu.org/archive/html/bug-tar/2013-03/msg00029.html>.
+       * src/xattrs.c (xattrs__fd_set) [!HAVE_XATTRS]: Omit.
+
+       doc: port to texinfo 5
+       * doc/tar.texi (Reports, assumptions, Mixing):
+       Put FIXMEs at line start.
+
+2013-03-12  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       Continue extracting from a separate volume after skipping a
+       partial member.
+       Reported by Göran Udeborg on 2013-03-09.
+       * src/extract.c (extract_skip): New function.
+       (prepare_to_extract): Set extractor to extract_skip if starting
+       at a partial member.
+
+       Fix interaction of various --exclude-tag options with
+       --listed-incremental.
+       * src/incremen.c (procdir): Set directory->tagfile in
+       the exclusion_tag_contents case.
+       (makedumpdir): Mark all entries as ignored if directory->tagfile
+       is set.
+       Free new_dump before returning.
+       (maketagdumpdir): New function.
+       (scan_directory): If directory->children is set to
+       NO_CHILDREN and directory->tagfile is set, create a
+       dumpdir consisting of the tagfile only.
+       * tests/exclude08.at: New testcase.
+       * tests/exclude09.at: New testcase.
+       * tests/exclude10.at: New testcase.
+       * tests/exclude11.at: New testcase.
+       * tests/exclude12.at: New testcase.
+       * tests/exclude13.at: New testcase.
+       * tests/exclude14.at: New testcase.
+       * tests/exclude15.at: New testcase.
+       * tests/exclude16.at: New testcase.
+       * tests/Makefile.am: Add new tests.
+       * tests/testsuite.at: Include new tests.
+       * tests/atlocal.in (mkexcltest): New function.
+       * tests/chtype.at: Update keywords.
+       * tests/filerem01.at: Likewise.
+       * tests/filerem02.at: Likewise.
+       * tests/incremental.at: Likewise.
+       * tests/multiv04.at: Likewise.
+
+2013-02-20  Paul Eggert  <eggert@cs.ucla.edu>
+
+       tar: remove lint
+       * lib/wordsplit.c (_wsplit_error): Mark with printf attribute.
+       (expvar): "Use" defstr to pacify GCC.
+       * src/system.c (xexec): Now _Noreturn, to pacify GCC.
+       (run_decompress_program): Add cast to pacify GCC.
+       (sys_exec_command, sys_exec_info_script,
+       sys_exec_checkpoint_script):
+       Remove unused variables.
+
+2013-02-10  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       Pass command line arguments to external commands.
+       Any option taking a command name as its argument accepts
+       additional arguments as well.
+       * lib/wordsplit.c: New file.
+       * lib/wordsplit.h: New file.
+       * lib/Makefile.am: Add new files.
+       * src/system.c (xexec): New function.
+       (run_decompress_program): Use wordsplit.
+       (sys_child_open_for_compress,sys_exec_command)
+       (sys_exec_info_script)
+       (sys_exec_checkpoint_script): Use xexec to invoke external
+       command.
+       * NEWS: Update.
+       * doc/tar.texi: Update.
+
+2013-01-29  Nathan Stratton Treadway  <nathanst@ontko.com>
+
+       tar: improve compile-time diagnostics
+       * src/misc.c (sysinttostr, strtosysint): Improve #error wording.
+
+2013-01-27  Paul Eggert  <eggert@cs.ucla.edu>
+
+       tar: improve quality of diagnostics with incrementals
+       Inspired by a prototype by Nathan Stratton Treadway in
+       <http://lists.gnu.org/archive/html/bug-tar/2013-01/msg00000.html>.
+       * src/incremen.c (read_num): Rewrite by merging read_negative_num
+       and read_unsigned_num.  Use strtosysint rather than rolling this
+       stuff ourselves.  Change return type to bool.  All uses changed.
+       (read_negative_num, read_unsigned_num): Remove.
+       (read_num, read_timespec, read_incr_db_2): Improve quality of
+       diagnostics, e.g., by supplying byte offset of error.
+
+2013-01-26  Paul Eggert  <eggert@cs.ucla.edu>
+
+       tar: fix bug with sparse files with effective size of 8 GiB
+       or more
+       Reported by Pavel Raiskup in
+       <http://lists.gnu.org/archive/html/bug-tar/2013-01/msg00001.html>.
+       * NEWS: Document the fix.
+       * src/sparse.c (pax_start_header): New function.
+       (pax_dump_header_0, pax_dump_header_1): Use it.
+
+2012-12-31  Paul Eggert  <eggert@cs.ucla.edu>
+
+       maint: update copyrights for 2013 and as per current GNU standards
+
+       maint: remove unnecessary file
+       * src/configure.in: Remove.  This file has been obsolete for
+       a while.
+
+2012-12-24  Paul Eggert  <eggert@cs.ucla.edu>
+
+       maint: don't enable warnings by default unless GCC 4.6 or later
+       * configure.ac (gl_GCC_VERSION_IFELSE): New macro, from coreutils.
+       (gl_gcc_warnings): By default, disable warnings for GCC versions
+       before 4.6.  This works around a failure when building from git on
+       Ubuntu 10, reported privately by Nathan Stratton Treadway.
+
+2012-12-23  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Handle incremental format 2 with negative numbers, too.
+       * src/incremen.c (read_unsigned_num): Last arg is intmax_t *, not
+       uintmax_t, for consistency with other readers.  All callers
+       changed.
+       Avoid signed integer overflow.
+       (read_num):
+
+       Fix some problems with negative and out-of-range integers.
+       Original problem reported for HP-UX LVM v2.2 by Michael White in
+       <http://lists.gnu.org/archive/html/bug-tar/2012-10/msg00000.html>.
+       This patch fixes some other gotchas that I noticed.
+       * gnulib.modules: Add extern-inline.
+       * src/common.h: Use _GL_INLINE_HEADER_BEGIN,
+       _GL_INLINE_HEADER_END.
+       (COMMON_INLINE, max, min): New macros.
+       (represent_uintmax, valid_timespec): New inline functions.
+       (SYSINT_BUFSIZE): New constant.
+       (sysinttostr, strtosysint, decode_timespec): New decls.
+       * src/create.c (start_private_header): Silently bring the time_t
+       value into range; it is now the caller's responsibility to deal
+       with any overflow error.  Use uid 0 and gid 0 rather than the
+       user's uid/gid, since the faked header isn't "owned" by the user
+       and the uid/gid could in theory be out of range.  Leave major and
+       minor zeroed.
+       (FILL): Remove.
+       (write_gnu_long_link): Let start_private_header zero things out.
+       * src/create.c (write_gnu_long_link, write_extended):
+       * src/xheader.c (xheader_write_global):
+       Use start_time, not current time; no point hammering on the clock.
+       * src/compare.c (diff_multivol): Check that offset, size are
+       in range.
+       * src/incremen.c (read_incr_db_01, write_directory_file_entry):
+       Allow negative time_t, dev_t, and ino_t.
+       * src/list.c (max): Remove (moved to common.h).
+       (read_header): Check that size is in range.
+       (from_header): Return intmax_t, not uintmax_t, to allow negative.
+       All callers changed.  At compile time, check assumptions about
+       intmax_t and uintmax_t.  Use bool for booleans.  Avoid overflow
+       hassles on picky hosts.
+       (mode_from_header): Last arg is now bool *, not unsigned *.
+       All callers changed.
+       (simple_print_header): Do not assume UID, GID fit in 'long'.
+       * src/list.c (from_header):
+       * src/xheader.c (out_of_range_header):
+       Arg is now a plain minimum value, not minus minval converted to
+       uintmax_t.  All callers changed.
+       * src/misc.c (COMMON_INLINE): New macro.
+       (sysinttostr, strtosysint, decode_timespec): New functions.
+       * src/sparse.c (oldgnu_add_sparse, oldgnu_fixup_header)
+       (star_fixup_header):
+       Check for offset overflow.
+       (decode_num): Clear errno before calling strtoumax.
+       * src/tar.c (expand_pax_option): Don't discard nanoseconds.
+       * src/xheader.c (assign_time_option): Allow negative time_t.
+       (decode_record): Simplify, since out-of-range string is guaranteed
+       to produce a value exceeding len_max.
+       (xheader_read): Last arg is off_t, not size_t.
+       Caller should diagnose negative arg, as needed.
+       Check that it's in range.
+       (enum decode_time_status): Remove.
+       (_decode_time): Remove, folding into decode_time.
+       (decode_time): Return bool, not enum decode_time_status.
+       Rely on decode_timespec to do most of the work.
+       (code_signed_num): New function.
+       (code_num): Use it.
+       (decode_signed_num): New function.
+       (decode_num): Use it.
+       (gid_coder, gid_decoder, uid_coder, uid_decoder,
+       sparse_map_decoder)
+       (sparse_map_decoder): Code and decode negative values.
+       (sparse_map_decoder): Improve check for out-of-range values.
+       * tests/time01.at: New file.
+       * tests/Makefile.am (TESTSUITE_AT): Add it.
+       * tests/testsuite.at: Include it.
+
+2012-12-22  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Port use of mkdirat etc. to Solaris 10.
+       * gnulib.modules (fchmodat, fchownat, fstatat, mkdirat, unlinkat):
+       Add.  These were split out in gnulib, so we now need to request
+       them separately.  mkdirat, for example, is not in Solaris 10.
+
+       Port ACL configuration to Solaris 10.
+       * configure.ac (with_posix_acls): Fix misspellings.
+       Stop checking at the first failure, to speed up 'configure'.
+
+2012-12-19  Paul Eggert  <eggert@cs.ucla.edu>
+
+       tar: remove unused externs, or make them static
+       * src/buffer.c (record_buffer_aligned, flush_write_ptr,
+       flush_read_ptr)
+       (duration):
+       * src/list.c (recent_global_header):
+       * src/unlink.c (deferred_unlink_delay):
+       * src/transform.c (transform_flags):
+       * src/xattrs.c (acl_get_file_at, acl_set_file_at,
+       file_has_acl_at):
+       Now static.
+       * src/common.h (rmt_command_option): Remove; unused.
+       * src/tar.c (check_links_option, allocated_archive_names):
+       Move decls here from common.h; these are now static.
+
+       * .gitignore: Regenerate.
+
+       build: new configure option --enable-gcc-warnings
+       This has a similar meaning as in other GNU applications
+       such as coreutils and Emacs.
+       * NEWS: Document it.
+       * .gitignore: Remove redundant build-aux.
+       Remove gnu, since gnu/Makefile.am is now in git.
+       Add gnu/.gitignore, gnu/charset.alias, gnu/*.h, gnu/*/ to cover
+       autogenerated files.
+       * bootstrap.conf (gnulib_mk): Remove.
+       * configure.ac: Add support for --enable-gcc-warnings,
+       taken from coreutils and simplified.
+       * gnu/Makefile.am: New file.  Formerly this was autogenerated,
+       but the autogenerated file has been renamed to gnulib.mk,
+       its usual name when bootstrapping from gnulib.
+       This way, AM_CFLAGS can incorporate warning options.
+       * gnulib.modules: Add manywarnings.
+       * lib/Makefile.am, src/Makefile.am (AM_CFLAGS): New macro,
+       incorporating warning options.
+       * lib/attr-xattr.in.h (ENOATTR): New macro, if not already
+       defined.
+       * src/buffer.c (magic): Don't rely on incomplete initializers.
+       * src/common.h (report_difference): Add printf format attribute.
+       * src/system.c (sys_exec_command, sys_exec_info_script)
+       (sys_exec_checkpoint_script):
+       * src/tar.c (update_argv):
+       Add casts to char * to pacify GCC warnings about using string
+       literals in a char * context.
+       * src/xattrs.c, src/xattrs.h (xattrs_clear_setup):
+       Declare parameters as (void), not ().
+       * src/xheader.c (xheader_format_name): Initialize pptr to null,
+       to pacify GCC.  Remove unnecessary test of nptr versus null.
+
+       tar: don't truncate diagnostic
+       * src/list.c (from_header): Fix buffer size calculation when
+       generating a diagnostic.
+
+2012-12-03  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       Bugfix.
+       * tests/Makefile.am: Fix double AM_CPPFLAGS
+
+2012-12-01  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       Use AM_CPPFLAGS instead of INCLUDES.
+
+2012-11-19  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       Housekeeping.
+       * NEWS: Mention the support for POSIX ACLs, extended
+       attributes and SELinux context.
+       * THANKS: List James Antill and Pavel Raiskup.
+
+       Fix indentation.
+
+2012-11-19  Pavel Raiskup  <praiskup@redhat.com>
+
+       Allow to store/extract '=' character in xattr keyword
+       * src/xheader.c (xattr_decode_keyword)
+       (xattr_encode_keyword): New functions.
+       (xheader_print_n,xattr_decoder): Use them.
+       * tests/xattr05.at: New test case.
+       * tests/Makefile.am: Add new test case.
+       * tests/testsuite.at: Likewise.
+
+       Bugfixes.
+       * configure.ac: Avoid linking against -lacl when
+       --without-posix-acls is given.
+       * tests/selacl01.at: Call restorecon
+       * tests/selnx01.at: Likewise.
+       * tests/testsuite.at (AT_SELINUX_UTILS_PREREQ): Likewise.
+       (AT_SELINUX_PREREQ,AT_ACLS_PREREQ): Use the right _PREREQ macros.
+
+       Fix bootstrapping.
+       * bootstrap (gnulib_extra_files): Remove $build_aux/missing
+
+2012-11-19  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       Various fixes.
+       * src/xattrs.c: Don't mix variable declarations and statements.
+       Use proper data types.  Remove improper use of const qualifiers.
+       Use x2nrealloc to reallocate memory buffers.
+
+2012-11-18  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       Minor change.
+       * src/xattrs.c: Fix indentation. Fix copyleft statement, promote
+       to GPLv3+.
+       * src/xattrs.h: Likewise
+
+2012-11-18  Pavel Raiskup  <praiskup@redhat.com>
+
+       Add SELinux context store/restore/list support.
+       * gnulib.modules: Add selinux-at.
+       * src/Makefile.am (tar_LDADD): Add LIB_SELINUX.
+       * src/create.c (start_header, dump_file0): Handle selinux
+       contexts.
+       * src/extract.c (delayed_set_stat) <cntx_name>: New member.
+       (delayed_link) <cntx_name>: New member.
+       (set_stat, delay_set_stat)
+       (apply_nonancestor_delayed_set_stat): Handle selinux contexts.
+       * src/tar.c: New options: "--selinux", "--no-selinux".
+       (tar_stat_destroy): Free cntx_name.
+       * src/tar.h (tar_stat_info) <cntx_name>: New member.
+       * src/xattrs.c (xattrs_selinux_get)
+       (xattrs_selinux_set): New functions.
+       (xattrs_print_char): Honor selinux_context_option.
+       (xattrs_print): Print selinux context.
+       * src/xheader.c: Handle new keyword "RHT.security.selinux".
+       * tests/Makefile.am: Add new tests.
+       * tests/testsuite.at: Likewise.
+       * tests/selacl01.at: New test.
+       * tests/selnx01.at: New test.
+
+       Support for POSIX ACLs
+       * configure.ac: Check whether ACLs are available on the
+       host system.
+       * gnulib.modules: Add acl
+       * src/create.c (start_header): Store ACLs when creating
+       a POSIX archive.
+       (dump_file0): Handle ACLs.
+       * src/extract.c (delayed_set_stat) <acls_a_ptr, acls_a_len>
+       <acls_d_ptr, acls_d_len>: New members.
+       (delayed_link): Likewise.
+       (set_stat,delay_set_stat)
+       (apply_nonancestor_delayed_set_stat): Set ACLs.
+       * src/tar.c: New options: "--acls", "--no-acls"
+       (tar_stat_destroy): Free acls_a_ptr and acls_d_ptr fields.
+       * src/tar.h (tar_stat_info) <acls_a_ptr, acls_a_len>
+       <acls_d_ptr, acls_d_len>: New members.
+       * src/xattrs.c (xattrs_acls_get, xattrs_acls_set): New functions.
+       * src/xheader.c: Support new keywors: "SCHILY.acl.access" and
+       "SCHILY.acl.default".
+       * tests/Makefile.am: Add new tests.
+       * tests/testsuite.at: Likewise.
+       * tests/acls01.at: New test.
+       * tests/acls02.at: New test.
+
+       Add basic support for extended attributes.
+       * src/Makefile.am: Add xattrs.[ch]
+       * src/xattrs.c: New file.
+       * src/xattrs.h: New file.
+       * src/common.h (READ_LIKE_SUBCOMMAND): New define.
+       (selinux_context_option, acls_option, xattrs_option): New globals.
+       (xheader_xattr_init, xheader_xattr_free)
+       (xheader_xattr_copy, xheader_xattr_add): New protos.
+       (WARN_XATTR_WRITE): New mask.
+       * src/create.c (start_header): Handle xattrs pairs if in POSIX
+       format.
+       (dump_file0): Handle extended attributes.
+       * src/extract.c (delayed_set_stat,delayed_link) <xattr_map_size>
+       <xattr_map>: New members.
+       (set_xattr): New static function.
+       (open_output_file): Accept an additional argument indicating
+       whether the file has already been created.
+       (set_stat,delay_set_stat)
+       (apply_nonancestor_delayed_set_stat)
+       (extract_file): Handle extended attributes.
+       * src/list.c (decode_header, simple_print_header): Display
+       extended attributes.
+       * src/tar.c: New options --xattrs, --no-xattrs, --xattrs-include,
+       --xattrs-exclude
+       (tar_stat_destroy): Free the xattr_map storage.
+       * src/tar.h (xattr_array): New struct.
+       (tar_stat_info) <xattr_map_size, xattr_map>: New members.
+       * src/warning.c: New warning control keyword "xattr-write".
+       * src/xheader.c (xheader_xattr_init)
+       (xheader_xattr_free, xheader_xattr_add)
+       (xheader_xattr_copy): New functions.
+       (struct xhdr_tab) <prefix>: New member.
+       (locate_handler): Permit selecting the keyword based on its
+       prefix.
+       (xheader_protected_pattern_p)
+       (xheader_protected_keyword_p): Likewise.
+       (xattr_coder, xattr_decoder): New functions.
+       (xhdr_tab): Reflect the changes to struct xhdr_tab.
+       New keyword "SCHILY.xattr".
+       * tests/Makefile.am: Add new tests.
+       * tests/testsuite.at: Likewise.
+       (AT_CHECK_UTIL, AT_XATTRS_UTILS_PREREQ)
+       (AT_CAPABILITIES_UTILS_PREREQ, AT_XATTRS_PREREQ): New defuns.
+       * tests/xattr01.at: New test.
+       * tests/xattr02.at: New test.
+       * tests/xattr03.at: New test.
+       * tests/xattr04.at: New test.
+       * tests/capabs_raw01.at: New test.
+
+2012-11-18  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       Prepare for implementing extended attribute support.
+       This patch adds *xattr() stubs in case extended attribute
+       support is
+       not present and implements the *attrat() family of functions.
+       Based
+       on the patch by Pavel Raiskup <pavel@raiskup.cz> for gnulib.
+       * acinclude.m4 (TAR_HEADERS_ATTR_XATTR_H): New defun.
+       * configure.ac: Call TAR_HEADERS_ATTR_XATTR_H
+       * lib/Makefile.am: Add xattr-at.[ch], distribute attr-xattr.in.h
+       [!TAR_COND_XATTR_H]: Build attr/xattr.h
+       * lib/attr-xattr.in.h: New file.
+       * lib/xattr-at.c: New file.
+       * lib/xattr-at.h: New file.
+
+2012-11-14  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       Fix creation of incremental archives when a subdirectory becomes
+       a mountpoint.
+       When used with --listed-incremental and --one-file-system, tar
+       was unable to cope with directories that had once been part of the
+       dumped system and became separate mount points afterward.  The bug
+       has been reported and a fix proposed by Nathan Stratton Treadway.
+       * src/incremen.c (procdir): If one_file_system_option is in
+       effect,
+       clear out dumpdir info from the directory.
+       * tests/Makefile.am: Add new testcase.
+       * tests/listed05.at: New testcase.
+       * tests/testsuite.at (AT_PRIVILEGED_PREREQ): New macro.
+       include listed05.at.
+       * THANKS: Update.
+
+2012-07-27  Jim Meyering  <jim@meyering.net>
+
+       maint: try to avoid unwanted chatter in ChangeLog
+       * bootstrap.conf: Do not alter ChangeLog if it already exists.
+
+2012-07-26  Paul Eggert  <eggert@cs.ucla.edu>
+
+       doc: improve discussion of compressed archives
+       * doc/tar.texi (gzip): Don't claim that -I 'gzip --best' works.
+       Problem reported by Davide Brini in
+       <http://lists.gnu.org/archive/html/bug-tar/2012-07/msg00025.html>.
+       Also, improve some of the surrounding text.
+       This file is a placeholder. It will be replaced with the actual
+       ChangeLog
+       by make dist.  Run make ChangeLog if you wish to create it
+       earlier.
+
+2012-06-27  Paul Eggert  <eggert@cs.ucla.edu>
+
+       tests: fix permissions-assumption bug in test
+       * tests/owner.at: Don't assume umask is 022.
+       Reported by Pavel Raiskup in
+       <http://lists.gnu.org/archive/html/bug-tar/2012-06/msg00015.html>.
+
+       tar: don't assume root is uid 0
+       This is not true for Tandem NonStop Kernel.  See Joachim Schmitz's
+       comment in <http://bugs.gnu.org/10305#111>.
+       * gnulib.modules: Add root-uid.
+       * src/extract.c: Include <root-uid.h>.
+       (extr_init): Don't assume root is uid 0.
+
+2012-04-25  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * src/compare.c (diff_dumpdir): Omit useless 'stat'.
+
+       * doc/tar.texi (Option Summary): Fix xref typo.
+       Reported by Nathan Stratton Treadway in
+       <http://lists.gnu.org/archive/html/bug-tar/2012-04/msg00035.html>.
+       This file is a placeholder. It will be replaced with the actual
+       ChangeLog
+       by make dist.  Run make ChangeLog if you wish to create it
+       earlier.
+
+2012-03-29  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       Fix unrecognized option.
+       * src/tar.c (parse_opt): Handle OLD_ARCHIVE_OPTION.
+
+2012-03-11  Paul Eggert  <eggert@cs.ucla.edu>
+
+       tar: remove lint
+       This lint was found by GCC 4.6.2 on Fedora 15 x86-64.
+       * src/buffer.c (buffer_write_global_xheader, mv_end,
+       set_start_time)
+       (compute_duration, print_total_stats, flush_read, flush_write):
+       * src/checkpoint.c (checkpoint_finish_compile):
+       * src/list.c (test_archive_label):
+       * src/misc.c (chdir_count):
+       * src/names.c (const):
+       * src/unlink.c (finish_deferred_unlinks):
+       Define with (void) instead of with (), for slightly-better C type
+       checking and to avoid a GCC warning.
+       * src/compare.c (diff_dumpdir):
+       * src/tar.c (parse_owner_group): Remove unused local.
+       * src/misc.c (chdir_do):
+       * src/tar.c (add_exclude_array): Rename local to avoid shadowing.
+       (LOW_DENSITY_NUM, MID_DENSITY_NUM, HIGH_DENSITY_NUM):
+       Define only if needed.
+       * src/update.c (update_archive): Initialize a local; this fixes
+       what appears to be a real bug.
+
+2012-02-14  Paul Eggert  <eggert@cs.ucla.edu>
+
+       doc: suggest Bash for large-fd script
+       * doc/tar.texi (Multi-Volume Archives): Suggest Bash for shell
+       script that might use >&10.  Problem reported by Edward F
+       Eaglehouse in
+       <http://lists.gnu.org/archive/html/bug-tar/2012-02/msg00002.html>.
+
+2012-01-18  Paul Eggert  <eggert@cs.ucla.edu>
+
+       tar: quote 'like this', not `like this'
+       This fixes some test failures recently introduced by gnulib
+       updates
+       prompted by recent changes to the GNU coding standards,
+       which now advise to use quotes 'like this' or "like this"
+       rather than `like this'.
+       * NEWS: Document this.
+       * README, README-hacking, doc/Makefile.am, scripts/backup.in:
+       * scripts/backup.sh.in, scripts/dump-remind.in:
+       * src/buffer.c, src/checkpoint.c, src/create.c, src/incremen.c:
+       * src/misc.c, src/names.c, src/sparse.c, src/transform.c:
+       * tests/incr02.at, tests/incremental.at, tests/multiv08.at:
+       * tests/sparse04.at, tests/star/README, tests/update01.at:
+       Quote 'like this' in comments.
+       * src/tar.h:
+       Quote "like this" in comments, when quoting English phrases rather
+       than code.
+       * configure.ac:
+       * scripts/xsparse.c (get_var, read_xheader, main):
+       * src/compare.c (diff_archive):
+       * src/extract.c (prepare_to_extract):
+       * src/tar.c (request_stdin, tar_set_quoting_style, doc, options)
+       (set_subcommand_option, report_textual_dates, parse_opt)
+       (decode_options, main):
+       * src/xheader.c (decx):
+       Quote 'like this' in diagnostics.
+       * doc/tar.texi (list, warnings, override)
+       (Selecting Archive Members, quoting styles, after, hard links)
+       (Sparse Recovery, Multi-Volume Archives, label):
+       Adjust documentation to match new output.
+       * tests/backup01.at, tests/incr01.at, tests/incr04.at:
+       * tests/label04.at, tests/label05.at, tests/link03.at:
+       * tests/listed02.at, tests/multiv03.at, tests/multiv05.at:
+       * tests/rename01.at, tests/rename02.at, tests/rename03.at:
+       * tests/volume.at:
+       Adjust tests to match new quoting behavior.
+
+       tar: port --overwrite symlink test to GNU/Hurd
+       Problem reported by Pino Toscano in
+       <http://lists.gnu.org/archive/html/bug-tar/2012-01/msg00040.html>.
+       * gnulib.modules: Add fcntl-h, which defines
+       HAVE_WORKING_O_NOFOLLOW.
+       * src/extract.c (open_output_file): Use HAVE_WORKING_O_NOFOLLOW,
+       not O_NOFOLLOW, when testing whther O_NOFOLLOW works.
+       This file is a placeholder. It will be replaced with the actual
+       ChangeLog
+       by make dist.  Run make ChangeLog if you wish to create it
+       earlier.
+
+2012-01-11  Paul Eggert  <eggert@cs.ucla.edu>
+
+       tar: fix core dump with --index-file=bad_path
+       * src/tar.c (decode_options): Exit cleanly if index file won't
+       open.
+       Problem reported by Khanh-Dang Nguyen Thu Lam in
+       <http://lists.gnu.org/archive/html/bug-tar/2012-01/msg00018.html>.
+
+2012-01-06  Paul Eggert  <eggert@cs.ucla.edu>
+
+       tar: don't assume O_NONBLOCK is benign on regular files
+       On Data Migration Facility (DMF), High Performance Storage System
+       (HPSS),
+       and presumably other file systems based on hierarchical storage,
+       opening
+       a regular file with O_NONBLOCK can cause later reads to fail with
+       errno == EAGAIN.  We need the O_NONBLOCK to avoid some security
+       races.
+       Work around the problem by using fcntl to clear the O_NONBLOCK
+       flag if I/O fails with that errno value.
+       Problem reported by Vitezslav Cizek in
+       <http://lists.gnu.org/archive/html/bug-tar/2012-01/msg00000.html>.
+       * src/common.h (blocking_read, blocking_write): New decls.
+       * src/misc.c (blocking_read, blocking_write): New functions.
+       * src/compare.c (process_rawdata):
+       * src/create.c (dump_regular_file):
+       * src/extract.c (extract_file):
+       * src/sparse.c (sparse_scan_file, sparse_extract_region):
+
+2011-11-26  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       Fix --keep-old-files option.
+       The regression was introduced by 8f390db9.  This patch implements
+       additional
+       option --skip-old-files, which silently skips members which
+       would cause
+       writing over existing files, and restores --keep-old-files to
+       its traditional
+       behavior.
+       * NEWS: Update.
+       * configure.ac: Update.
+       * doc/tar.texi: Document the changes.
+       * src/common.h (SKIP_OLD_FILES): New old_files mode.
+       * src/extract.c (maybe_recoverable): Restore KEEP_OLD_FILES
+       behavior.
+       Handle SKIP_OLD_FILES.
+       * src/tar.c: New option --skip-old-files.
+       * tests/extrac18.at: New file.
+       * tests/extrac19.at: New file.
+       * tests/Makefile.am: Add new test cases.
+       * tests/testsuite.at: Likewise.
+
+2011-11-17  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       Warn about existing files in keep-old-files mode (complements
+       8f390db9).
+       This is controlled by "existing-file" warning code, which is off
+       by default.
+       * src/common.h (WARN_EXISTING_FILE): New warning code.
+       (WARN_VERBOSE_WARNINGS): Add WARN_EXISTING_FILE.
+       * src/extract.c (maybe_recoverable): warn about existing file
+       if WARN_EXISTING_FILE is set.
+       * src/warning.c: New warning type: "existing-file"
+
+       Fix the "Creating directory:" output
+       * src/list.c (print_for_mkdir): don't use unquoted name length for
+       computing its output width.
+
+2011-11-15  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       Fix operation of --verify in conjunction with --listed-incremental
+       * src/common.h (clear_directory_table): New proto.
+       * src/incremen.c (clear_directory_table): New function.
+       * src/compare.c (diff_dumpdir): Take a pointer to struct
+       tar_stat_info as argument.
+       Initialize its fd.
+       (diff_archive): Update call to diff_dumpdir.
+       (verify_volume): Call clear_directory_table.
+
+2011-10-18  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * doc/tar.texi (Option Summary, absolute): Document -P better,
+       by describing how it deals with symbolic links on extraction.
+
+2011-09-28  Paul Eggert  <eggert@cs.ucla.edu>
+
+       2011-09-27 Paul Eggert <eggert@cs.ucla.edu>
+       * src/tar.c (stat_on_signal): Use SA_RESTART if available.
+
+2011-09-20  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * doc/tar.texi: Remove front- and back-cover texts.
+       These are no longer needed for this manual, according to the
+       GNU maintainers guide.  Update copyright date to 2011.
+
+2011-09-19  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       Minor changes.
+       * scripts/tar-snapshot-edit: License under GPLv3+.
+       Remove trailing whitespace.
+
+2011-09-19  Nathan Stratton Treadway  <nathanst+bugtar@ontko.com>
+
+       Minor changes.
+       * doc/snapshot.texi: Clarify the use of nfs field in 0 and
+       1 formats.
+       Give more precise information about which versions of tar
+       used each
+       format.
+
+       Upgrade tar-snapshot-edit script.
+       * scripts/tar-snapshot-edit: Update Perl syntax to work
+       correctly with more recent versions of Perl.  (The original
+       code worked with in the v5.8 timeframe but not with
+       Perl v5.10.1 and later.)
+       Add a "-c" option to check the snapshot file for invalid
+       field values.
+       Handle NFS indicator character ("+") in version 0 and 1 files.
+       Preserve the original header/version line when editing version 1
+       or 2 files.
+       Tweak output formatting.
+       * doc/tar-snapshot-edit.texi: Update documentation.
+
+2011-08-13  Paul Eggert  <eggert@cs.ucla.edu>
+
+       tar: --owner and --group names and numbers
+       The --owner and --group options now accept operands of the form
+       NAME:NUM, so that you can specify both symbolic name and numeric
+       ID for owner and group.  Also, in these options, NAME no longer
+       needs to be present in the current host's user and group
+       databases; this implements Debian enhancement request 136231
+       <http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=136231> reported
+       by Mark W. Eichin, communicated by Thayne Harbaugh to bug-tar in
+       <http://lists.gnu.org/archive/html/bug-tar/2011-08/msg00001.html>.
+       * NEWS, doc/tar.texi (Option Summary, override): Document
+       enhancement.
+       * src/common.h (group_name_option, owner_name_option): New decls.
+       * src/create.c (start_header): Don't assume owner and group names
+       are in current host database.
+       * src/tar.c (parse_owner_group): New function, for parsing
+       NAME:NUM.
+       (parse_opt): Use it.
+       (decode_options): Initialize owner_name_option, group_name_option.
+       * tests/owner.at: New file, to test this enhancement.
+       * tests/Makefile.am (TESTSUITE_AT): Add it.
+       * tests/testsuite.at: Include it.
+
+       .gitignore: update
+       * .gitignore: Add rmt.
+       * lib/.gitignore: New file.
+
+2011-07-30  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       Fix the --exclude-backups option.
+       * src/tar.c (add_exclude_array): Take exclude option flags in its
+       second argument.
+       (parse_opt): Register backup_file_table with the EXCLUDE_WILDCARDS
+       flag.
+       * tests/exclude07.at: New testcase.
+       * tests/Makefile.am (TESTSUITE_AT): Add testsuite.at.
+       * tests/testsuite.at: Include exclude07.at.
+
+2011-06-08  Paul Eggert  <eggert@cs.ucla.edu>
+
+       tar: simplify birthtime calculations
+       * src/extract.c (same_birthtime): Remove.
+       (extract_link, apply_delayed_links): Go back to using
+       timestamp_cmp
+       instead of same_birthtime, as this is a bit simpler.  This fix
+       relies
+       on an up-to-date gnulib.
+
+       tar: use birthtime rather than ctime when checking identity
+       Without this fix, tar would sometimes mishandle the extraction of
+       hard links to symbolic links.  Problem reported in
+       <http://lists.gnu.org/archive/html/bug-tar/2011-06/msg00000.html>
+       by Andreas Stolcke.
+       * src/extract.c (struct delayed_link): Change ctime member
+       to birthtime.
+       (same_birthtime): New function.
+       (create_placeholder_file, extract_link, apply_delayed_links):
+       Use it to compare birthtimes (when available) instead of ctime.
+
+2011-05-26  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * doc/tar.texi (Old Options): Clarify distinction from short
+       options.
+       Adjust other parts of the manual to use examples that parse the
+       same regardless of whether "-" is in front of the option clump.
+       See
+       <http://lists.gnu.org/archive/html/bug-tar/2011-05/msg00022.html>.
+
+2011-03-12  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       Testsuite fix.
+       * tests/sparse04.at: Use the -f option.
+
+       Version 1.26
+       * NEWS, configure.ac: Update.
+       * po/POTFILES.in: Remove paxexit.c (see bb971a1e).
+
+2011-03-08  Paul Eggert  <eggert@cs.ucla.edu>
+
+       --atime-preserve=replace: fix correctness and performance bugs
+       reported by Eric Blake in
+       <http://lists.gnu.org/archive/html/bug-tar/2011-03/msg00000.html>.
+       * src/compare.c (diff_file): Do not restore atime of size-zero
+       files.
+       * src/create.c (dump_file0): Likewise.  Also, do not restore atime
+       when fd is zero, because that indicates a file we haven't opened.
+
+2011-02-23  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * doc/tar.texi: Adjust example commands and output for accuracy.
+       The original problem was reported by Michael Witten in
+       <http://lists.gnu.org/archive/html/bug-tar/2011-02/msg00033.html>.
+
+2011-02-16  Paul Eggert  <eggert@cs.ucla.edu>
+
+       tar: if (p) free (p); -> free (p);
+       There is no longer (since SunOS 4) any need to guard against
+       free (NULL), so replace each "if (p) free (p);" with "free (p);".
+       From Jim Meyering in
+       <http://lists.gnu.org/archive/html/bug-tar/2011-01/msg00026.html>.
+       * src/incremen.c (scan_directory, read_directory_file): As above.
+       (try_purge_directory): Likewise.
+       * src/list.c (read_header): Likewise.
+       * src/misc.c (assign_string): Likewise.
+
+2010-12-14  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       Correctly store long sparse file names in PAX archives.
+       * src/sparse.c (pax_dump_header_1): Make sure the created header
+       name is
+       shorter than NAME_FIELD_SIZE bytes.
+       * tests/sparse04.at: New testcase.
+       * tests/Makefile.am (TESTSUITE_AT): Add sparse04.at.
+       * tests/testsuite.at: Include sparse04.at.
+       * NEWS: Update.
+
+2010-12-07  Paul Eggert  <eggert@cs.ucla.edu>
+
+       tests: make the truncate test smaller and less buggy (tiny change)
+       Reported by Solar Designer in
+       <http://lists.gnu.org/archive/html/bug-tar/2010-12/msg00003.html>.
+       * tests/truncate.at: Use a smaller test case, and make its
+       race condition less likely.
+
+2010-11-27  Paul Eggert  <eggert@cs.ucla.edu>
+
+       tests: skip SIGPIPE-dependent tests in environments ignoring
+       SIGPIPE
+       Problem reported by Sven Joachim in
+       <http://lists.gnu.org/archive/html/bug-tar/2010-11/msg00043.html>.
+       * tests/remfiles01.at: Use AT_SIGPIPE_PREREQ.
+       * tests/sigpipe.at: Likewise.
+       * tests/testsuite.at (AT_SIGPIPE_PREREQ): New macro.
+
+2010-11-25  Paul Eggert  <eggert@cs.ucla.edu>
+
+       tar: work around NetBSD and Tru64 symlink incompatibility
+       with POSIX
+       Problem reported by Bruno Haible in
+       <http://lists.gnu.org/archive/html/bug-gnulib/2010-11/msg00306.html>.
+       * src/extract.c (maybe_recoverable):  Also treat EFTYPE (if
+       defined)
+       and ENOTSUP like ELOOP.
+
+2010-11-24  Paul Eggert  <eggert@cs.ucla.edu>
+
+       tar: adjust to paxutils change: paxexit.c -> paxexit-status.c
+       * lib/Makefile.am (libtar_a_SOURCES): paxexit.c renamed to
+       paxexit-status.c.
+
+       tar: remove unused function dir_removed_diag
+       * src/common.h (dir_removed_diag): Remove unused decl.
+       * src/misc.c (dir_removed_diag): Remove unused function.
+
+2010-11-23  Paul Eggert  <eggert@cs.ucla.edu>
+
+       tar: work around FreeBSD symlink incompatibility with POSIX
+       * src/extract.c (maybe_recoverable): Treat EMLINK like ELOOP, for
+       FreeBSD.  Problem reported by Christian Weisgerber in
+       <http://lists.gnu.org/archive/html/bug-tar/2010-11/msg00080.html>.
+
+       * src/names.c: tar: fix bug with --one-file-system
+       --listed-incremental
+       Problem (and idea for fix) reported by Martin Weigel
+       <http://lists.gnu.org/archive/html/bug-tar/2010-11/msg00071.html>.
+       * src/common.h (is_individual_file): Remove decl.
+       * src/create.c (dump_file0): Replace "is_individual_file (p)"
+       with "top_level".
+       * src/incremen.c (procdir): Replace "!is_individual_file
+       (name_buffer)" with "st->parent".  Fix bug with --one-file-system
+       and --listed-incremental.
+       * src/names.c (individual_file_table, register_individual_file):
+       (is_individual_file): Remove.  All uses removed.
+
+       tests: new test listed04 for --one-file-system
+       --listed-incremental
+       * tests/Makefile.am (TESTSUITE_AT): Add listed04.at.
+       * tests/listed04.at: New file.
+       * tests/testsuite.at: Include it.
+
+       scripts: fix option parsing
+       Problem reported by Dennis Wydra in
+       <http://lists.gnu.org/archive/html/bug-tar/2010-11/msg00082.html>.
+       * scripts/backup.in: Accept "-l LEVEL".  Be more systematic about
+       backslashes inside ``; it shouldn't matter for modern shells but
+       it might matter for older ones.
+       * scripts/restore.in: Likewise.
+       * scripts/backup.in: Adjust implementation of -t/--time to match
+       the new implementation of -l/--level.
+
+2010-11-15  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       Issue a warning if the archive being compared contains transformed
+       file names.
+       * src/common.h (transform_program_p): New proto.
+       * src/transform.c (transform_program_p): New function.
+       * src/compare.c (verify_volume): Warn if the archive contains
+       transformed file names.
+
+       Minor change.
+       * doc/tar.texi: Reword the description of decompress-program.
+
+2010-11-15  Paul Eggert  <eggert@cs.ucla.edu>
+
+       tar: fix --verify option, which broke in 1.24
+       * NEWS: Document this.
+       * src/compare.c (verify_volume): Decode the header before invoking
+       diff_archive, as diff_archive no longer does this as of the
+       2010-06-28 commit.  Also, don't try to invoke diff_archive on a
+       zero block.
+       * tests/Makefile.am (TESTSUITE_AT): Add verify.at.
+       * tests/testsuite.at: Include verify.at.
+       * tests/verify.at: New file.
+
+2010-11-08  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Merge branch 'master' of ssh://git.sv.gnu.org/srv/git/tar
+
+2010-11-08  Jim Meyering  <meyering@redhat.com>
+
+       tests: avoid spurious failure when VERSION_CONTROL envvar is set
+       * tests/backup01.at: Unset VERSION_CONTROL.  Otherwise,
+       when set to e.g., 'always', it would cause this test to fail.
+
+2010-11-07  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       Version 1.25
+       * configure.ac: Version 1.25
+       * NEWS: Describe the changes.
+
+2010-11-05  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       Run alternative decompression programs if the principal one is
+       not available.
+       Some compression programs are able to handle various compression
+       formats
+       (e.g. `gzip' can decompress files created by `compress', `xz'
+       is able
+       to handle lzma, etc.)  Tar tries to use such programs for
+       decompression
+       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
+       use_compress_program_option.
+       * src/common.h (first_decompress_program)
+       (next_decompress_program): New functions.
+       (WARN_DECOMPRESS_PROGRAM): New flag.
+       (WARN_VERBOSE_WARNINGS): Include WARN_DECOMPRESS_PROGRAM.
+       * 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  <eggert@cs.ucla.edu>
+
+       tests: fix some issues with signals, timestamps, "test" typo
+       * tests/extrac17.at: Add --warning=no-timestamp, to avoid
+       bogus warning due to NFS clock skew.
+       * tests/remfiles01.at: Discard diagnostics that some shells
+       generate about broken pipes.
+       * tests/sigpipe.at: Likewise.
+       * tests/remfiles01.at: Fix typo: "test $EC" was written where
+       "test $EC -ne 0" was intended.
+
+2010-11-01  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       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  <eggert@cs.ucla.edu>
+
+       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
+       <http://lists.gnu.org/archive/html/bug-tar/2010-04/msg00023.html>.
+       * 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
+       <http://lists.gnu.org/archive/html/bug-tar/2010-10/msg00041.html>;
+       solution suggested by Jilles Tjoelker in
+       <http://article.gmane.org/gmane.comp.shells.dash/415>.
+       * tests/extrac11.at (scarce file descriptors): Close file
+       descriptors before invoking ulimit -n.
+
+2010-10-27  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       Transform file names when updating and appending 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/Makefile.am (TESTSUITE_AT): Add append03.at
+       * tests/testsuite.at: Include append03.at
+
+2010-10-27  Paul Eggert  <eggert@cs.ucla.edu>
+
+       tests: port to Solaris diff
+       * tests/extrac13.at: Don't assume that "diff -c" outputs nothing
+       when there are no differences.  This is not true on Solaris,
+       where it outputs "No differences encountered".
+
+       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/extrac11.at: 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  <gray@gnu.org.ua>
+
+       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
+       decode_header.
+       (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/extrac17.at: New file.
+       * tests/Makefile.am (TESTSUITE_AT): Add extrac17.at
+       * tests/testsuite.at: Include extrac17.at.
+
+2010-10-26  Paul Eggert  <eggert@cs.ucla.edu>
+
+       tar: don't assume stdin is open when testing fd limits
+       * tests/extrac11.at: Redirect stdin from /dev/null, in case
+       the parent 'make' is running with stdin closed.
+
+2010-10-26  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       Further fixes in bootstrap.
+       * bootstrap: Restore the default for gnulib_path
+       (symlink_to_dir): Re-apply 67cad07.
+
+2010-10-26  Paul Eggert  <eggert@cs.ucla.edu>
+
+       tar: fix bug with -C and extracting directories
+       Problem reported by Denis Excoffier in
+       <http://lists.gnu.org/archive/html/bug-tar/2010-10/msg00034.html>.
+       * src/extract.c (extract_dir): Use mkdirat, not mkdir.
+       * tests/extrac16.at: New file, to test for this bug.
+       * tests/Makefile.am (TESTSUITE_AT): Add it.
+       * tests/testsuite.at: Include it.
+       This file is a placeholder. It will be replaced with the actual
+       ChangeLog
+       by make dist.  Run make ChangeLog if you wish to create it
+       earlier.
+
+2010-10-25  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       Version 1.24
+       * configure.ac, NEWS: Version 1.24
+       * bootstrap: Restore tar-specific code lost during last
+       sync from gnulib (241b72ffad).
+       * src/misc.c (chdir_do): Remove unused automatic variable.
+
+2010-10-16  Paul Eggert  <eggert@cs.ucla.edu>
+
+       tar: use more-accurate diagnostic when intermediate mkdir fails
+       Without this change, if tar tried to extract a file A/B/C, noticed
+       that A/B didn't exist, attempted to mkdir A/B, and the mkdir
+       failed, it did not diagnose the mkdir failure, but simply reported
+       the failure to open A/B/C.  This sometimes led to confusion
+       because it wasn't clear what tar was trying to do, in particular
+       that tar tried to mkdir A/B.  With this patch, tar issues two
+       diagnostics in this case: one for A/B and the other for A/B/C.
+       Problem reported by Hauke Laging in
+       <http://lists.gnu.org/archive/html/bug-tar/2010-10/msg00020.html>.
+       * gnulib.modules: Remove faccessat.
+       * src/extract.c (make_directories): New arg INTERDIR_MADE.
+       Diagnose mkdir failure.  Return 0 on success, nonzero on failure,
+       as opposed to nonzero iff some directory was created.  All callers
+       changed.  Simplify the code when mkdir fails, by checking whether
+       the desired file exists unless errno==EEXIST: this is more robust.
+       * tests/extrac15.at: New test, to check this.
+       * tests/Makefile.am (TESTSUITE_AT): Add it.
+       * tests/testsuite.at: Include it.
+
+       tests: port to NFS file servers with clock skew
+       Several of the tests assumed that a newly created file cannot
+       have a time stamp dated in the future.  This assumption is not
+       true when files are served by a remote host whose clock is
+       slightly in advance of ours.  Fix the problems that I observed
+       when running "make check" a couple of times on such a server.
+       * tests/backup01.at: Use --warning=no-timestamp to suppress
+       clock-skew warnings.
+       * tests/chtype.at, tests/comprec.at, tests/exclude06.at:
+       * tests/extrac01.at, tests/extrac03.at, tests/extrac05.at:
+       * tests/extrac06.at, tests/extrac08.at, tests/extrac13.at:
+       * tests/extrac14.at, tests/incr01.at, tests/incr03.at,
+       tests/link01.at:
+       * tests/multiv01.at, tests/multiv02.at, tests/multiv03.at:
+       * tests/pipe.at, tests/rename02.at, tests/rename03.at:
+       * tests/rename05.at, tests/same-order01.at, tests/same-order02.at:
+       * tests/sparse01.at:
+       Likewise.
+
+2010-10-12  Paul Eggert  <eggert@cs.ucla.edu>
+
+       gnulib: sync from latest gnulib, notably bootstrap and
+       parse-datetime
+       * bootstrap: Sync from gnulib.
+       * doc/.gitignore: Rename getdate.texi to parse-datetime.texi.
+       * doc/Makefile.am (tar_TEXINFOS): Likewise.
+       * doc/tar.texi (Top): Adjust to renaming of getdate to
+       parse-datetime.
+       * gnulib.modules: Likewise.  Also, remove ftruncate (now
+       obsolete).
+       And add inttostr (we missed this dependency).
+       * src/tar.c: Include parse-datetime.h, not getdate.h.  All calls
+       to get_date replaced with parse_datetime.
+
+2010-09-24  Paul Eggert  <eggert@cs.ucla.edu>
+
+       tar: -x -C symlink fix
+       * src/misc.c (chdir_do): Don't use O_NOFOLLOW when opening the
+       argument to -C.  This is for consistency with "tar -c -C FOO", and
+       matches the new documentation.
+       * tests/extrac14.at: New file.
+       * tests/Makefile.am (TESTSUITE_AT): Add it.
+       * tests/testsuite.at: Include it.
+
+       tar: --dereference consistency
+       This closes another race condition, that occurs when overwriting a
+       symlink with a regular file.
+       * NEWS (--dereference consistency): New section.
+       * doc/tar.texi (Option Summary): Describe new --deference
+       behavior.
+       (dereference): Likewise.  Remove discussion that I didn't follow,
+       even before --dereference was changed.
+       * src/common.h (deref_stat, set_file_atime): Adjust signatures.
+       * src/compare.c (diff_file, diff_multivol): Respect
+       open_read_flags
+       instead of rolling our own flags.  This implements the new
+       behavior
+       for --dereference.
+       (diff_file, diff_dumpdir): Likewise, for fstatat_flags.
+       * src/create.c: Adjust to set_file_atime signature change.
+       * src/extract.c (mark_after_links, file_newer_p, extract_dir):
+       Likewise.
+       * src/incremen.c (try_purge_directory): Likewise.
+       * src/misc.c (maybe_backup_file): Likewise.
+       * src/extract.c (file_newer_p): New arg STP.  All callers changed.
+       (maybe_recoverable): New arg REGULAR.  All callers changed.
+       Handle the case of overwriting a symlink with a regular file,
+       when --overwrite is specified but --dereference is not.
+       (open_output_file): Add O_CLOEXEC, O_NOCTTY, O_NONBLOCK for
+       consistency with file creation.  Add O_NOFOLLOW if
+       overwriting_old_files && ! dereference_option.
+       * src/incremen.c (update_parent_directory): Use fstat, not
+       fstatat;
+       there's less to go wrong.
+       * src/misc.c (deref_stat): Remove DEREF arg.  All callers changed.
+       Instead, use fstatat_flags.
+       (set_file_atime): Remove ATFLAG arg.  All callers changed.
+       Instead, use fstatat_flags.
+       * src/names.c, src/update.c: Adjust to deref_stat signature
+       change.
+       * src/tar.c (get_date_or_file): Use stat, not deref_stat, as this
+       is not a file to be archived.
+       * tests/Makefile.am (TESTSUITE_AT): Add extrac13.at.
+       * tests/extrac13.at: New file.
+       * tests/testsuite.at: Include it.
+
+2010-09-20  Paul Eggert  <eggert@cs.ucla.edu>
+
+       tar: do not crash with --listed-incremental
+       Problem reported by Frantisek Hanzlik in
+       <https://bugzilla.redhat.com/635318> via Kamil Dudka in
+       <http://lists.gnu.org/archive/html/bug-tar/2010-09/msg00066.html>.
+       I don't understand this code either, but Sergey can take a look at
+       this patch, and perhaps install a better one, when he has
+       the time.
+       * src/incremen.c (append_incremental_renames): Don't actually
+       append
+       anything to DIR if DIR is null.
+
+2010-09-19  Paul Eggert  <eggert@cs.ucla.edu>
+
+       tar: prefer openat-style functions
+       This change replaces traditional functions like 'open' with the
+       POSIX.1-2008 functions like 'openat'.  Mostly this is an internal
+       refactoring change, in preparation for further changes to close
+       some races.
+       * gnulib.modules: Add faccessat, linkat, mkfifoat, renameat,
+       symlinkat.
+       Remove save-cwd.
+       * src/Makefile.am (tar_LDADD): Add $(LIB_EACCESS).
+       * tests/Makefile.am (LDADD): Likewise.
+       * src/common.h (chdir_fd): New extern var.
+       * src/compare.c (diff_file, diff_multivol): Use openat instead
+       of open.
+       * src/create.c (create_archive, restore_parent_fd): Likewise.
+       * src/extract.c (create_placeholder_file): Likewise.
+       * src/names.c (collect_and_sort_names): Likewise.
+       * src/update.c (append_file): Likewise.
+       * src/compare.c (diff_symlink): Use readlinkat instead of
+       readlink.
+       * src/compare.c (diff_file): Use chdir_fd instead of AT_FDCWD.
+       * src/create.c (subfile_open, dump_file0): Likewise.
+       * src/extract.c (fd_chmod, fd_chown, fd_stat, set_stat):
+       (repair_delayed_set_stat, apply_nonancestor_delayed_set_stat):
+       Likewise.
+       * src/extract.c (mark_after_links, file_newer_p, extract_dir):
+       (extract_link, apply_delayed_links):
+       Use fstatat rather than stat or lstat.
+       * src/misc.c (maybe_backup_file, deref_stat): Likewise.
+       * src/extract.c (make_directories): Use mkdirat rather than mkdir.
+       Use faccessat rather than access.  This fixes a minor permissions
+       bug when tar is running setuid (who would want to do that?!).
+       (open_output_file): Use openat rather than open.
+       In the process, this removes support for Masscomp's O_CTG files,
+       which aren't compatible with openat's signature.  Masscomp!  Wow!
+       That's a blast from the past.  As far as I know, that operating
+       system hasn't been supported for more than 20 years.
+       (extract_link, apply_delayed_links):
+       Use linkat rather than link.
+       (extract_symlink, apply_delayed_links):
+       Use symlinkat rather than symlink.
+       (extract_node): Use mknodat rather than mknod.
+       (extract_fifo): Use mkfifoat rather than mkfifo.
+       (apply_delayed_links): Use unlinkat rather than unlink or rmdir.
+       * src/misc.c (safer_rmdir, remove_any_file): Likewise.
+       * src/unlink.c (flush_deferred_unlinks): Likewise.
+       * src/extract.c (rename_directory): Use renameat rather than
+       rename.
+       * src/misc.c (maybe_backup_file, undo_last_backup): Likewise.
+       * src/misc.c: Don't include <save-cwd.h>; no longer needed now
+       that we're using openat etc.
+       (struct wd): Add member fd.  Remove members err and fd.  All uses
+       changed.
+       (CHDIR_CACHE_SIZE): New constant.
+       (wdcache, wdcache_count, chdir_fd): New vars.
+       (chdir_do): Use openat rather than save_cwd.  Keep the cache up
+       to date.  This code won't scale well, but is good enough for now.
+       * src/update.c (update_archive): Use openat + fdopendir +
+       streamsavedir rather than savedir.
+       This file is a placeholder. It will be replaced with the actual
+       ChangeLog
+       by make dist.  Run make ChangeLog if you wish to create it
+       earlier.
+
+2010-09-18  Paul Eggert  <eggert@cs.ucla.edu>
+
+       tar: add utimens.h includes
+       * src/extract.c: Include <utimens.h>, needed for fdutimens
+       prototype.
+       * src/misc.c: Likewise.
+
+       tar: switch to gnulib fdutimensat module
+       * gnulib.modules: Add fdutimensat.
+       * src/common.h (fd_utimensat): Remove decl.
+       * src/extract.c (set_stat): Call fdutimensat, not fd_utimensat.
+       * src/misc.c (set_file_atime): Likewise.
+       (fd_utimensat): Remove.
+
+2010-09-17  Paul Eggert  <eggert@cs.ucla.edu>
+
+       tar: extract permissions for . last
+       * src/common.h (must_be_dot_or_slash): New decl.
+       * src/extract.c (mark_after_links): New function, taking code
+       that used to be in create_placeholder_file.
+       (create_placeholder_file): Use it.
+       (delay_set_stat): Always delay setting status for . and /.
+       * src/misc.c (must_be_dot_or_slash): Now extern.
+       * tests/extrac12.at: New file.
+       * tests/Makefile.am (TESTSUITE_AT): Add it.
+       * tests/testsuite.at: Likewise.
+
+       tar: don't check for getdtablesize; use AC_CHECK_FUNCS_ONCE
+       * configure.ac: Don't check for getdtablesize; no longer needed.
+       Use AC_CHECK_FUNCS_ONCE rather than AC_CHECK_FUNCS, for
+       efficiency.
+
+       tar: extract symlink attributes, close some symlink-related races
+       * NEWS: Describe symlink-extraction improvements.
+       * src/extract.c (enum permstatus): Remove.
+       (fchmod, fchown): Define dummy replacement macros if the system
+       does not supply them.
+       (implemented): New function.
+       (struct delayed_set_stat): Remove members invert_permissions,
+       permstatus.  They were too confusing, and tried to do too much
+       in too-little space.  Instead, add members current_mode,
+       current_mode_mask, interdir, atflag.  All users changed.
+       (struct delayed_link): Add members mode, atime, mtime, to support
+       platforms such as BSD where symlinks have these attributes.
+       All users changed.
+       (fd_chmod): Renamed from fdchmod.  New argument atflag.  Check for
+       operation not supported at run-time, not at configure-time.  Put
+       fd argument first.  All callers changed.
+       (fd_chown): Likewise, renaming from fdchown.
+       (fd_stat): Likewise, renaming from fdstat.
+       (set_mode): Remove args stat_info, cur_info, invert_permissions,
+       permstatus.  Add args mode, mode_mask, current_mode,
+       current_mode_mask,
+       atflag.  All callers changed.  Close some races.  Use an easier-to
+       understand method for computing permissions.  Work around POSIX
+       incompatibility in Linux fchmodat.  Support extraction of symlink
+       modes, if the OS allows it.
+       (set_stat): Remove args cur_info, invert_permissions, permstatus.
+       Add args current_mode, current_mode_mask, interdir, atflag.
+       All callers changed.  Close some races.  Support extraction of
+       attributes on symlinks, if the OS allows it.
+       (delay_set_stat): Remove args invert_permissions, permstatus.
+       Add args current_mode, current_mode_mask, mode, atflag.
+       The ST arg can be null now, indicating that it's an intermediate
+       directory.  All callers changed.
+       (repair_delayed_set_stat, apply_nonancestor_delayed_set_stat):
+       Close some races.
+       (extract_dir): Also be paranoid if only --same-permissions, due
+       to semantics of setgid and setuid directories on some hosts.
+       This closes a race on those hosts.  Simplify calculation of
+       delay_set_stat arguments; the old code was truly strange and
+       probably wrong in some border cases.
+       (extract_dir, extract_file, extract_node, extract_fifo): Don't
+       rely on
+       unspecified behavior in mode arg of open, mknod, etc.  Instead,
+       mask out those bits when creating the file, and add them later via
+       fchmod or chmodat.
+       (open_output_file): file_name is now const.  Add arg current_mode,
+       current_mode_mask.  All callers changed.  When overwriting
+       old files,
+       refuse to overwrite something that is not a regular file, since
+       we're extracting a regular file.
+       (extract_file): Remove the FIXME comment.  Whatever the protection
+       issues were, they should be fixed now.  As a result of all
+       the other
+       API changes, we now use fchmod etc. rather than chmod etc.,
+       closing
+       some races.
+       (create_placeholder_file, apply_delayed_links): Record desired
+       mode and times for symlinks, for OSes that support that.
+
+2010-09-16  Paul Eggert  <eggert@cs.ucla.edu>
+
+       tar: tar -x without --incremental no longer sets atime again
+       * src/extract.c (set_stat): Use UTIME_OMIT rather than UTIME_NOW.
+       The UTIME_NOW was there only to emulate the previous behavior of
+       using the current time, and the previous behavior was there only
+       because before we started assuming POSIX.1-2008 there was no
+       portable way to get the effect of UTIME_NOW.
+
+       tar: another --atime-preserve race fix
+       * src/common.h (set_file_atime): Add parentfd arg.
+       * src/compare.c (diff_file): Use it.
+       * src/create.c (dump_file0): Likewise.  This closes yet another
+       race condition with symbolic links.
+       * src/misc.c (set_file_atime): Add parentfd arg.
+
+       tar: --atime-preserve fixes for races etc.
+       This patch fixes a race condition in the --atime-preserve=replace
+       option, which might cause tar to improperly follow a symbolic
+       link.
+       It also drops the use of the _FIOSATIME ioctl of Solaris 2.x
+       and later, which loses resolution on time stamps.  Modern Solaris
+       systems support full-resolution time stamps in the kernel, and
+       it's not worth the hassle of testing this call, useful only in
+       no-longer-supported Solaris variants.
+       Also, it undoes a change I recently introduced to the --compare
+       option, which caused it to not follow symbolic links unless the
+       --dereference option was also used.  Quite possibly this change is
+       a good idea, but the old behavior was documented and the change
+       should not have been installed casually.
+       * configure.ac: Don't check for stropts.h and sys/filio.h.
+       * gnulib.modules: Add futimens, utimensat.  Remove futimens.
+       * src/common.h (fd_utimensat): New decl.
+       * src/compare.c (diff_file, diff_multivol):
+       Don't use open_read_flags: those are for --create only.
+       * src/create.c (dump_file0): Adjust to set_file_atime changes.
+       Pass fstatat_flags to set_file_atime, so that symbolic links are
+       not followed inadvertently.
+       * src/extract.c: Don't include utimens.h.
+       (set_stat): Use fd_utimensat ant UTIME_NOW rather than fdutimens.
+       * src/misc.c: Don't include utimens.h, stropts.h, sys/filio.h.
+       (fd_utimensat): New function.
+       (set_file_atime): Use it.  New arg atflag, controlling symlink
+       handling.  All callers changed.
+
+2010-09-14  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * configure.ac: tar: close some race conditions when extracting
+       * configure.ac: Check for fchmod and fchown.  Don't check
+       for utimes.
+       * src/extract.c (fdchmod, fdchown, fdstat): New functions.
+       (set_mode, set_stat): New arg FD.  All callers changed.
+       This avoids some race conditions between closing a regular file
+       and setting its metadata, and it's a bit faster.
+
+2010-09-13  Paul Eggert  <eggert@cs.ucla.edu>
+
+       tar: don't worry about fdopendir closing its argument
+       * NEWS: Don't mention dirfd; no longer needed.
+       * gnulib.modules: Remove dirfd.
+       * src/create.c (get_directory_entries): Remove the code dealing
+       with dirfd failures, as the new fdopendir replacement doesn't
+       close its argument so we don't need to call dirfd.  See
+       <http://lists.gnu.org/archive/html/bug-gnulib/2010-09/msg00208.html>
+       and gnulib commit 970c9038e4cca46e1b037ae0a6d574dfae6a7327.
+
+       * NEWS: Fix wording typo in previous change.
+       Reported by Jim Meyering.
+
+       tar: live within system-supplied limits on file descriptors
+       * NEWS: Note the change.  Mention dirfd and fdopendir.
+       * gnulib.modules: Add dirfd and fdopendir.  The code was already
+       using fdopendir; dirfd is a new need.
+       * src/common.h (open_searchdir_flags, get_directory_entries):
+       (subfile_open, restore_parent_fd, tar_stat_close): New decls.
+       (check_exclusion_tags): Adjust signature to match code change.
+       * src/create.c (IMPOSTOR_ERRNO): New constant.
+       (check_exclusion_tags): First arg is now a struct tar_stat_info
+       const *, not an fd.  All callers changed.
+       (dump_regular_file, dump_file0): A zero fd represents an unused
+       slot, so play it safe if the fd member is zero here.  A negative
+       fd represents the negation of an errno value, so play it safe and
+       do not assign -1 to fd merely because an open fails.
+       (open_failure_recover, get_directory_entries, restore_parent_fd):
+       (subfile_open): New functions.  These help to recover from file
+       descriptor exhaustion.
+       (dump_dir, dump_file0): Use them.
+       (dump_file0): Use tar_stat_close instead of rolling our own close.
+       * src/incremen.c (scan_directory): Use get_directory_entries,
+       subfile_open, etc., to recover from file descriptor exhaustion.
+       * src/names.c (add_hierarchy_to_namelist): Likewise.
+       (collect_and_sort_names): A negative fd represents the negation
+       of an errno value, so play it safe and do not assign -1 to fd.
+       * src/tar.c (decode_options): Set open_searchdir_flags.
+       Add O_CLOEXEC to all the open flags.
+       (tar_stat_close): New function, which knows how to deal with
+       new convention for directory streams and file descriptors.
+       Diagnose 'close' failures.
+       (tar_stat_destroy): Use it.
+       * src/tar.h (struct tar_stat_info): New member dirstream.
+       fd now has the negative of an errno value, not merely -1, if
+       the file could not be opened, so that failures to reopen
+       directories
+       are better-diagnosed later.
+       * tests/Makefile.am (TESTSUITE_AT): Add extrac11.at.
+       * tests/testsuite.at: Likewise.
+       * tests/extrac11.at: New file.
+
+2010-09-08  Paul Eggert  <eggert@cs.ucla.edu>
+
+       tar: improve documentation of reliability and security issues
+       * doc/tar.texi (Reliability and security, Reliability):
+       (Permissions problems, Data corruption and repair, Race
+       conditions):
+       (Security, Privacy, Integrity, Live untrusted data):
+       (Security rules of thumb): New nodes.
+
+2010-09-06  Paul Eggert  <eggert@cs.ucla.edu>
+
+       tar: more reliable directory traversal when creating archives
+       * NEWS: Document this.
+       * gnulib.modules: Add openat, readlinkat.
+       * src/common.h (open_read_flags, fstatat_flags): New global
+       variables.
+       (cachedir_file_p, dump_file, check_exclusion_tags,
+       scan_directory):
+       Adjust to new signatures, described below.
+       (name_fill_directory): Remove.
+       * src/compare.c (diff_file, diff_multivol): Use open_read_flags.
+       * src/create.c (struct exclusion_tag): Exclusion predicates
+       now take
+       a file descriptor, not a file name.
+       (add_exclusion_tag): Likewise.  All uses changed.
+       (cachedir_file_p): Likewise.
+       (check_exclusion_tags): The directory is now a file descriptor,
+       not a file name.  All uses changed.  Use openat for better
+       traversal.
+       (file_dumpable_p): Arg is now a struct stat, not a struct
+       tar_stat_info.  All uses changed.  Check the arg's file types too.
+       (dump_dir0, dump_dir, dump_file0, dump_file): Omit top_level and
+       parent_device args, since st->parent tells us that now.  All uses
+       changed.
+       (dump_dir): Likewise.  Also, omit fd arg for similar reasons.
+       Apply fdsavedir to a dup of the file descriptor, since we need a
+       file descriptor for openat etc. as well, and fdsavedir (perhaps
+       unwisely) consumes its file descriptor when successful.
+       Do not consume st->fd when successful; this simplifies the caller.
+       (create_archive): Allocate a file descriptor when retraversing
+       a directory, during incremental dumps.
+       (dump_file0): Use fstatat, openat, and readlinkat for better
+       traversal.
+       When opening a file, use the result of fstat on the file
+       descriptor
+       rather than the fstatat on the directory entry, to avoid some race
+       conditions.  No need to reopen the directory since we now
+       no longer
+       close it.  Change "did we open the file?" test from 0 <= fd to
+       0 < fd since fd == 0 now represents uninitialized.
+       (dump_file): Now accepts struct tar_stat_info describing parent,
+       not parent_device.  Also, accept basename and fullname of entry.
+       All uses changed.
+       * src/incremen.c (update_parent_directory): Accept struct
+       tar_stat_info for parent, not name.  All callers changed.
+       Use fstatat for safer directory traversal.
+       (procdir): Accept struct tar_stat_info, not struct stat and
+       dev_t, for info about directory.  All callers changed.
+       (scan_directory): Accept struct tar_stat_info, not name,
+       device, and cmdline, for info about directory.  All callers
+       changed.  Do not consume the file descriptor, since caller
+       might need it.  Use fstatat and openat for safer directory
+       traversal; also, use fstat after opening to double-check.
+       (name_fill_directory): Remove.
+       * src/names.c (add_hierarchy_to_namelist): Accept struct
+       tar_stat_info instead of device and cmdline.  All callers changed.
+       When descending into a subdirectory, use openat and fstat for
+       safer directory traversal.
+       (collect_and_sort_names): Use open and fstat for safer directory
+       traversal.  Set up struct tar_stat_info for callee's new API.
+       * src/tar.c (decode_options): Initialize open_read_flags
+       and fstatat_flags.
+       (tar_stat_destroy): Close st->fd if it is positive (not zero!).
+       * src/tar.h (struct tar_stat_info): New members parent, fd.
+       * src/update.c (update_archive): Adjust to dump_file's API change.
+       * tests/filerem02.at: Ignore stderr since its contents now depend
+       on the file system implementation.
+
+2010-09-05  Paul Eggert  <eggert@cs.ucla.edu>
+
+       tar: remove lint discovered by Sun C compiler
+       * src/common.h (WARN_ALL): Don't mask with 0xffffffff; on a 32-bit
+       host, 0xffffffff is of type 'unsigned int', which makes WARN_ALL
+       an unsigned int value that is too large to fit into an int, and
+       the C standard says that this has undefined behavior.  The mask is
+       not needed, so omit it.
+
+2010-09-04  Paul Eggert  <eggert@cs.ucla.edu>
+
+       tar: restore macros that are used in some cases
+       * src/tar.c (LOW_DENSITY_NUM, MID_DENSITY_NUM, HIGH_DENSITY_NUM):
+       Restore these macros, undoing the previous change to this file.
+       The macros are used after all, in some cases.  Sorry about that.
+
+2010-09-03  Paul Eggert  <eggert@cs.ucla.edu>
+
+       tar: remove unused macros
+       * src/create.c (UINTMAX_TO_CHARS): Remove; no longer used.
+       * src/tar.c (LOW_DENSITY_NUM, MID_DENSITY_NUM, HIGH_DENSITY_NUM):
+       Likewise.
+       * src/incremen.c (DIR_IS_NEW): Comment out; not used.
+       Mark this with a FIXME, since it looks like it should be used.
+
+2010-08-27  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       Fix --remove-files in update/append mode.
+       * src/update.c (update_archive): Call finish_deferred_unlinks when
+       done.
+
+2010-08-26  Paul Eggert  <eggert@cs.ucla.edu>
+
+       tar: avoid assumptions about root access and chmod -w in test
+       cases
+       * tests/extrac07.at, tests/extrac09.at, tests/listed03.at: Use
+       AT_UNPRIVILEGED_PREREQ, since this test requires non-root
+       privileges.
+       * tests/extrac07.at: Don't use "chmod -w", as POSIX says it's not
+       portable to start a chmod permissions-list with "-" as it may be
+       confused with an option.  Use "chmod a-w" instead.
+
+       tar: fix bug with -C and delayed setting of metadata
+       * src/common.h (chdir_current): New decl.
+       * src/extract.c (struct delayed_set_stat, struct delayed_link):
+       New member change_dir.
+       (delay_set_stat, create_placeholder_file): Set it.
+       (apply_nonancestor_delayed_set_stat, apply_delayed_links): Use it.
+       (extract_link): Check that the links are all relative to the same
+       directory.
+       (extract_archive): Restore the current directory after
+       apply_nonancestor_delayed_set_stat has possibly changed it.
+       * src/misc.c (chdir_current): New external var; this used to
+       be the private static variable 'previous' inside chdir_dir.
+       All uses changed.
+       * tests/Makefile.am (TESTSUITE_AT): New test extrac10.at.
+       * tests/extrac10.at: New file.
+       * tests/testsuite.at: Include it.
+
+2010-08-25  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       Don't apply file transformations to volume names.
+       * src/list.c (decode_header): Don't apply file transformations
+       to volume names.
+       * tests/xform01.at: New testcase.
+       * tests/xform-h.at (xform): Rename macro to xformtest. Use
+       pushdef/popdef.
+       * tests/Makefile.am, tests/testsuite.at: Add xform01.at
+
+2010-08-25  Paul Eggert  <eggert@cs.ucla.edu>
+
+       tar: optimize -c --sparse when file is entirely sparse
+       * src/sparse.c (sparse_scan_file): If the file is entirely sparse,
+       that is, if ST_NBLOCKS is zero, don't bother scanning for nonzero
+       blocks.  Idea by Kit Westneat, communicated by Bernd Schubert in
+       <http://lists.gnu.org/archive/html/bug-tar/2010-08/msg00038.html>.
+       Also, omit unnecessary lseek at start of file.
+
+       tar: don't assume size of a sparse file chunk fits in size_t
+       * src/tar.h (struct sp_array): Change numbytes from size_t
+       to off_t.
+       All uses changed.
+       * scripts/xsparse.c (struct sp_array): Likewise.
+       Include <stdint.h>, for SIZE_MAX.
+       (expand_sparse): Don't try to allocate a buffer bigger than
+       SIZE_MAX bytes.
+       * src/common.h (SIZE_TO_CHARS, size_to_chars, SIZE_FROM_HEADER):
+       (size_from_header): Remove decls.
+       * src/create.c (size_to_chars): Remove.
+       * src/list.c (size_from_header): Remove.
+       * src/sparse.c (sparse_extract_region, check_data_region):
+       (oldgnu_add_sparse, oldgnu_store_sparse_info, pax_decode_header):
+       Don't assume chunk sizes fit in size_t.
+       (oldgnu_add_sparse): Check for off_t overflow.
+       * src/xheader.c (sparse_numbytes_decoder, sparse_map_decoder):
+       Likewise.
+
+       tar: use ctime, not mtime, when checking placeholders
+       * src/extract.c (struct delayed_link): Rename member mtime
+       to ctime.
+       All uses changed to use ctime rather than mtime.
+
+2010-08-24  Paul Eggert  <eggert@cs.ucla.edu>
+
+       tar: add comment to link04.at test
+       * tests/link04.at: Add explanatory comment at head.
+
+       tar: fix 1.23 Solaris regression related to PRIV_SYS_LINKDIR
+       The idea was suggested by Petr Sumbera in the thread starting
+       here:
+       http://lists.gnu.org/archive/html/bug-tar/2010-08/msg00000.html
+       * src/extract.c (set_mode): Save the errno of the chmod that
+       failed, for the benefit of chmod_error_details.  Do not bother
+       retrying chmod unless the mode suggests setuid is the issue.
+       (extract_archive): Remove redundant call to
+       priv_set_remove_linkdir.
+       * src/system.c: Include priv-set.h.
+       (sys_spawn_shell, sys_child_open_for_compress):
+       (sys_child_open_for_uncompress, sys_exec_command):
+       (sys_exec_info_script, sys_exec_checkpoint_script):
+       Invoke priv_set_restore_linkdir before execv or execlp, so that
+       the subprocess has the same privileges that tar originally did.
+
+       tar: handle files that occur multiple times but have link count 1
+       This patch was inspired by the following patch that addressed a
+       similar problem in GNU coreutils du:
+       http://git.savannah.gnu.org/gitweb/?p=coreutils.git;h=efe53cc72b599979ea292754ecfe8abf7c839d22
+       * src/common.h (name_count): New decl.
+       * src/create.c (trivial_link_count): New static var.
+       (create_archive): Initialize it.
+       (dump_hard_link, file_count_links): Use it, so that files with
+       link count 1 are handled correctly when they are found multiple
+       times.
+       * src/names.c (allocated_entries): Renamed from allocated_names,
+       since the identifier's name was misleading.  All uses changed.
+       (entries): Renamed from names.  All uses changed.
+       (scanned): Renamed from name_index.  All uses changed.
+       (name_count): New var.
+       (name_add_name): Increment it.
+       * tests/link04.at: New file.
+       * tests/testsuite.at: Add it.
+       * tests/Makefile.am (TESTSUITE_AT): Likewise.
+
+2010-08-23  Paul Eggert  <eggert@cs.ucla.edu>
+
+       tar: use nlink_t for link counts
+       * src/create.c (struct link): nlink is now of type nlink_t,
+       not size_t.
+
+       tar: don't export names that aren't used elsewhere
+       * src/common.h (file_dumpable_p, gid_to_chars, major_to_chars):
+       (minor_to_chars, mode_to_chars, uid_to_chars, uintmax_to_chars):
+       (string_to_chars, dumpdir_creat0, dumpdir_create, dumpdir_free):
+       (dumpdir_locate, dumpdir_next, dumpdir_first, gid_from_header):
+       (major_from_header, minor_from_header, mode_from_header):
+       (time_from_header, uid_from_header, quote_copy_string,
+       request_stdin):
+       (xheader_init, transform_header_name):
+       Remove declarations; these are no longer exported from their
+       modules.
+       (GID_TO_CHARS, MAJOR_TO_CHARS, MINOR_TO_CHARS, MODE_TO_CHARS):
+       (UID_TO_CHARS, UINTMAX_TO_CHARS, UNAME_TO_CHARS, GNAME_TO_CHARS):
+       Move to src/create.c, since no other module uses these.
+       (GID_FROM_HEADER, MAJOR_FROM_HEADER, MINOR_FROM_HEADER):
+       (MODE_FROM_HEADER, TIME_FROM_HEADER, UID_FROM_HEADER):
+       Move to src/extract.c, since no other module uses these.
+       (dumpdir_t, dumpdir_iter_t): Remove; no longer used.
+       * src/create.c (gid_to_chars, major_to_chars, minor_to_chars):
+       (mode_to_chars, uid_to_chars, uintmax_to_chars, string_to_chars):
+       (file_dumpable_p): Now static.
+       * src/incremen.c (dumpdir_create0, dumpdir_create, dumpdir_free):
+       (dumpdir_locate, dumpdir_next, dumpdir_first): Now static.
+       (scan_directory, write_directory_file_entry):
+       Use struct dumpdir_iter * rather than dumpdir_iter_t.
+       * src/list.c (gid_from_header, major_from_header,
+       minor_from_header):
+       (mode_from_header, time_from_header, uid_from_header):
+       (transform_member_name): Now static.
+       * src/misc.c (quote_copy_string): #if 0 out, as it's not used
+       anywhere.
+       * src/system.c (wait_for_grandchild): Now static.
+       * src/tar.c (request_stdin): Now static.
+       * src/xheader.c (xheader_init): Now static.
+
+       tar: fix misspelled identifier "set_comression_program_by_suffix"
+       * src/suffix.c (set_compression_program_by_suffix): Renamed from
+       set_comression_program_by_suffix.
+       * src/buffer.c, src/common.h, src/tar.c: All uses changed.
+
+2010-08-20  Paul Eggert  <eggert@cs.ucla.edu>
+
+       tar: change interdir_made from int to bool
+       * src/extract.c (maybe_recoverable, create_placeholder_file):
+       Change interdir_made from int * to bool *, since the flag has just
+       two values 0 and 1.  All uses changed.  This does not affect tar's
+       behavior.
+
+       tar: remove trailing white space from source files
+       * ChangeLog.1, ChangeLog.CVS, Makefile.am, NEWS, README:
+       * README-hacking, directory, doc/Makefile.am, doc/dumpdir.texi:
+       * doc/gendocs_template, doc/intern.texi, doc/mastermenu.el:
+       * doc/snapshot.texi, doc/sparse.texi, doc/tar-snapshot-edit.texi:
+       * doc/value.texi, lib/Makefile.am, scripts/backup-specs:
+       * scripts/dump-remind.in, scripts/tar-snapshot-edit,
+       scripts/tarcat:
+       * scripts/xsparse.c, src/arith.h, src/buffer.c, src/compare.c:
+       * src/create.c, src/delete.c, src/exit.c, src/suffix.c, src/tar.c:
+       * src/tar.h, src/update.c, src/warning.c, src/xheader.c:
+       * tests/append01.at, tests/append02.at, tests/atlocal.in:
+       * tests/delete03.at, tests/exclude.at, tests/exclude06.at:
+       * tests/extrac04.at, tests/extrac05.at, tests/extrac06.at:
+       * tests/extrac07.at, tests/filerem01.at, tests/filerem02.at:
+       * tests/incr01.at, tests/incr02.at, tests/incr03.at,
+       tests/incr06.at:
+       * tests/label02.at, tests/label03.at, tests/label04.at:
+       * tests/label05.at, tests/link02.at, tests/link03.at:
+       * tests/listed01.at, tests/listed02.at, tests/long01.at:
+       * tests/longv7.at, tests/multiv01.at, tests/multiv02.at:
+       * tests/multiv03.at, tests/multiv05.at, tests/multiv06.at:
+       * tests/multiv07.at, tests/multiv08.at, tests/options.at:
+       * tests/options02.at, tests/remfiles03.at, tests/rename01.at:
+       * tests/rename02.at, tests/rename03.at, tests/rename04.at:
+       * tests/rename05.at, tests/same-order01.at, tests/same-order02.at:
+       * tests/shortfile.at, tests/shortupd.at, tests/sparse01.at:
+       * tests/sparse02.at, tests/sparsemv.at, tests/sparsemvp.at:
+       * tests/star/README, tests/star/gtarfail2.at:
+       * tests/star/multi-fail.at:
+       * tests/star/pax-big-10g.at, tests/star/quicktest.sh:
+       * tests/star/ustar-big-2g.at, tests/star/ustar-big-8g.at:
+       * tests/update01.at, tests/update02.at, tests/volsize.at:
+       * tests/volume.at:
+       Remove trailing spaces and tabs from lines, and remove
+       trailing empty lines from files.  This makes it a bit easier
+       to share code among coreutils and other projects that do this.
+
+2010-08-19  Paul Eggert  <eggert@cs.ucla.edu>
+
+       tar: update licenses to latest versions from www.gnu.org
+       * COPYING: Update to latest version; this is just minor
+       formatting.
+       * doc/fdl.texi: Update from GFDL 1.2 to 1.3.
+       * doc/tar.texi: Adjust to new format of fdl.texi.  Omit trailing
+       white space.
+
+2010-07-18  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * src/misc.c (struct wd): Fix comment to match code.
+
+2010-07-18  Paul R. Eggert  <eggert@cs.ucla.edu>
+
+       tar: no need to report getcwd error if never using the result
+       * src/misc.c (struct wd): Rename 'saved' to 'err', with new
+       semantics.
+       (chdir_arg, chdir_do): Adjust to new semantics.  Do not report an
+       error merely because save_cwd fails; report an error only if
+       save_cwd's result is needed later.
+       * tests/extrac09.at: New file, to test for bug that was fixed.
+       * tests/testsuite.at: Include it.
+       * tests/Makefile.am (TESTSUITE_AT): Add it.
+
+       tar: go back to absolutifying filenames in normalize_filename
+       for now
+       * src/misc.c (normalize_filename): For now, go back to making
+       filenames absolute, even though this causes 'tar' to fail when
+       getcwd fails.  However, do not attempt to resolve ".." as this
+       does not work with symlinks.  Also, do the right thing with
+       leading file system prefixes and on hosts where // != /.
+
+2010-07-17  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       Allow for size suffixes in -L and --record-size options.
+       * src/tar.c (TAR_SIZE_SUFFIXES): New define.
+       (parse_opt): Allow for size suffixes in arguments to
+       -L and --record-size options.
+       * NEWS, doc/tar.texi: Update.
+
+2010-07-15  Paul R. Eggert  <eggert@cs.ucla.edu>
+
+       tar: don't crash if getcwd fails
+       * src/extract.c: Don't include xgetcwd.h.
+       (extract_dir): stat "." rather than statting getcwd's output.
+       * src/misc.c (normalize_filename_x): Rewrite so as not to resolve
+       /../, which can't be done reliably in the presence of symlinks.
+       Don't reject valid names such as ".".
+       (normalize_filename): Don't make it absolute; that way, we don't
+       have to invoke xgetcwd which might fail.  Don't bother to realloc
+       at the end, since that uses time and now saves little space.
+       (chdir_do): Don't crash if xgetcwd fails.
+       * tests/Makefile.am (TESTSUITE_AT): Add listed03.at.
+       * tests/listed03.at: New file.
+       * tests/testsuite.at: Include listed03.at.
+
+2010-07-11  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       Keep a detailed map of archive members stored in the record
+       buffer.
+       A separate map (bufmap) provides information for creating
+       multi-volume continuation headers.
+       * src/buffer.c (bufmap): New struct.
+       (bufmap_head, bufmap_tail, inhibit_map): New variables.
+       (mv_begin_write): New function.
+       (mv_begin): Rename to mv_begin_read. Rewrite using mv_begin_write.
+       All callers changed.
+       (mv_total_size): Remove.
+       (bufmap_locate, bufmap_free, bufmap_reset): New functions.
+       (_flush_write): Update bufmap.
+       (close_archive): Free bufmap.
+       (add_chunk_header): Take a bufmap argument.
+       (gnu_add_multi_volume_header): Likewise.
+       (add_multi_volume_header): Likewise.
+       (_gnu_flush_write): Rewrite using bufmap.
+       (real_s_name, real_s_totsize)
+       (real_s_sizeleft)
+       (save_name, save_totsize, save_sizeleft): Removed. All
+       uses updated.
+       (mv_size_left): Update bufmap_head.
+       (mv_end): Rewrite.
+       (multi_volume_sync): Remove.
+       * src/common.h (mv_begin_write): New prototype.
+       (mv_begin): Rename to mv_begin_read.
+       * src/create.c: Use mv_begin_write instead of mv_begin.
+       Remove calls to mv_size_left and mv_end.
+       * src/sparse.c: Likewise.
+       * tests/multiv07.at: Close stdin.
+       * tests/spmvp00.at: Update AT_KEYWORDS.
+       * tests/spmvp10.at: Likewise.
+       * tests/multiv08.at: New testcase.
+       * tests/Makefile.am, tests/testsuite.at: Add multiv08.at.
+
+       Version 1.23.90
+       * NEWS, configure.ac: Version 1.23.90
+       * doc/tar.texi: Document the use of lbzip2.
+
+2010-06-28  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       Fix exclusion of long file names when extracting from pax format
+       archives.
+       * src/list.c (read_and): Call decode_header before attempting
+       name_match.
+       (list_archive): Remove call to decode_header.
+       * src/compare.c (diff_archive): Remove call to decode_header.
+       * src/extract.c (extract_archive): Likewise.
+       * test/exclude06.at: New test case.
+       * tests/testsuite.at: Include exclude06.at.
+       * tests/Makefile.am (TESTSUITE_AT): Add exclude06.at.
+
+       Minor fix.
+       * src/buffer.c (magic): Split the character constant to help
+       cc recognize character boundaries (7 is a valid hex character).
+
+2010-06-27  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       Minor fix.
+       * src/buffer.c (magic): Fix xz magic.
+
+2010-06-16  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Remove some lint, found by gcc -W etc.
+       * src/common.h (label_notfound): New decl.
+       * src/buffer.c (set_volume_start_time, compress_type):
+       (guess_seekable_archive, open_compressed_archive, init_buffer):
+       (_flush_write, archive_is-dev, increase_volume_number):
+       (change_tape_menu, try_new_volume, add_chunk_header):
+       (multi_volume_sync):
+       Declare as 'static' if it's not exported.
+       Use function prototype (void) rather than old-style ().
+       * src/checkpoint.c (expand_checkpoint_string): Likewise.
+       * src/incremen.c (dirlist_replace_prefix, makedumpdir,
+       read_incr_db_2):
+       Likewise.
+       * src/list.c (print_volume_label): Likewise.
+       * src/misc.c (normalize_filename_x): Likewise.
+       * src/names.c (make_name, free_name, check_name_alloc,
+       name_next_elt):
+       Likewise.
+       * src/tar.c (tar_list_quoting_style, add_exclude_array):
+       (set_stat_signal): Likewise.
+       * src/transform.c (new_transform,
+       _single_transform_name_to_obstack):
+       (_transform_name_to_obstack): Likewise.
+       * src/unlink.c (dunlink_alloc): Likewise.
+       * src/buffer.c (struct zip_magic): Use const when appropriate.
+       * src/incremen.c (obstack_code_rename,
+       write_directory_file_entry):
+       Likewise.
+       * src/sparse.c (COPY_STRING): Likewise.
+       * src/system.c (dec_to_env, time_to_env, oct_to_env, str_to_env):
+       (chr_to_env): Likewise.
+       * src/tar.c (tar_list_quoting_style, set_stat_signal): Likewise.
+       * src/extract.c (extract_node): Don't return garbage.
+       * src/names.c: Remove old-style declarations of getgrnam etc.
+       All modern systems declare these, and it's not worth the hassle
+       of ignoring the warnings on modern systems for old-style decls.
+
+2010-05-17  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       Bugfix.
+       * src/incremen.c (make_directory): Retain the slash if it is the
+       only character in a filename.
+
+2010-04-02  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       Recode NEWS back to UTF-8
+
+2010-04-01  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       Fix the gzip.at test case.
+       * tests/gzip.at: Suppress gzip error output, as it can differ
+       depending on its version etc. Bug reported by Ludovic Courtès.
+
+2010-03-28  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       New option --full-time.
+       * src/common.h (full_time_option): New global.
+       * src/tar.c (FULL_TIME_OPTION): New constant.
+       (options): New option --full-time.
+       (parse_opt): Handle the --full-time option.
+       * src/list.c (simple_print_header): Pass full_time_option
+       as the 2nd argument to tartime.
+       * doc/tar.texi: Update.
+       * NEWS: Update.
+
+2010-03-27  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       Minor fixes in the testsuite.
+       * tests/extrac07.at: Fix a typo (invalid number
+       of arguments before format list).
+       * tests/link02.at: Use `ln' instead of `link'.
+       * tests/link03.at: Likewise.
+
+       Fix coredump.
+       * src/names.c (collect_and_sort_names): Remove
+       entry from the table before freeing it.
+
+       Fix dead loop on extracting existing symlinks with the -k option.
+       * src/extract.c (create_placeholder_file)
+       (extract_link, extract_symlink)
+       (extract_node, extract_fifo): Handle all possible
+       return values from maybe_recoverable. This complements
+       8f390db92fc. Reported by Ico Doornekamp <bug-tar@zevv.nl>.
+       * NEWS: Update.
+
+2010-03-20  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       Fix undesired error exit on receiving SIGPIPE.
+       * src/tar.c: Do not ignore SIGPIPE.
+       * tests/sigpipe.at: New testcase.
+       * tests/Makefile.am, tests/testsuite.at: Add sigpipe.at
+       * tests/remfiles01.at: Fix error code expectation.
+       * NEWS: Update.
+
+2010-03-17  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       Fix --remove-files.
+       Tar --remove-files relied on canonicalize_file_name,
+       which replaces symlinks in file name components with
+       the directories they point to. Due to this, tar
+       effectively ignored existence of symbolic links and
+       was unable to remove a directory that contained any
+       (Alexander Kozlov <akozlov@nada.kth.se>, 2010-03-15).
+       * gnulib.modules: Remove canonicalize.
+       * src/misc.c (normalize_filename): Rewrite
+       from scratch. The function operates only on
+       its input string, it makes no attempt to test
+       components for existence or to resolve symbolic
+       links.
+       * tests/Makefile.am (TESTSUITE_AT): Add remfiles03.at.
+       * tests/testsuite.at: Likewise.
+       * tests/remfiles03.at: New test case.
+       * NEWS: Update.
+
+2010-03-12  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       Bugfixes.
+       * src/buffer.c (check_label_pattern): Initialize result.
+       * tests/remfiles01.at: Skip if run with root privileges.
+
+2010-03-11  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       Fix `--test-label' and `--label -r' behavior.
+       * doc/tar.texi (Including a Label in the Archive): Revise
+       the section.
+       * NEWS: Update
+       * src/buffer.c (open_archive): Check volume label on
+       ACCESS_UPDATE as well.
+       * src/list.c (test_archive_label): Rewrite to match the
+       documentation.
+       * src/names.c (regex_usage_warning): Return int.
+       (names_notfound): Rewrite the conditional.
+       (label_notfound): New function.
+       * tests/label03.at: New testcase.
+       * tests/label04.at: New testcase.
+       * tests/label05.at: New testcase.
+       * tests/Makefile.am: Add new testcases.
+       * tests/testsuite.at: Likewise.
+
+       Doc fixes.
+       * doc/tar.texi: Consistently use lowercase `see' within sentences.
+       More fixes spotted by Denis Excoffier.
+       * THANKS: Update.
+
+       Shut up a gcc warning message.
+       * src/tar.c (tar_help_filter): Use a separate const
+       variable to hold returns from gettext. Reported by
+       Peter Breitenlohner.
+
+       Bugfix.
+       * src/names.c (collect_and_sort_names): Initialize prev_name.
+       Reported by Dmitry V. Levin.
+
+2010-03-10  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       Version 1.23
+       * configure.ac, NEWS: Update version number.
+
+       Doc changes.
+       * NEWS: Update.
+       * THANKS: Update.
+       * doc/snapshot.texi, doc/snapshot.texi,
+       doc/sparse.texi, doc/tar-snapshot-edit.texi,
+       doc/tar.texi: Spellchecked and proof-read. Thanks
+       to Denis Excoffier.
+       * gnulib.modules: Remove utime.
+
+2010-03-08  Kamil Dudka  <kdudka@redhat.com>
+
+       Fix possible overflow in code_timespec (tiny change)
+       * src/misc.c (code_timespec): ignore invalid values of ns
+
+2010-03-08  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       Minor fix in the testsuite.
+       * tests/extrac05.at: Skip test if creating
+       sparse file fails.
+
+       Fix eventual memory override and fd exhaustion in create.c Both
+       bugs reported by Kamil Dudka.
+       * src/create.c (check_exclusion_tags): Do not keep
+       pointer to a location within tagname: it may change
+       after xrealloc. Use byte offset instead.
+       (dump_file0): Close fd before returning without
+       dumping the directory.
+
+2010-03-02  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       Minor change.
+       * doc/tar.texi: Improve some wording.
+
+2010-03-02  Antonio Diaz Diaz  <ant_diaz@teleline.es>
+
+       Add Lzip support
+       * configure.ac: Add TAR_COMPR_PROGRAM(lzip)
+       * doc/tar.texi: Reflect lzip support.
+       * src/buffer.c (compress_type) <ct_lzip>: New constant.
+       (magic): Add magic for lzip.
+       * src/suffix.c (compression_suffixes): Add lz.
+       * src/tar.c: New option --lzip.
+
+2010-03-02  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       Minor fix.
+       * tests/exclude05.at: Rewrite awk invocation to avoid
+       overflowing awk's file table on Solaris.
+
+2010-03-02  Eric Blake <ebb9@byu.net>
+
+       Fix large file support.
+       * scripts/xsparse.c (read_map): Use fseeko.
+       * src/incremen.c (write_directory_file): Likewise.
+
+2010-03-02  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       Bugfix
+       * src/buffer.c (seek_archive): Rewrite size computation
+       to prevent it from reaching negative values. Based on
+       report by Denis Excoffier <Denis.Excoffier@free.fr>.
+
+2010-02-25  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       Supply more information to the --to-command script.
+       * src/system.c (stat_to_env): Pass information about the current
+       volume in variables TAR_ARCHIVE, TAR_VOLUME, TAR_BLOCKING_FACTOR,
+       TAR_FORMAT.
+       * doc/tar.texi: Document new environment variables.
+       * NEWS: Likewise.
+       * configure.ac: Version number 1.22.91.
+
+2010-02-17  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       Minor change.
+       * src/names.c (regex_usage_warning): Fix warning message.
+
+2010-02-05  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       Update THANKS
+
+2010-02-05  OndÅ™ej VaÅ¡Ă­k  <ovasik@redhat.com>
+
+       Bugfix (tiny change)
+       * src/xheader.c (xheader_read): Remove unnecessary call
+       to xheader_init.
+
+2010-01-26  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       Enable silent build mode.
+       * configure.ac: Require automake 1.11, autoconf 2.63. Enable
+       silent rules.
+       * NEWS: Update.
+       * lib/Makefile.am (rmt-command.h): Silent the rule.
+
+2010-01-25  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       Read POSIX multivolume archives split at the header boundary.
+       * src/common.h (read_header_mode): New enum.
+       (read_header): Change type of the 3rd argument.
+       * src/list.c (read_header): Change type of the 3rd argument.
+       All callers updated.
+       * src/buffer.c (try_new_volume): Allow for volumes split at the
+       extended/ustar header boundary. This is against POSIX specs, but
+       we must be able to read such archives anyway.
+       * tests/multiv07.at: New test case.
+       * tests/Makefile.am: Add multiv07.at
+       * tests/testsuite.at: Likewise.
+       * src/compare.c: Update calls to read_header.
+       * src/delete.c: Likewise.
+       * src/update.c: Likewise.
+
+2010-01-24  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       Minor change.
+       * NEWS: Update.
+       * doc/tar.texi: Update.
+       * src/create.c (finish_header): Minor change.
+
+2010-01-24  Rob Vermaas  <rob.vermaas@gmail.com>
+
+       Bugfix (tiny change).
+       * src/tar.c (format_default_settings)[REMOTE_SHELL]: Fix
+       misplaced comma.
+
+2010-01-24  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       Minor fix.
+       * src/incremen.c (read_incr_db_01)
+       (read_directory_file): Initialize bufsize to 0.
+       Suggested by noordsij@cs.helsinki.fi.
+
+       Improve handling of --test-label.
+       * src/list.c (print_volume_label): New function.
+       (print_header): Call print_volume_label.
+       (test_archive_label): New function.
+       * src/buffer.c (VOLUME_LABEL_APPEND): Remove.
+       (VOLUME_TEXT, VOLUME_TEXT_LEN): New macros
+       (drop_volume_label_suffix): New function.
+       (check_label_pattern): Use drop_volume_label_suffix.
+       * src/common.h (subcommand): New constant TEST_LABEL_SUBCOMMAND.
+       (test_label_option): Remove.
+       (drop_volume_label_suffix): New proto.
+       (test_archive_label): New proto.
+       * src/names.c (all_names_found): Remove test for
+       test_label_option.
+       * src/tar.c (subcommand_string): Handle TEST_LABEL_SUBCOMMAND.
+       (set_subcommand_option): Improve diagnostics.
+       (parse_opt): Set subcommand if --test-label is given.
+       (main): Handle TEST_LABEL_SUBCOMMAND.
+
+       Fix listing of volume labels (in particular in PAX archives).
+       * src/buffer.c (match_volume_label): Call set_volume_label.
+       (check_label_pattern): Get label string
+       as argument.
+       (match_volume_label): Handle volume labels stored in
+       global PAX headers.
+       * src/common.c (print_header,read_header): Change signature.
+       (read_header_primitive): Remove prototype.
+       * src/list.c (recent_global_header): New static.
+       (list_archive): Always print volume labels.
+       (read_header_primitive): Remove.
+       (read_header): Change the signature (all callers updated)
+       Save the recent global header.
+       (volume_label_printed): New static.
+       (simple_print_header): New function (ex-print_header).
+       (print_header): Change the signature (all callers updated).
+       For POSIX formats, print first volume header (if set).
+       * src/xheader.c (xheader_write_global): Write the data
+       accumulated in xhdr->stk even if keyword_global_override_list
+       is empty.
+       (xheader_read): On unexpected EOF, report error instead of
+       coredumping.
+       (XHDR_PROTECTED, XHDR_GLOBAL): New defines.
+       (struct xhdr_tab): Remove `protected' with `flags'. All uses
+       updated.
+       (decg): If XHDR_GLOBAL bit is set, call the keyword's decode
+       method instead of adding it to `kwl'.
+       * src/compare.c: Update calls to read_header.
+       * src/create.c: Likewise.
+       * src/delete.c: Likewise.
+       * src/update.c: Likewise.
+       * src/extract.c: Likewise.
+       (extract_volhdr): Do not print "Reading <label>" statement,
+       because
+       it is inconsistent: it is not printed if the volume begins with a
+       member continued from the previous volume.
+       * tests/label01.at: New testcase.
+       * tests/label02.at: New testcase.
+       * tests/Makefile.am, tests/testsuite.at: Add new testcases.
+
+2010-01-22  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       Fix prefix length calculation in ustar mode.
+       * src/create.c (split_long_name): Fix prefix length
+       calculation.
+       (write_ustar_long_name): Improve ustar mode compatibility
+       with the Sun version.
+
+2009-10-14  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       Rewrite update algorithm.
+       * src/common.h (namebuf_t): New typedef.
+       (namebuf_create, namebuf_free)
+       (namebuf_name): New prototypes.
+       (remname): New prototype.
+       * src/misc.c (struct namebuf): New structure.
+       (namebuf_create, namebuf_free)
+       (namebuf_name): New functions.
+       * src/create.c (dup_dir0): Remove is_avoided_name
+       checks. This is taken care of in update_archive.
+       * src/incremen.c (scan_directory): Use namebuf
+       to produce full file names.
+       * src/names.c (nametail): Remove extra level of
+       indirection. All uses updated.
+       (avoided_name_table, add_avoided_name)
+       (is_avoided_name): Remove.
+       * src/update.c (update_archive): Change algorithm.
+       Instead of adding unmodified files to the avoided_name
+       table, create namelist so that it contains only
+       modified files.
+       * tests/Makefile.am: Add update01.at, update02.at
+       * tests/testsuite.at: Likewise.
+       * tests/update.at (AT_KEYWORDS): Add update00.
+
+       Minor changes.
+       * src/tar.c (main): Ignore SIGPIPE.
+       * src/system.c (sys_child_open_for_compress)
+       (sys_child_open_for_uncompress): Reset SIGPIPE
+       in child to default.
+       * tests/remfiles01.at: Avoid race conditions.
+       * tests/remfiles02.at: Likewise.
+
+       Bugfix.
+       * src/buffer.c (_open_archive): Call guess_seekable_archive
+       only if the call to open_compressed_archive succeeded.
+
+2009-10-10  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       Improve previous changes.
+       * acinclude.m4: Fix typos.
+       * gnulib.modules: Add xvasprintf.
+       * src/common.h: Include xvasprintf.h.
+       * src/tar.c (options): Remove docstrings for --gzip, --bzip2,
+       --compress, --lzop, --lzma and --xz.
+       (tar_help_filter): Generate these using actual values of
+       *_PROGRAM constants.
+       (format_default_settings): Use xasprintf.
+       (parse_opt): Use *_PROGRAM defines instead of hardcoded
+       program names.
+
+       Allow installers to specify alternative program names for
+       compression programs.
+       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.
+
+2009-10-09  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       Minor fix.
+       * src/buffer.c (magic): Fix `xz' entry: add the name of the
+       program.
+       * src/suffix.c (compression_suffixes, nsuffixes): Mark as static.
+
+2009-10-07  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       Provide a way to explicitly set mtime for extended header
+       ustar blocks.
+       * src/tar.c (struct textual_date): ts is a copy of the structure,
+       not a pointer to it. Date is a copy as well, hence the `const' is
+       taken away.
+       (get_date_or_file): Return 0/1 depending on success/failure.
+       Copy timestamp to the `ts' member. Store a copy of the string
+       in `date'.
+       (report_textual_dates): Report only if verbose_option is set,
+       but always free the list.
+       (expand_pax_option): New function.
+       (parse_opt): Preprocess the argument to xheader_set_option with
+       expand_pax_option.
+       (decode_options): Call report_textual_dates unconditionally.
+       * src/xheader.c (exthdr_mtime_option, exthdr_mtime)
+       (globexthdr_mtime_option, globexthdr_mtime): New statics.
+       (xheader_set_keyword_equal): handle exthdr.mtime and
+       globexthdr.mtime.
+       (xheader_write): Override `t' argument if a corresponding
+       exthdr.mtime or globexthdr.mtime option is set.
+       * NEWS: Update
+       * doc/tar.texi: Document the changes.
+
+       Use file's mtime as mtime for its extended header.
+       This makes two pax archives binary equivalent if they
+       have the same contents and care is taken to make extended
+       headers otherwise reproducible, e.g. by using:
+         --pax-option=exthdr.name=%d/PaxHeaders/%f,atime:=0
+       Proposed by Michael D. Adams <mdmkolbe@gmail.com>.
+       * src/common.h (start_private_header): Take time_t as 3rd param.
+       (xheader_write): Likewise.
+       * src/create.c (start_private_header): Take time_t as 3rd param.
+       All callers updated.
+       (write_extended): Use file's mtime as mtime for its extended
+       header,
+       Use current time stamp as mtime for global headers.
+       (xheader_write): Take time_t as 3rd param.
+
+       Fix bugs in handling the --remove-files option.
+       Make sure the files are deleted only if they were successfully
+       stored
+       to the archive.
+       * src/exit.c: New file.
+       * src/unlink.c: New file.
+       * src/Makefile.am (tar_SOURCES): Add exit.c and unlink.c.
+       * src/common.h: Include progname.h
+       (program_name): Remove global.
+       (records_written): New extern.
+       (queue_deferred_unlink, finish_deferred_unlinks): New prototypes.
+       (fatal_exit_hook): New extern.
+       * src/create.c (create_archive): Call finish_deferred_unlinks.
+       (dump_hard_link, dump_file0): Don't actually unlink the file,
+       queue it to deferred_unlinks instead.
+       * src/delete.c (records_written): Remove extern: declared in
+       common.h.
+       * src/extract.c (extract_archive): Set fatal_exit_hook.
+       (fatal_exit, xalloc_die): Move to exit.c
+       * src/system.c (sys_wait_for_child): Exit immediately
+       if the child dies or exits with a non-zero status.
+       (sys_child_open_for_compress)
+       (sys_child_open_for_uncompress): Use set_program_name,
+       instead of setting program_name directly.
+       * src/tar.c (main): Use set_program_name,
+       instead of setting program_name directly.
+       * tests/Makefile.am (TESTSUITE_AT): Add remfiles01.at
+       and remfiles02.at.
+       * tests/testsuite.at: Likewise.
+       * tests/gzip.at: Reflect the above changes.
+
+2009-10-04  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       Fix bug in OLDGNU format creation.
+       See tests/append02.at for a detailed description
+       * src/common.h (MODE_FROM_HEADER): Take additional argument.
+       (mode_from_header): Likewise.
+       * src/create.c (mode_to_chars): Store all mode bits if
+       using OLDGNU_FORMAT. This reverses f4e4adea80a.
+       * src/list.c (decode_header): Use header mode field
+       to discern between GNU and OLDGNU formats.
+       (mode_from_header): Store unrecognized mode bits (from 10th up)
+       in the location pointed to by the third parameter.
+       * tests/append02.at: Update documentation and references.
+
+2009-09-16  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       Restore extra help output.
+       * src/tar.c (tar_list_quoting_styles): Change first argument to
+       struct obstack.
+       (format_default_settings): New function.
+       (show_default_settings)
+       (show_default_settings_fs): Removed.
+       (tar_help): Removed.
+       (tar_help_filter): New function.
+       (argp): Set help_filter.
+       (parse_opt): Fix error message.
+
+2009-09-08  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       Improve command line option handling.
+       * gnulib.modules: Add argp-version-etc and progname,
+       use getopt-gnu instead of getopt.
+       * src/tar.c (HANG_OPTION, USAGE_OPTION)
+       (VERSION_OPTION): Remove.
+       (options): Remove corresponding options. Let argp
+       handle them.
+       (parse_opt): Likewise.
+       (_argp_hang): Removed.
+       (tar_authors): New variable.
+       (decode_options): Call argp_version_setup.
+       Do not use ARGP_NO_HELP flag in the call to argp_parse.
+
+       Avoid overwriting exit_status with a value indicating less
+       important condition.
+       * src/tar.c (set_exit_status): New function.
+       * src/common.h (set_exit_status): New prototype.
+       * src/compare.c: Use set_exit_status instead of
+       exit_status assignments.
+       * src/create.c: Likewise.
+       * src/misc.c: Likewise.
+       * src/system.c (wait_for_grandchild): Use auto variable
+       instead of the global exit_status.
+       * src/incremen.c (scan_directory): Use file_removed_diag
+       instead of stat_diag.
+
+       Automatic detection of seekable archives.
+       * src/buffer.c (guess_seekable_archive): New function.
+       (_open_archive): Call guess_seekable_archive for archives
+       open for reading.
+       (new_volume): Likewise.
+       * src/common.h (seek_option): New global.
+       * src/tar.c (options): New option --no-seek.
+       (parse_opt): --seek and --no-seek set seek_option,
+       not seekable_archive.
+       (decode_options): Initialize seek_option to -1.
+       * NEWS: Update.
+       * doc/tar.texi: Update.
+
+2009-08-27  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       Fix testcases.
+       * tests/extrac08.at: Ensure a predictable umask value.
+       * tests/xform-h.at (xform): do not depend on file name
+       ordering.
+
+2009-08-13  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       Fix interaction between --listed-incremental and -C
+       * src/incremen.c (read_directory_file): Execute eventual -C dir
+       after opening the snapshot file.
+       (collect_and_sort_names): Remove call to chdir_do
+       * tests/incr05.at, tests/incr06.at: Use relative file names for
+       snapshot files.
+
+2009-08-12  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       Update for new exclude module from gnulib. Add testcases by
+       Phil Proudman.
+       * src/names.c (is_pattern): Remove.
+       (regex_usage_warning): Use fnmatch_pattern_has_wildcards
+       instead of
+       is_pattern.
+       * src/tar.c: New option --exclude-backups.
+       (vcs_file_table, backup_file_table): New globals.
+       (add_exclude_array): New function.
+       * tests/exclude01.at, tests/exclude02.at,
+       tests/exclude03.at, tests/exclude04.at,
+       tests/exclude05.at: New testcases. Supplied by Phil Proudman.
+       * tests/Makefile.am (TESTSUITE_AT): Add new tests.
+       * tests/testsuite.at: Add new tests.
+       * THANKS: Update.
+
+2009-08-10  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       Remove src/version.c (reappeared after migration to Git)
+
+2009-08-09  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       Minor fixes.
+       * src/misc.c (file_removed_diag): Set exit code to
+       TAREXIT_DIFFERS.
+
+2009-08-08  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       Minor fixes
+
+       Fix handling of files removed during incremental dumps.
+       Changes to src/create.c and src/incremen.c are partially
+       based on patch from Alexander Peslyak <solar at openwall.com>.
+       The new testcases require paxutils commit f653a2b or later.
+       * src/common.h (struct name): New member `cmdline'.
+       (dump_file): Change type of the 2nd argument to bool.
+       (file_removed_diag, dir_removed_diag): New prototypes.
+       (addname): New argument `cmdline'.
+       (name_from_list): Change return value.
+       * src/create.c (dump_dir0, dump_dir): top_level is bool.
+       (create_archive): Update calls to name_from_list.
+       Take advantage of the name->cmdline to set top_level argument
+       during incremental backups.
+       (dump_file0): top_level is bool.
+       Do not bail out if a no-top-level file disappears during
+       incremental
+       backup, use file_removed_diag instead.
+       (dump_filed): top_level is bool.
+       * src/incremen.c (update_parent_directory): Silently ignore
+       ENOENT.  It should have already been reported elsewhere.
+       (scan_directory): Use dir_removed_diag to report missing
+       directories.
+       * src/misc.c (file_removed_diag, dir_removed_diag): New functions.
+       * src/names.c (name_gather): Set ->cmdname.
+       (addname): Likewise. All uses updated.
+       (name_from_list): Return struct name const *. All uses updated.
+       * tests/filerem01.at: New testcase.
+       * tests/filerem02.at: New testcase.
+       * tests/Makefile.am, tests/testsuite.at: Add filerem01.at,
+       filerem02.at
+       * tests/grow.at, test/truncate.at: Use new syntax for genfile
+       --run.
+       * NEWS: Update.
+       * doc/tar.texi: Minor fix.
+
+       Optimize searches for directory structures by keeping a pointer
+       to struct directory in struct name.
+       * src/common.h (struct name): New member `directory' replaces
+       dir_contents. Rearrange members.
+       (rebase_directory): Change signature.
+       (scan_directory): Change signature.
+       (name_fill_directory)
+       (directory_contents, safe_directory_contents): New prototypes.
+       (append_incremental_renames): Change signature.
+       (replace_prefix): New proto.
+       * src/compare.c (diff_dumpdir): Use directory_contents +
+       scan_directory.
+       * src/create.c
+       * src/incremen.c (replace_prefix): Move to misc.c
+       (rebase_directory): Rewrite.
+       (scan_directory): Return pointer to struct directory.
+       (directory_contents, safe_directory_contents): New functions.
+       (get_directory_contents): Remove.
+       (name_fill_directory): New function.
+       (append_incremental_renames): Rewrite. This also fixes a memory
+       leak.
+       * src/names.c (name_gather, addname): Reflect changes in struct
+       name.
+       (add_hierarchy_to_namelist): Rewrite using name_fill_directory and
+       directory_contents.
+       (rebase_child_list): Update call to rebase_directory.
+       (collect_and_sort_names): Optimize
+       * src/misc.c (replace_prefix): New function.
+       * src/names.c (add_hierarchy_to_namelist): Use new
+       get_directory_contents.
+       * tests/incr05.at: New test case.
+       * tests/incr06.at: New test case.
+       * tests/Makefile.am, test/testsuite.at: Add incr05.at and
+       incr06.at.
+       * doc/Makefile.am (check-options): Improve rule.
+       * doc/tar.texi, NEWS: Update.
+
+2009-08-07  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       Minor fixes.
+       * src/common.h (rebase_directory): New prototype.
+       * src/incremen.c (rebase_directory): Use replace_prefix.
+       * src/names.c (collect_and_sort_names): Abort if
+       hash_insert fails.
+
+       Improve listed incremental dumps.
+       The modified algorithm tries to avoid dumping the same
+       directory twice and ensures the order of the directories
+       in the resulting archive is the same, whatever their order
+       on the command line.  It also fixes the operation of
+       --listed-incremental -C.
+       * gnulib.modules: Add canonicalize
+       * src/common.h (incremental_level): New global.
+       (check_exclusion_tags): first argument is const.
+       (get_directory_contents): Add third argument.
+       (zap_slashes, normalize_filename): New prototypes.
+       (chdir_count): New prototype.
+       (WARN_VERBOSE_WARNINGS): New define.
+       (WARN_ALL): Exclude WARN_VERBOSE_WARNINGS.
+       * src/compare.c (diff_dumpdir): Update the call to
+       get_directory_contents.
+       * src/create.c (check_exclusion_tags): First argument is const.
+       Use ISSLASH and DIRECTORY_SEPARATOR instead of referring to '/'.
+       * src/incremen.c (struct directory): New member `caname'.
+       (hash_directory_name): Rename to
+       hash_directory_canonical_name. Operate
+       on the canonical name.
+       (compare_directory_names): Rename to
+       compare_directory_canonical_names.
+       Operate on the canonical name.
+       (make_directory): Take two arguments.
+       (free_directory): Free caname.
+       (attach_directory): Create caname.
+       (find_directory): Use caname for lookups.
+       (PD_VERBOSE): Remove.
+       (PD_FORCE_INIT): New define.
+       (procdir): First argument is const.
+       Reinitialize directory if PD_FORCE_INIT bit is set.
+       Do not use PD_VERBOSE or verbose_option for issuing warnings.
+       Rely on WARNOPT instead.
+       Always set *entry.
+       (scan_directory): Take three arguments. The third one is a boolean
+       which is true if the directory is explicitly mentioned on
+       the command
+       line.
+       (get_directory_contents): Remove.  Use scan_directory instead.
+       All callers updated.
+       (read_directory_file): Truncate the file if --level=0 is given.
+       * src/misc.c: Include canonicalize.h
+       (zap_slashes, normalize_filename): New functions.
+       (chdir_count): New function.
+       * src/names.c (add_hierarchy_to_namelist): Take three arguments,
+       as
+       get_directory_contents and scan_directory.
+       (collect_and_sort_names): Allow at most one -C, before file name
+       arguments.
+       Read directory file after eventual changing to another directory.
+       Avoid adding the same directory under different pathnames to
+       the list.
+       * src/tar.c: New option --level.
+       * tests/incr03.at, tests/incr04.at, tests/listed01.at,
+       tests/listed02.at, tests/rename01.at, tests/rename02.at,
+       tests/rename03.at: Update for new tar behavior.
+       * tests/multiv01.at: Do not use --listed-incremental.
+
+2009-08-05  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       Forgotten to push src/warning.c
+
+       Implement the --warning option.
+       * src/warning.c: New file.
+       * src/Makefile.am: Add warning.c
+       * src/common.h: Provide definitions for warning classes.
+       (warning_option): New global.
+       (WARNOPT): New define.
+       (set_warning_option): New prototype.
+       * src/tar.c: New option `--warning'.
+       * src/compare.c: When applicable WARNOPT instead of WARN.
+       * src/create.c: Likewise.
+       * src/extract.c: Likewise.
+       * src/incremen.c: Likewise.
+       * src/list.c: Likewise.
+       * NEWS, doc/tar.texi: Update.
+
+2009-08-05  Carl Worth <cworth@cworth.org>
+
+       Fix descriptions of some options (tiny change)
+
+2009-08-05  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       Fix backup handling and restoring file modes of existing
+       directories
+       * NEWS, THANKS: Update
+       * src/extract.c (extract_dir): reset status to 0 if the
+       directory already exists.
+       * src/misc.c (maybe_backup_file): Assign before_backup_name
+       and clear after_backup_name before checking if we really need
+       to backup the file.
+       * tests/backup01.at: New testcase.
+       * tests/extrac08.at: New testcase.
+       * tests/Makefile.am, tests/testsuite.at: Add extrac08.at and
+       backup01.at
+
+2009-07-30  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       Fix hard links recognition with -c --remove-files
+       * src/create.c (dump_hard_link): Always look up in the link table
+       if remove_files_option is set. Patch suggested by Theodore Ts'o
+       <tytso@mit.edu>.
+       (check_links): Remove extra newline from the warning message.
+       * tests/link02.at, tests/link03.at: New testcases.
+       * tests/Makefile.am (TESTSUITE_AT): Add link02.at and link03.at
+       * tests/testsuite.at: Include link02.at and link03.at
+
+       Fix handling of hard link targets by -c --transform
+       * src/create.c (file_count_links): Transform link target
+       before the look up.
+       * tests/xform-h.at: New test case.
+       * tests/Makefile.am (TESTSUITE_AT): Add xform-h.at.
+       * tests/testsuite.at: Add xform-h.at
+
+2009-06-23  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       Minor fix.
+       * src/extract.c (file_newer_p): Do not report error on ENOENT
+
+2009-06-19  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       Remove rebox.el (reappeared after migration to Git)
+
+2009-06-18  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       Remove files that were removed in CVS, but reappeared after
+       migration to Git
+
+2009-06-18  David Bartley  <dtbartle@csclub.uwaterloo.ca>
+
+       Fix Solaris bug where chmod fails if we don't have
+       PRIV_SYS_LINKDIR
+       * gnulib.modules: Add priv-set.
+       * src/extract.c (set_mode, extract_archive): Restore
+       PRIV_SYS_LINKDIR on chmod failure.
+       * src/tar.c (main): Drop PRIV_SYS_LINKDIR on startup.
+
+2009-06-18  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       Ensure default behavior for SIGPIPE
+       * src/tar.c (main): Install default handler for SIGPIPE.
+       Proposed by Bastian Blank.
+
+2009-06-18  Eric Blake <ebb9@byu.net>
+
+       Follow autoconf recommendation for TESTSUITEFLAGS.
+       * tests/Makefile.am (check-local, installcheck-local): Honor
+       TESTSUITEFLAGS.
+
+2009-06-18  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       Fix handling of sub-subprocess returns.
+       * src/system.c (wait_for_grandchild): New function.
+       (sys_child_open_for_compress)
+       (sys_child_open_for_uncompress): Use wait_for_grandchild
+       to manage grandchild return.
+
+2009-05-25  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       Report record size only if the archive refers to a device.
+       * Makefile.am (INCLUDES): Add ../lib, for rmt-command.h
+       * src/buffer.c (short_read): Report the actual record size
+       only if the archive descriptor refers to a device.
+       * tests/pipe.at, tests/shortrec.at,
+       tests/sparsemvp.at: Reflect the above change.
+       * NEWS, configure.ac: Version 1.22.90
+
+2009-05-14  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       Do not issue errors on existing files when given the -k option
+       * Makefile.am (dist-hook): Fix rule.
+       * src/extract.c (maybe_recoverable): Return three-state value.
+       (extract_dir): Skip extraction if maybe_recoverable indicates so.
+       (extract_file): Likewise.
+
+2009-05-12  Eric Blake <ebb9@byu.net>
+
+       Avoid undefined behavior
+       * src/xheader.c (xheader_set_keyword_equal): Pass correct type to
+       ctype macros.
+       * src/transform.c (run_case_conv): Likewise.
+
+2009-05-12  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       Remove src/Makefile.in
+
+2009-03-12  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       Bugfixes.
+       * bootstrap (symlink_to_dir): Fix symlink calculation.
+       * doc/tar.texi: Minor fixes by Victor Villa and Stepan Kasal.
+
+2009-03-07  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       Remove Makefile.in
+
+       Migrate to Git
+
+Currently the ChangeLog is generated automatically from the Git
+revision history, but from 1997 to 2009 the ChangeLog file was
+maintained by hand, under CVS.  This file records the older log.
+
+Copyright 1997-2001, 2003-2009, 2013 Free Software Foundation, Inc.
+
+This file is part of GNU tar.
+
+GNU tar is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 3 of the License, or
+(at your option) any later version.
+
+GNU tar is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+2009-03-05  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       * src/incremen.c: --no-recursive works with --incremental.
+
+2009-03-04  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       Add xz support.
+
+       * src/buffer.c, src/suffix.c: Add support for xz compression.
+       * src/tar.c: New option --xz, for compression/decompression using xz.
+       Re-assign -J as a short equivalent of --xz.
+
+2009-01-19  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       * doc/tar.texi: Fix typo.
+
+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
 2008-11-25  Sergey Poznyakoff  <gray@gnu.org.ua>
 
        Do not try to drain the input pipe before closing the
-       archive. 
-       
+       archive.
+
        * src/buffer.c (close_archive): Remove call to
        sys_drain_input_pipe. Pass hit_eof as the second
        argument to sys_wait_for_child.
        * src/extract.c (extract_link, extract_symlink): Remove calls to
        transform_member_name. It is done in read_header.
        * src/list.c (decode_xform): Reflect change in data type of 2nd
-       argument. 
+       argument.
        (transform_member_name): 2nd arg is int.
        (decode_header): Transform file name and link target names.
        * src/tar.c: Remove --transform-symlinks.
        set global flags using `flags=' syntax.
        (_transform_name_to_obstack, transform_name_fp)
        (transform_name): Take an additional argument, specifying scope
-       flags. 
+       flags.
 
 2008-10-19  Sergey Poznyakoff  <gray@gnu.org.ua>
 
        * tests/sparsemvp.at: Likewise.
        * tests/volsize.at: Likewise.
        * NEWS: Update.
-       
+
 2008-10-16  Sergey Poznyakoff  <gray@gnu.org.ua>
 
        * src/common.h (transform_symlinks_option): New global.
        * doc/tar.texi: Document --transform-symlinks
        * NEWS: Update.
        * THANKS: Update.
-       
+
        * src/names.c (name_gather): Use xzalloc.
        * src/buffer.c (short_read): Move record size detection before
        the loop.
-       
+
 2008-10-07  Sergey Poznyakoff  <gray@gnu.org.ua>
 
        * src/tar.c (options): Add --lzop option.
 2008-10-05  Xavier Hienne <xavier.hienne@free.fr> (tiny change)
 
        * src/checkpoint.c (checkpoint_compile_action): Add missing
-       `else'. 
+       `else'.
 
 2008-09-24  Sergey Poznyakoff  <gray@gnu.org.ua>
 
        * tests/atlocal.in (decho): New function.
        * tests/multiv06.at: Use decho instead of echo2.
        * tests/incremental.at: Raise wait interval to 2 seconds.
-       
+
 2008-07-24  Sergey Poznyakoff  <gray@gnu.org.ua>
 
        * src/tar.c (decode_options): Do not allow volume length less
        tests/longv7.at, tests/lustar01.at, tests/lustar02.at,
        tests/shortfile.at: Update to match new diagnostic wording
        (see 2008-05-06).
-       
+
        * NEWS: Update.
 
 2008-06-14  Sergey Poznyakoff  <gray@gnu.org.ua>
 
        * doc/tar.texi (exclude): Document support for new VCS.
        * THANKS: Update.
-       * NEWS: Update. 
+       * NEWS: Update.
        * tests/multiv05.at: Fix typos.
        * tests/volsize.at: Remove a TZ dependency.
-       
+
 2008-06-14  Dan Drake <dan@dandrake.org> (tiny change)
 
        * src/tar.c (exclude_vcs_files): Support for Bazaar, Mercurial and
-       Darcs. 
+       Darcs.
 
 2008-05-06  Sergey Poznyakoff  <gray@gnu.org.ua>
 
        * tests/incr03.at, tests/incr04.at, tests/rename02.at,
        tests/rename03.at: Insert calls to sleep between creation of files
        and adding them to the archive.
-       
+
 2008-03-31  Sergey Poznyakoff  <gray@gnu.org.ua>
 
        * src/create.c (dump_file0): Count links only for actually dumped
-       files. 
+       files.
 
 2008-03-27  Sergey Poznyakoff  <gray@gnu.org.ua>
 
        * NEWS: Document --no-check-device and --check-device.
        * doc/rendition.texi: Change the way FIXME-*refs are handled in
-       !PROOF. 
+       !PROOF.
        * doc/intern.texi, doc/tar.texi: Update.
        * doc/untabify.el: New file.
        * doc/Makefile.am (EXTRA_DIST): Add untabify.el
        (untabify, final, check-format, check-refs, check-fixmes)
        (check-unrevised, all-check-docs, check-docs): New rules.
-       
+
        * src/common.h (check_device_option): New global.
        * src/incremen.c (procdir): Use boolean and instead of bitwise
        one. Patch by Jean-Louis Martineau.
        --check-device. Proposed by Jean-Louis Martineau.
        (parse_opt): Hanlde new options.
        (decode_options): Initialize check_device_option to true.
-       
+
        * THANKS: Update
 
 2008-03-06  Sergey Poznyakoff  <gray@gnu.org.ua>
        * po/.cvsignore: Update
        * src/system.c: Remove include setenv.h.
        * tests/atlocal.in (STAR_DATA_URL): Update.
-       * tests/star/README: Update URL. 
+       * tests/star/README: Update URL.
 
 2008-02-09  Sergey Poznyakoff  <gray@gnu.org.ua>
 
        Exit with nonzero status if a close fails on an archive.
        Problem (and initial trivial fix)
        * src/buffer.c (close_archive, new_volume): close_error, not
-       close_warn. 
+       close_warn.
 
 2007-12-05  Sergey Poznyakoff  <gray@gnu.org.ua>
 
        this has undefined behavior.  Likewise for assigning arbitrary
        uintmax_t values to other types.
        (read_negative_num, read_unsigned_num, read_timespec):
-       New functions, to check input values a bit more carefuly.
+       New functions, to check input values a bit more carefully.
        (read_num): Use read_unsigned_num.  New arg MAX_VAL;
        all callers changed.
        (read_incr_db_2): Use these new functions.
        * src/delete.c: Remove second argument from calls to name_scan
        * src/update.c: Likewise
        * src/incremen.c (procdir): Use is_individual_file to check for
-       files explicitely specified in the command line. Fixes bug
+       files explicitly specified in the command line. Fixes bug
        reported by Dat Head on 19 Jun 2006 (descending into mountpoints
        with --one-file-system in use)
        * src/misc.c (maybe_backup_file): Second argument is bool
        * src/delete.c (records_skipped): Remove static qualifier, the
        variable is used by print_total_stats in buffer.c
        * src/extract.c (check_time): Use volume_start_time when checking
-       for timestamp plausability.
+       for timestamp plausibility.
        * src/tar.c: (options, parse_opt): Allow for optional argument to
        the --totals option, which specifies a signal upon delivery of which
        the statistics must be output.
 
        * src/transform.c (set_transform_expr,_transform_name_to_obstack):
        Implement NUMBER flag.
-       (add_char_segment): Fix length assignement
+       (add_char_segment): Fix length assignment
 
        * doc/tar.texi: Update
 
        * doc/tar.texi: Update
        * configure.ac (AM_INIT_AUTOMAKE): Use tar-ustar option. Raise
        version requirement to 1.9
-       * src/common.h (struct name): Refactured
+       * src/common.h (struct name): Refactored
        (warn_regex_usage): New variable.
        (dump_file): First argument is const char*.
        (name_init,name_add): Removed
        * src/common.h (struct name): New member `explicit'. Remove unused
        member `isdir'.
        * src/incremen.c (procdir): If name_scan() returns something,
-       check if it was explicitely given in the command line
+       check if it was explicitly given in the command line
        * src/names.c (addname,add_hierarchy_to_namelist): Initialize
        explicit member appropriately.
 
        * src/incremen.c (procdir): If --one-file-system is given and a
        directory is found to be on another device, *and* this directory
-       is explicitely given in the command line, then do not omit it.
+       is explicitly given in the command line, then do not omit it.
 
 2005-12-11  Sergey Poznyakoff  <gray@gnu.org.ua>
 
        (mode_to_chars, off_to_chars, size_to_chars, time_to_chars)
        (uid_to_chars, uintmax_to_chars): Return bool
        (to_chars): Return bool
-       (start_header): Check return values of convertion routines. Fail
+       (start_header): Check return values of conversion routines. Fail
        if unable to store data in the header.
 
 2005-12-07  Sergey Poznyakoff  <gray@gnu.org.ua>
        archives.
        * src/incremen.c (dumpdir_size, get_gnu_dumpdir): New functions.
        (purge_directory): Use stat_info.dumpdir instead of getting its
-       value explicitely.
+       value explicitly.
        * src/list.c (list_archive): Handle incremental backups in pax
        format.
        (decode_header): Initialize stat_info.dumpdir
        * src/sparse.c (sparse_diff_file): Bugfix: set seekable.
        (pax_dump_header): Store sparse map in GNU.sparse.map. If this
-       variable has been explicitely deleted, use GNU.sparse.offset/
+       variable has been explicitly deleted, use GNU.sparse.offset/
        GNU.sparse.numbytes variables.
        * src/tar.c (decode_options): Incremental options are allowed with
        --format=pax
 
        * bootstrap: Fix quoting in help output.
        (update_po): Use backward-compatible wget option --cache instead
-       of deprecated -C to accomodate for wget 1.10.
+       of deprecated -C to accommodate for wget 1.10.
        Changes proposed by Eric Blake
        * THANKS: Add Eric Blake
 
        * src/list.c: Likewise
 
        * tests/multiv03.at: Modified to match the new behavior
-       * tests/multiv04.at: New file. Test splittind directory members between
+       * tests/multiv04.at: New file. Test splitting directory members between
        the archive volumes.
        * tests/Makefile.am: Add multiv04.at
        * tests/testsuite.at: Likewise.
 
        * src/create.c: Do not zero-terminate name field if
        the name is exactly 100 characters long.
-       (write_ustar_long_name): Fixed cheking for unsplittable
+       (write_ustar_long_name): Fixed checking for unsplittable
        names.
 
 2003-11-14  Sergey Poznyakoff  <gray@Mirddin.farlep.net>
        interface.
        (child_open_for_compress): Do not increase size to BLOCKSIZE.
        (open_archive): Open index file name.
-       Strip trailing slahes from file names.
+       Strip trailing slashes from file names.
        (flush_write): Set size to 0 if not saving names.
        (flush_write, flush_read): Use safer_name_suffix rather than
        inline code.
        (decode_options): Dates that look like an absolute path name,
        or that start with '.', are presumed to be file names whose
        dates are taken.
-       Remove 'I' as an aliase for 'T'.
+       Remove 'I' as an alias for 'T'.
        Update copyright.
 
        * src/extract.c (<time.h>): Do not include; system.h now does this.
        See ChangeLog.1 for earlier changes.
 
        -----
-
-       Copyright (C) 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, 2007
-       Free Software Foundation, Inc.
-
-       This file is part of GNU tar.
-
-       GNU tar is free software; you can redistribute it and/or modify
-       it under the terms of the GNU General Public License as published by
-       the Free Software Foundation; either version 3, or (at your option)
-       any later version.
-
-       GNU tar is distributed in the hope that it will be useful,
-       but WITHOUT ANY WARRANTY; without even the implied warranty of
-       MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-       GNU General Public License for more details.
-
-       You should have received a copy of the GNU General Public License
-       along with GNU tar; see the file COPYING.  If not, write to
-       the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
-       Boston, MA 02110-1301, USA.
 \f
 Local Variables:
 mode: change-log
 version-control: never
+buffer-read-only: t
 End: