Import upstream version 1.26
[debian/tar] / ChangeLog
index 55d521abff46a1766bf4d8c08971fc9bcaef4752..bb3a1013b9b2d5b18b5629c9298e3a7269c93a59 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,315 @@
+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.
+
+       tar: remove unused function dir_removed_diag
+       * src/common.h (dir_removed_diag): Remove unused decl.
+       * src/misc.c (dir_removed_diag): Remove unused function.
+
+2010-11-23  Paul Eggert  <eggert@cs.ucla.edu>
+
+       tar: work around FreeBSD symlink incompatibility with POSIX
+       * src/extract.c (maybe_recoverable): Treat EMLINK like ELOOP, for
+       FreeBSD.  Problem reported by Christian Weisgerber in
+       <http://lists.gnu.org/archive/html/bug-tar/2010-11/msg00080.html>.
+
+       * src/names.c: tar: fix bug with --one-file-system
+       --listed-incremental
+       Problem (and idea for fix) reported by Martin Weigel
+       <http://lists.gnu.org/archive/html/bug-tar/2010-11/msg00071.html>.
+       * src/common.h (is_individual_file): Remove decl.
+       * src/create.c (dump_file0): Replace "is_individual_file (p)"
+       with "top_level".
+       * src/incremen.c (procdir): Replace "!is_individual_file
+       (name_buffer)" with "st->parent".  Fix bug with --one-file-system
+       and --listed-incremental.
+       * src/names.c (individual_file_table, register_individual_file):
+       (is_individual_file): Remove.  All uses removed.
+
+       tests: new test listed04 for --one-file-system
+       --listed-incremental
+       * tests/Makefile.am (TESTSUITE_AT): Add listed04.at.
+       * tests/listed04.at: New file.
+       * tests/testsuite.at: Include it.
+
+       scripts: fix option parsing
+       Problem reported by Dennis Wydra in
+       <http://lists.gnu.org/archive/html/bug-tar/2010-11/msg00082.html>.
+       * scripts/backup.in: Accept "-l LEVEL".  Be more systematic about
+       backslashes inside ``; it shouldn't matter for modern shells but
+       it might matter for older ones.
+       * scripts/restore.in: Likewise.
+       * scripts/backup.in: Adjust implementation of -t/--time to match
+       the new implementation of -l/--level.
+
+2010-11-15  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       Issue a warning if the archive being compared 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.
+
+       Minor change.
+       * doc/tar.texi: Reword the description of decompress-program.
+
+2010-11-15  Paul Eggert  <eggert@cs.ucla.edu>
+
+       tar: fix --verify option, which broke in 1.24
+       * NEWS: Document this.
+       * src/compare.c (verify_volume): Decode the header before invoking
+       diff_archive, as diff_archive no longer does this as of the
+       2010-06-28 commit.  Also, don't try to invoke diff_archive on a
+       zero block.
+       * tests/Makefile.am (TESTSUITE_AT): Add verify.at.
+       * tests/testsuite.at: Include verify.at.
+       * tests/verify.at: New file.
+
+2010-11-08  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Merge branch 'master' of ssh://git.sv.gnu.org/srv/git/tar
+
+2010-11-08  Jim Meyering  <meyering@redhat.com>
+
+       tests: avoid spurious failure when VERSION_CONTROL envvar is set
+       * tests/backup01.at: Unset VERSION_CONTROL.  Otherwise,
+       when set to e.g., 'always', it would cause this test to fail.
+
+2010-11-07  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       Version 1.25
+       * configure.ac: Version 1.25
+       * NEWS: Describe the changes.
+
+2010-11-05  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       Run alternative decompression programs if the principal one is
+       not available.
+       Some compression programs are able to handle various compression
+       formats
+       (e.g. `gzip' can decompress files created by `compress', `xz'
+       is able
+       to handle lzma, etc.)  Tar tries to use such programs for
+       decompression
+       if the principal decompressor cannot be started.
+
+       * src/buffer.c (compress_type): Swap ct_none and ct_tar.
+       (archive_compression_type): New static variable.
+       (zip_magic): Remove program and option fields.
+       (zip_program): New structure and static.
+       (compress_program): Remove macro.
+       (find_zip_program): New static function.
+       (first_decompress_program,next_decompress_program): New functions.
+       (open_compressed_archive): Set archive_compression_type instead of
+       use_compress_program_option.
+       * src/common.h (first_decompress_program)
+       (next_decompress_program): New functions.
+       (WARN_DECOMPRESS_PROGRAM): New flag.
+       (WARN_VERBOSE_WARNINGS): Include WARN_DECOMPRESS_PROGRAM.
+       * src/warning.c (warning_args): Add "decompress-program".
+       (warning_types): Add WARN_DECOMPRESS_PROGRAM.
+       * src/system.c (run_decompress_program): New function.
+       (sys_child_open_for_uncompress): Use run_decompress_program
+       instead of calling execlp directly.
+
+2010-11-02  Paul Eggert  <eggert@cs.ucla.edu>
+
+       tests: fix some issues with signals, timestamps, "test" typo
+       * tests/extrac17.at: Add --warning=no-timestamp, to avoid
+       bogus warning due to NFS clock skew.
+       * tests/remfiles01.at: Discard diagnostics that some shells
+       generate about broken pipes.
+       * tests/sigpipe.at: Likewise.
+       * tests/remfiles01.at: Fix typo: "test $EC" was written where
+       "test $EC -ne 0" was intended.
+
+2010-11-01  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       Fix extraction of device nodes.
+       * src/extract.c (extract_node): Do not mask out node type.
+       The bug was introduced in commit ea964cce.
+
+2010-10-28  Paul Eggert  <eggert@cs.ucla.edu>
+
+       tar: don't cross struct member boundaries with OLDGNU_MAGIC
+       * src/create.c (write_gnu_long_link, start_header): Access
+       header->buffer + offsetof (struct posix_header, magic), instead of
+       header->header.magic, when reading or writing the OLDGNU_MAGIC
+       pattern.  The code violates the C standard without this change,
+       and GCC warns about this if fortify checking is enabled.  It's not
+       a bug on traditional (i.e., non-debugging) platforms, but it does
+       violate the C standard so it should be fixed.  Problem originally
+       reported by John Emil Karlson in
+       <http://lists.gnu.org/archive/html/bug-tar/2010-04/msg00023.html>.
+       * src/list.c (decode_header): Likewise.
+
+       tests: port to sh variants that squirrel away file descriptors
+       OpenBSD /bin/sh, and some other sh variants, squirrel away file
+       descriptors before closing them.  For example, for "cat 3<&-" they
+       first dup file descriptor 3 to a fd that is 10 or greater, then
+       close 3 (because if "cat" had been a builtin command like ":" then
+       they would have wanted to avoid the fork and restore the fd after
+       ":" finished); and they treat ordinary (forking) commands the same
+       as builtin commands.  This approach fails after "ulimit -n 10".
+       Work around this deficiency by closing the file descriptors before
+       invoking ulimit.  Problem reported by Christian Weisgerber in
+       <http://lists.gnu.org/archive/html/bug-tar/2010-10/msg00041.html>;
+       solution suggested by Jilles Tjoelker in
+       <http://article.gmane.org/gmane.comp.shells.dash/415>.
+
+       * tests/extrac11.at (scarce file descriptors): Close file
+       descriptors before invoking ulimit -n.
+
+2010-10-27  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       Transform file names when updating and 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".
+
+       tar: fix -x --overwrite bug (no --dereference, ! O_NOFOLLOW)
+       This bug was discovered on Solaris 8.  On older hosts lacking
+       O_NOFOLLOW, tar -x --overwrite (without --dereference) follows
+       symbolic links, causing the "extract over symlinks" test to fail.
+
+       * src/extract.c (open_output_file): If O_NOFOLLOW is needed but
+       does not work, check for a symlink separately.
+
+       tar: don't use "((" in shell scripts
+       * tests/extrac11.at: Replace "((" with "( (" in shell scripts, as
+       "((" is not portable to the Korn shell, and POSIX 1003.1-2008 says
+       that "((" is not portable.
+
+2010-10-26  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       Make sure name matching occurs before name transformation.
+       The commit 9c194c99 altered that order.
+
+       * src/list.c (transform_stat_info): New function.  Split off from
+       decode_header.
+       (read_and): Call transform_stat_info right before do_something,
+       and after deciding if we should proceed with this member name,
+       so that name matching occurs before name transformation.
+
+       * tests/extrac17.at: New file.
+       * tests/Makefile.am (TESTSUITE_AT): Add extrac17.at
+       * tests/testsuite.at: Include extrac17.at.
+
+2010-10-26  Paul Eggert  <eggert@cs.ucla.edu>
+
+       tar: don't assume stdin is open when testing fd limits
+       * tests/extrac11.at: Redirect stdin from /dev/null, in case
+       the parent 'make' is running with stdin closed.
+
+2010-10-26  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+       Further fixes in bootstrap.
+       * bootstrap: Restore the default for gnulib_path
+       (symlink_to_dir): Re-apply 67cad07.
+
+2010-10-26  Paul Eggert  <eggert@cs.ucla.edu>
+
+       tar: fix bug with -C and extracting directories
+       Problem reported by Denis Excoffier in
+       <http://lists.gnu.org/archive/html/bug-tar/2010-10/msg00034.html>.
+
+       * src/extract.c (extract_dir): Use mkdirat, not mkdir.
+       * tests/extrac16.at: New file, to test for this bug.
+       * tests/Makefile.am (TESTSUITE_AT): Add it.
+       * tests/testsuite.at: Include it.
+
+       This file is a placeholder. It will be replaced with the actual
+       ChangeLog
+       by make dist.  Run make ChangeLog if you wish to create it
+       earlier.
+
 2010-10-25  Sergey Poznyakoff  <gray@gnu.org.ua>
 
        Version 1.24
        * tests/extrac05.at: Skip test if creating
        sparse file fails.
 
-       Fix eventual memory override and fd exhaustion in create.c
-       Both bugs reported by Kamil Dudka.
-
+       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.