+2013-11-17 Sergey Poznyakoff <gray@gnu.org.ua>
+
+ Version 1.27.1
+
+2013-11-17 Sergey Poznyakoff <gray@gnu.org.ua>
+
+ Fix star compatibility (sparse headers)
+
+ * src/sparse.c (star_get_sparse_info): Update file->dumped_size
+
+2013-11-17 Sergey Poznyakoff <gray@gnu.org.ua>
+
+ 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.
+
+2013-11-17 Sergey Poznyakoff <gray@gnu.org.ua>
+
+ 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.
+
+2013-10-06 Sergey Poznyakoff <gray@gnu.org.ua>
+
+ 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 absoulte 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.
+
+2013-09-15 Sergey Poznyakoff <gray@gnu.org.ua>
+
+ 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.
+
+2013-09-13 Paul Eggert <eggert@cs.ucla.edu>
+
+ tar: don't warn about zero timestamps
+
+ * src/extract.c (check_time): Suppress warniing 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.
+
+2013-08-16 Sergey Poznyakoff <gray@gnu.org.ua>
+
+ 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.
+
+2013-08-16 Sergey Poznyakoff <gray@gnu.org.ua>
+
+ 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.
+
+2013-08-04 Sergey Poznyakoff <gray@gnu.org.ua>
+
+ Fix interacton 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.
+
+2013-08-04 Sergey Poznyakoff <gray@gnu.org.ua>
+
+ Bugfix.
+
+ * src/names.c (read_name_from_file): Fix a typo. Remove
+ unused variable.
+
+2013-08-04 Sergey Poznyakoff <gray@gnu.org.ua>
+
+ Reduce memory consuption 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 misfunctioned
+ when given empty file lists or lists with the trailing newline
+ misssing 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.
+
+2013-04-25 Paul Eggert <eggert@cs.ucla.edu>
+
+ 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.
+
+2013-04-25 Paul Eggert <eggert@cs.ucla.edu>
+
+ 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.
+
+2013-03-12 Sergey Poznyakoff <gray@gnu.org.ua>
+
+ 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
+
+2012-12-31 Paul Eggert <eggert@cs.ucla.edu>
+
+ 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):
+
+2012-12-23 Paul Eggert <eggert@cs.ucla.edu>
+
+ 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.
+
+2012-12-22 Paul Eggert <eggert@cs.ucla.edu>
+
+ 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.
+
+2012-12-19 Paul Eggert <eggert@cs.ucla.edu>
+
+ * .gitignore: Regenerate.
+
+2012-12-19 Paul Eggert <eggert@cs.ucla.edu>
+
+ 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.
+
+2012-12-19 Paul Eggert <eggert@cs.ucla.edu>
+
+ 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.
+
+2012-11-19 Sergey Poznyakoff <gray@gnu.org.ua>
+
+ 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.
+
+2012-11-19 Pavel Raiskup <praiskup@redhat.com>
+
+ 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.
+
+2012-11-19 Pavel Raiskup <praiskup@redhat.com>
+
+ 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.
+
+2012-11-18 Pavel Raiskup <praiskup@redhat.com>
+
+ 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.
+
+2012-11-18 Pavel Raiskup <praiskup@redhat.com>
+
+ Add basic suuport 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-incrfental 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 afterwards.
+ 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>.
+
+2012-06-27 Paul Eggert <eggert@cs.ucla.edu>
+
+ 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'.
+
+2012-04-25 Paul Eggert <eggert@cs.ucla.edu>
+
+ * 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.
+
+2012-01-18 Paul Eggert <eggert@cs.ucla.edu>
+
+ 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 Peformance 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"
+
+2011-11-17 Sergey Poznyakoff <gray@gnu.org.ua>
+
+ 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.
+
+2011-09-19 Nathan Stratton Treadway <nathanst+bugtar@ontko.com>
+
+ 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.
+
+2011-08-13 Paul Eggert <eggert@cs.ucla.edu>
+
+ .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 filags 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.
+
+2011-06-08 Paul Eggert <eggert@cs.ucla.edu>
+
+ 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.
+
+2011-03-12 Sergey Poznyakoff <gray@gnu.org.ua>
+
+ 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.
+
+2010-11-24 Paul Eggert <eggert@cs.ucla.edu>
+
+ 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>.
+
+2010-11-23 Paul Eggert <eggert@cs.ucla.edu>
+
+ * 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.
+
+2010-11-23 Paul Eggert <eggert@cs.ucla.edu>
+
+ 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.
+
+2010-11-23 Paul Eggert <eggert@cs.ucla.edu>
+
+ 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 contais 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.
+
+2010-11-15 Sergey Poznyakoff <gray@gnu.org.ua>
+
+ 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.
+
+2010-10-28 Paul Eggert <eggert@cs.ucla.edu>
+
+ 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 appendig 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 encounted".
+
+2010-10-27 Paul Eggert <eggert@cs.ucla.edu>
+
+ 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.
+
+2010-10-27 Paul Eggert <eggert@cs.ucla.edu>
+
+ tar: don't use "((" in shell scripts
+
+ * tests/extrac11.at: Replace "((" with "( (" in shell scripts, as
+ "((" is not portable to the Korn shell, and POSIX 1003.1-2008 says
+ that "((" is not portable.
+
+2010-10-26 Sergey Poznyakoff <gray@gnu.org.ua>
+
+ Make sure name matching occurs before name transformation.
+
+ The commit 9c194c99 altered that order.
+
+ * src/list.c (transform_stat_info): New function. Split off from
+ decode_header.
+ (read_and): Call transform_stat_info right before do_something,
+ and after deciding if we should proceed with this member name,
+ so that name matching occurs before name transformation.
+
+ * tests/extrac17.at: New file.
+ * tests/Makefile.am (TESTSUITE_AT): Add extrac17.at
+ * tests/testsuite.at: Include extrac17.at.
+
+2010-10-26 Paul Eggert <eggert@cs.ucla.edu>
+
+ tar: don't assume stdin is open when testing fd limits
+
+ * tests/extrac11.at: Redirect stdin from /dev/null, in case
+ the parent 'make' is running with stdin closed.
+
+2010-10-26 Sergey Poznyakoff <gray@gnu.org.ua>
+
+ Further fixes in bootstrap.
+
+ * bootstrap: Restore the default for gnulib_path
+ (symlink_to_dir): Re-apply 67cad07.
+
+2010-10-26 Paul Eggert <eggert@cs.ucla.edu>
+
+ tar: fix bug with -C and extracting directories
+
+ Problem reported by Denis Excoffier in
+ <http://lists.gnu.org/archive/html/bug-tar/2010-10/msg00034.html>.
+
+ * src/extract.c (extract_dir): Use mkdirat, not mkdir.
+ * tests/extrac16.at: New file, to test for this bug.
+ * tests/Makefile.am (TESTSUITE_AT): Add it.
+ * tests/testsuite.at: Include it.
+
+ This file is a placeholder. It will be replaced with the actual
+ ChangeLog
+ by make dist. Run make ChangeLog if you wish to create it
+ earlier.
+
+2010-10-25 Sergey Poznyakoff <gray@gnu.org.ua>
+
+ Version 1.24
+
+ * configure.ac, NEWS: Version 1.24
+ * bootstrap: Restore tar-specific code lost during last
+ sync from gnulib (241b72ffad).
+ * src/misc.c (chdir_do): Remove unused automatic variable.
+
+2010-10-16 Paul Eggert <eggert@cs.ucla.edu>
+
+ tar: use more-accurate diagnostic when intermediate mkdir fails
+
+ Without this change, if tar tried to extract a file A/B/C, noticed
+ that A/B didn't exist, attempted to mkdir A/B, and the mkdir
+ failed, it did not diagnose the mkdir failure, but simply reported
+ the failure to open A/B/C. This sometimes led to confusion
+ because it wasn't clear what tar was trying to do, in particular
+ that tar tried to mkdir A/B. With this patch, tar issues two
+ diagnostics in this case: one for A/B and the other for A/B/C.
+ Problem reported by Hauke Laging in
+ <http://lists.gnu.org/archive/html/bug-tar/2010-10/msg00020.html>.
+ * gnulib.modules: Remove faccessat.
+ * src/extract.c (make_directories): New arg INTERDIR_MADE.
+ Diagnose mkdir failure. Return 0 on success, nonzero on failure,
+ as opposed to nonzero iff some directory was created. All callers
+ changed. Simplify the code when mkdir fails, by checking whether
+ the desired file exists unless errno==EEXIST: this is more robust.
+ * tests/extrac15.at: New test, to check this.
+ * tests/Makefile.am (TESTSUITE_AT): Add it.
+ * tests/testsuite.at: Include it.
+
+2010-10-16 Paul Eggert <eggert@cs.ucla.edu>
+
+ tests: port to NFS file servers with clock skew
+
+ Several of the tests assumed that a newly created file cannot
+ have a time stamp dated in the future. This assumption is not
+ true when files are served by a remote host whose clock is
+ slightly in advance of ours. Fix the problems that I observed
+ when running "make check" a couple of times on such a server.
+
+ * tests/backup01.at: Use --warning=no-timestamp to suppress
+ clock-skew warnings.
+ * tests/chtype.at, tests/comprec.at, tests/exclude06.at:
+ * tests/extrac01.at, tests/extrac03.at, tests/extrac05.at:
+ * tests/extrac06.at, tests/extrac08.at, tests/extrac13.at:
+ * tests/extrac14.at, tests/incr01.at, tests/incr03.at,
+ tests/link01.at:
+ * tests/multiv01.at, tests/multiv02.at, tests/multiv03.at:
+ * tests/pipe.at, tests/rename02.at, tests/rename03.at:
+ * tests/rename05.at, tests/same-order01.at, tests/same-order02.at:
+ * tests/sparse01.at:
+ Likewise.
+
+2010-10-12 Paul Eggert <eggert@cs.ucla.edu>
+
+ gnulib: sync from latest gnulib, notably bootstrap and
+ parse-datetime
+
+ * bootstrap: Sync from gnulib.
+ * doc/.gitignore: Rename getdate.texi to parse-datetime.texi.
+ * doc/Makefile.am (tar_TEXINFOS): Likewise.
+ * doc/tar.texi (Top): Adjust to renaming of getdate to
+ parse-datetime.
+ * gnulib.modules: Likewise. Also, remove ftruncate (now
+ obsolete).
+ And add inttostr (we missed this dependency).
+ * src/tar.c: Include parse-datetime.h, not getdate.h. All calls
+ to get_date replaced with parse_datetime.
+
+2010-09-24 Paul Eggert <eggert@cs.ucla.edu>
+
+ tar: -x -C symlink fix
+
+ * src/misc.c (chdir_do): Don't use O_NOFOLLOW when opening the
+ argument to -C. This is for consistency with "tar -c -C FOO", and
+ matches the new documentation.
+ * tests/extrac14.at: New file.
+ * tests/Makefile.am (TESTSUITE_AT): Add it.
+ * tests/testsuite.at: Include it.
+
+2010-09-24 Paul Eggert <eggert@cs.ucla.edu>
+
+ tar: --dereference consistency
+
+ This closes another race condition, that occurs when overwriting a
+ symlink with a regular file.
+ * NEWS (--dereference consistency): New section.
+ * doc/tar.texi (Option Summary): Describe new --deference
+ behavior.
+ (dereference): Likewise. Remove discussion that I didn't follow,
+ even before --dereference was changed.
+ * src/common.h (deref_stat, set_file_atime): Adjust signatures.
+ * src/compare.c (diff_file, diff_multivol): Respect
+ open_read_flags
+ instead of rolling our own flags. This implements the new
+ behavior
+ for --dereference.
+ (diff_file, diff_dumpdir): Likewise, for fstatat_flags.
+ * src/create.c: Adjust to set_file_atime signature change.
+ * src/extract.c (mark_after_links, file_newer_p, extract_dir):
+ Likewise.
+ * src/incremen.c (try_purge_directory): Likewise.
+ * src/misc.c (maybe_backup_file): Likewise.
+ * src/extract.c (file_newer_p): New arg STP. All callers changed.
+ (maybe_recoverable): New arg REGULAR. All callers changed.
+ Handle the case of overwriting a symlink with a regular file,
+ when --overwrite is specified but --dereference is not.
+ (open_output_file): Add O_CLOEXEC, O_NOCTTY, O_NONBLOCK for
+ consistency with file creation. Add O_NOFOLLOW if
+ overwriting_old_files && ! dereference_option.
+ * src/incremen.c (update_parent_directory): Use fstat, not
+ fstatat;
+ there's less to go wrong.
+ * src/misc.c (deref_stat): Remove DEREF arg. All callers changed.
+ Instead, use fstatat_flags.
+ (set_file_atime): Remove ATFLAG arg. All callers changed.
+ Instead, use fstatat_flags.
+ * src/names.c, src/update.c: Adjust to deref_stat signature
+ change.
+ * src/tar.c (get_date_or_file): Use stat, not deref_stat, as this
+ is not a file to be archived.
+ * tests/Makefile.am (TESTSUITE_AT): Add extrac13.at.
+ * tests/extrac13.at: New file.
+ * tests/testsuite.at: Include it.
+
+2010-09-20 Paul Eggert <eggert@cs.ucla.edu>
+
+ tar: do not crash with --listed-incremental
+
+ Problem reported by Frantisek Hanzlik in
+ <https://bugzilla.redhat.com/635318> via Kamil Dudka in
+ <http://lists.gnu.org/archive/html/bug-tar/2010-09/msg00066.html>.
+ I don't understand this code either, but Sergey can take a look at
+ this patch, and perhaps install a better one, when he has
+ the time.
+ * src/incremen.c (append_incremental_renames): Don't actually
+ append
+ anything to DIR if DIR is null.
+
+2010-09-19 Paul Eggert <eggert@cs.ucla.edu>
+
+ tar: prefer openat-style functions
+
+ This change replaces traditional functions like 'open' with the
+ POSIX.1-2008 functions like 'openat'. Mostly this is an internal
+ refactoring change, in preparation for further changes to close
+ some races.
+ * gnulib.modules: Add faccessat, linkat, mkfifoat, renameat,
+ symlinkat.
+ Remove save-cwd.
+ * src/Makefile.am (tar_LDADD): Add $(LIB_EACCESS).
+ * tests/Makefile.am (LDADD): Likewise.
+ * src/common.h (chdir_fd): New extern var.
+ * src/compare.c (diff_file, diff_multivol): Use openat instead
+ of open.
+ * src/create.c (create_archive, restore_parent_fd): Likewise.
+ * src/extract.c (create_placeholder_file): Likewise.
+ * src/names.c (collect_and_sort_names): Likewise.
+ * src/update.c (append_file): Likewise.
+ * src/compare.c (diff_symlink): Use readlinkat instead of
+ readlink.
+ * src/compare.c (diff_file): Use chdir_fd instead of AT_FDCWD.
+ * src/create.c (subfile_open, dump_file0): Likewise.
+ * src/extract.c (fd_chmod, fd_chown, fd_stat, set_stat):
+ (repair_delayed_set_stat, apply_nonancestor_delayed_set_stat):
+ Likewise.
+ * src/extract.c (mark_after_links, file_newer_p, extract_dir):
+ (extract_link, apply_delayed_links):
+ Use fstatat rather than stat or lstat.
+ * src/misc.c (maybe_backup_file, deref_stat): Likewise.
+ * src/extract.c (make_directories): Use mkdirat rather than mkdir.
+ Use faccessat rather than access. This fixes a minor permissions
+ bug when tar is running setuid (who would want to do that?!).
+ (open_output_file): Use openat rather than open.
+ In the process, this removes support for Masscomp's O_CTG files,
+ which aren't compatible with openat's signature. Masscomp! Wow!
+ That's a blast from the past. As far as I know, that operating
+ system hasn't been supported for more than 20 years.
+ (extract_link, apply_delayed_links):
+ Use linkat rather than link.
+ (extract_symlink, apply_delayed_links):
+ Use symlinkat rather than symlink.
+ (extract_node): Use mknodat rather than mknod.
+ (extract_fifo): Use mkfifoat rather than mkfifo.
+ (apply_delayed_links): Use unlinkat rather than unlink or rmdir.
+ * src/misc.c (safer_rmdir, remove_any_file): Likewise.
+ * src/unlink.c (flush_deferred_unlinks): Likewise.
+ * src/extract.c (rename_directory): Use renameat rather than
+ rename.
+ * src/misc.c (maybe_backup_file, undo_last_backup): Likewise.
+ * src/misc.c: Don't include <save-cwd.h>; no longer needed now
+ that we're using openat etc.
+ (struct wd): Add member fd. Remove members err and fd. All uses
+ changed.
+ (CHDIR_CACHE_SIZE): New constant.
+ (wdcache, wdcache_count, chdir_fd): New vars.
+ (chdir_do): Use openat rather than save_cwd. Keep the cache up
+ to date. This code won't scale well, but is good enough for now.
+ * src/update.c (update_archive): Use openat + fdopendir +
+ streamsavedir rather than savedir.
+
+ This file is a placeholder. It will be replaced with the actual
+ ChangeLog
+ by make dist. Run make ChangeLog if you wish to create it
+ earlier.
+
+2010-09-18 Paul Eggert <eggert@cs.ucla.edu>
+
+ tar: add utimens.h includes
+
+ * src/extract.c: Include <utimens.h>, needed for fdutimens
+ prototype.
+ * src/misc.c: Likewise.
+
+2010-09-18 Paul Eggert <eggert@cs.ucla.edu>
+
+ tar: switch to gnulib fdutimensat module
+
+ * gnulib.modules: Add fdutimensat.
+ * src/common.h (fd_utimensat): Remove decl.
+ * src/extract.c (set_stat): Call fdutimensat, not fd_utimensat.
+ * src/misc.c (set_file_atime): Likewise.
+ (fd_utimensat): Remove.
+
+2010-09-17 Paul Eggert <eggert@cs.ucla.edu>
+
+ tar: extract permissions for . last
+
+ * src/common.h (must_be_dot_or_slash): New decl.
+ * src/extract.c (mark_after_links): New function, taking code
+ that used to be in create_placeholder_file.
+ (create_placeholder_file): Use it.
+ (delay_set_stat): Always delay setting status for . and /.
+ * src/misc.c (must_be_dot_or_slash): Now extern.
+ * tests/extrac12.at: New file.
+ * tests/Makefile.am (TESTSUITE_AT): Add it.
+ * tests/testsuite.at: Likewise.
+
+2010-09-17 Paul Eggert <eggert@cs.ucla.edu>
+
+ tar: don't check for getdtablesize; use AC_CHECK_FUNCS_ONCE
+
+ * configure.ac: Don't check for getdtablesize; no longer needed.
+ Use AC_CHECK_FUNCS_ONCE rather than AC_CHECK_FUNCS, for
+ efficiency.
+
+2010-09-17 Paul Eggert <eggert@cs.ucla.edu>
+
+ tar: extract symlink attributes, close some symlink-related races
+
+ * NEWS: Describe symlink-extraction improvements.
+ * src/extract.c (enum permstatus): Remove.
+ (fchmod, fchown): Define dummy replacement macros if the system
+ does not supply them.
+ (implemented): New function.
+ (struct delayed_set_stat): Remove members invert_permissions,
+ permstatus. They were too confusing, and tried to do too much
+ in too-little space. Instead, add members current_mode,
+ current_mode_mask, interdir, atflag. All users changed.
+ (struct delayed_link): Add members mode, atime, mtime, to support
+ platforms such as BSD where symlinks have these attributes.
+ All users changed.
+ (fd_chmod): Renamed from fdchmod. New argument atflag. Check for
+ operation not supported at run-time, not at configure-time. Put
+ fd argument first. All callers changed.
+ (fd_chown): Likewise, renaming from fdchown.
+ (fd_stat): Likewise, renaming from fdstat.
+ (set_mode): Remove args stat_info, cur_info, invert_permissions,
+ permstatus. Add args mode, mode_mask, current_mode,
+ current_mode_mask,
+ atflag. All callers changed. Close some races. Use an easier-to
+ understand method for computing permissions. Work around POSIX
+ incompatibility in Linux fchmodat. Support extraction of symlink
+ modes, if the OS allows it.
+ (set_stat): Remove args cur_info, invert_permissions, permstatus.
+ Add args current_mode, current_mode_mask, interdir, atflag.
+ All callers changed. Close some races. Support extraction of
+ attributes on symlinks, if the OS allows it.
+ (delay_set_stat): Remove args invert_permissions, permstatus.
+ Add args current_mode, current_mode_mask, mode, atflag.
+ The ST arg can be null now, indicating that it's an intermediate
+ directory. All callers changed.
+ (repair_delayed_set_stat, apply_nonancestor_delayed_set_stat):
+ Close some races.
+ (extract_dir): Also be paranoid if only --same-permissions, due
+ to semantics of setgid and setuid directories on some hosts.
+ This closes a race on those hosts. Simplify calculation of
+ delay_set_stat arguments; the old code was truly strange and
+ probably wrong in some border cases.
+ (extract_dir, extract_file, extract_node, extract_fifo): Don't
+ rely on
+ unspecified behavior in mode arg of open, mknod, etc. Instead,
+ mask out those bits when creating the file, and add them later via
+ fchmod or chmodat.
+ (open_output_file): file_name is now const. Add arg current_mode,
+ current_mode_mask. All callers changed. When overwriting
+ old files,
+ refuse to overwrite something that is not a regular file, since
+ we're extracting a regular file.
+ (extract_file): Remove the FIXME comment. Whatever the protection
+ issues were, they should be fixed now. As a result of all
+ the other
+ API changes, we now use fchmod etc. rather than chmod etc.,
+ closing
+ some races.
+ (create_placeholder_file, apply_delayed_links): Record desired
+ mode and times for symlinks, for OSes that support that.
+
+2010-09-16 Paul Eggert <eggert@cs.ucla.edu>
+
+ tar: tar -x without --incremental no longer sets atime again
+
+ * src/extract.c (set_stat): Use UTIME_OMIT rather than UTIME_NOW.
+ The UTIME_NOW was there only to emulate the previous behavior of
+ using the current time, and the previous behavior was there only
+ because before we started assuming POSIX.1-2008 there was no
+ portable way to get the effect of UTIME_NOW.
+
+2010-09-16 Paul Eggert <eggert@cs.ucla.edu>
+
+ tar: another --atime-preserve race fix
+
+ * src/common.h (set_file_atime): Add parentfd arg.
+ * src/compare.c (diff_file): Use it.
+ * src/create.c (dump_file0): Likewise. This closes yet another
+ race condition with symbolic links.
+ * src/misc.c (set_file_atime): Add parentfd arg.
+
+2010-09-16 Paul Eggert <eggert@cs.ucla.edu>
+
+ tar: --atime-preserve fixes for races etc.
+
+ This patch fixes a race condition in the --atime-preserve=replace
+ option, which might cause tar to improperly follow a symbolic
+ link.
+
+ It also drops the use of the _FIOSATIME ioctl of Solaris 2.x
+ and later, which loses resolution on time stamps. Modern Solaris
+ systems support full-resolution time stamps in the kernel, and
+ it's not worth the hassle of testing this call, useful only in
+ no-longer-supported Solaris variants.
+
+ Also, it undoes a change I recently introduced to the --compare
+ option, which caused it to not follow symbolic links unless the
+ --dereference option was also used. Quite possibly this change is
+ a good idea, but the old behavior was documented and the change
+ should not have been installed casually.
+
+ * configure.ac: Don't check for stropts.h and sys/filio.h.
+ * gnulib.modules: Add futimens, utimensat. Remove futimens.
+ * src/common.h (fd_utimensat): New decl.
+ * src/compare.c (diff_file, diff_multivol):
+ Don't use open_read_flags: those are for --create only.
+ * src/create.c (dump_file0): Adjust to set_file_atime changes.
+ Pass fstatat_flags to set_file_atime, so that symbolic links are
+ not followed inadvertantly.
+ * src/extract.c: Don't include utimens.h.
+ (set_stat): Use fd_utimensat ant UTIME_NOW rather than fdutimens.
+ * src/misc.c: Don't include utimens.h, stropts.h, sys/filio.h.
+ (fd_utimensat): New function.
+ (set_file_atime): Use it. New arg atflag, controlling symlink
+ handling. All callers changed.
+
+2010-09-14 Paul Eggert <eggert@cs.ucla.edu>
+
+ * configure.ac: tar: close some race conditions when extracting
+
+ * configure.ac: Check for fchmod and fchown. Don't check
+ for utimes.
+ * src/extract.c (fdchmod, fdchown, fdstat): New functions.
+ (set_mode, set_stat): New arg FD. All callers changed.
+ This avoids some race conditions between closing a regular file
+ and setting its metadata, and it's a bit faster.
+
+2010-09-13 Paul Eggert <eggert@cs.ucla.edu>
+
+ tar: don't worry about fdopendir closing its argument
+
+ * NEWS: Don't mention dirfd; no longer needed.
+ * gnulib.modules: Remove dirfd.
+ * src/create.c (get_directory_entries): Remove the code dealing
+ with dirfd failures, as the new fdopendir replacement doesn't
+ close its argument so we don't need to call dirfd. See
+ <http://lists.gnu.org/archive/html/bug-gnulib/2010-09/msg00208.html>
+ and gnulib commit 970c9038e4cca46e1b037ae0a6d574dfae6a7327.
+
+2010-09-13 Paul Eggert <eggert@cs.ucla.edu>
+
+ * NEWS: Fix wording typo in previous change.
+
+ Reported by Jim Meyering.
+
+2010-09-13 Paul Eggert <eggert@cs.ucla.edu>
+
+ tar: live within system-supplied limits on file descriptors
+
+ * NEWS: Note the change. Mention dirfd and fdopendir.
+ * gnulib.modules: Add dirfd and fdopendir. The code was already
+ using fdopendir; dirfd is a new need.
+ * src/common.h (open_searchdir_flags, get_directory_entries):
+ (subfile_open, restore_parent_fd, tar_stat_close): New decls.
+ (check_exclusion_tags): Adjust signature to match code change.
+ * src/create.c (IMPOSTOR_ERRNO): New constant.
+ (check_exclusion_tags): First arg is now a struct tar_stat_info
+ const *, not an fd. All callers changed.
+ (dump_regular_file, dump_file0): A zero fd represents an unused
+ slot, so play it safe if the fd member is zero here. A negative
+ fd represents the negation of an errno value, so play it safe and
+ do not assign -1 to fd merely because an open fails.
+ (open_failure_recover, get_directory_entries, restore_parent_fd):
+ (subfile_open): New functions. These help to recover from file
+ descriptor exhaustion.
+ (dump_dir, dump_file0): Use them.
+ (dump_file0): Use tar_stat_close instead of rolling our own close.
+ * src/incremen.c (scan_directory): Use get_directory_entries,
+ subfile_open, etc., to recover from file descriptor exhaustion.
+ * src/names.c (add_hierarchy_to_namelist): Likewise.
+ (collect_and_sort_names): A negative fd represents the negation
+ of an errno value, so play it safe and do not assign -1 to fd.
+ * src/tar.c (decode_options): Set open_searchdir_flags.
+ Add O_CLOEXEC to all the open flags.
+ (tar_stat_close): New function, which knows how to deal with
+ new convention for directory streams and file descriptors.
+ Diagnose 'close' failures.
+ (tar_stat_destroy): Use it.
+ * src/tar.h (struct tar_stat_info): New member dirstream.
+ fd now has the negative of an errno value, not merely -1, if
+ the file could not be opened, so that failures to reopen
+ directories
+ are better-diagnosed later.
+ * tests/Makefile.am (TESTSUITE_AT): Add extrac11.at.
+ * tests/testsuite.at: Likewise.
+ * tests/extrac11.at: New file.
+
+2010-09-08 Paul Eggert <eggert@cs.ucla.edu>
+
+ tar: improve documentation of reliability and security issues
+
+ * doc/tar.texi (Reliability and security, Reliability):
+ (Permissions problems, Data corruption and repair, Race
+ conditions):
+ (Security, Privacy, Integrity, Live untrusted data):
+ (Security rules of thumb): New nodes.
+
+2010-09-06 Paul Eggert <eggert@cs.ucla.edu>
+
+ tar: more reliable directory traversal when creating archives
+
+ * NEWS: Document this.
+ * gnulib.modules: Add openat, readlinkat.
+ * src/common.h (open_read_flags, fstatat_flags): New global
+ variables.
+ (cachedir_file_p, dump_file, check_exclusion_tags,
+ scan_directory):
+ Adjust to new signatures, described below.
+ (name_fill_directory): Remove.
+ * src/compare.c (diff_file, diff_multivol): Use open_read_flags.
+ * src/create.c (struct exclusion_tag): Exclusion predicates
+ now take
+ a file descriptor, not a file name.
+ (add_exclusion_tag): Likewise. All uses changed.
+ (cachedir_file_p): Likewise.
+ (check_exclusion_tags): The directory is now a file descriptor,
+ not a file name. All uses changed. Use openat for better
+ traversal.
+ (file_dumpable_p): Arg is now a struct stat, not a struct
+ tar_stat_info. All uses changed. Check the arg's file types too.
+ (dump_dir0, dump_dir, dump_file0, dump_file): Omit top_level and
+ parent_device args, since st->parent tells us that now. All uses
+ changed.
+ (dump_dir): Likewise. Also, omit fd arg for similar reasons.
+ Apply fdsavedir to a dup of the file descriptor, since we need a
+ file descriptor for openat etc. as well, and fdsavedir (perhaps
+ unwisely) consumes its file descriptor when successful.
+ Do not consume st->fd when successful; this simplifies the caller.
+ (create_archive): Allocate a file descriptor when retraversing
+ a directory, during incremental dumps.
+ (dump_file0): Use fstatat, openat, and readlinkat for better
+ traversal.
+ When opening a file, use the result of fstat on the file
+ descriptor
+ rather than the fstatat on the directory entry, to avoid some race
+ conditions. No need to reopen the directory since we now
+ no longer
+ close it. Change "did we open the file?" test from 0 <= fd to
+ 0 < fd since fd == 0 now represents uninitialized.
+ (dump_file): Now accepts struct tar_stat_info describing parent,
+ not parent_device. Also, accept basename and fullname of entry.
+ All uses changed.
+ * src/incremen.c (update_parent_directory): Accept struct
+ tar_stat_info for parent, not name. All callers changed.
+ Use fstatat for safer directory traversal.
+ (procdir): Accept struct tar_stat_info, not struct stat and
+ dev_t, for info about directory. All callers changed.
+ (scan_directory): Accept struct tar_stat_info, not name,
+ device, and cmdline, for info about directory. All callers
+ changed. Do not consume the file descriptor, since caller
+ might need it. Use fstatat and openat for safer directory
+ traversal; also, use fstat after opening to double-check.
+ (name_fill_directory): Remove.
+ * src/names.c (add_hierarchy_to_namelist): Accept struct
+ tar_stat_info instead of device and cmdline. All callers changed.
+ When descending into a subdirectory, use openat and fstat for
+ safer directory traversal.
+ (collect_and_sort_names): Use open and fstat for safer directory
+ traversal. Set up struct tar_stat_info for callee's new API.
+ * src/tar.c (decode_options): Initialize open_read_flags
+ and fstatat_flags.
+ (tar_stat_destroy): Close st->fd if it is positive (not zero!).
+ * src/tar.h (struct tar_stat_info): New members parent, fd.
+ * src/update.c (update_archive): Adjust to dump_file's API change.
+ * tests/filerem02.at: Ignore stderr since its contents now depend
+ on the file system implementation.
+
+2010-09-05 Paul Eggert <eggert@cs.ucla.edu>
+
+ tar: remove lint discovered by Sun C compiler
+
+ * src/common.h (WARN_ALL): Don't mask with 0xffffffff; on a 32-bit
+ host, 0xffffffff is of type 'unsigned int', which makes WARN_ALL
+ an unsigned int value that is too large to fit into an int, and
+ the C standard says that this has undefined behavior. The mask is
+ not needed, so omit it.
+
+2010-09-04 Paul Eggert <eggert@cs.ucla.edu>
+
+ tar: restore macros that are used in some cases
+
+ * src/tar.c (LOW_DENSITY_NUM, MID_DENSITY_NUM, HIGH_DENSITY_NUM):
+ Restore these macros, undoing the previous change to this file.
+ The macros are used after all, in some cases. Sorry about that.
+
+2010-09-03 Paul Eggert <eggert@cs.ucla.edu>
+
+ tar: remove unused macros
+
+ * src/create.c (UINTMAX_TO_CHARS): Remove; no longer used.
+ * src/tar.c (LOW_DENSITY_NUM, MID_DENSITY_NUM, HIGH_DENSITY_NUM):
+ Likewise.
+ * src/incremen.c (DIR_IS_NEW): Comment out; not used.
+ Mark this with a FIXME, since it looks like it should be used.
+
+2010-08-27 Sergey Poznyakoff <gray@gnu.org.ua>
+
+ Fix --remove-files in update/append mode.
+
+ * src/update.c (update_archive): Call finish_deferred_unlinks when
+ done.
+
+2010-08-26 Paul Eggert <eggert@cs.ucla.edu>
+
+ tar: avoid assumptions about root access and chmod -w in test
+ cases
+
+ * tests/extrac07.at, tests/extrac09.at, tests/listed03.at: Use
+ AT_UNPRIVILEGED_PREREQ, since this test requires non-root
+ privileges.
+ * tests/extrac07.at: Don't use "chmod -w", as POSIX says it's not
+ portable to start a chmod permissions-list with "-" as it may be
+ confused with an option. Use "chmod a-w" instead.
+
+2010-08-26 Paul Eggert <eggert@cs.ucla.edu>
+
+ tar: fix bug with -C and delayed setting of metadata
+
+ * src/common.h (chdir_current): New decl.
+ * src/extract.c (struct delayed_set_stat, struct delayed_link):
+ New member change_dir.
+ (delay_set_stat, create_placeholder_file): Set it.
+ (apply_nonancestor_delayed_set_stat, apply_delayed_links): Use it.
+ (extract_link): Check that the links are all relative to the same
+ directory.
+ (extract_archive): Restore the current directory after
+ apply_nonancestor_delayed_set_stat has possibly changed it.
+ * src/misc.c (chdir_current): New external var; this used to
+ be the private static variable 'previous' inside chdir_dir.
+ All uses changed.
+ * tests/Makefile.am (TESTSUITE_AT): New test extrac10.at.
+ * tests/extrac10.at: New file.
+ * tests/testsuite.at: Include it.
+
+2010-08-25 Sergey Poznyakoff <gray@gnu.org.ua>
+
+ Don't apply file transformations to volume names.
+
+ * src/list.c (decode_header): Don't apply file transformations
+ to volume names.
+ * tests/xform01.at: New testcase.
+ * tests/xform-h.at (xform): Rename macro to xformtest. Use
+ pushdef/popdef.
+ * tests/Makefile.am, tests/testsuite.at: Add xform01.at
+
+2010-08-25 Paul Eggert <eggert@cs.ucla.edu>
+
+ tar: optimize -c --sparse when file is entirely sparse
+
+ * src/sparse.c (sparse_scan_file): If the file is entirely sparse,
+ that is, if ST_NBLOCKS is zero, don't bother scanning for nonzero
+ blocks. Idea by Kit Westneat, communicated by Bernd Schubert in
+ <http://lists.gnu.org/archive/html/bug-tar/2010-08/msg00038.html>.
+ Also, omit unnecessary lseek at start of file.
+
+2010-08-25 Paul Eggert <eggert@cs.ucla.edu>
+
+ tar: don't assume size of a sparse file chunk fits in size_t
+
+ * src/tar.h (struct sp_array): Change numbytes from size_t
+ to off_t.
+ All uses changed.
+ * scripts/xsparse.c (struct sp_array): Likewise.
+ Include <stdint.h>, for SIZE_MAX.
+ (expand_sparse): Don't try to allocate a buffer bigger than
+ SIZE_MAX bytes.
+ * src/common.h (SIZE_TO_CHARS, size_to_chars, SIZE_FROM_HEADER):
+ (size_from_header): Remove decls.
+ * src/create.c (size_to_chars): Remove.
+ * src/list.c (size_from_header): Remove.
+ * src/sparse.c (sparse_extract_region, check_data_region):
+ (oldgnu_add_sparse, oldgnu_store_sparse_info, pax_decode_header):
+ Don't assume chunk sizes fit in size_t.
+ (oldgnu_add_sparse): Check for off_t overflow.
+ * src/xheader.c (sparse_numbytes_decoder, sparse_map_decoder):
+ Likewise.
+
+2010-08-25 Paul Eggert <eggert@cs.ucla.edu>
+
+ tar: use ctime, not mtime, when checking placeholders
+
+ * src/extract.c (struct delayed_link): Rename member mtime
+ to ctime.
+ All uses changed to use ctime rather than mtime.
+
+2010-08-24 Paul Eggert <eggert@cs.ucla.edu>
+
+ tar: add comment to link04.at test
+
+ * tests/link04.at: Add explanatory comment at head.
+
+2010-08-24 Paul Eggert <eggert@cs.ucla.edu>
+
+ tar: fix 1.23 Solaris regression related to PRIV_SYS_LINKDIR
+
+ The idea was suggested by Petr Sumbera in the thread starting
+ here:
+ http://lists.gnu.org/archive/html/bug-tar/2010-08/msg00000.html
+ * src/extract.c (set_mode): Save the errno of the chmod that
+ failed, for the benefit of chmod_error_details. Do not bother
+ retrying chmod unless the mode suggests setuid is the issue.
+ (extract_archive): Remove redundant call to
+ priv_set_remove_linkdir.
+ * src/system.c: Include priv-set.h.
+ (sys_spawn_shell, sys_child_open_for_compress):
+ (sys_child_open_for_uncompress, sys_exec_command):
+ (sys_exec_info_script, sys_exec_checkpoint_script):
+ Invoke priv_set_restore_linkdir before execv or execlp, so that
+ the subprocess has the same privileges that tar originally did.
+
+2010-08-24 Paul Eggert <eggert@cs.ucla.edu>
+
+ tar: handle files that occur multiple times but have link count 1
+
+ This patch was inspired by the following patch that addressed a
+ similar problem in GNU coreutils du:
+ http://git.savannah.gnu.org/gitweb/?p=coreutils.git;h=efe53cc72b599979ea292754ecfe8abf7c839d22
+ * src/common.h (name_count): New decl.
+ * src/create.c (trivial_link_count): New static var.
+ (create_archive): Initialize it.
+ (dump_hard_link, file_count_links): Use it, so that files with
+ link count 1 are handled correctly when they are found multiple
+ times.
+ * src/names.c (allocated_entries): Renamed from allocated_names,
+ since the identifier's name was misleading. All uses changed.
+ (entries): Renamed from names. All uses changed.
+ (scanned): Renamed from name_index. All uses changed.
+ (name_count): New var.
+ (name_add_name): Increment it.
+ * tests/link04.at: New file.
+ * tests/testsuite.at: Add it.
+ * tests/Makefile.am (TESTSUITE_AT): Likewise.
+
+2010-08-23 Paul Eggert <eggert@cs.ucla.edu>
+
+ tar: use nlink_t for link counts
+
+ * src/create.c (struct link): nlink is now of type nlink_t,
+ not size_t.
+
+2010-08-23 Paul Eggert <eggert@cs.ucla.edu>
+
+ tar: don't export names that aren't used elsewhere
+
+ * src/common.h (file_dumpable_p, gid_to_chars, major_to_chars):
+ (minor_to_chars, mode_to_chars, uid_to_chars, uintmax_to_chars):
+ (string_to_chars, dumpdir_creat0, dumpdir_create, dumpdir_free):
+ (dumpdir_locate, dumpdir_next, dumpdir_first, gid_from_header):
+ (major_from_header, minor_from_header, mode_from_header):
+ (time_from_header, uid_from_header, quote_copy_string,
+ request_stdin):
+ (xheader_init, transform_header_name):
+ Remove declarations; these are no longer exported from their
+ modules.
+ (GID_TO_CHARS, MAJOR_TO_CHARS, MINOR_TO_CHARS, MODE_TO_CHARS):
+ (UID_TO_CHARS, UINTMAX_TO_CHARS, UNAME_TO_CHARS, GNAME_TO_CHARS):
+ Move to src/create.c, since no other module uses these.
+ (GID_FROM_HEADER, MAJOR_FROM_HEADER, MINOR_FROM_HEADER):
+ (MODE_FROM_HEADER, TIME_FROM_HEADER, UID_FROM_HEADER):
+ Move to src/extract.c, since no other module uses these.
+ (dumpdir_t, dumpdir_iter_t): Remove; no longer used.
+ * src/create.c (gid_to_chars, major_to_chars, minor_to_chars):
+ (mode_to_chars, uid_to_chars, uintmax_to_chars, string_to_chars):
+ (file_dumpable_p): Now static.
+ * src/incremen.c (dumpdir_create0, dumpdir_create, dumpdir_free):
+ (dumpdir_locate, dumpdir_next, dumpdir_first): Now static.
+ (scan_directory, write_directory_file_entry):
+ Use struct dumpdir_iter * rather than dumpdir_iter_t.
+ * src/list.c (gid_from_header, major_from_header,
+ minor_from_header):
+ (mode_from_header, time_from_header, uid_from_header):
+ (transform_member_name): Now static.
+ * src/misc.c (quote_copy_string): #if 0 out, as it's not used
+ anywhere.
+ * src/system.c (wait_for_grandchild): Now static.
+ * src/tar.c (request_stdin): Now static.
+ * src/xheader.c (xheader_init): Now static.
+
+2010-08-23 Paul Eggert <eggert@cs.ucla.edu>
+
+ tar: fix misspelled identifier "set_comression_program_by_suffix"
+
+ * src/suffix.c (set_compression_program_by_suffix): Renamed from
+ set_comression_program_by_suffix.
+ * src/buffer.c, src/common.h, src/tar.c: All uses changed.
+
+2010-08-20 Paul Eggert <eggert@cs.ucla.edu>
+
+ tar: change interdir_made from int to bool
+
+ * src/extract.c (maybe_recoverable, create_placeholder_file):
+ Change interdir_made from int * to bool *, since the flag has just
+ two values 0 and 1. All uses changed. This does not affect tar's
+ behavior.
+
+2010-08-20 Paul Eggert <eggert@cs.ucla.edu>
+
+ tar: remove trailing white space from source files
+
+ * ChangeLog.1, ChangeLog.CVS, Makefile.am, NEWS, README:
+ * README-hacking, directory, doc/Makefile.am, doc/dumpdir.texi:
+ * doc/gendocs_template, doc/intern.texi, doc/mastermenu.el:
+ * doc/snapshot.texi, doc/sparse.texi, doc/tar-snapshot-edit.texi:
+ * doc/value.texi, lib/Makefile.am, scripts/backup-specs:
+ * scripts/dump-remind.in, scripts/tar-snapshot-edit,
+ scripts/tarcat:
+ * scripts/xsparse.c, src/arith.h, src/buffer.c, src/compare.c:
+ * src/create.c, src/delete.c, src/exit.c, src/suffix.c, src/tar.c:
+ * src/tar.h, src/update.c, src/warning.c, src/xheader.c:
+ * tests/append01.at, tests/append02.at, tests/atlocal.in:
+ * tests/delete03.at, tests/exclude.at, tests/exclude06.at:
+ * tests/extrac04.at, tests/extrac05.at, tests/extrac06.at:
+ * tests/extrac07.at, tests/filerem01.at, tests/filerem02.at:
+ * tests/incr01.at, tests/incr02.at, tests/incr03.at,
+ tests/incr06.at:
+ * tests/label02.at, tests/label03.at, tests/label04.at:
+ * tests/label05.at, tests/link02.at, tests/link03.at:
+ * tests/listed01.at, tests/listed02.at, tests/long01.at:
+ * tests/longv7.at, tests/multiv01.at, tests/multiv02.at:
+ * tests/multiv03.at, tests/multiv05.at, tests/multiv06.at:
+ * tests/multiv07.at, tests/multiv08.at, tests/options.at:
+ * tests/options02.at, tests/remfiles03.at, tests/rename01.at:
+ * tests/rename02.at, tests/rename03.at, tests/rename04.at:
+ * tests/rename05.at, tests/same-order01.at, tests/same-order02.at:
+ * tests/shortfile.at, tests/shortupd.at, tests/sparse01.at:
+ * tests/sparse02.at, tests/sparsemv.at, tests/sparsemvp.at:
+ * tests/star/README, tests/star/gtarfail2.at:
+ * tests/star/multi-fail.at:
+ * tests/star/pax-big-10g.at, tests/star/quicktest.sh:
+ * tests/star/ustar-big-2g.at, tests/star/ustar-big-8g.at:
+ * tests/update01.at, tests/update02.at, tests/volsize.at:
+ * tests/volume.at:
+ Remove trailing spaces and tabs from lines, and remove
+ trailing empty lines from files. This makes it a bit easier
+ to share code among coreutils and other projects that do this.
+
+2010-08-19 Paul Eggert <eggert@cs.ucla.edu>
+
+ tar: update licenses to latest versions from www.gnu.org
+
+ * COPYING: Update to latest version; this is just minor
+ formatting.
+ * doc/fdl.texi: Update from GFDL 1.2 to 1.3.
+ * doc/tar.texi: Adjust to new format of fdl.texi. Omit trailing
+ white space.
+
+2010-07-18 Paul Eggert <eggert@cs.ucla.edu>
+
+ * src/misc.c (struct wd): Fix comment to match code.
+
+2010-07-18 Paul R. Eggert <eggert@cs.ucla.edu>
+
+ tar: no need to report getcwd error if never using the result
+
+ * src/misc.c (struct wd): Rename 'saved' to 'err', with new
+ semantics.
+ (chdir_arg, chdir_do): Adjust to new semantics. Do not report an
+ error merely because save_cwd fails; report an error only if
+ save_cwd's result is needed later.
+ * tests/extrac09.at: New file, to test for bug that was fixed.
+ * tests/testsuite.at: Include it.
+ * tests/Makefile.am (TESTSUITE_AT): Add it.
+
+2010-07-18 Paul R. Eggert <eggert@cs.ucla.edu>
+
+ tar: go back to absolutifying filenames in normalize_filename
+ for now
+
+ * src/misc.c (normalize_filename): For now, go back to making
+ filenames absolute, even though this causes 'tar' to fail when
+ getcwd fails. However, do not attempt to resolve ".." as this
+ does not work with symlinks. Also, do the right thing with
+ leading file system prefixes and on hosts where // != /.
+
+2010-07-17 Sergey Poznyakoff <gray@gnu.org.ua>
+
+ Allow for size suffixes in -L and --record-size options.
+
+ * src/tar.c (TAR_SIZE_SUFFIXES): New define.
+ (parse_opt): Allow for size suffixes in arguments to
+ -L and --record-size options.
+ * NEWS, doc/tar.texi: Update.
+
+2010-07-15 Paul R. Eggert <eggert@cs.ucla.edu>
+
+ tar: don't crash if getcwd fails
+
+ * src/extract.c: Don't include xgetcwd.h.
+ (extract_dir): stat "." rather than statting getcwd's output.
+ * src/misc.c (normalize_filename_x): Rewrite so as not to resolve
+ /../, which can't be done reliably in the presence of symlinks.
+ Don't reject valid names such as ".".
+ (normalize_filename): Don't make it absolute; that way, we don't
+ have to invoke xgetcwd which might fail. Don't bother to realloc
+ at the end, since that uses time and now saves little space.
+ (chdir_do): Don't crash if xgetcwd fails.
+ * tests/Makefile.am (TESTSUITE_AT): Add listed03.at.
+ * tests/listed03.at: New file.
+ * tests/testsuite.at: Include listed03.at.
+
+2010-07-11 Sergey Poznyakoff <gray@gnu.org.ua>
+
+ Keep a detailed map of archive members stored in the record
+ buffer.
+
+ A separate map (bufmap) provides information for creating
+ multi-volume continuation headers.
+
+ * src/buffer.c (bufmap): New struct.
+ (bufmap_head, bufmap_tail, inhibit_map): New variables.
+ (mv_begin_write): New function.
+ (mv_begin): Rename to mv_begin_read. Rewrite using mv_begin_write.
+ All callers changed.
+ (mv_total_size): Remove.
+ (bufmap_locate, bufmap_free, bufmap_reset): New functions.
+ (_flush_write): Update bufmap.
+ (close_archive): Free bufmap.
+ (add_chunk_header): Take a bufmap argument.
+ (gnu_add_multi_volume_header): Likewise.
+ (add_multi_volume_header): Likewise.
+ (_gnu_flush_write): Rewrite using bufmap.
+ (real_s_name, real_s_totsize)
+ (real_s_sizeleft)
+ (save_name, save_totsize, save_sizeleft): Removed. All
+ uses updated.
+ (mv_size_left): Update bufmap_head.
+ (mv_end): Rewrite.
+ (multi_volume_sync): Remove.
+
+ * src/common.h (mv_begin_write): New prototype.
+ (mv_begin): Rename to mv_begin_read.
+ * src/create.c: Use mv_begin_write instead of mv_begin.
+ Remove calls to mv_size_left and mv_end.
+ * src/sparse.c: Likewise.
+
+ * tests/multiv07.at: Close stdin.
+ * tests/spmvp00.at: Update AT_KEYWORDS.
+ * tests/spmvp10.at: Likewise.
+
+ * tests/multiv08.at: New testcase.
+ * tests/Makefile.am, tests/testsuite.at: Add multiv08.at.
+
+2010-07-11 Sergey Poznyakoff <gray@gnu.org.ua>
+
+ Version 1.23.90
+
+ * NEWS, configure.ac: Version 1.23.90
+ * doc/tar.texi: Document the use of lbzip2.
+
+2010-06-28 Sergey Poznyakoff <gray@gnu.org.ua>
+
+ Fix exclusion of long file names when extracting from pax format
+ archives.
+
+ * src/list.c (read_and): Call decode_header before attempting
+ name_match.
+ (list_archive): Remove call to decode_header.
+
+ * src/compare.c (diff_archive): Remove call to decode_header.
+ * src/extract.c (extract_archive): Likewise.
+
+ * test/exclude06.at: New test case.
+ * tests/testsuite.at: Include exclude06.at.
+ * tests/Makefile.am (TESTSUITE_AT): Add exclude06.at.
+
+2010-06-28 Sergey Poznyakoff <gray@gnu.org.ua>
+
+ Minor fix.
+
+ * src/buffer.c (magic): Split the character constant to help
+ cc recognize character boundaries (7 is a valid hex character).
+
+2010-06-27 Sergey Poznyakoff <gray@gnu.org.ua>
+
+ Minor fix.
+
+ * src/buffer.c (magic): Fix xz magic.
+
+2010-06-16 Paul Eggert <eggert@cs.ucla.edu>
+
+ Remove some lint, found by gcc -W etc.
+
+ * src/common.h (label_notfound): New decl.
+ * src/buffer.c (set_volume_start_time, compress_type):
+ (guess_seekable_archive, open_compressed_archive, init_buffer):
+ (_flush_write, archive_is-dev, increase_volume_number):
+ (change_tape_menu, try_new_volume, add_chunk_header):
+ (multi_volume_sync):
+ Declare as 'static' if it's not exported.
+ Use function prototype (void) rather than old-style ().
+ * src/checkpoint.c (expand_checkpoint_string): Likewise.
+ * src/incremen.c (dirlist_replace_prefix, makedumpdir,
+ read_incr_db_2):
+ Likewise.
+ * src/list.c (print_volume_label): Likewise.
+ * src/misc.c (normalize_filename_x): Likewise.
+ * src/names.c (make_name, free_name, check_name_alloc,
+ name_next_elt):
+ Likewise.
+ * src/tar.c (tar_list_quoting_style, add_exclude_array):
+ (set_stat_signal): Likewise.
+ * src/transform.c (new_transform,
+ _single_transform_name_to_obstack):
+ (_transform_name_to_obstack): Likewise.
+ * src/unlink.c (dunlink_alloc): Likewise.
+
+ * src/buffer.c (struct zip_magic): Use const when appropriate.
+ * src/incremen.c (obstack_code_rename,
+ write_directory_file_entry):
+ Likewise.
+ * src/sparse.c (COPY_STRING): Likewise.
+ * src/system.c (dec_to_env, time_to_env, oct_to_env, str_to_env):
+ (chr_to_env): Likewise.
+ * src/tar.c (tar_list_quoting_style, set_stat_signal): Likewise.
+
+ * src/extract.c (extract_node): Don't return garbage.
+
+ * src/names.c: Remove old-style declarations of getgrnam etc.
+ All modern systems declare these, and it's not worth the hassle
+ of ignoring the warnings on modern systems for old-style decls.
+
+2010-05-17 Sergey Poznyakoff <gray@gnu.org.ua>
+
+ Bugfix.
+
+ * src/incremen.c (make_directory): Retain the slash if it is the
+ only character in a filename.
+
+2010-04-02 Sergey Poznyakoff <gray@gnu.org.ua>
+
+ Recode NEWS back to UTF-8
+
+2010-04-01 Sergey Poznyakoff <gray@gnu.org.ua>
+
+ Fix the gzip.at test case.
+
+ * tests/gzip.at: Suppress gzip error output, as it can differ
+ depending on its version etc. Bug reported by Ludovic Courtès.
+
+2010-03-28 Sergey Poznyakoff <gray@gnu.org.ua>
+
+ New option --full-time.
+
+ * src/common.h (full_time_option): New global.
+ * src/tar.c (FULL_TIME_OPTION): New constant.
+ (options): New option --full-time.
+ (parse_opt): Handle the --full-time option.
+ * src/list.c (simple_print_header): Pass full_time_option
+ as the 2nd argument to tartime.
+ * doc/tar.texi: Update.
+ * NEWS: Update.
+
+2010-03-27 Sergey Poznyakoff <gray@gnu.org.ua>
+
+ Minor fixes in the testsuite.
+
+ * tests/extrac07.at: Fix a typo (invalid number
+ of arguments before format list).
+ * tests/link02.at: Use `ln' instead of `link'.
+ * tests/link03.at: Likewise.
+
+2010-03-27 Sergey Poznyakoff <gray@gnu.org.ua>
+
+ Fix coredump.
+
+ * src/names.c (collect_and_sort_names): Remove
+ entry from the table before freeing it.
+
+2010-03-27 Sergey Poznyakoff <gray@gnu.org.ua>
+
+ Fix dead loop on extracting existing symlinks with the -k option.
+
+ * src/extract.c (create_placeholder_file)
+ (extract_link, extract_symlink)
+ (extract_node, extract_fifo): Handle all possible
+ return values from maybe_recoverable. This complements
+ 8f390db92fc. Reported by Ico Doornekamp <bug-tar@zevv.nl>.
+ * NEWS: Update.
+
+2010-03-20 Sergey Poznyakoff <gray@gnu.org.ua>
+
+ Fix undesired error exit on receiving SIGPIPE.
+
+ * src/tar.c: Do not ignore SIGPIPE.
+ * tests/sigpipe.at: New testcase.
+ * tests/Makefile.am, tests/testsuite.at: Add sigpipe.at
+ * tests/remfiles01.at: Fix error code expectation.
+ * NEWS: Update.
+
+2010-03-17 Sergey Poznyakoff <gray@gnu.org.ua>
+
+ Fix --remove-files.
+
+ Tar --remove-files relied on canonicalize_file_name,
+ which replaces symlinks in file name components with
+ the directories they point to. Due to this, tar
+ effectively ignored existence of symbolic links and
+ was unable to remove a directory that contained any
+ (Alexander Kozlov <akozlov@nada.kth.se>, 2010-03-15).
+
+ * gnulib.modules: Remove canonicalize.
+ * src/misc.c (normalize_filename): Rewrite
+ from scratch. The function operates only on
+ its input string, it makes no attempt to test
+ components for existence or to resolve symbolic
+ links.
+ * tests/Makefile.am (TESTSUITE_AT): Add remfiles03.at.
+ * tests/testsuite.at: Likewise.
+ * tests/remfiles03.at: New test case.
+ * NEWS: Update.
+
+2010-03-12 Sergey Poznyakoff <gray@gnu.org.ua>
+
+ Bugfixes.
+
+ * src/buffer.c (check_label_pattern): Initialize result.
+ * tests/remfiles01.at: Skip if run with root privileges.
+
+2010-03-11 Sergey Poznyakoff <gray@gnu.org.ua>
+
+ Fix `--test-label' and `--label -r' behavior.
+
+ * doc/tar.texi (Including a Label in the Archive): Revise
+ the section.
+ * NEWS: Update
+
+ * src/buffer.c (open_archive): Check volume label on
+ ACCESS_UPDATE as well.
+ * src/list.c (test_archive_label): Rewrite to match the
+ documentation.
+ * src/names.c (regex_usage_warning): Return int.
+ (names_notfound): Rewrite the conditional.
+ (label_notfound): New function.
+
+ * tests/label03.at: New testcase.
+ * tests/label04.at: New testcase.
+ * tests/label05.at: New testcase.
+ * tests/Makefile.am: Add new testcases.
+ * tests/testsuite.at: Likewise.
+
+2010-03-11 Sergey Poznyakoff <gray@gnu.org.ua>
+
+ Doc fixes.
+
+ * doc/tar.texi: Consistently use lowercase `see' within sentences.
+ More fixes spotted by Denis Excoffier.
+ * THANKS: Update.
+
+2010-03-11 Sergey Poznyakoff <gray@gnu.org.ua>
+
+ Shut up a gcc warning message.
+
+ * src/tar.c (tar_help_filter): Use a separate const
+ variable to hold returns from gettext. Reported by
+ Peter Breitenlohner.
+
+2010-03-11 Sergey Poznyakoff <gray@gnu.org.ua>
+
+ Bugfix.
+
+ * src/names.c (collect_and_sort_names): Initialize prev_name.
+ Reported by Dmitry V. Levin.
+
+2010-03-10 Sergey Poznyakoff <gray@gnu.org.ua>
+
+ Version 1.23
+
+ * configure.ac, NEWS: Update version number.
+
+2010-03-10 Sergey Poznyakoff <gray@gnu.org.ua>
+
+ Doc changes.
+
+ * NEWS: Update.
+ * THANKS: Update.
+ * doc/snapshot.texi, doc/snapshot.texi,
+ doc/sparse.texi, doc/tar-snapshot-edit.texi,
+ doc/tar.texi: Spellchecked and proof-read. Thanks
+ to Denis Excoffier.
+ * gnulib.modules: Remove utime.
+
+2010-03-08 Kamil Dudka <kdudka@redhat.com>
+
+ Fix possible overflow in code_timespec (tiny change)
+
+ * src/misc.c (code_timespec): ignore invalid values of ns
+
+2010-03-08 Sergey Poznyakoff <gray@gnu.org.ua>
+
+ Minor fix in the testsuite.
+
+ * tests/extrac05.at: Skip test if creating
+ sparse file fails.
+
+2010-03-08 Sergey Poznyakoff <gray@gnu.org.ua>
+
+ Fix eventual memory override and fd exhaustion in create.c Both
+ bugs reported by Kamil Dudka.
+
+ * src/create.c (check_exclusion_tags): Do not keep
+ pointer to a location within tagname: it may change
+ after xrealloc. Use byte offset instead.
+ (dump_file0): Close fd before returning without
+ dumping the directory.
+
+2010-03-02 Sergey Poznyakoff <gray@gnu.org.ua>
+
+ Minor change.
+
+ * doc/tar.texi: Improve some wording.
+
+2010-03-02 Antonio Diaz Diaz <ant_diaz@teleline.es>
+
+ Add Lzip support
+
+ * configure.ac: Add TAR_COMPR_PROGRAM(lzip)
+ * doc/tar.texi: Reflect lzip support.
+ * src/buffer.c (compress_type) <ct_lzip>: New constant.
+ (magic): Add magic for lzip.
+ * src/suffix.c (compression_suffixes): Add lz.
+ * src/tar.c: New option --lzip.
+
+2010-03-02 Sergey Poznyakoff <gray@gnu.org.ua>
+
+ Minor fix.
+
+ * tests/exclude05.at: Rewrite awk invocation to avoid
+ overflowing awk's file table on Solaris.
+
+2010-03-02 Eric Blake <ebb9@byu.net>
+
+ Fix large file support.
+
+ * scripts/xsparse.c (read_map): Use fseeko.
+ * src/incremen.c (write_directory_file): Likewise.
+
+2010-03-02 Sergey Poznyakoff <gray@gnu.org.ua>
+
+ Bugfix
+
+ * src/buffer.c (seek_archive): Rewrite size computation
+ to prevent it from reaching negative values. Based on
+ report by Denis Excoffier <Denis.Excoffier@free.fr>.
+
+2010-02-25 Sergey Poznyakoff <gray@gnu.org.ua>
+
+ Supply more information to the --to-command script.
+
+ * src/system.c (stat_to_env): Pass information about the current
+ volume in variables TAR_ARCHIVE, TAR_VOLUME, TAR_BLOCKING_FACTOR,
+ TAR_FORMAT.
+ * doc/tar.texi: Document new environment variables.
+ * NEWS: Likewise.
+ * configure.ac: Version number 1.22.91.
+
+2010-02-17 Sergey Poznyakoff <gray@gnu.org.ua>
+
+ Minor change.
+
+ * src/names.c (regex_usage_warning): Fix warning message.
+
+2010-02-05 Sergey Poznyakoff <gray@gnu.org.ua>
+
+ Update THANKS
+
+2010-02-05 Ondřej Vašík <ovasik@redhat.com>
+
+ Bugfix (tiny change)
+
+ * src/xheader.c (xheader_read): Remove unnecessary call
+ to xheader_init.
+
+2010-01-26 Sergey Poznyakoff <gray@gnu.org.ua>
+
+ Enable silent build mode.
+
+ * configure.ac: Require automake 1.11, autoconf 2.63. Enable
+ silent rules.
+ * NEWS: Update.
+ * lib/Makefile.am (rmt-command.h): Silent the rule.
+
+2010-01-25 Sergey Poznyakoff <gray@gnu.org.ua>
+
+ Read POSIX multivolume archives split at the header boundary.
+
+ * src/common.h (read_header_mode): New enum.
+ (read_header): Change type of the 3rd argument.
+ * src/list.c (read_header): Change type of the 3rd argument.
+ All callers updated.
+ * src/buffer.c (try_new_volume): Allow for volumes split at the
+ extended/ustar header boundary. This is against POSIX specs, but
+ we must be able to read such archives anyway.
+
+ * tests/multiv07.at: New test case.
+ * tests/Makefile.am: Add multiv07.at
+ * tests/testsuite.at: Likewise.
+
+ * src/compare.c: Update calls to read_header.
+ * src/delete.c: Likewise.
+ * src/update.c: Likewise.
+
+2010-01-24 Sergey Poznyakoff <gray@gnu.org.ua>
+
+ Minor change.
+
+ * NEWS: Update.
+ * doc/tar.texi: Update.
+ * src/create.c (finish_header): Minor change.
+
+2010-01-24 Rob Vermaas <rob.vermaas@gmail.com>
+
+ Bugfix (tiny change).
+
+ * src/tar.c (format_default_settings)[REMOTE_SHELL]: Fix
+ misplaced comma.
+
+2010-01-24 Sergey Poznyakoff <gray@gnu.org.ua>
+
+ Minor fix.
+
+ * src/incremen.c (read_incr_db_01)
+ (read_directory_file): Initialize bufsize to 0.
+ Suggested by noordsij@cs.helsinki.fi.
+
+2010-01-24 Sergey Poznyakoff <gray@gnu.org.ua>
+
+ Improve handling of --test-label.
+
+ * src/list.c (print_volume_label): New function.
+ (print_header): Call print_volume_label.
+ (test_archive_label): New function.
+ * src/buffer.c (VOLUME_LABEL_APPEND): Remove.
+ (VOLUME_TEXT, VOLUME_TEXT_LEN): New macros
+ (drop_volume_label_suffix): New function.
+ (check_label_pattern): Use drop_volume_label_suffix.
+ * src/common.h (subcommand): New constant TEST_LABEL_SUBCOMMAND.
+ (test_label_option): Remove.
+ (drop_volume_label_suffix): New proto.
+ (test_archive_label): New proto.
+ * src/names.c (all_names_found): Remove test for
+ test_label_option.
+ * src/tar.c (subcommand_string): Handle TEST_LABEL_SUBCOMMAND.
+ (set_subcommand_option): Improve diagnostics.
+ (parse_opt): Set subcommand if --test-label is given.
+ (main): Handle TEST_LABEL_SUBCOMMAND.
+
+2010-01-24 Sergey Poznyakoff <gray@gnu.org.ua>
+
+ Fix listing of volume labels (in particular in PAX archives).
+
+ * src/buffer.c (match_volume_label): Call set_volume_label.
+ (check_label_pattern): Get label string
+ as argument.
+ (match_volume_label): Handle volume labels stored in
+ global PAX headers.
+ * src/common.c (print_header,read_header): Change signature.
+ (read_header_primitive): Remove prototype.
+ * src/list.c (recent_global_header): New static.
+ (list_archive): Always print volume labels.
+ (read_header_primitive): Remove.
+ (read_header): Change the signature (all callers updated)
+ Save the recent global header.
+ (volume_label_printed): New static.
+ (simple_print_header): New function (ex-print_header).
+ (print_header): Change the signature (all callers updated).
+ For POSIX formats, print first volume header (if set).
+ * src/xheader.c (xheader_write_global): Write the data
+ accumulated in xhdr->stk even if keyword_global_override_list
+ is empty.
+ (xheader_read): On unexpected EOF, report error instead of
+ coredumping.
+ (XHDR_PROTECTED, XHDR_GLOBAL): New defines.
+ (struct xhdr_tab): Remove `protected' with `flags'. All uses
+ updated.
+ (decg): If XHDR_GLOBAL bit is set, call the keyword's decode
+ method instead of adding it to `kwl'.
+
+ * src/compare.c: Update calls to read_header.
+ * src/create.c: Likewise.
+ * src/delete.c: Likewise.
+ * src/update.c: Likewise.
+ * src/extract.c: Likewise.
+ (extract_volhdr): Do not print "Reading <label>" statement,
+ because
+ it is inconsistent: it is not printed if the volume begins with a
+ member continued from the previous volume.
+
+ * tests/label01.at: New testcase.
+ * tests/label02.at: New testcase.
+ * tests/Makefile.am, tests/testsuite.at: Add new testcases.
+
+2010-01-22 Sergey Poznyakoff <gray@gnu.org.ua>
+
+ Fix prefix length calculation in ustar mode.
+
+ * src/create.c (split_long_name): Fix prefix length
+ calculation.
+ (write_ustar_long_name): Improve ustar mode compatibility
+ with the Sun version.
+
+2009-10-14 Sergey Poznyakoff <gray@gnu.org.ua>
+
+ Rewrite update algorithm.
+
+ * src/common.h (namebuf_t): New typedef.
+ (namebuf_create, namebuf_free)
+ (namebuf_name): New prototypes.
+ (remname): New prototype.
+ * src/misc.c (struct namebuf): New structure.
+ (namebuf_create, namebuf_free)
+ (namebuf_name): New functions.
+ * src/create.c (dup_dir0): Remove is_avoided_name
+ checks. This is taken care of in update_archive.
+ * src/incremen.c (scan_directory): Use namebuf
+ to produce full file names.
+ * src/names.c (nametail): Remove extra level of
+ indirection. All uses updated.
+ (avoided_name_table, add_avoided_name)
+ (is_avoided_name): Remove.
+ * src/update.c (update_archive): Change algorithm.
+ Instead of adding unmodified files to the avoided_name
+ table, create namelist so that it contains only
+ modified files.
+
+ * tests/Makefile.am: Add update01.at, update02.at
+ * tests/testsuite.at: Likewise.
+ * tests/update.at (AT_KEYWORDS): Add update00.
+
+2009-10-14 Sergey Poznyakoff <gray@gnu.org.ua>
+
+ Minor changes.
+
+ * src/tar.c (main): Ignore SIGPIPE.
+ * src/system.c (sys_child_open_for_compress)
+ (sys_child_open_for_uncompress): Reset SIGPIPE
+ in child to default.
+ * tests/remfiles01.at: Avoid race conditions.
+ * tests/remfiles02.at: Likewise.
+
+2009-10-14 Sergey Poznyakoff <gray@gnu.org.ua>
+
+ Bugfix.
+
+ * src/buffer.c (_open_archive): Call guess_seekable_archive
+ only if the call to open_compressed_archive succeeded.
+
+2009-10-10 Sergey Poznyakoff <gray@gnu.org.ua>
+
+ Improve previous changes.
+
+ * acinclude.m4: Fix typos.
+ * gnulib.modules: Add xvasprintf.
+ * src/common.h: Include xvasprintf.h.
+ * src/tar.c (options): Remove docstrings for --gzip, --bzip2,
+ --compress, --lzop, --lzma and --xz.
+ (tar_help_filter): Generate these using actual values of
+ *_PROGRAM constants.
+ (format_default_settings): Use xasprintf.
+ (parse_opt): Use *_PROGRAM defines instead of hardcoded
+ program names.
+
+2009-10-10 Sergey Poznyakoff <gray@gnu.org.ua>
+
+ Allow installers to specify alternative program names for
+ compression programs.
+
+ This adds --with-gzip, --with-bzip2 etc. switches to the
+ configure, so that
+ one can do, e.g. ./configure --with-bzip2=lbzip2 and have
+ lbzip2 executed
+ whenever user calls `tar --bzip2'.
+
+ * acinclude.m4: New file.
+ * configure.ac: Add TAR_COMPR_PROGRAM invocations for
+ the supported compressors.
+ * src/buffer.c (magic): Use *_COMPRESSOR defines instead
+ of hardcoded program names.
+ * src/suffix.c (compression_suffixes): Likewise.
+
+2009-10-09 Sergey Poznyakoff <gray@gnu.org.ua>
+
+ Minor fix.
+
+ * src/buffer.c (magic): Fix `xz' entry: add the name of the
+ program.
+ * src/suffix.c (compression_suffixes, nsuffixes): Mark as static.
+
+2009-10-07 Sergey Poznyakoff <gray@gnu.org.ua>
+
+ Provide a way to explicitly set mtime for extended header
+ ustar blocks.
+
+ * src/tar.c (struct textual_date): ts is a copy of the structure,
+ not a pointer to it. Date is a copy as well, hence the `const' is
+ taken away.
+ (get_date_or_file): Return 0/1 depending on success/failure.
+ Copy timestamp to the `ts' member. Store a copy of the string
+ in `date'.
+ (report_textual_dates): Report only if verbose_option is set,
+ but always free the list.
+ (expand_pax_option): New function.
+ (parse_opt): Preprocess the argument to xheader_set_option with
+ expand_pax_option.
+ (decode_options): Call report_textual_dates unconditionally.
+ * src/xheader.c (exthdr_mtime_option, exthdr_mtime)
+ (globexthdr_mtime_option, globexthdr_mtime): New statics.
+ (xheader_set_keyword_equal): handle exthdr.mtime and
+ globexthdr.mtime.
+ (xheader_write): Override `t' argument if a corresponding
+ exthdr.mtime or globexthdr.mtime option is set.
+ * NEWS: Update
+ * doc/tar.texi: Document the changes.
+
+2009-10-07 Sergey Poznyakoff <gray@gnu.org.ua>
+
+ Use file's mtime as mtime for its extended header.
+
+ This makes two pax archives binary equivalent if they
+ have the same contents and care is taken to make extended
+ headers otherwise reproducible, e.g. by using:
+
+ --pax-option=exthdr.name=%d/PaxHeaders/%f,atime:=0
+
+ Proposed by Michael D. Adams <mdmkolbe@gmail.com>.
+
+ * src/common.h (start_private_header): Take time_t as 3rd param.
+ (xheader_write): Likewise.
+ * src/create.c (start_private_header): Take time_t as 3rd param.
+ All callers updated.
+ (write_extended): Use file's mtime as mtime for its extended
+ header,
+ Use current time stamp as mtime for global headers.
+ (xheader_write): Take time_t as 3rd param.
+
+2009-10-07 Sergey Poznyakoff <gray@gnu.org.ua>
+
+ Fix bugs in handling the --remove-files option.
+
+ Make sure the files are deleted only if they were succesfully
+ stored
+ to the archive.
+
+ * src/exit.c: New file.
+ * src/unlink.c: New file.
+ * src/Makefile.am (tar_SOURCES): Add exit.c and unlink.c.
+ * src/common.h: Include progname.h
+ (program_name): Remove global.
+ (records_written): New extern.
+ (queue_deferred_unlink, finish_deferred_unlinks): New prototypes.
+ (fatal_exit_hook): New extern.
+ * src/create.c (create_archive): Call finish_deferred_unlinks.
+ (dump_hard_link, dump_file0): Don't actually unlink the file,
+ queue it to deferred_unlinks instead.
+ * src/delete.c (records_written): Remove extern: declared in
+ common.h.
+ * src/extract.c (extract_archive): Set fatal_exit_hook.
+ (fatal_exit, xalloc_die): Move to exit.c
+ * src/system.c (sys_wait_for_child): Exit immediately
+ if the child dies or exits with a non-zero status.
+ (sys_child_open_for_compress)
+ (sys_child_open_for_uncompress): Use set_program_name,
+ instead of setting program_name directly.
+ * src/tar.c (main): Use set_program_name,
+ instead of setting program_name directly.
+
+ * tests/Makefile.am (TESTSUITE_AT): Add remfiles01.at
+ and remfiles02.at.
+ * tests/testsuite.at: Likewise.
+ * tests/gzip.at: Reflect the above changes.
+
+2009-10-04 Sergey Poznyakoff <gray@gnu.org.ua>
+
+ Fix bug in OLDGNU format creation.
+
+ See tests/append02.at for a detailed description
+
+ * src/common.h (MODE_FROM_HEADER): Take additional argument.
+ (mode_from_header): Likewise.
+ * src/create.c (mode_to_chars): Store all mode bits if
+ using OLDGNU_FORMAT. This reverses f4e4adea80a.
+ * src/list.c (decode_header): Use header mode field
+ to discern between GNU and OLDGNU formats.
+ (mode_from_header): Store unrecognized mode bits (from 10th up)
+ in the location pointed to by the third parameter.
+ * tests/append02.at: Update documentation and references.
+
+2009-09-16 Sergey Poznyakoff <gray@gnu.org.ua>
+
+ Restore extra help output.
+
+ * src/tar.c (tar_list_quoting_styles): Change first argument to
+ struct obstack.
+ (format_default_settings): New function.
+ (show_default_settings)
+ (show_default_settings_fs): Removed.
+ (tar_help): Removed.
+ (tar_help_filter): New function.
+ (argp): Set help_filter.
+ (parse_opt): Fix error message.
+
+2009-09-08 Sergey Poznyakoff <gray@gnu.org.ua>
+
+ Improve command line option handling.
+
+ * gnulib.modules: Add argp-version-etc and progname,
+ use getopt-gnu instead of getopt.
+ * src/tar.c (HANG_OPTION, USAGE_OPTION)
+ (VERSION_OPTION): Remove.
+ (options): Remove corresponding options. Let argp
+ handle them.
+ (parse_opt): Likewise.
+ (_argp_hang): Removed.
+ (tar_authors): New variable.
+ (decode_options): Call argp_version_setup.
+ Do not use ARGP_NO_HELP flag in the call to argp_parse.
+
+2009-09-08 Sergey Poznyakoff <gray@gnu.org.ua>
+
+ Avoid overwriting exit_status with a value indicating less
+ important condition.
+
+ * src/tar.c (set_exit_status): New function.
+ * src/common.h (set_exit_status): New prototype.
+ * src/compare.c: Use set_exit_status instead of
+ exit_status assignments.
+ * src/create.c: Likewise.
+ * src/misc.c: Likewise.
+
+ * src/system.c (wait_for_grandchild): Use auto variable
+ instead of the global exit_status.
+ * src/incremen.c (scan_directory): Use file_removed_diag
+ instead of stat_diag.
+
+2009-09-08 Sergey Poznyakoff <gray@gnu.org.ua>
+
+ Automatic detection of seekable archives.
+
+ * src/buffer.c (guess_seekable_archive): New function.
+ (_open_archive): Call guess_seekable_archive for archives
+ open for reading.
+ (new_volume): Likewise.
+ * src/common.h (seek_option): New global.
+ * src/tar.c (options): New option --no-seek.
+ (parse_opt): --seek and --no-seek set seek_option,
+ not seekable_archive.
+ (decode_options): Initialize seek_option to -1.
+
+ * NEWS: Update.
+ * doc/tar.texi: Update.
+
+2009-08-27 Sergey Poznyakoff <gray@gnu.org.ua>
+
+ Fix testcases.
+
+ * tests/extrac08.at: Ensure a predictable umask value.
+ * tests/xform-h.at (xform): do not depend on file name
+ ordering.
+
+2009-08-13 Sergey Poznyakoff <gray@gnu.org.ua>
+
+ Fix interaction between --listed-incremental and -C
+
+ * src/incremen.c (read_directory_file): Execute eventual -C dir
+ after opening the snapshot file.
+ (collect_and_sort_names): Remove call to chdir_do
+ * tests/incr05.at, tests/incr06.at: Use relative file names for
+ snapshot files.
+
+2009-08-12 Sergey Poznyakoff <gray@gnu.org.ua>
+
+ Update for new exclude module from gnulib. Add testcases by
+ Phil Proudman.
+
+ * src/names.c (is_pattern): Remove.
+ (regex_usage_warning): Use fnmatch_pattern_has_wildcards
+ instead of
+ is_pattern.
+ * src/tar.c: New option --exclude-backups.
+ (vcs_file_table, backup_file_table): New globals.
+ (add_exclude_array): New function.
+ * tests/exclude01.at, tests/exclude02.at,
+ tests/exclude03.at, tests/exclude04.at,
+ tests/exclude05.at: New testcases. Supplied by Phil Proudman.
+ * tests/Makefile.am (TESTSUITE_AT): Add new tests.
+ * tests/testsuite.at: Add new tests.
+ * THANKS: Update.
+
+2009-08-10 Sergey Poznyakoff <gray@gnu.org.ua>
+
+ Remove src/version.c (reappeared after migration to Git)
+
+2009-08-09 Sergey Poznyakoff <gray@gnu.org.ua>
+
+ Minor fixes.
+
+ * src/misc.c (file_removed_diag): Set exit code to
+ TAREXIT_DIFFERS.
+
+2009-08-08 Sergey Poznyakoff <gray@gnu.org.ua>
+
+ Minor fixes
+
+2009-08-08 Sergey Poznyakoff <gray@gnu.org.ua>
+
+ Fix handling of files removed during incremental dumps.
+
+ Changes to src/create.c and src/incremen.c are partially
+ based on patch from Alexander Peslyak <solar at openwall.com>.
+
+ The new testcases require paxutils commit f653a2b or later.
+
+ * src/common.h (struct name): New member `cmdline'.
+ (dump_file): Change type of the 2nd argument to bool.
+ (file_removed_diag, dir_removed_diag): New prototypes.
+ (addname): New argument `cmdline'.
+ (name_from_list): Change return value.
+ * src/create.c (dump_dir0, dump_dir): top_level is bool.
+ (create_archive): Update calls to name_from_list.
+ Take advantage of the name->cmdline to set top_level argument
+ during incremental backups.
+ (dump_file0): top_level is bool.
+ Do not bail out if a no-top-level file disappears during
+ incremental
+ backup, use file_removed_diag instead.
+ (dump_filed): top_level is bool.
+ * src/incremen.c (update_parent_directory): Silently ignore
+ ENOENT. It should have already been reported elsewhere.
+ (scan_directory): Use dir_removed_diag to report missing
+ directories.
+ * src/misc.c (file_removed_diag, dir_removed_diag): New functions.
+ * src/names.c (name_gather): Set ->cmdname.
+ (addname): Likewise. All uses updated.
+ (name_from_list): Return struct name const *. All uses updated.
+
+ * tests/filerem01.at: New testcase.
+ * tests/filerem02.at: New testcase.
+ * tests/Makefile.am, tests/testsuite.at: Add filerem01.at,
+ filerem02.at
+ * tests/grow.at, test/truncate.at: Use new syntax for genfile
+ --run.
+
+ * NEWS: Update.
+ * doc/tar.texi: Minor fix.
+
+2009-08-08 Sergey Poznyakoff <gray@gnu.org.ua>
+
+ Optimize searches for directory structures by keeping a pointer
+ to struct directory in struct name.
+
+ * src/common.h (struct name): New member `directory' replaces
+ dir_contents. Rearrange members.
+ (rebase_directory): Change signature.
+ (scan_directory): Change signature.
+ (name_fill_directory)
+ (directory_contents, safe_directory_contents): New prototypes.
+ (append_incremental_renames): Change signature.
+ (replace_prefix): New proto.
+ * src/compare.c (diff_dumpdir): Use directory_contents +
+ scan_directory.
+ * src/create.c
+ * src/incremen.c (replace_prefix): Move to misc.c
+ (rebase_directory): Rewrite.
+ (scan_directory): Return pointer to struct directory.
+ (directory_contents, safe_directory_contents): New functions.
+ (get_directory_contents): Remove.
+ (name_fill_directory): New function.
+ (append_incremental_renames): Rewrite. This also fixes a memory
+ leak.
+ * src/names.c (name_gather, addname): Reflect changes in struct
+ name.
+ (add_hierarchy_to_namelist): Rewrite using name_fill_directory and
+ directory_contents.
+ (rebase_child_list): Update call to rebase_directory.
+ (collect_and_sort_names): Optimize
+
+ * src/misc.c (replace_prefix): New function.
+ * src/names.c (add_hierarchy_to_namelist): Use new
+ get_directory_contents.
+
+ * tests/incr05.at: New test case.
+ * tests/incr06.at: New test case.
+ * tests/Makefile.am, test/testsuite.at: Add incr05.at and
+ incr06.at.
+
+ * doc/Makefile.am (check-options): Improve rule.
+ * doc/tar.texi, NEWS: Update.
+
+2009-08-07 Sergey Poznyakoff <gray@gnu.org.ua>
+
+ Minor fixes.
+
+ * src/common.h (rebase_directory): New prototype.
+ * src/incremen.c (rebase_directory): Use replace_prefix.
+ * src/names.c (collect_and_sort_names): Abort if
+ hash_insert fails.
+
+2009-08-07 Sergey Poznyakoff <gray@gnu.org.ua>
+
+ Improve listed incremental dumps.
+
+ The modified algorithm tries to avoid dumping the same
+ directory twice and ensures the order of the directories
+ in the resulting archive is the same, whatever their order
+ on the command line. It also fixes the operation of
+ --listed-incremental -C.
+
+ * gnulib.modules: Add canonicalize
+ * src/common.h (incremental_level): New global.
+ (check_exclusion_tags): first argument is const.
+ (get_directory_contents): Add third argument.
+ (zap_slashes, normalize_filename): New prototypes.
+ (chdir_count): New prototype.
+ (WARN_VERBOSE_WARNINGS): New define.
+ (WARN_ALL): Exclude WARN_VERBOSE_WARNINGS.
+ * src/compare.c (diff_dumpdir): Update the call to
+ get_directory_contents.
+ * src/create.c (check_exclusion_tags): First argument is const.
+ Use ISSLASH and DIRECTORY_SEPARATOR instead of referring to '/'.
+
+ * src/incremen.c (struct directory): New member `caname'.
+ (hash_directory_name): Rename to
+ hash_directory_canonical_name. Operate
+ on the canonical name.
+ (compare_directory_names): Rename to
+ compare_directory_canonical_names.
+ Operate on the canonical name.
+ (make_directory): Take two arguments.
+ (free_directory): Free caname.
+ (attach_directory): Create caname.
+ (find_directory): Use caname for lookups.
+ (PD_VERBOSE): Remove.
+ (PD_FORCE_INIT): New define.
+ (procdir): First argument is const.
+ Reinitialize directory if PD_FORCE_INIT bit is set.
+ Do not use PD_VERBOSE or verbose_option for issuing warnings.
+ Rely on WARNOPT instead.
+ Always set *entry.
+ (scan_directory): Take three arguments. The third one is a boolean
+ which is true if the directory is explicitly mentioned on
+ the command
+ line.
+ (get_directory_contents): Remove. Use scan_directory instead.
+ All callers updated.
+ (read_directory_file): Truncate the file if --level=0 is given.
+ * src/misc.c: Include canonicalize.h
+ (zap_slashes, normalize_filename): New functions.
+ (chdir_count): New function.
+ * src/names.c (add_hierarchy_to_namelist): Take three arguments,
+ as
+ get_directory_contents and scan_directory.
+ (collect_and_sort_names): Allow at most one -C, before file name
+ arguments.
+ Read directory file after eventual changing to another directory.
+ Avoid adding the same directory under different pathnames to
+ the list.
+ * src/tar.c: New option --level.
+
+ * tests/incr03.at, tests/incr04.at, tests/listed01.at,
+ tests/listed02.at, tests/rename01.at, tests/rename02.at,
+ tests/rename03.at: Update for new tar behavior.
+ * tests/multiv01.at: Do not use --listed-incremental.
+
+2009-08-05 Sergey Poznyakoff <gray@gnu.org.ua>
+
+ Forgotten to push src/warning.c
+
+2009-08-05 Sergey Poznyakoff <gray@gnu.org.ua>
+
+ Implement the --warning option.
+
+ * src/warning.c: New file.
+ * src/Makefile.am: Add warning.c
+ * src/common.h: Provide definitions for warning classes.
+ (warning_option): New global.
+ (WARNOPT): New define.
+ (set_warning_option): New prototype.
+ * src/tar.c: New option `--warning'.
+ * src/compare.c: When applicable WARNOPT instead of WARN.
+ * src/create.c: Likewise.
+ * src/extract.c: Likewise.
+ * src/incremen.c: Likewise.
+ * src/list.c: Likewise.
+
+ * NEWS, doc/tar.texi: Update.
+
+2009-08-05 Carl Worth <cworth@cworth.org>
+
+ Fix descriptions of some options (tiny change)
+
+2009-08-05 Sergey Poznyakoff <gray@gnu.org.ua>
+
+ Fix backup handling and restoring file modes of existing
+ directories
+
+ * NEWS, THANKS: Update
+ * src/extract.c (extract_dir): reset status to 0 if the
+ directory already exists.
+ * src/misc.c (maybe_backup_file): Assign before_backup_name
+ and clear after_backup_name before checking if we really need
+ to backup the file.
+ * tests/backup01.at: New testcase.
+ * tests/extrac08.at: New testcase.
+ * tests/Makefile.am, tests/testsuite.at: Add extrac08.at and
+ backup01.at
+
+2009-07-30 Sergey Poznyakoff <gray@gnu.org.ua>
+
+ Fix hard links recognition with -c --remove-files
+
+ * src/create.c (dump_hard_link): Always look up in the link table
+ if remove_files_option is set. Patch suggested by Theodore Ts'o
+ <tytso@mit.edu>.
+ (check_links): Remove extra newline from the warning message.
+ * tests/link02.at, tests/link03.at: New testcases.
+ * tests/Makefile.am (TESTSUITE_AT): Add link02.at and link03.at
+ * tests/testsuite.at: Include link02.at and link03.at
+
+2009-07-30 Sergey Poznyakoff <gray@gnu.org.ua>
+
+ Fix handling of hard link targets by -c --transform
+
+ * src/create.c (file_count_links): Transform link target
+ before the look up.
+ * tests/xform-h.at: New test case.
+ * tests/Makefile.am (TESTSUITE_AT): Add xform-h.at.
+ * tests/testsuite.at: Add xform-h.at
+
+2009-06-23 Sergey Poznyakoff <gray@gnu.org.ua>
+
+ Minor fix.
+
+ * src/extract.c (file_newer_p): Do not report error on ENOENT
+
+2009-06-19 Sergey Poznyakoff <gray@gnu.org.ua>
+
+ Remove rebox.el (reappeared after migration to Git)
+
+2009-06-18 Sergey Poznyakoff <gray@gnu.org.ua>
+
+ Remove files that were removed in CVS, but reappeared after
+ migration to Git
+
+2009-06-18 David Bartley <dtbartle@csclub.uwaterloo.ca>
+
+ Fix Solaris bug where chmod fails if we don't have
+ PRIV_SYS_LINKDIR
+
+ * gnulib.modules: Add priv-set.
+ * src/extract.c (set_mode, extract_archive): Restore
+ PRIV_SYS_LINKDIR on chmod failure.
+ * src/tar.c (main): Drop PRIV_SYS_LINKDIR on startup.
+
+2009-06-18 Sergey Poznyakoff <gray@gnu.org.ua>
+
+ Ensure default behavior for SIGPIPE
+
+ * src/tar.c (main): Install default handler for SIGPIPE.
+ Proposed by Bastian Blank.
+
+2009-06-18 Eric Blake <ebb9@byu.net>
+
+ Follow autoconf recommendation for TESTSUITEFLAGS.
+
+ * tests/Makefile.am (check-local, installcheck-local): Honor
+ TESTSUITEFLAGS.
+
+2009-06-18 Sergey Poznyakoff <gray@gnu.org.ua>
+
+ Fix handling of sub-subprocess returns.
+
+ * src/system.c (wait_for_grandchild): New function.
+ (sys_child_open_for_compress)
+ (sys_child_open_for_uncompress): Use wait_for_grandchild
+ to manage grandchild return.
+
+2009-05-25 Sergey Poznyakoff <gray@gnu.org.ua>
+
+ Report record size only if the archive refers to a device.
+
+ * Makefile.am (INCLUDES): Add ../lib, for rmt-command.h
+ * src/buffer.c (short_read): Report the actual record size
+ only if the archive descriptor refers to a device.
+ * tests/pipe.at, tests/shortrec.at,
+ tests/sparsemvp.at: Reflect the above change.
+ * NEWS, configure.ac: Version 1.22.90
+
+2009-05-14 Sergey Poznyakoff <gray@gnu.org.ua>
+
+ Do not issue errors on existing files when given the -k option
+
+ * Makefile.am (dist-hook): Fix rule.
+ * src/extract.c (maybe_recoverable): Return three-state value.
+ (extract_dir): Skip extraction if maybe_recoverable indicates so.
+ (extract_file): Likewise.
+
+2009-05-12 Eric Blake <ebb9@byu.net>
+
+ Avoid undefined behavior
+
+ * src/xheader.c (xheader_set_keyword_equal): Pass correct type to
+ ctype macros.
+ * src/transform.c (run_case_conv): Likewise.
+
+2009-05-12 Sergey Poznyakoff <gray@gnu.org.ua>
+
+ Remove src/Makefile.in
+
+2009-03-12 Sergey Poznyakoff <gray@gnu.org.ua>
+
+ Bugfixes.
+
+ * bootstrap (symlink_to_dir): Fix symlink calculation.
+ * doc/tar.texi: Minor fixes by Victor Villa and Stepan Kasal.
+
+2009-03-07 Sergey Poznyakoff <gray@gnu.org.ua>
+
+ Remove Makefile.in
+
+ Migrate to Git
+
+Currently the ChangeLog is generated automatically from the Git
+revision history, but from 1997 to 2009 the ChangeLog file was
+maintained by hand, under CVS. This file records the older log.
+
+Copyright 1997-2001, 2003-2009, 2013 Free Software Foundation, Inc.
+
+This file is part of GNU tar.
+
+GNU tar is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 3 of the License, or
+(at your option) any later version.
+
+GNU tar is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+2009-03-05 Sergey Poznyakoff <gray@gnu.org.ua>
+
+ * src/incremen.c: --no-recursive works with --incremental.
+
+2009-03-04 Sergey Poznyakoff <gray@gnu.org.ua>
+
+ Add xz support.
+
+ * src/buffer.c, src/suffix.c: Add support for xz compression.
+ * src/tar.c: New option --xz, for compression/decompression using xz.
+ Re-assign -J as a short equivalent of --xz.
+
+2009-01-19 Sergey Poznyakoff <gray@gnu.org.ua>
+
+ * doc/tar.texi: Fix typo.
+
+2008-12-29 Sergey Poznyakoff <gray@gnu.org.ua>
+
+ * bootstrap.conf: Include size_max.
+ * gnulib.modules: Remove memset, rmdir. Replace strdup with
+ strdup-posix. Patch by Eric Blake.
+ * src/tar.c: Implement -I as a shorthand for --use-compress-program.
+ * doc/tar.texi: Document -I.
+ * tests/pipe.at, tests/shortrec.at: Account for eventual 'Record
+ size' output.
+ * tests/testsuite.at (AT_TAR_CHECK_HOOK): New define
+ (AT_TAR_WITH_HOOK, TAR_IGNREC_HOOK): New macros.
+
2008-11-30 Sergey Poznyakoff <gray@gnu.org.ua>
* src/xheader.c: Remove duplicate inclusion of fnmatch.h. Reported
2008-11-25 Sergey Poznyakoff <gray@gnu.org.ua>
Do not try to drain the input pipe before closing the
- archive.
-
+ archive.
+
* src/buffer.c (close_archive): Remove call to
sys_drain_input_pipe. Pass hit_eof as the second
argument to sys_wait_for_child.
* src/extract.c (extract_link, extract_symlink): Remove calls to
transform_member_name. It is done in read_header.
* src/list.c (decode_xform): Reflect change in data type of 2nd
- argument.
+ argument.
(transform_member_name): 2nd arg is int.
(decode_header): Transform file name and link target names.
* src/tar.c: Remove --transform-symlinks.
set global flags using `flags=' syntax.
(_transform_name_to_obstack, transform_name_fp)
(transform_name): Take an additional argument, specifying scope
- flags.
+ flags.
2008-10-19 Sergey Poznyakoff <gray@gnu.org.ua>
* tests/sparsemvp.at: Likewise.
* tests/volsize.at: Likewise.
* NEWS: Update.
-
+
2008-10-16 Sergey Poznyakoff <gray@gnu.org.ua>
* src/common.h (transform_symlinks_option): New global.
* doc/tar.texi: Document --transform-symlinks
* NEWS: Update.
* THANKS: Update.
-
+
* src/names.c (name_gather): Use xzalloc.
* src/buffer.c (short_read): Move record size detection before
the loop.
-
+
2008-10-07 Sergey Poznyakoff <gray@gnu.org.ua>
* src/tar.c (options): Add --lzop option.
2008-10-05 Xavier Hienne <xavier.hienne@free.fr> (tiny change)
* src/checkpoint.c (checkpoint_compile_action): Add missing
- `else'.
+ `else'.
2008-09-24 Sergey Poznyakoff <gray@gnu.org.ua>
* tests/atlocal.in (decho): New function.
* tests/multiv06.at: Use decho instead of echo2.
* tests/incremental.at: Raise wait interval to 2 seconds.
-
+
2008-07-24 Sergey Poznyakoff <gray@gnu.org.ua>
* src/tar.c (decode_options): Do not allow volume length less
tests/longv7.at, tests/lustar01.at, tests/lustar02.at,
tests/shortfile.at: Update to match new diagnostic wording
(see 2008-05-06).
-
+
* NEWS: Update.
2008-06-14 Sergey Poznyakoff <gray@gnu.org.ua>
* doc/tar.texi (exclude): Document support for new VCS.
* THANKS: Update.
- * NEWS: Update.
+ * NEWS: Update.
* tests/multiv05.at: Fix typos.
* tests/volsize.at: Remove a TZ dependency.
-
+
2008-06-14 Dan Drake <dan@dandrake.org> (tiny change)
* src/tar.c (exclude_vcs_files): Support for Bazaar, Mercurial and
- Darcs.
+ Darcs.
2008-05-06 Sergey Poznyakoff <gray@gnu.org.ua>
* tests/incr03.at, tests/incr04.at, tests/rename02.at,
tests/rename03.at: Insert calls to sleep between creation of files
and adding them to the archive.
-
+
2008-03-31 Sergey Poznyakoff <gray@gnu.org.ua>
* src/create.c (dump_file0): Count links only for actually dumped
- files.
+ files.
2008-03-27 Sergey Poznyakoff <gray@gnu.org.ua>
* NEWS: Document --no-check-device and --check-device.
* doc/rendition.texi: Change the way FIXME-*refs are handled in
- !PROOF.
+ !PROOF.
* doc/intern.texi, doc/tar.texi: Update.
* doc/untabify.el: New file.
* doc/Makefile.am (EXTRA_DIST): Add untabify.el
(untabify, final, check-format, check-refs, check-fixmes)
(check-unrevised, all-check-docs, check-docs): New rules.
-
+
* src/common.h (check_device_option): New global.
* src/incremen.c (procdir): Use boolean and instead of bitwise
one. Patch by Jean-Louis Martineau.
--check-device. Proposed by Jean-Louis Martineau.
(parse_opt): Hanlde new options.
(decode_options): Initialize check_device_option to true.
-
+
* THANKS: Update
2008-03-06 Sergey Poznyakoff <gray@gnu.org.ua>
* po/.cvsignore: Update
* src/system.c: Remove include setenv.h.
* tests/atlocal.in (STAR_DATA_URL): Update.
- * tests/star/README: Update URL.
+ * tests/star/README: Update URL.
2008-02-09 Sergey Poznyakoff <gray@gnu.org.ua>
Exit with nonzero status if a close fails on an archive.
Problem (and initial trivial fix)
* src/buffer.c (close_archive, new_volume): close_error, not
- close_warn.
+ close_warn.
2007-12-05 Sergey Poznyakoff <gray@gnu.org.ua>
See ChangeLog.1 for earlier changes.
-----
-
- Copyright (C) 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, 2007
- Free Software Foundation, Inc.
-
- This file is part of GNU tar.
-
- GNU tar is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 3, or (at your option)
- any later version.
-
- GNU tar is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with GNU tar; see the file COPYING. If not, write to
- the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- Boston, MA 02110-1301, USA.
\f
Local Variables:
mode: change-log
version-control: never
+buffer-read-only: t
End: