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