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