+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.
+