X-Git-Url: https://git.gag.com/?p=debian%2Ftar;a=blobdiff_plain;f=ChangeLog;h=7c7865dc7baba80169d7d3a71908b8beeb3404c0;hp=f4945ea8c9c2edd4cd695159658892ebe2e2065b;hb=HEAD;hpb=dda6367c9eac71da8f2ab1c60b3df60f19ce4755 diff --git a/ChangeLog b/ChangeLog index f4945ea8..7c7865dc 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,2529 @@ +2016-05-16 Sergey Poznyakoff + + Version 1.29 + + Minor fix + * src/names.c (new_name): rename to make_file_name. All uses + changed. + +2016-04-14 Sergey Poznyakoff + + Fix argument handling when running external commands. + * src/system.c (xexec): Use sh -c to run the command. This fixed + bug introduced by 7b5e80396 (tar 1.27) + * doc/tar.texi: Fix checkpoint examples: (1) $TAR_FILENAME + is not available when creating archive and (2) --checkpoint + can't be used as abbreviation of --checkpoint-action + +2016-04-06 Sergey Poznyakoff + + Remove iotty test + The auxiliary utility ttyemu proved to be unreliable. + Given existing + differences between pty implementations and termios ioctls + on various + platforms, writing it in a portable way requires effort + disproportional + to its actual purpose. + * configure.ac: Remove check for grantpt + * gnulib.modules: Remove posix_openpt, ptsname, and unlockpt + * tests/Makefile.am (TESTSUITE_AT): Remove iotty.at + (check_PROGRAMS): Remove ttyemu. + * tests/testsuite.at: Remove iotty.at + * tests/iotty.at: Remove. + * tests/ttyemu.c: Remove. + +2016-04-05 Pavel Raiskup + + xattrs: fix build on Darwin + Be careful to define HAVE_XATTRS when not all needed xattr-related + functions are properly defined either in libc or libattr. + Reported independently by Denis Excoffier and Dominyk Tille. + * acinclude.m4 (TAR_HEADERS_ATTR_XATTR_H): Check for each xattr + function separately. Don't AC_CHECK_LIB (LIBS is filled by + AC_SEARCH_LIBS when necessary). + * src/Makefile.am: The LDADD -lattr was redundant. + +2016-03-24 Sergey Poznyakoff + + Remove --preserve option + * src/tar.c: Remove --preserve option + * NEWS: Update. + * doc/tar.texi: Update. + + Fix testcase + * tests/time02.at: Sort tar -d output + + Update THANKS file + +2016-03-24 Jeremy Bobbio + + New option --clamp-mtime + The new `--clamp-mtime` option will change the behavior of + `--mtime` to only + use the time specified if the file mtime is newer than the + given time. + The `--clamp-mtime` option can only be used together with + `--mtime`. + Typical use case is to make builds reproducible: to loose less + information, it's better to keep the original date of an archive, + except for + files modified during the build process. In that case, using + a reference + (and thus reproducible) timestamps for the latter is good + enough. See + for more information. + Patch submitted by Jeremy Bobbio and + Daniel Kahn Gillmor + * doc/tar.1: Document --clamp-mtime + * doc/tar.texi: Likewise. + * src/common.h (set_mtime_option_mode): New enum + (set_mtime_option): Change type to enum set_mtime_option_mode. + (NEWER_OPTION_INITIALIZED): Rename to NEWER_OPTION_INITIALIZED. + * src/create.c (start_header): Set mtime depending on + set_mtime_option. + * src/tar.c (options,parse_opt): New option --clamp-mtime + (decode_options): Initialize mtime_option + * tests/time02.at: New testcase. + * tests/Makefile.am: Add new testcase + * tests/testsuite.at: Likewise. + +2016-03-21 Sergey Poznyakoff + + Acknowledgments + * THANKS: Add Dagobert Michelsen + + Fix the testsuite + * tests/sparse06.at: Don't use timeout: depending on the + filesystem + mounted, current LA and lots of other factors, creation of + archive can + take much more time than the expected 2 seconds. + + Fix ckmtime + * gnulib.modules: Use timespec-sub + * tests/ckmtime.c: Use second resolution. + +2016-03-20 Sergey Poznyakoff + + Fix the testsuite + * tests/sparse05.at: Use autom4te magic to generate mapfile, + instead of the shell command seq, which is not always available. + * tests/listed03.at: Skip the test if xgetcwd fails. + * tests/ckmtime.c: New file. + * tests/Makefile.am: Build ckmtime + * tests/testsuite.at (AT_CHECK_TIMESTAMP): Check whether newly + created + files have timestamps consistent with the creation time. + Skip the test + if not. + * tests/incr01.at: Use AT_CHECK_TIMESTAMP + * tests/incr02.at: Likewise. + * tests/incr03.at: Likewise. + * tests/incr04.at: Likewise. + * tests/incr05.at: Likewise. + * tests/incr06.at: Likewise. + * tests/incr07.at: Likewise. + * tests/incr08.at: Likewise. + * tests/incr09.at: Likewise. + * tests/incr10.at: Likewise. + * tests/incr11.at: Likewise. + * tests/incremental.at: Likewise. + * tests/listed01.at: Likewise. + * tests/listed02.at: Likewise. + * tests/listed04.at: Likewise. + * tests/listed05.at: Likewise. + +2016-03-18 Sergey Poznyakoff + + Testsuite fixes. + * paxutils: Update. + * src/unlink.c (flush_deferred_unlinks): OpenSolaris sets EEXIST + instead of ENOTEMPTY if trying to remove a non-empty directory. + * tests/numeric.at: Avoid using awk -v: some older awks don't + support + that option. Also fix environment variable usage. + * tests/onetop05.at: Skip test if unable to set initial directory + mode bits. + * tests/sparse06.at: Use --quiet option. + + Revise docs + + Fix build with --enable-gcc-warnings + * configure.ac: Disable stack-protector warnings + +2016-03-17 Sergey Poznyakoff + + Improve testsuite + * tests/iotty.at: Skip test if ttyemu can't do its job + +2016-03-16 Sergey Poznyakoff + + Document xattrs, ACL and SELinux-related options. + * doc/tar.1: Document all options. + * doc/tar.texi: Likewise. + +2016-03-15 Sergey Poznyakoff + + Fix appending to archive with changed blocking factor. + * src/buffer.c (flush_archive): If previous reading attempt + resulted + in short read, correctly use the remaining record space. + (backspace_output): Fix position calculation (still has to be + improved). + * tests/append05.at: New test case. + * tests/Makefile.am: Add new test. + * tests/testsuite.at: Likewise. + +2016-03-14 Sergey Poznyakoff + + Fix coredump on parsing invalid traditional option + * src/tar.c (find_argp_option): Fix loop termination condition. + +2016-01-20 Sergey Poznyakoff + + Update copyright years + + Allow escaped delimiters in transform expressions. + Patch provided by Charles McGarvey and Flavio Poletti. + * src/transform.c (parse_transform_expr): Allow escaped delimiters + in transform expressions. + * tests/xform02.at: New test case. + * tests/Makefile.am: Add xform02.at + * tests/testsuite.at: Include xform02.at + * THANKS: Update. + +2015-12-17 Sergey Poznyakoff + + Fix eventual dereference of uninitialized pointer. + * src/exclist.c (hg_initfn): Initialize hgopt. + +2015-12-17 Pavel Raiskup + + sparse: fix use of indeterminate value + * src/xheader.c (sparse_map_decoder): Move 'e' up from loop-block. + +2015-12-11 Sergey Poznyakoff + + fix a typo + * doc/tar.texi (Incremental Dumps): Add missing --file to the + '--list' example. + + Minor fixes. + * doc/tar.texi: Document position-sensitive options in a + separate subsection. + * src/names.c (names_argp,names_argp_children): Explicitly + initialize + all members. + +2015-12-11 Sergey Poznyakoff + + Minor fix + + Fix handling of filename-selection options. + Filename-selection options are --wildcards, --recursive, etc. (see + names.c for a complete list). These options are + position-sensitive, + i.e. each such option affects all filenames and filename-selection + options that appear after it until eventually cancelled by a + corresponding counterpart option. + These options can appear in "file-from" file lists, which + means that + they cannot be handled right away, but instead should be put on + the "name_elt" list and processed sequentionally, as file name + arguments + are. + * src/common.h (warn_regex_usage): Remove. + (name_add_name): Change signature. + (name_add_dir, name_add_file): Remove prototypes. + * src/names.c (name_add_option, name_add_dir) + (name_add_file): Static functions. + (names_options, is_file_selection_option, names_parse_opt): + Static functions. + (names_argp_children): New variable. + (NELT_NAME, NELT_CHDIR) + (NELT_FILE, NELT_NOOP): Redefine as enum nelt_type. + (NELT_FMASK): Remove. + (NELT_OPTION): New constant. + (name_elt) : Change type. + : New member. + (name_elt_alloc_matflags): Remove. + (name_add_name): Take one argument. + (name_add_option): New static function. + (name_add_file): Take one argument. + (read_next_name): Use filename_terminator and + verbatim_files_from_option to initialize file.term and + file.verbatim. + * src/tar.c: Move handling of filename-selection options to + names.c + * tests/T-dir00.at: Fix typo. + * tests/T-recurse.at: Remove expected failure. + +2015-12-10 Pavel Raiskup + + better test --{,no-}recursion options + * tests/recurs02.at: Also test --list mode. + * tests/T-recurse.at: New test case. Test that -T option works + correctly together with --{,no-}recursion. + * tests/Makefile.am: Mention new test T-recurse.at. + * tests/testsuite.at: Likewise. + +2015-12-06 Pavel Raiskup + + Bugfix + * src/buffer.c (try_new_volume): Warn if user supplied malformed + tar archive. + Consistently use WARN (instead of ERROR) when reporting. + +2015-12-06 Sergey Poznyakoff + + Fix segfault when extracting from a multi-volume archive. + Fix suggested by Pavel Raiskup. + * src/buffer.c (try_new_volume): Fix dereferencing NULL pointer. + * tests/multiv09.at: New testcase. + * tests/Makefile.am: Add new testcase. + * tests/testsuite.at: Likewise. + + Fix NEWS + +2015-12-06 Pavel Raiskup + + numeric-owner: print big UID/GID correctly + * src/list.c (simple_print_header): Do not parse ustar header + for UID/GID again (tar_stat_info has already been correctly + filled with respect to possible uid/gid extended headers). + * tests/numeric.at: New testcase for --numeric-owner option. + * tests/Makefile.am: Add new testcase. + * tests/testsuite.at: Likewise. + +2015-12-06 Sergey Poznyakoff + + Use SEEK_HOLE for hole detection + Based on patch by Pavel Raiskup. + Use SEEK_HOLE/SEEK_DATA feature of lseek on systems that support + it. This can make archiving of sparse files much faster. + Implement the --hole-detection option to allow users to select + hole-detection method. + * src/common.h (hole_detection_method): New enum. + (hole_detection): New global. + * src/sparse.c (sparse_scan_file_wholesparse): New function as a + method for detecting sparse files without any data. + (sparse_scan_file_raw): Rename from sparse_scan_file; with edits. + (sparse_scan_file_seek): New function. + (sparse_scan_file): Reimplement function. + * src/tar.c: New option --hole-detection + * tests/checkseekhole.c: New file. + * tests/.gitignore: Mention two test binaries. + * tests/Makefile.am: Add new tests. + * tests/testsuite.at (AT_SEEKHOLE_PREREQ): New macro. + Include sparse06.at. + * tests/sparse06.at: New test case. + * tests/sparse02.at: Force raw hole-detection method. + * tests/sparsemv.at: Likewise. + * tests/sparsemvp.at: Likewise. + * doc/tar.1: Document --hole-detection option. + * doc/tar.texi: Document hole-detection algorithms and + command-line options. + * NEWS: Document hole-detection. + +2015-12-05 Sergey Poznyakoff + + Catch compressor execution errors. + * src/misc.c (write_fatal_details): Move to buffer.c + * src/buffer.c (write_fatal_details): Close the archive and + wait for + the compressor program to terminate in order to catch eventual + execution + errors. + * src/system.c (sys_child_open_for_compress): Ignore SIGPIPE so + tar will + not silently terminate when unable to write to the compressor. + * tests/comperr.at: New file. + * tests/Makefile.am: Add comperr.at + * tests/testsuite.at: Include comperr.at + + Upgrade paxutils + +2015-11-29 Sergey Poznyakoff + + Fix extraction from concatenated incremental archives with + renamed directories. + Complements 15c02c2b. + * src/extract.c (delayed_set_stat): Change type of file_name. + (delay_set_stat): Allocate file_name member. + (free_delayed_set_stat): Free file_name. + (fixup_delayed_set_stat): New function. + (rename_directory): Call fixup_delayed_set_stat on success. + * tests/incr11.at: New testcase. + * tests/incr10.at: Improve description. + * tests/Makefile.am: Add incr11.at + * tests/testsuite.at: Add incr11.at + +2015-11-21 Sergey Poznyakoff + + Fix bug in the inplementation of --one-top-level. + When extracting an archive that contains './' with the + --one-top-level option, + the mode and ownership of '.' would be incorrectly applied to + the current + working directory, instead of the requested top-level directory. + * src/list.c (enforce_one_top_level): Map '.' to the top-level + directory. + * tests/Makefile.am: Add onetop05.at + * tests/testsuite.at: Include onetop05.at. + * tests/onetop05.at: New file. + * tests/onetop01.at: Fix keywords. + * tests/onetop02.at: Likewise. + * tests/onetop03.at: Likewise. + * tests/onetop04.at: Likewise. + +2015-11-11 Sergey Poznyakoff + + Work around unlinkat bug on FreeBSD and GNU/Hurd + * src/unlink.c (dunlink_insert): New function. + (flush_deferred_unlinks): Skip cwds and nonempty directories + at the first pass. If force is requested, run a second pass + removing them. + (queue_deferred_unlink): Make sure current working directory + entries are sorted in descending order by the value of dir_idx. + This makes sure they will be removed in right order, which works + around unlinkat bug on FreeBSD and GNU/Hurd. + * tests/remfiles08b.at: Remove expected failure. + * tests/remfiles09b.at: Likewise. + +2015-11-10 Sergey Poznyakoff + + Fix coredump on FreeBSD when TAR_OPTIONS is set + * src/tar.c (parse_default_options): Use program_name instead of + program_invocation_short_name. On some systems the latter is + NULL when + the function is called, which causes coredumps. + (tar_set_quoting_style): Likewise. + * src/names.c: Likewise. + +2015-11-02 Sergey Poznyakoff + + Use sort in T-dir tests. + + Fix distclean in tests/ + * tests/Makefile.am: Remove "download" + + New options: --owner-map and --group-map. + * NEWS: Update. + * doc/tar.1: Document --owner-map and --group-map + * doc/tar.texi: Likewise. + * src/map.c: New file. + * src/Makefile.am: Add map.c + * src/common.h (owner_map_read, owner_map_translate) + (group_map_read, group_map_translate): New protos. + * src/create.c (start_header): Use owner_map_translate + and group_map_translate to optionally translate user/group + names/ids. + * src/tar.c: New options --owner-map and --group-map. + * tests/map.at: New file. + * tests/Makefile.am: Add map.at + * tests/testsuite.at: Include map.at. + +2015-09-24 Kir Kolyshkin (tiny change) + + doc: fix font and spelling typos + * doc/tar.1: Fix font and spelling typos in man page. + +2015-09-24 Paul Eggert + + Fix problems caught by static checking + Most of these can be caught by configuring with + --enable-gcc-warnings. + Problem reported by Pavel Raiskup in: + http://lists.gnu.org/archive/html/bug-tar/2015-09/msg00001.html + * src/buffer.c (format_total_stats): + Prefer pointer to const when it’s OK to use const. + (default_total_format): Now const. + * src/buffer.c (default_total_format): + * src/exclist.c (excfile_head, excfile_tail, vcs_ignore_files): + * src/misc.c (namebuf_add_dir, namebuf_finish): + * src/tar.c (verbatim_files_from_option, option_set_in_cl) + (optloc_eq, set_old_files_option): + Now static. + * src/common.h: Adjust to match the other changes described here. + * src/exclist.c (info_cleanup_exclist): + * src/tar.c (argp_program_version, argp_program_bug_address): + Remove; unused. + (parse_default_options): Define via prototype instead of old + style. + (parse_default_options, decode_options): + Fill out incomplete initializers. + +2015-08-31 Sergey Poznyakoff + + Improve option sanity checking + Any two conflicting options are reported only if they both + occur in + the command line. Otherwise, options defined in the command line + silently override those set in the TAR_OPTIONS environment + variable. + * src/common.h (option_source): New enum. + (option_locus): New struct. + * src/names.c (name_elt): New member: line. + (name_add_file): Initialize line. + (read_name_from_file): Keep track of input line number for + diagnostic + purposes. + (handle_option): Take a pointer to struct name_elt as 2nd + parameter; + pass locus info to more_options(). + * src/tar.c (tar_args): New member: loc. + (option_class): New enum. + (optloc_save,optloc_lookup) + (option_set_in_cl,optloc_eq): New functions. + (set_use_compress_program_option): Take into account option + location. + (set_old_files_option): New function. + (parse_opt): Keep track of option locations. + (more_options): Improve error reporting. + (parse_default_options): New function. + (decode_options): Parse TAR_OPTION and command line separately. + Options from the latter silently override those from the former. + * lib/prepargs.c: Remove. + * lib/prepargs.h: Remove. + * lib/Makefile.am: Update. + +2015-08-24 Sergey Poznyakoff + + Improve check-full + * tests/atlocal.in: Download external archives to + $abs_builddir/download. + (tarball_prereq): Create destination directory if necessary. + * tests/.gitignore: Add download + + Fix check-full + * tests/atlocal.in (TAR_DATA_URL): Berlios is dead. Get + test archives from gnu.org.ua + + Include gnulib and paxutils as submodules. + * .gitmodules: New file. + * README-alpha: Update. + * README-hacking: Update. + * bootstrap: Install slightly modified version from the gnulib + repo. + * bootstrap.conf: Add paxutils-related stuff. + * .gitignore: Update. + * doc/.gitignore: Update. + * po/.gitignore: Update. + * gnu/Makefile.am + + Update docs. + * doc/tar.1: Document --verbatim-files-from option. + +2015-08-20 Sergey Poznyakoff + + Add missing VCS files to --exclude-vcs list + * src/tar.c (vcs_file_table): Add .gitmodules and .gitattributes + * doc/tar.texi: Update. + +2015-08-03 Sergey Poznyakoff + + Options to control option handling in file lists. + The --verbatim-files-from option disables option handling in + file lists. The --no-verbatim-files-from reverts its effect. + The --null option implies --verbatim-files-from. This restores + the documented behavior, broken by 26538c9b. + * src/common.h (verbatim_files_from_option): New global. + * src/names.c (name_elt): New member: file.verbatim + (name_add_file): Take 'verbatim' state as its third parameter. + (read_next_name): Don't call handle_option if file.verbatim + is set. + * src/tar.c: New options --verbatim-files-from and + --no-verbatim-files-from. + * doc/tar.texi: Document --verbatim-files-from and + --no-verbatim-files-from options. + * NEWS: Update. + * configure.ac: Version 1.28.90 + * tests/T-null2.at: New testcase. + * tests/Makefile.am: Update. + * tests/testsuite.at: Update. + +2015-07-25 Anders Jonsson (tiny +change) + + Fix typos (preceeded etc.) + +2015-07-13 Paul Eggert + + tar: fix symlink race and symlink transform bug + Problem reported by Tobias Stoeckmann in: + http://lists.gnu.org/archive/html/bug-tar/2015-07/msg00004.html + * gnulib.modules: Add areadlinkat-with-size. + * src/create.c: Include areadlink.h. + (dump_file0): Use areadlinkat_with_size, rather than trying to do + it by hand, incorrectly. This also avoids assumption that + the symlink contents fit on the stack. Also, use the transformed + link name, not the original link name, when deciding whether the + name is long enough to require writing a long link. + + tar: port -d to longer symlinks + * src/compare.c (diff_symlink): + Don't use alloca on symlink length; it might be too big for + the stack. + Don't assume that readlinkat's return value fits in 'int'. + Prefer memcmp to strncmp where either will do. + + tar: port to recent gnulib + * gnulib.modules: Remove 'acl' and add 'file-has-acl'. + + tar: pacify GCC 5.1 -Wformat-signedness + * lib/wordsplit.c (struct wordsplit_node.flags): + Now unsigned, so that 'printf ("%x", p->flags)' doesn't provoke + GCC. + * src/incremen.c (read_num, dumpdir_ok): + Don't printf an int with %x or %o. + +2015-04-16 Sergey Poznyakoff + + Fix extraction from concatenated incremental archives. + * src/common.h (remove_delayed_set_stat): New proto. + * src/extract.c (free_delayed_set_stat) + (remove_delayed_set_stat): New function. + (apply_nonancestor_delayed_set_stat): Use free_delayed_set_stat. + * src/misc.c (safer_rmdir): Remove delayed_set_stat entry + corresponding to the removed directory. + * tests/incr10.at: New test case. + * tests/Makefile.am: Add new test. + * tests/testsuite.at: Likewise. + +2015-04-10 Sergey Poznyakoff + + Fix make installcheck + Make installcheck would fail unless make check had been run + before it. + Reported by Erik Brangs + * tests/Makefile.am (installcheck-local): Depend on + $(check_PROGRAMS) + +2015-03-18 Paul Eggert + + tar: don't assume GZIP + * Makefile.am (dist-hook): Port to gzip implementations that + warn about nontrivial settings in the GZIP environment var. + +2015-03-17 Paul Eggert + + tar: don't suggest GZIP + * doc/tar.texi (gzip): Don't suggest using the GZIP environment + variable, as it will be deprecated in the next gzip release. + +2015-02-19 Sergey Poznyakoff + + Improve compression format recognition + Some comressed archives can pass the checksum test, which + makes tar + treat them as uncompressed archives. + * src/buffer.c (check_compressed_archive): Test the checksum only + if the block we read looks like a valid tar header (i.e. has + a magic string). + +2015-01-06 Paul Eggert + + tar: port xattr-at.c to Solaris 10 + * lib/xattr-at.c (setxattrat, lsetxattrat, getxattrat, + lgetxattrat) + (listxattrat, llistxattrat): Compile only if HAVE_XATTRS, so that + the code doesn't call functions that are not declared. + + tar: port wordsplit attribute to Sun C + Reported by Ted Carr in: + http://lists.gnu.org/archive/html/bug-tar/2015-01/msg00002.html + * lib/wordsplit.h (__WORDSPLIT_ATTRIBUTE_FORMAT): + New macro, taken from Gnulib. + (struct wordsplit): Use it. + * lib/wordsplit.c (_wsplt_error): Use it. + +2014-12-17 Sergey Poznyakoff + + Silent a cc warning + * src/xheader.c (xheader_string_end): Make sure pointer + arithmetics applies on char*. + +2014-12-12 Paul Eggert + + tar: port ISFOUND, WASFOUND to C89 + Problem reported by Romano Maspero in: + http://lists.gnu.org/archive/html/bug-tar/2014-12/msg00010.html + * src/common.h (ISFOUND, WASFOUND): Port to C89. + +2014-12-10 Sergey Poznyakoff + + Fix tar -c -l file file + When the same file is added several times to the archive, count + correctly the number of hard links. See also 37ddfb0b. + * src/create.c (dump_hard_link): Don't decrease nlink if it is 0. + * tests/link04.at: Test -cl options. + +2014-11-07 Sergey Poznyakoff + + Honor the pax-option overrides when creating archive. + Changes proposed by Denis Excoffier. + * NEWS: Fix typos. + * doc/tar.texi: Fix typos. Improve recipe for creation of binary + equivalent archives. + * src/create.c (write_extended): Use the value of the + --mtime option (if specified) as the default for exthdr.mtime. + * src/xheader.c (xheader_store): Create the header if at least + one override is supplied in --pax-option. + + Add testcase for the previous commit. + * tests/sparse05.at: New file. + * tests/Makefile.am: Add sparse05.at + * tests/testsuite.at: Include sparse05.at + +2014-11-07 Pavel Raiskup + + Fix bug in sparse file listing + List posix archives containing sparse files >8GB correctly and + do not fail. + This fixes also bug in format of listing for sparse files >8GB - + now the + real size is printed instead of the effective one (this is + not strictly + posix format related). + * src/list.c: Remove redundant assignment. + * src/tar.h: Add new 'real_size' and 'real_size_set' fields in + tar_stat_info struct. + * src/xheader.c: Correctly handle (especially sparse) file sizes + directly in + xheader_decode(). + +2014-10-15 Sergey Poznyakoff + + Fix a typo + +2014-10-01 Sergey Poznyakoff + + Fix README + Remove the reference to PORTS + +2014-09-25 Sergey Poznyakoff + + Bugfixes. + * doc/tar.1: Fix typo in font spec. + * src/tar.c (sort_mode_arg, sort_mode_flag): Protect "inode" + (SAVEDIR_SORT_INODE) with D_INO_IN_DIRENT + +2014-09-18 Sergey Poznyakoff + + Bugfix: entries read from the -T file did not get proper + matching_flag. + * src/common.h (name_add_file): Change signature. + * src/names.c (name_elt_alloc_matflags): New function. + (name_add_name): Use name_elt_alloc_matflags. + (name_add_file): Take matching flags as third argument. + (read_next_name): Remove trailing slashes. + * src/tar.c (parse_opt): Pass matching_flags to name_add_file. + * tests/T-dir00.at: New file. + * tests/T-dir01.at: New file. + * tests/Makefile.am: Add new testcases. + * tests/testsuite.at: Likewise. + +2014-08-16 Sergey Poznyakoff + + Improve documentation. + * doc/tar.1: Document --skip-old-files and --warning=existing-file + * doc/tar.texi: Document --warning=existing-file + +2014-07-27 Sergey Poznyakoff + + Version 1.28 + +2014-07-27 Nathan Stratton Treadway + + Minor change in docstrings. nor ch# + + Restructure the remfiles testsuite. + +2014-07-22 Sergey Poznyakoff + + Don't build ttyemu and run tty I/O test if grantpt is not + available. + * configure.ac (TAR_COND_GRANTPT): Define conditional depending + on whether grantpt is available. + * gnulib.modules: Remove grantpt. It relies upon a helper binary + pt_chown which it installs and which is useless in the testsuite. + * tests/Makefile.am [TAR_COND_GRANTPT]: Build ttyemu + * tests/iotty.at: Skip test if ttyemu is not build. + * tests/ttyemu.c (noecho): Fix error message + (main): Use TIOCSCTTY if it is defined. + +2014-07-22 Benno Schulenberg + + Fix a typo and some wordings in the documentation. + * doc/tar.texi: Fix some missing articles, and make it clearer + that "any" does not mean "anything" but "either of the two". + +2014-07-22 Nathan Stratton Treadway + + Fix the testsuite + * tests/incr07.at: Don't assume case-sensitive filesystem. + +2014-07-11 Paul Eggert + + tar: minor fixups related to recent checkpoint.c change + * src/checkpoint.c (getwidth, format_checkpoint_string): + Use long and strtol, not int, to avoid overflow issues. + (getwidth): Don't assume termios.h defines TIOCGWINSZ, + as it doesn't on some older hosts. + +2014-07-11 Sergey Poznyakoff + + Bugfixes + * gnulib.modules: Add faccessat + * src/checkpoint.c: Include termios.h + +2014-06-29 Nathan Stratton Treadway + + tar: document xgetcwd test case better + * src/misc.c (normalize_filename): Add commentary for clarity. + * tests/extrac09.at: Retitle test case and add comments for + clarity. + +2014-06-24 Sergey Poznyakoff + + Fix typos in ChangeLog + * ChangeLog.CVS: Fix typos. + * ChangeLog.amend: New file. + * Makefile.am: Define changelog_amend_file. + +2014-04-30 Paul Eggert + + tar: do not dereference NULL pointer with '--remove-files .' + Problem reported by Thorsten Hirsch in: + http://lists.gnu.org/archive/html/bug-tar/2014-04/msg00011.html + * src/unlink.c (flush_deferred_unlinks): + Do not attempt to find the parent of "." when "." is + at the top level. + * tests/remfiles10.at: New file. + * tests/Makefile.am (TESTSUITE_AT): + * tests/testsuite.at: Add it. + +2014-03-27 Sergey Poznyakoff + + Refuse to write archive contents to a tty. + * NEWS: Update. + * src/buffer.c (_open_archive): Refuse to write to a tty. + * tests/iotty.at: Test output to a tty. + +2014-03-26 Vitezslav Cizek + + fix an eternal loop in handle_option + * src/names.c (handle_option): increment loop counter + +2014-03-20 Sergey Poznyakoff + + Fail if archive comes from a terminal. + Based on patch from Pavel Raiskup . + * gnulib.modules: Add new modules. + * src/buffer.c (_open_archive): Refuse to read archive from a tty. + * tests/Makefile.am (TESTSUITE_AT): Add iotty.at + (check_PROGRAMS): New program ttyemu + * tests/testsuite.at: Include iotty.at + * tests/iotty.at: New file. + * tests/ttyemu.c: New file. + +2014-03-13 Paul Eggert + + tar: port to Solaris 9 + Problem reported by Jesse C in: + http://lists.gnu.org/archive/html/bug-tar/2014-03/msg00034.html + * gnulib.modules: Add strtoimax and strtoumax, since tar invokes + these functions directly and they don't exist on Solaris 9. + +2014-02-25 Sergey Poznyakoff + + Test the --[no-]recursive options (see commit 2bd9c153). + * tests/recurs02.at: New test case. + * tests/Makefile.am: Add new file. + * tests/testsuite.at: Add new file. + +2014-02-22 Sergey Poznyakoff + + Support exclusion patterns from various VCS ignore lists. + * src/Makefile.am (tar_SOURCES): Add exclist.c + * src/common.h (EXCL_DEFAULT, EXCL_RECURSIVE) + (EXCL_NON_RECURSIVE): New flags. + (excfile_add, info_attach_exclist) + (info_cleanup_exclist,info_free_exclist) + (exclude_vcs_ignores): New prototypes. + * src/create.c (dump_dir0): Call info_attach_exclist. + * src/exclist.c: New file. + * src/incremen.c (scan_directory): Call info_attach_exclist. + * src/names.c (excluded_name): Moved to exclist.c. Change + signature. + All uses updated. + * src/tar.c: New options: --exclude-ignore, + --exclude-ignore-recursive + and --exclude-vcs-ignores. + (tar_stat_destroy): Free exclist. + * src/tar.h (tar_stat_info): New member exclude_list. + * NEWS: Document new exclusion options. + * doc/tar.texi: Likewise. + * doc/tar.1: Likewise. + +2014-02-14 Sergey Poznyakoff + + Fix in testsuite + * acls03.at: Fix improper invocation of setfacl. + +2014-02-14 Pavel Raiskup + + testsuite: add test for buggy default ACLs + * tests/Makefile.am: Mention acls03.at. + * tests/testsuite.at: Likewise. + * tests/acls03.at: New testcase. + + acls: bugfix for default ACLs extraction + When --acls option is on (regardless of tarball contents or + tarball format), we should explicitly set OR delete default ACLs + for extracted directories. Prior to this update, we always + created arbitrary default ACLs based standard file permissions. + * configure.ac (with_posix_acls): Check also for acl_free and + acl_delete_def_file to mark IEEE 1003.1e ACLs as supported. + * src/xattrs.c (acl_delete_def_file_at): New function. + (xattrs__acls_set): Do not treat acls_option at all; Delete + default ACLs if appropriate. + References: + http://www.mail-archive.com/bug-tar@gnu.org/msg04355.html + Thanks: Juan J. Martínez and Mark Steinborn + + tar: imply --xattrs when --xattrs-{inc,exc}lude used + Options --xattrs-include=MASK and --xattrs-exclude=MASK now turn + on the --xattrs option. + Fix also bug in printing in xattrs.c - don't print when option is + negative. + * src/tar.c (set_xattr_option): New static function. + (parse_opt): Call new function when --xatrrs, --xattrs-include or + --xattrs-exclude option is used. + * src/xattrs.c (xattrs_print, xattrs_print_char): Expect positive + values in options. + +2014-02-14 Sergey Poznyakoff + + THANKS: Add Anthony G. Basile. + + Use correct headers/libraries when providing xattr support + See https://savannah.gnu.org/patch/index.php?8252. Patch provided + by Anthony G. Basile. + * acinclude.m4 (TAR_HEADERS_ATTR_XATTR_H): Look for + first and then for . Link against libattr.so if + needed. + * lib/xattr-at.h: Include sys/xattr.h or attr/xattr.h, depending + on which one is detected. + * src/Makefile.am [TAR_LIB_ATTR] (tar_LDADD): Link against -lattr. + + Minor change + * src/tar.c (decode_options): Silently ignore --one-top-level + if used with a non-reading command. + +2014-02-14 Sergey Poznyakoff + + New option --sort=ORDER + This option makes tar sort the entries of directories that will be + added to an archive according to ORDER (none, name, or inode). + Based on proposition by Dick Streefland + (https://savannah.gnu.org/patch/?7892). + * src/common.h (savedir_sort_order): New global. + * src/create.c: Pass savedir_sort_order to streamsavedir. + * src/misc.c: Likewise. + * src/tar.c: New option --sort. + * NEWS: Update. + * doc/tar.texi: Document the --sort option. + * doc/tar.1: Likewise. + +2014-02-13 Sergey Poznyakoff + + Fix the testsuite + * tests/opcomp01.at: Update expected error messages. + * tests/opcomp03.at: Likewise. + +2014-02-13 Sergey Poznyakoff + + Fix --one-top-level used together with --list. + * src/extract.c: Move one_top_level stuff to tar.c + (decode_options). + * src/tar.c (option_conflict_error): New function. + (decode_options): Use option_conflict_error to complain about + conflicting options in a uniform manner. + Process one_top_level options here. + (request_stdin): Fix error message. + * tests/onetop04.at: New testcase: check --one-top-level with + --list. + * tests/Makefile.am: Add new testcase. + * tests/testsuite.at: Add new testcase. + + Fix NEWS + * NEWS: Remove duplicate description of the --one-top-level + option. + +2014-02-12 Sergey Poznyakoff + + configure.ac: look for host-prefixed ar + See https://savannah.gnu.org/patch/?8183 + +2014-02-10 Sergey Poznyakoff + + Bugfix + * src/suffix.c (find_compression_suffix): Fix eventual coredump. + +2014-02-10 Sergey Poznyakoff + + Fix docs. + + Update docs. + * NEWS: Document --one-top-level + * THANKS: Mention Connor Behan + +2014-01-30 Sergey Poznyakoff + + Update copyright years. + +2014-01-28 Sergey Poznyakoff + + Improve one-top-level functionality + Make sure the changes become visible with + --show-transformed-names. + * src/common.h (strip_compression_suffix): New function. + (one_top_level): Rename to one_top_level_dir. All uses changed. + * src/extract.c (extr_init): Use strip_compression_suffix. + Bail out if unable to determine top-level directory. + (maybe_prepend_name): Remove. All uses removed. + * src/tar.c (options): --one-top-level takes optional argument. + (parse_opt): Handle it. + * src/list.c (enforce_one_top_level): New function. + (transform_stat_info): Call enforce_one_top_level if required. + * src/suffix.c (compression_suffixes): List "tar" (no + compression); + terminate with NULL entry. + (find_compression_suffix): New static. + (strip_compression_suffix): New function. + * doc/tar.1: Update. + * doc/tar.texi: Update. + * tests/onetop01.at: New testcase. + * tests/onetop02.at: New testcase. + * tests/onetop03.at: New testcase. + * tests/Makefile.am: Add new testcases. + * tests/testsuite.at: Likewise. + +2014-01-27 Connor Behan + + Detect tarbombs while extracting + * src/common.h (one_top_level_option): New global. + (one_top_level): New global. + * src/extract.c (extr_init): If one_top_level_option is set, + determine + the name one_top_level that might have to be prepended. + (extract_archive): If one_top_level_option is set, prepend + one_top_level + to all names that don't already start with it. + * src/tar.c (ONE_TOP_LEVEL_OPTION): New content. + (options): New option --one-top-level. + (parse_opt): Handle this option. + (decode_options): Make it conflict with --absolute-names. + +2014-01-27 Sergey Poznyakoff + + Don't install rmt.8 if rmt is not built. + * doc/Makefile.am [PU_RMT_COND]: Define RMT_8 + (dist_man_MANS): use RMT_8 instead of the hardcoded rmt.8 + + Provide tar(1) and rmt(8) manpages. + * NEWS: Update. + * doc/Makefile.am: Add manpages. + * doc/tar.1: New file. + * src/tar.c (tar_help_filter): Handle LZOP_OPTION. + +2014-01-23 Sergey Poznyakoff + + Make sure transformed file names retain trailing slash in listing. + * src/list.c (simple_print_header): Print trailing slash + if using the transformed name. + Use had_trailing_slash instead of analyzing last byte if temp_name + +2014-01-22 Sergey Poznyakoff + + checkpoint actions: further improvements. + * NEWS: Update. + * doc/tar.texi: Update. + * src/buffer.c (print_stats): Avoid use of additional string + buffer. + Allow for text to be NULL. + Call gettext if it is not. + (format_total_stats): Don't use gettext when calling print_stats. + * src/checkpoint.c (def_format): Change default format. + (format_checkpoint_string): Implement optional arguments for + T conversion. + (finish_checkpoint_actions): Rename to checkpoint_flush_actions, + make extern. All uses changed. + * src/common.h (checkpoint_flush_actions): New proto. + * src/tar.c (main): Set error_hook + +2014-01-22 Sergey Poznyakoff + + Improve checkpoint interface. + * src/buffer.c (format_total_stats): The format arg is const + All uses updated. + (default_total_format): const + * src/checkpoint.c (tty, tty_cleanup): New static. + (format_checkpoint_string): New "canned" format %c + (checkpoint_finish): New function. + * src/common.h (checkpoint_finish): New proto. + * src/tar.c (main): Call checkpoint_finish.` + +2014-01-21 Sergey Poznyakoff + + Implement statistics display in checkpoint actions. + * NEWS: Update. + * configure.ac: Version 1.27.90 + * gnulib.modules: Add fprintftime. + * doc/tar.texi: Document the "totals" action and new format + specifiers + for echo and ttyout checkpoint actions. + * src/buffer.c (compute_duration): Return computed value. + (print_stats): Don't print trailing newline. Return number of + characters output. + (format_total_stats): New function. + (print_total_stats): Rewrite via format_total_stats. + * src/checkpoint.c (checkpoint_opcode) : New opcode. + (checkpoint_compile_action): Handle cop_totals. + (expand_checkpoint_string): Remove. + (format_checkpoint_string): New function to be used instead of + expand_checkpoint_string. All callers updated. + * src/common.h (TF_READ,TF_WRITE) + (TF_DELETED): New constants. + (format_total_stats,print_total_stats): New protos. + +2014-01-10 Sergey Poznyakoff + + Remove shar archives from distribution. + These are going to phase out in automake 2.0 + +2014-01-10 Sergey Poznyakoff + + Fix the use of --no-recursion and --recursion options. + Each option remains in effect until cancelled by the next + occurrence + of its counterpart, as stated in the documentation. + * src/names.c (name_next_elt): Restore recursion_option from the + value of matching_flags. + +2014-01-09 Sergey Poznyakoff + + Minor bugfixes + * src/compare.c (diff_dumpdir): Close descriptor if fstat failed. + (diff_multivol): Make sure the descriptor is closed and eventual + errors reported if lseek fails. + Both reported by Jiri Kukacka. + +2014-01-07 Paul Eggert + + tar: work around IBM XL C bug + * src/incremen.c (show_snapshot_field_ranges) + (write_directory_file_entry): Use simpler array size expression, + one that evaluates to the same value. This works around + a compiler + bug with IBM XL C. Problem reported by Yannick Bergeron in + . + +2014-01-03 Paul Eggert + + tar: update ancient configure cruft + * configure.ac: Use AC_PROG_CC_STDC, not just AC_PROG_CC. + Remove obsolete macros AC_ISC_POSIX, AC_HEADER_SYS_WAIT, + AC_HEADER_DIRENT, AC_HEADER_STAT, AC_HEADER_STDC, AC_TYPE_SIGNAL, + AC_TYPE_SIZE_T. + * lib/prepargs.c (IN_CTYPE_DOMAIN): Remove. All uses removed. + * src/list.c (from_header): Use isspace, not ISSPACE. + * src/system.c (pipe_handler, sys_exec_info_script): + * src/tar.c (sigstat): + Use void, not RETSIGTYPE. + +2013-11-17 Sergey Poznyakoff + + Version 1.27.1 + + Fix star compatibility (sparse headers) + * src/sparse.c (star_get_sparse_info): Update file->dumped_size + + Fix GNU long link header. + * src/create.c (write_gnu_long_link): Set timestamp to + 0 for backward compatibility. Bug reported by David Barri. + * THANKS: Update. + + Fix unquoting of input file names. + * src/names.c (read_next_name): Unquote file names coming from the + -T argument. Bug reported by Nicolas Dudebout. + * THANKS: Update. + +2013-10-24 Paul Eggert + + build: fix bug where 'configure --with-posix-acls' disables ACLs + Reported by Lars Wendler in + . + * configure.ac (with_posix_acls): Fix typo. + +2013-10-23 Paul Eggert + + Fix core dump on Solaris 10 when "." isn't readable. + Reported by Peter Kruse in + . + 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 + + Version 1.27 + * NEWS: Update. + * configure.ac: Update. + + Minor fixes. + * src/names.c: Include argp.h + * tests/testsuite.at (AT_XATTRS_UTILS_PREREQ) + (AT_SELINUX_UTILS_PREREQ,AT_ACLS_UTILS_PREREQ) + (AT_CAPABILITIES_UTILS_PREREQ) + (AT_XATTRS_PREREQ,AT_SELINUX_PREREQ) + (AT_ACLS_PREREQ): Use POSIX-compatible syntax for + mktemp. + * tests/incr08.at: Fix find usage. + +2013-10-05 Sergey Poznyakoff + + Xfail the remfiles09b test. + * tests/remfiles09b.at: Turn into expected failure. + +2013-10-05 Nathan Stratton Treadway + + Tiny change + * scripts/tar-snapshot-edit: Mention --show-snapshot-field-ranges + option + +2013-10-05 Pavel Raiskup + + Tiny change + * configure.ac (RSH): Define as AC_ARG_VAR. + +2013-10-05 Sergey Poznyakoff + + 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 + + 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 + + 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 + + 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 + + Bugfix + * tests/remfiles08.at: Restore missing find + +2013-09-26 Sergey Poznyakoff + + Use relative addressing in deferred unlinks. + * src/common.h (tar_dirname): New function. + * src/misc.c (normalize_filename_x): Make extern. + (tar_dirname): New function. + (tar_getcwd): Take into account absolute pathnames. + * src/unlink.c (deferred_unlink) : 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 + + 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 + + Improve tar_getcwd + * src/common.h (tar_getcwd): Return pointer is const. + * src/misc.c (wd) : 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 + + 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 + + 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 + + Fix error message (complements 0ea6e686) + * src/tar.c (set_subcommand_option): Mention --delete in the + error message. + +2013-09-15 Sergey Poznyakoff + + Improve the incr07 test + +2013-09-15 Nathan Stratton Treadway + + 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 + + Take into account chdir_fd when extracting from incremental dumps. + * src/common.h (tar_savedir): New prototype. + * src/misc.c (tar_savedir): New function. + (remove_any_file): Use tar_savedir. + * src/incremen.c (try_purge_directory): Use tar_savedir. + * src/update.c (update_archive): Use tar_savedir. + * tests/incr07.at: New testcase. + * tests/Makefile.am (TESTSUITE_AT): Add new test. + * tests/testsuite.at: Likewise. + * THANKS: Updated. + + Minor fix + * src/tar.c (main): Mention --delete in the error message. + * THANKS: Update + +2013-09-13 Paul Eggert + + * src/names.c (file_list_name): Properly prototype. + + tar: don't warn about zero timestamps + * src/extract.c (check_time): Suppress warning when t.tv_sec == 0. + Problem reported by Denis Excoffier. + +2013-08-19 Pavel Raiskup + + Minor fix in the testsuite. + * tests/T-cd.at: sort the 'tar cf' output. + +2013-08-17 Sergey Poznyakoff + + 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 + + Revamp initial name collection functions to ensure proper + argument ordering. + * src/names.c (NELT_NOOP): New constant + (name_elt) : New members. + (name_array,allocated_entries,entries,scanned): Remove. + (check_name_alloc): Remove function. + (name_elt_alloc): New static. + (name_list_adjust,name_list_advance): New functions. + (name_add_name,name_add_dir) + (name_add_file): Use new allocation functions. + (read_next_name): Advance list head pointer as necessary + before returning. + (name_next_elt): Read elements from list. + * tests/T-cd.at: New file. + * tests/T-mult.at: New file. + * tests/T-nest.at: New file. + * tests/Makefile.am: Add new testcases. + * tests/testsuite.at: Likewise. + + Don't treat attempts to read an already read file list as + fatal errors. + * src/names.c (add_file_id): Report error and return 1 if the file + has already been read. + (read_next_name): Don't try to open file if add_file_id returns 1. + (name_next_elt): Simplify conditional. + + Minor change. + * src/names.c (name_next_elt): Simplify conditional. + +2013-08-15 Pavel Raiskup + + 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 + + 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 + + Update the docs. + * doc/tar.texi: Parsing of the options found in the file list + follows the same rules as for command line. Remove the obsolete + description. This complements 26538c9b. + + Fix interaction of --verbose and --append. + * src/buffer.c (_open_archive): don't overwrite existing archive + if given the --verify option. + * tests/append04.at: New file. + * tests/Makefile.am: Add new testcase. + * tests/testsuite.at: Add new testcase. + * THANKS: Update. + + Bugfix. + * src/names.c (read_name_from_file): Fix a typo. Remove + unused variable. + + Reduce memory consumption when handling the -T option. + The commit cdb27293 made the -T option more flexible, but + incurred a very considerable memory overhead by storing + all file names in the argument array. In case of very + big file lists this caused tar to run out of memory. This + was reported by Christian Wetzel + on March 14, 2013 + (http://lists.gnu.org/archive/html/bug-tar/2013-03/msg00018.html). + On the other hand, Michal Žeidl discovered that tar malfunctioned + when given empty file lists or lists with the trailing newline + missing in the last entry. This was reported by Pavel Raiskup + on July 23 + (http://lists.gnu.org/archive/html/bug-tar/2013-07/msg00009.html + and + msg00010.html). + This change fixes both issues. + * src/common.h (name_add_file,request_stdin): New prototype. + (more_options): New prototype. + * src/names.c (NELT_FILE): New entry type. + (name_elt) : 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 + + 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 + + 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 + + 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 + + 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 + . + +2013-05-06 Paul Eggert + + maint: revert previous change + It wasn't actually needed. Reported by Stefano Lattarini in + . + * configure.ac (AM_GNU_GETTEXT_VERSION): Decrease from 0.18.2 + back to 0.16. + +2013-04-25 Paul Eggert + + maint: port to bleeding-edge Automake by assuming Gettext 0.18.2 + Reported by Stefano Lattarini in + . + * configure.ac (AM_GNU_GETTEXT_VERSION): Increase from 0.16 + to 0.18.2. + README-alpha says that we do not make any efforts to accommodate + older versions of Gettext. + + tar: port to --without-xattrs --enable-gcc-warnings + Reported by Pavel Raiskup in + . + * src/xattrs.c (xattrs__fd_set) [!HAVE_XATTRS]: Omit. + + doc: port to texinfo 5 + * doc/tar.texi (Reports, assumptions, Mixing): + Put FIXMEs at line start. + +2013-03-12 Sergey Poznyakoff + + Continue extracting from a separate volume after skipping a + partial member. + Reported by Göran Udeborg on 2013-03-09. + * src/extract.c (extract_skip): New function. + (prepare_to_extract): Set extractor to extract_skip if starting + at a partial member. + + Fix interaction of various --exclude-tag options with + --listed-incremental. + * src/incremen.c (procdir): Set directory->tagfile in + the exclusion_tag_contents case. + (makedumpdir): Mark all entries as ignored if directory->tagfile + is set. + Free new_dump before returning. + (maketagdumpdir): New function. + (scan_directory): If directory->children is set to + NO_CHILDREN and directory->tagfile is set, create a + dumpdir consisting of the tagfile only. + * tests/exclude08.at: New testcase. + * tests/exclude09.at: New testcase. + * tests/exclude10.at: New testcase. + * tests/exclude11.at: New testcase. + * tests/exclude12.at: New testcase. + * tests/exclude13.at: New testcase. + * tests/exclude14.at: New testcase. + * tests/exclude15.at: New testcase. + * tests/exclude16.at: New testcase. + * tests/Makefile.am: Add new tests. + * tests/testsuite.at: Include new tests. + * tests/atlocal.in (mkexcltest): New function. + * tests/chtype.at: Update keywords. + * tests/filerem01.at: Likewise. + * tests/filerem02.at: Likewise. + * tests/incremental.at: Likewise. + * tests/multiv04.at: Likewise. + +2013-02-20 Paul Eggert + + 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 + + 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 + + tar: improve compile-time diagnostics + * src/misc.c (sysinttostr, strtosysint): Improve #error wording. + +2013-01-27 Paul Eggert + + tar: improve quality of diagnostics with incrementals + Inspired by a prototype by Nathan Stratton Treadway in + . + * 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 + + tar: fix bug with sparse files with effective size of 8 GiB + or more + Reported by Pavel Raiskup in + . + * 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 + + maint: update copyrights for 2013 and as per current GNU standards + + maint: remove unnecessary file + * src/configure.in: Remove. This file has been obsolete for + a while. + +2012-12-24 Paul Eggert + + 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 + + Handle incremental format 2 with negative numbers, too. + * src/incremen.c (read_unsigned_num): Last arg is intmax_t *, not + uintmax_t, for consistency with other readers. All callers + changed. + Avoid signed integer overflow. + (read_num): + + Fix some problems with negative and out-of-range integers. + Original problem reported for HP-UX LVM v2.2 by Michael White in + . + 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 + + Port use of mkdirat etc. to Solaris 10. + * gnulib.modules (fchmodat, fchownat, fstatat, mkdirat, unlinkat): + Add. These were split out in gnulib, so we now need to request + them separately. mkdirat, for example, is not in Solaris 10. + + Port ACL configuration to Solaris 10. + * configure.ac (with_posix_acls): Fix misspellings. + Stop checking at the first failure, to speed up 'configure'. + +2012-12-19 Paul Eggert + + tar: remove unused externs, or make them static + * src/buffer.c (record_buffer_aligned, flush_write_ptr, + flush_read_ptr) + (duration): + * src/list.c (recent_global_header): + * src/unlink.c (deferred_unlink_delay): + * src/transform.c (transform_flags): + * src/xattrs.c (acl_get_file_at, acl_set_file_at, + file_has_acl_at): + Now static. + * src/common.h (rmt_command_option): Remove; unused. + * src/tar.c (check_links_option, allocated_archive_names): + Move decls here from common.h; these are now static. + + * .gitignore: Regenerate. + + build: new configure option --enable-gcc-warnings + This has a similar meaning as in other GNU applications + such as coreutils and Emacs. + * NEWS: Document it. + * .gitignore: Remove redundant build-aux. + Remove gnu, since gnu/Makefile.am is now in git. + Add gnu/.gitignore, gnu/charset.alias, gnu/*.h, gnu/*/ to cover + autogenerated files. + * bootstrap.conf (gnulib_mk): Remove. + * configure.ac: Add support for --enable-gcc-warnings, + taken from coreutils and simplified. + * gnu/Makefile.am: New file. Formerly this was autogenerated, + but the autogenerated file has been renamed to gnulib.mk, + its usual name when bootstrapping from gnulib. + This way, AM_CFLAGS can incorporate warning options. + * gnulib.modules: Add manywarnings. + * lib/Makefile.am, src/Makefile.am (AM_CFLAGS): New macro, + incorporating warning options. + * lib/attr-xattr.in.h (ENOATTR): New macro, if not already + defined. + * src/buffer.c (magic): Don't rely on incomplete initializers. + * src/common.h (report_difference): Add printf format attribute. + * src/system.c (sys_exec_command, sys_exec_info_script) + (sys_exec_checkpoint_script): + * src/tar.c (update_argv): + Add casts to char * to pacify GCC warnings about using string + literals in a char * context. + * src/xattrs.c, src/xattrs.h (xattrs_clear_setup): + Declare parameters as (void), not (). + * src/xheader.c (xheader_format_name): Initialize pptr to null, + to pacify GCC. Remove unnecessary test of nptr versus null. + + tar: don't truncate diagnostic + * src/list.c (from_header): Fix buffer size calculation when + generating a diagnostic. + +2012-12-03 Sergey Poznyakoff + + Bugfix. + * tests/Makefile.am: Fix double AM_CPPFLAGS + +2012-12-01 Sergey Poznyakoff + + Use AM_CPPFLAGS instead of INCLUDES. + +2012-11-19 Sergey Poznyakoff + + Housekeeping. + * NEWS: Mention the support for POSIX ACLs, extended + attributes and SELinux context. + * THANKS: List James Antill and Pavel Raiskup. + + Fix indentation. + +2012-11-19 Pavel Raiskup + + Allow to store/extract '=' character in xattr keyword + * src/xheader.c (xattr_decode_keyword) + (xattr_encode_keyword): New functions. + (xheader_print_n,xattr_decoder): Use them. + * tests/xattr05.at: New test case. + * tests/Makefile.am: Add new test case. + * tests/testsuite.at: Likewise. + + Bugfixes. + * configure.ac: Avoid linking against -lacl when + --without-posix-acls is given. + * tests/selacl01.at: Call restorecon + * tests/selnx01.at: Likewise. + * tests/testsuite.at (AT_SELINUX_UTILS_PREREQ): Likewise. + (AT_SELINUX_PREREQ,AT_ACLS_PREREQ): Use the right _PREREQ macros. + + Fix bootstrapping. + * bootstrap (gnulib_extra_files): Remove $build_aux/missing + +2012-11-19 Sergey Poznyakoff + + 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 + + Minor change. + * src/xattrs.c: Fix indentation. Fix copyleft statement, promote + to GPLv3+. + * src/xattrs.h: Likewise + +2012-11-18 Pavel Raiskup + + 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) : New member. + (delayed_link) : 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) : New member. + * src/xattrs.c (xattrs_selinux_get) + (xattrs_selinux_set): New functions. + (xattrs_print_char): Honor selinux_context_option. + (xattrs_print): Print selinux context. + * src/xheader.c: Handle new keyword "RHT.security.selinux". + * tests/Makefile.am: Add new tests. + * tests/testsuite.at: Likewise. + * tests/selacl01.at: New test. + * tests/selnx01.at: New test. + + Support for POSIX ACLs + * configure.ac: Check whether ACLs are available on the + host system. + * gnulib.modules: Add acl + * src/create.c (start_header): Store ACLs when creating + a POSIX archive. + (dump_file0): Handle ACLs. + * src/extract.c (delayed_set_stat) + : 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) + : New members. + * src/xattrs.c (xattrs_acls_get, xattrs_acls_set): New functions. + * src/xheader.c: Support new keywors: "SCHILY.acl.access" and + "SCHILY.acl.default". + * tests/Makefile.am: Add new tests. + * tests/testsuite.at: Likewise. + * tests/acls01.at: New test. + * tests/acls02.at: New test. + + Add basic support for extended attributes. + * src/Makefile.am: Add xattrs.[ch] + * src/xattrs.c: New file. + * src/xattrs.h: New file. + * src/common.h (READ_LIKE_SUBCOMMAND): New define. + (selinux_context_option, acls_option, xattrs_option): New globals. + (xheader_xattr_init, xheader_xattr_free) + (xheader_xattr_copy, xheader_xattr_add): New protos. + (WARN_XATTR_WRITE): New mask. + * src/create.c (start_header): Handle xattrs pairs if in POSIX + format. + (dump_file0): Handle extended attributes. + * src/extract.c (delayed_set_stat,delayed_link) + : 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) : 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) : 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 + + 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 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 + + Fix creation of incremental archives when a subdirectory becomes + a mountpoint. + When used with --listed-incremental and --one-file-system, tar + was unable to cope with directories that had once been part of the + dumped system and became separate mount points afterward. The bug + has been reported and a fix proposed by Nathan Stratton Treadway. + * src/incremen.c (procdir): If one_file_system_option is in + effect, + clear out dumpdir info from the directory. + * tests/Makefile.am: Add new testcase. + * tests/listed05.at: New testcase. + * tests/testsuite.at (AT_PRIVILEGED_PREREQ): New macro. + include listed05.at. + * THANKS: Update. + +2012-07-27 Jim Meyering + + maint: try to avoid unwanted chatter in ChangeLog + * bootstrap.conf: Do not alter ChangeLog if it already exists. + +2012-07-26 Paul Eggert + + doc: improve discussion of compressed archives + * doc/tar.texi (gzip): Don't claim that -I 'gzip --best' works. + Problem reported by Davide Brini in + . + 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 + + tests: fix permissions-assumption bug in test + * tests/owner.at: Don't assume umask is 022. + Reported by Pavel Raiskup in + . + + tar: don't assume root is uid 0 + This is not true for Tandem NonStop Kernel. See Joachim Schmitz's + comment in . + * gnulib.modules: Add root-uid. + * src/extract.c: Include . + (extr_init): Don't assume root is uid 0. + +2012-04-25 Paul Eggert + + * src/compare.c (diff_dumpdir): Omit useless 'stat'. + + * doc/tar.texi (Option Summary): Fix xref typo. + Reported by Nathan Stratton Treadway in + . + 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 + + Fix unrecognized option. + * src/tar.c (parse_opt): Handle OLD_ARCHIVE_OPTION. + +2012-03-11 Paul Eggert + + 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 + + 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 + . + +2012-01-18 Paul Eggert + + tar: quote 'like this', not `like this' + This fixes some test failures recently introduced by gnulib + updates + prompted by recent changes to the GNU coding standards, + which now advise to use quotes 'like this' or "like this" + rather than `like this'. + * NEWS: Document this. + * README, README-hacking, doc/Makefile.am, scripts/backup.in: + * scripts/backup.sh.in, scripts/dump-remind.in: + * src/buffer.c, src/checkpoint.c, src/create.c, src/incremen.c: + * src/misc.c, src/names.c, src/sparse.c, src/transform.c: + * tests/incr02.at, tests/incremental.at, tests/multiv08.at: + * tests/sparse04.at, tests/star/README, tests/update01.at: + Quote 'like this' in comments. + * src/tar.h: + Quote "like this" in comments, when quoting English phrases rather + than code. + * configure.ac: + * scripts/xsparse.c (get_var, read_xheader, main): + * src/compare.c (diff_archive): + * src/extract.c (prepare_to_extract): + * src/tar.c (request_stdin, tar_set_quoting_style, doc, options) + (set_subcommand_option, report_textual_dates, parse_opt) + (decode_options, main): + * src/xheader.c (decx): + Quote 'like this' in diagnostics. + * doc/tar.texi (list, warnings, override) + (Selecting Archive Members, quoting styles, after, hard links) + (Sparse Recovery, Multi-Volume Archives, label): + Adjust documentation to match new output. + * tests/backup01.at, tests/incr01.at, tests/incr04.at: + * tests/label04.at, tests/label05.at, tests/link03.at: + * tests/listed02.at, tests/multiv03.at, tests/multiv05.at: + * tests/rename01.at, tests/rename02.at, tests/rename03.at: + * tests/volume.at: + Adjust tests to match new quoting behavior. + + tar: port --overwrite symlink test to GNU/Hurd + Problem reported by Pino Toscano in + . + * 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 + + 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 + . + +2012-01-06 Paul Eggert + + tar: don't assume O_NONBLOCK is benign on regular files + On Data Migration Facility (DMF), High Performance Storage System + (HPSS), + and presumably other file systems based on hierarchical storage, + opening + a regular file with O_NONBLOCK can cause later reads to fail with + errno == EAGAIN. We need the O_NONBLOCK to avoid some security + races. + Work around the problem by using fcntl to clear the O_NONBLOCK + flag if I/O fails with that errno value. + Problem reported by Vitezslav Cizek in + . + * 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 + + 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 + + Warn about existing files in keep-old-files mode (complements + 8f390db9). + This is controlled by "existing-file" warning code, which is off + by default. + * src/common.h (WARN_EXISTING_FILE): New warning code. + (WARN_VERBOSE_WARNINGS): Add WARN_EXISTING_FILE. + * src/extract.c (maybe_recoverable): warn about existing file + if WARN_EXISTING_FILE is set. + * src/warning.c: New warning type: "existing-file" + + Fix the "Creating directory:" output + * src/list.c (print_for_mkdir): don't use unquoted name length for + computing its output width. + +2011-11-15 Sergey Poznyakoff + + 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 + + * doc/tar.texi (Option Summary, absolute): Document -P better, + by describing how it deals with symbolic links on extraction. + +2011-09-28 Paul Eggert + + 2011-09-27 Paul Eggert + * src/tar.c (stat_on_signal): Use SA_RESTART if available. + +2011-09-20 Paul Eggert + + * 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 + + Minor changes. + * scripts/tar-snapshot-edit: License under GPLv3+. + Remove trailing whitespace. + +2011-09-19 Nathan Stratton Treadway + + Minor changes. + * doc/snapshot.texi: Clarify the use of nfs field in 0 and + 1 formats. + Give more precise information about which versions of tar + used each + format. + + Upgrade tar-snapshot-edit script. + * scripts/tar-snapshot-edit: Update Perl syntax to work + correctly with more recent versions of Perl. (The original + code worked with in the v5.8 timeframe but not with + Perl v5.10.1 and later.) + Add a "-c" option to check the snapshot file for invalid + field values. + Handle NFS indicator character ("+") in version 0 and 1 files. + Preserve the original header/version line when editing version 1 + or 2 files. + Tweak output formatting. + * doc/tar-snapshot-edit.texi: Update documentation. + +2011-08-13 Paul Eggert + + 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 + reported + by Mark W. Eichin, communicated by Thayne Harbaugh to bug-tar in + . + * NEWS, doc/tar.texi (Option Summary, override): Document + enhancement. + * src/common.h (group_name_option, owner_name_option): New decls. + * src/create.c (start_header): Don't assume owner and group names + are in current host database. + * src/tar.c (parse_owner_group): New function, for parsing + NAME:NUM. + (parse_opt): Use it. + (decode_options): Initialize owner_name_option, group_name_option. + * tests/owner.at: New file, to test this enhancement. + * tests/Makefile.am (TESTSUITE_AT): Add it. + * tests/testsuite.at: Include it. + + .gitignore: update + * .gitignore: Add rmt. + * lib/.gitignore: New file. + +2011-07-30 Sergey Poznyakoff + + Fix the --exclude-backups option. + * src/tar.c (add_exclude_array): Take exclude option flags in its + second argument. + (parse_opt): Register backup_file_table with the EXCLUDE_WILDCARDS + flag. + * tests/exclude07.at: New testcase. + * tests/Makefile.am (TESTSUITE_AT): Add testsuite.at. + * tests/testsuite.at: Include exclude07.at. + +2011-06-08 Paul Eggert + + tar: simplify birthtime calculations + * src/extract.c (same_birthtime): Remove. + (extract_link, apply_delayed_links): Go back to using + timestamp_cmp + instead of same_birthtime, as this is a bit simpler. This fix + relies + on an up-to-date gnulib. + + tar: use birthtime rather than ctime when checking identity + Without this fix, tar would sometimes mishandle the extraction of + hard links to symbolic links. Problem reported in + + 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 + + * 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 + . + +2011-03-12 Sergey Poznyakoff + + Testsuite fix. + * tests/sparse04.at: Use the -f option. + + Version 1.26 + * NEWS, configure.ac: Update. + * po/POTFILES.in: Remove paxexit.c (see bb971a1e). + +2011-03-08 Paul Eggert + + --atime-preserve=replace: fix correctness and performance bugs + reported by Eric Blake in + . + * 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 + + * doc/tar.texi: Adjust example commands and output for accuracy. + The original problem was reported by Michael Witten in + . + +2011-02-16 Paul Eggert + + 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 + . + * 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 + + 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 + + tests: make the truncate test smaller and less buggy (tiny change) + Reported by Solar Designer in + . + * tests/truncate.at: Use a smaller test case, and make its + race condition less likely. + +2010-11-27 Paul Eggert + + tests: skip SIGPIPE-dependent tests in environments ignoring + SIGPIPE + Problem reported by Sven Joachim in + . + * tests/remfiles01.at: Use AT_SIGPIPE_PREREQ. + * tests/sigpipe.at: Likewise. + * tests/testsuite.at (AT_SIGPIPE_PREREQ): New macro. + +2010-11-25 Paul Eggert + + tar: work around NetBSD and Tru64 symlink incompatibility + with POSIX + Problem reported by Bruno Haible in + . + * src/extract.c (maybe_recoverable): Also treat EFTYPE (if + defined) + and ENOTSUP like ELOOP. + +2010-11-24 Paul Eggert + + 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 + + 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 + . + + * src/names.c: tar: fix bug with --one-file-system + --listed-incremental + Problem (and idea for fix) reported by Martin Weigel + . + * 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 + . + * 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 + + Issue a warning if the archive being compared contains transformed + file names. + * src/common.h (transform_program_p): New proto. + * src/transform.c (transform_program_p): New function. + * src/compare.c (verify_volume): Warn if the archive contains + transformed file names. + + Minor change. + * doc/tar.texi: Reword the description of decompress-program. + +2010-11-15 Paul Eggert + + 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 + + Merge branch 'master' of ssh://git.sv.gnu.org/srv/git/tar + +2010-11-08 Jim Meyering + + 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 Version 1.25 @@ -15,7 +2541,6 @@ 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. @@ -79,15 +2604,13 @@ ; solution suggested by Jilles Tjoelker in . - * tests/extrac11.at (scarce file descriptors): Close file descriptors before invoking ulimit -n. 2010-10-27 Sergey Poznyakoff - Transform file names when updating and appendig to archives. + Transform file names when updating and appending to archives. This complements 28e91b48. - * src/common.h (transform_stat_info): New prototype. * src/list.c (transform_stat_info): Remove static qualifier. * src/update.c (update_archive): Call transform_stat_info. @@ -99,13 +2622,12 @@ 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". + where it outputs "No differences encountered". tar: fix -x --overwrite bug (no --dereference, ! O_NOFOLLOW) This bug was discovered on Solaris 8. On older hosts lacking O_NOFOLLOW, tar -x --overwrite (without --dereference) follows symbolic links, causing the "extract over symlinks" test to fail. - * src/extract.c (open_output_file): If O_NOFOLLOW is needed but does not work, check for a symlink separately. @@ -118,13 +2640,11 @@ 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. @@ -146,12 +2666,10 @@ tar: fix bug with -C and extracting directories Problem reported by Denis Excoffier in . - * 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 @@ -193,7 +2711,6 @@ 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: @@ -347,7 +2864,6 @@ 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 @@ -464,19 +2980,16 @@ 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. @@ -484,7 +2997,7 @@ 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. + not followed inadvertently. * 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. @@ -931,7 +3444,6 @@ 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. @@ -952,17 +3464,14 @@ (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. @@ -977,10 +3486,8 @@ * 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. @@ -1020,7 +3527,6 @@ _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): @@ -1029,9 +3535,7 @@ * 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. @@ -1102,7 +3606,6 @@ effectively ignored existence of symbolic links and was unable to remove a directory that contained any (Alexander Kozlov , 2010-03-15). - * gnulib.modules: Remove canonicalize. * src/misc.c (normalize_filename): Rewrite from scratch. The function operates only on @@ -1126,7 +3629,6 @@ * 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 @@ -1134,7 +3636,6 @@ * 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. @@ -1180,9 +3681,8 @@ * 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. @@ -1266,11 +3766,9 @@ * 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. @@ -1341,7 +3839,6 @@ 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. @@ -1351,7 +3848,6 @@ 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. @@ -1386,7 +3882,6 @@ 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. @@ -1424,7 +3919,6 @@ 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. @@ -1468,11 +3962,8 @@ 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 . - * 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. @@ -1483,10 +3974,9 @@ (xheader_write): Take time_t as 3rd param. Fix bugs in handling the --remove-files option. - Make sure the files are deleted only if they were succesfully + Make sure the files are deleted only if they were successfully 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. @@ -1509,7 +3999,6 @@ 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. @@ -1519,7 +4008,6 @@ 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 @@ -1566,7 +4054,6 @@ 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 @@ -1582,7 +4069,6 @@ (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. @@ -1637,9 +4123,7 @@ 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 . - 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. @@ -1662,14 +4146,12 @@ * 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. @@ -1700,16 +4182,13 @@ 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. @@ -1727,7 +4206,6 @@ 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. @@ -1740,7 +4218,6 @@ 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 @@ -1778,7 +4255,6 @@ 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. @@ -1801,7 +4277,6 @@ * src/extract.c: Likewise. * src/incremen.c: Likewise. * src/list.c: Likewise. - * NEWS, doc/tar.texi: Update. 2009-08-05 Carl Worth @@ -1925,6 +4400,27 @@ 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 . + 2009-03-05 Sergey Poznyakoff * src/incremen.c: --no-recursive works with --incremental. @@ -2934,7 +5430,7 @@ this has undefined behavior. Likewise for assigning arbitrary uintmax_t values to other types. (read_negative_num, read_unsigned_num, read_timespec): - New functions, to check input values a bit more carefuly. + New functions, to check input values a bit more carefully. (read_num): Use read_unsigned_num. New arg MAX_VAL; all callers changed. (read_incr_db_2): Use these new functions. @@ -3114,7 +5610,7 @@ * src/delete.c: Remove second argument from calls to name_scan * src/update.c: Likewise * src/incremen.c (procdir): Use is_individual_file to check for - files explicitely specified in the command line. Fixes bug + files explicitly specified in the command line. Fixes bug reported by Dat Head on 19 Jun 2006 (descending into mountpoints with --one-file-system in use) * src/misc.c (maybe_backup_file): Second argument is bool @@ -3173,7 +5669,7 @@ * src/delete.c (records_skipped): Remove static qualifier, the variable is used by print_total_stats in buffer.c * src/extract.c (check_time): Use volume_start_time when checking - for timestamp plausability. + for timestamp plausibility. * src/tar.c: (options, parse_opt): Allow for optional argument to the --totals option, which specifies a signal upon delivery of which the statistics must be output. @@ -3231,7 +5727,7 @@ * src/transform.c (set_transform_expr,_transform_name_to_obstack): Implement NUMBER flag. - (add_char_segment): Fix length assignement + (add_char_segment): Fix length assignment * doc/tar.texi: Update @@ -3288,7 +5784,7 @@ * doc/tar.texi: Update * configure.ac (AM_INIT_AUTOMAKE): Use tar-ustar option. Raise version requirement to 1.9 - * src/common.h (struct name): Refactured + * src/common.h (struct name): Refactored (warn_regex_usage): New variable. (dump_file): First argument is const char*. (name_init,name_add): Removed @@ -3663,13 +6159,13 @@ * src/common.h (struct name): New member `explicit'. Remove unused member `isdir'. * src/incremen.c (procdir): If name_scan() returns something, - check if it was explicitely given in the command line + check if it was explicitly given in the command line * src/names.c (addname,add_hierarchy_to_namelist): Initialize explicit member appropriately. * src/incremen.c (procdir): If --one-file-system is given and a directory is found to be on another device, *and* this directory - is explicitely given in the command line, then do not omit it. + is explicitly given in the command line, then do not omit it. 2005-12-11 Sergey Poznyakoff @@ -3704,7 +6200,7 @@ (mode_to_chars, off_to_chars, size_to_chars, time_to_chars) (uid_to_chars, uintmax_to_chars): Return bool (to_chars): Return bool - (start_header): Check return values of convertion routines. Fail + (start_header): Check return values of conversion routines. Fail if unable to store data in the header. 2005-12-07 Sergey Poznyakoff @@ -4004,13 +6500,13 @@ archives. * src/incremen.c (dumpdir_size, get_gnu_dumpdir): New functions. (purge_directory): Use stat_info.dumpdir instead of getting its - value explicitely. + value explicitly. * src/list.c (list_archive): Handle incremental backups in pax format. (decode_header): Initialize stat_info.dumpdir * src/sparse.c (sparse_diff_file): Bugfix: set seekable. (pax_dump_header): Store sparse map in GNU.sparse.map. If this - variable has been explicitely deleted, use GNU.sparse.offset/ + variable has been explicitly deleted, use GNU.sparse.offset/ GNU.sparse.numbytes variables. * src/tar.c (decode_options): Incremental options are allowed with --format=pax @@ -4088,7 +6584,7 @@ * bootstrap: Fix quoting in help output. (update_po): Use backward-compatible wget option --cache instead - of deprecated -C to accomodate for wget 1.10. + of deprecated -C to accommodate for wget 1.10. Changes proposed by Eric Blake * THANKS: Add Eric Blake @@ -4639,7 +7135,7 @@ * src/list.c: Likewise * tests/multiv03.at: Modified to match the new behavior - * tests/multiv04.at: New file. Test splittind directory members between + * tests/multiv04.at: New file. Test splitting directory members between the archive volumes. * tests/Makefile.am: Add multiv04.at * tests/testsuite.at: Likewise. @@ -6393,7 +8889,7 @@ * src/create.c: Do not zero-terminate name field if the name is exactly 100 characters long. - (write_ustar_long_name): Fixed cheking for unsplittable + (write_ustar_long_name): Fixed checking for unsplittable names. 2003-11-14 Sergey Poznyakoff @@ -7090,7 +9586,7 @@ interface. (child_open_for_compress): Do not increase size to BLOCKSIZE. (open_archive): Open index file name. - Strip trailing slahes from file names. + Strip trailing slashes from file names. (flush_write): Set size to 0 if not saving names. (flush_write, flush_read): Use safer_name_suffix rather than inline code. @@ -7923,7 +10419,7 @@ (decode_options): Dates that look like an absolute path name, or that start with '.', are presumed to be file names whose dates are taken. - Remove 'I' as an aliase for 'T'. + Remove 'I' as an alias for 'T'. Update copyright. * src/extract.c (): Do not include; system.h now does this. @@ -10733,26 +13229,6 @@ 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. Local Variables: mode: change-log