X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=ChangeLog;h=5bd14213667725a7588d3da163aefade1dd306bb;hb=4aa85f09e755fc827cd5ab6225f20c83cd42245d;hp=f2723fb8696c589fd871912ea9dc314a553d1a41;hpb=138fc7e67e3d9845cd7d81aad0e9c7724784f9b9;p=debian%2Ftar diff --git a/ChangeLog b/ChangeLog index f2723fb8..5bd14213 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,4476 @@ +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. + +2014-02-14 Pavel Raiskup + + 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 + +2014-02-14 Pavel Raiskup + + 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. + +2014-02-14 Sergey Poznyakoff + + 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. + +2014-02-14 Sergey Poznyakoff + + 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 order). + + 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. + +2014-02-13 Sergey Poznyakoff + + 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. + +2014-02-10 Sergey Poznyakoff + + 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 contant. + (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 + +2014-01-27 Sergey Poznyakoff + + 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 + ocurrence + 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 aruond 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 + +2013-11-17 Sergey Poznyakoff + + Fix star compatibility (sparse headers) + + * src/sparse.c (star_get_sparse_info): Update file->dumped_size + +2013-11-17 Sergey Poznyakoff + + Fix GNU long link header. + + * src/create.c (write_gnu_long_link): Set timestamp to + 0 for backward compatibility. Bug reported by David Barri. + * THANKS: Update. + +2013-11-17 Sergey Poznyakoff + + 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. + +2013-10-06 Sergey Poznyakoff + + 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 absoulte 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. + +2013-09-15 Sergey Poznyakoff + + 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. + +2013-09-13 Paul Eggert + + tar: don't warn about zero timestamps + + * src/extract.c (check_time): Suppress warniing when t.tv_sec + == 0. + Problem reported by Denis Excoffier. + +2013-08-19 Pavel Raiskup + + 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. + +2013-08-16 Sergey Poznyakoff + + Don't treat attempts to read an already read file list as + fatal errors. + + * src/names.c (add_file_id): Report error and return 1 if the file + has already been read. + (read_next_name): Don't try to open file if add_file_id returns 1. + (name_next_elt): Simplify conditional. + +2013-08-16 Sergey Poznyakoff + + 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. + +2013-08-04 Sergey Poznyakoff + + Fix interacton of --verbose and --append. + + * src/buffer.c (_open_archive): don't overwrite existing archive + if given the --verify option. + * tests/append04.at: New file. + * tests/Makefile.am: Add new testcase. + * tests/testsuite.at: Add new testcase. + * THANKS: Update. + +2013-08-04 Sergey Poznyakoff + + Bugfix. + + * src/names.c (read_name_from_file): Fix a typo. Remove + unused variable. + +2013-08-04 Sergey Poznyakoff + + Reduce memory consuption when handling the -T option. + + The commit cdb27293 made the -T option more flexible, but + incurred a very considerable memory overhead by storing + all file names in the argument array. In case of very + big file lists this caused tar to run out of memory. This + was reported by Christian Wetzel + on March 14, 2013 + (http://lists.gnu.org/archive/html/bug-tar/2013-03/msg00018.html). + + On the other hand, Michal Žeidl discovered that tar misfunctioned + when given empty file lists or lists with the trailing newline + misssing in the last entry. This was reported by Pavel Raiskup + on July 23 + (http://lists.gnu.org/archive/html/bug-tar/2013-07/msg00009.html + and + msg00010.html). + + This change fixes both issues. + + * src/common.h (name_add_file,request_stdin): New prototype. + (more_options): New prototype. + * src/names.c (NELT_FILE): New entry type. + (name_elt) : 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. + +2013-04-25 Paul Eggert + + tar: port to --without-xattrs --enable-gcc-warnings + + Reported by Pavel Raiskup in + . + * src/xattrs.c (xattrs__fd_set) [!HAVE_XATTRS]: Omit. + +2013-04-25 Paul Eggert + + 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. + +2013-03-12 Sergey Poznyakoff + + 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 + +2012-12-31 Paul Eggert + + 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): + +2012-12-23 Paul Eggert + + 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. + +2012-12-22 Paul Eggert + + 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. + +2012-12-19 Paul Eggert + + * .gitignore: Regenerate. + +2012-12-19 Paul Eggert + + build: new configure option --enable-gcc-warnings + + This has a similar meaning as in other GNU applications + such as coreutils and Emacs. + * NEWS: Document it. + * .gitignore: Remove redundant build-aux. + Remove gnu, since gnu/Makefile.am is now in git. + Add gnu/.gitignore, gnu/charset.alias, gnu/*.h, gnu/*/ to cover + autogenerated files. + * bootstrap.conf (gnulib_mk): Remove. + * configure.ac: Add support for --enable-gcc-warnings, + taken from coreutils and simplified. + * gnu/Makefile.am: New file. Formerly this was autogenerated, + but the autogenerated file has been renamed to gnulib.mk, + its usual name when bootstrapping from gnulib. + This way, AM_CFLAGS can incorporate warning options. + * gnulib.modules: Add manywarnings. + * lib/Makefile.am, src/Makefile.am (AM_CFLAGS): New macro, + incorporating warning options. + * lib/attr-xattr.in.h (ENOATTR): New macro, if not already + defined. + * src/buffer.c (magic): Don't rely on incomplete initializers. + * src/common.h (report_difference): Add printf format attribute. + * src/system.c (sys_exec_command, sys_exec_info_script) + (sys_exec_checkpoint_script): + * src/tar.c (update_argv): + Add casts to char * to pacify GCC warnings about using string + literals in a char * context. + * src/xattrs.c, src/xattrs.h (xattrs_clear_setup): + Declare parameters as (void), not (). + * src/xheader.c (xheader_format_name): Initialize pptr to null, + to pacify GCC. Remove unnecessary test of nptr versus null. + +2012-12-19 Paul Eggert + + 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. + +2012-11-19 Sergey Poznyakoff + + 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. + +2012-11-19 Pavel Raiskup + + Bugfixes. + + * configure.ac: Avoid linking against -lacl when + --without-posix-acls is given. + * tests/selacl01.at: Call restorecon + * tests/selnx01.at: Likewise. + * tests/testsuite.at (AT_SELINUX_UTILS_PREREQ): Likewise. + (AT_SELINUX_PREREQ,AT_ACLS_PREREQ): Use the right _PREREQ macros. + +2012-11-19 Pavel Raiskup + + 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. + +2012-11-18 Pavel Raiskup + + 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. + +2012-11-18 Pavel Raiskup + + Add basic suuport for extended attributes. + + * src/Makefile.am: Add xattrs.[ch] + * src/xattrs.c: New file. + * src/xattrs.h: New file. + * src/common.h (READ_LIKE_SUBCOMMAND): New define. + (selinux_context_option, acls_option, xattrs_option): New globals. + (xheader_xattr_init, xheader_xattr_free) + (xheader_xattr_copy, xheader_xattr_add): New protos. + (WARN_XATTR_WRITE): New mask. + * src/create.c (start_header): Handle xattrs pairs if in POSIX + format. + (dump_file0): Handle extended attributes. + * src/extract.c (delayed_set_stat,delayed_link) + : 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-incrfental and --one-file-system, tar + was unable to cope with directories that had once been part of the + dumped system and became separate mount points afterwards. + The bug + has been reported and a fix proposed by Nathan Stratton Treadway. + + * src/incremen.c (procdir): If one_file_system_option is in + effect, + clear out dumpdir info from the directory. + * tests/Makefile.am: Add new testcase. + * tests/listed05.at: New testcase. + * tests/testsuite.at (AT_PRIVILEGED_PREREQ): New macro. + include listed05.at. + * THANKS: Update. + +2012-07-27 Jim Meyering + + 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 + . + +2012-06-27 Paul Eggert + + 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'. + +2012-04-25 Paul Eggert + + * 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. + +2012-01-18 Paul Eggert + + 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 Peformance Storage System + (HPSS), + and presumably other file systems based on hierarchical storage, + opening + a regular file with O_NONBLOCK can cause later reads to fail with + errno == EAGAIN. We need the O_NONBLOCK to avoid some security + races. + Work around the problem by using fcntl to clear the O_NONBLOCK + flag if I/O fails with that errno value. + Problem reported by Vitezslav Cizek in + . + * 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" + +2011-11-17 Sergey Poznyakoff + + 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. + +2011-09-19 Nathan Stratton Treadway + + 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. + +2011-08-13 Paul Eggert + + .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 filags in its + second argument. + (parse_opt): Register backup_file_table with the EXCLUDE_WILDCARDS + flag. + * tests/exclude07.at: New testcase. + * tests/Makefile.am (TESTSUITE_AT): Add testsuite.at. + * tests/testsuite.at: Include exclude07.at. + +2011-06-08 Paul Eggert + + tar: simplify birthtime calculations + + * src/extract.c (same_birthtime): Remove. + (extract_link, apply_delayed_links): Go back to using + timestamp_cmp + instead of same_birthtime, as this is a bit simpler. This fix + relies + on an up-to-date gnulib. + +2011-06-08 Paul Eggert + + 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. + +2011-03-12 Sergey Poznyakoff + + 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. + +2010-11-24 Paul Eggert + + 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 + . + +2010-11-23 Paul Eggert + + * 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. + +2010-11-23 Paul Eggert + + tests: new test listed04 for --one-file-system + --listed-incremental + + * tests/Makefile.am (TESTSUITE_AT): Add listed04.at. + * tests/listed04.at: New file. + * tests/testsuite.at: Include it. + +2010-11-23 Paul Eggert + + 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 contais transformed + file names. + + * src/common.h (transform_program_p): New proto. + * src/transform.c (transform_program_p): New function. + * src/compare.c (verify_volume): Warn if the archive contains + transformed file names. + +2010-11-15 Sergey Poznyakoff + + 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 + + * configure.ac: Version 1.25 + * NEWS: Describe the changes. + +2010-11-05 Sergey Poznyakoff + + Run alternative decompression programs if the principal one is + not available. + + Some compression programs are able to handle various compression + formats + (e.g. `gzip' can decompress files created by `compress', `xz' + is able + to handle lzma, etc.) Tar tries to use such programs for + decompression + if the principal decompressor cannot be started. + + * src/buffer.c (compress_type): Swap ct_none and ct_tar. + (archive_compression_type): New static variable. + (zip_magic): Remove program and option fields. + (zip_program): New structure and static. + (compress_program): Remove macro. + (find_zip_program): New static function. + (first_decompress_program,next_decompress_program): New functions. + (open_compressed_archive): Set archive_compression_type instead of + use_compress_program_option. + * src/common.h (first_decompress_program) + (next_decompress_program): New functions. + (WARN_DECOMPRESS_PROGRAM): New flag. + (WARN_VERBOSE_WARNINGS): Include WARN_DECOMPRESS_PROGRAM. + * src/warning.c (warning_args): Add "decompress-program". + (warning_types): Add WARN_DECOMPRESS_PROGRAM. + * src/system.c (run_decompress_program): New function. + (sys_child_open_for_uncompress): Use run_decompress_program + instead of calling execlp directly. + +2010-11-02 Paul Eggert + + tests: fix some issues with signals, timestamps, "test" typo + + * tests/extrac17.at: Add --warning=no-timestamp, to avoid + bogus warning due to NFS clock skew. + * tests/remfiles01.at: Discard diagnostics that some shells + generate about broken pipes. + * tests/sigpipe.at: Likewise. + * tests/remfiles01.at: Fix typo: "test $EC" was written where + "test $EC -ne 0" was intended. + +2010-11-01 Sergey Poznyakoff + + Fix extraction of device nodes. + + * src/extract.c (extract_node): Do not mask out node type. + The bug was introduced in commit ea964cce. + +2010-10-28 Paul Eggert + + tar: don't cross struct member boundaries with OLDGNU_MAGIC + + * src/create.c (write_gnu_long_link, start_header): Access + header->buffer + offsetof (struct posix_header, magic), instead of + header->header.magic, when reading or writing the OLDGNU_MAGIC + pattern. The code violates the C standard without this change, + and GCC warns about this if fortify checking is enabled. It's not + a bug on traditional (i.e., non-debugging) platforms, but it does + violate the C standard so it should be fixed. Problem originally + reported by John Emil Karlson in + . + * src/list.c (decode_header): Likewise. + +2010-10-28 Paul Eggert + + tests: port to sh variants that squirrel away file descriptors + + OpenBSD /bin/sh, and some other sh variants, squirrel away file + descriptors before closing them. For example, for "cat 3<&-" they + first dup file descriptor 3 to a fd that is 10 or greater, then + close 3 (because if "cat" had been a builtin command like ":" then + they would have wanted to avoid the fork and restore the fd after + ":" finished); and they treat ordinary (forking) commands the same + as builtin commands. This approach fails after "ulimit -n 10". + Work around this deficiency by closing the file descriptors before + invoking ulimit. Problem reported by Christian Weisgerber in + ; + 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. + + This complements 28e91b48. + + * src/common.h (transform_stat_info): New prototype. + * src/list.c (transform_stat_info): Remove static qualifier. + * src/update.c (update_archive): Call transform_stat_info. + * tests/Makefile.am (TESTSUITE_AT): Add append03.at + * tests/testsuite.at: Include append03.at + +2010-10-27 Paul Eggert + + tests: port to Solaris diff + + * tests/extrac13.at: Don't assume that "diff -c" outputs nothing + when there are no differences. This is not true on Solaris, + where it outputs "No differences encounted". + +2010-10-27 Paul Eggert + + tar: fix -x --overwrite bug (no --dereference, ! O_NOFOLLOW) + + This bug was discovered on Solaris 8. On older hosts lacking + O_NOFOLLOW, tar -x --overwrite (without --dereference) follows + symbolic links, causing the "extract over symlinks" test to fail. + + * src/extract.c (open_output_file): If O_NOFOLLOW is needed but + does not work, check for a symlink separately. + +2010-10-27 Paul Eggert + + tar: don't use "((" in shell scripts + + * tests/extrac11.at: Replace "((" with "( (" in shell scripts, as + "((" is not portable to the Korn shell, and POSIX 1003.1-2008 says + that "((" is not portable. + +2010-10-26 Sergey Poznyakoff + + Make sure name matching occurs before name transformation. + + The commit 9c194c99 altered that order. + + * src/list.c (transform_stat_info): New function. Split off from + decode_header. + (read_and): Call transform_stat_info right before do_something, + and after deciding if we should proceed with this member name, + so that name matching occurs before name transformation. + + * tests/extrac17.at: New file. + * tests/Makefile.am (TESTSUITE_AT): Add extrac17.at + * tests/testsuite.at: Include extrac17.at. + +2010-10-26 Paul Eggert + + tar: don't assume stdin is open when testing fd limits + + * tests/extrac11.at: Redirect stdin from /dev/null, in case + the parent 'make' is running with stdin closed. + +2010-10-26 Sergey Poznyakoff + + Further fixes in bootstrap. + + * bootstrap: Restore the default for gnulib_path + (symlink_to_dir): Re-apply 67cad07. + +2010-10-26 Paul Eggert + + 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 + earlier. + +2010-10-25 Sergey Poznyakoff + + Version 1.24 + + * configure.ac, NEWS: Version 1.24 + * bootstrap: Restore tar-specific code lost during last + sync from gnulib (241b72ffad). + * src/misc.c (chdir_do): Remove unused automatic variable. + +2010-10-16 Paul Eggert + + tar: use more-accurate diagnostic when intermediate mkdir fails + + Without this change, if tar tried to extract a file A/B/C, noticed + that A/B didn't exist, attempted to mkdir A/B, and the mkdir + failed, it did not diagnose the mkdir failure, but simply reported + the failure to open A/B/C. This sometimes led to confusion + because it wasn't clear what tar was trying to do, in particular + that tar tried to mkdir A/B. With this patch, tar issues two + diagnostics in this case: one for A/B and the other for A/B/C. + Problem reported by Hauke Laging in + . + * gnulib.modules: Remove faccessat. + * src/extract.c (make_directories): New arg INTERDIR_MADE. + Diagnose mkdir failure. Return 0 on success, nonzero on failure, + as opposed to nonzero iff some directory was created. All callers + changed. Simplify the code when mkdir fails, by checking whether + the desired file exists unless errno==EEXIST: this is more robust. + * tests/extrac15.at: New test, to check this. + * tests/Makefile.am (TESTSUITE_AT): Add it. + * tests/testsuite.at: Include it. + +2010-10-16 Paul Eggert + + tests: port to NFS file servers with clock skew + + Several of the tests assumed that a newly created file cannot + have a time stamp dated in the future. This assumption is not + true when files are served by a remote host whose clock is + slightly in advance of ours. Fix the problems that I observed + when running "make check" a couple of times on such a server. + + * tests/backup01.at: Use --warning=no-timestamp to suppress + clock-skew warnings. + * tests/chtype.at, tests/comprec.at, tests/exclude06.at: + * tests/extrac01.at, tests/extrac03.at, tests/extrac05.at: + * tests/extrac06.at, tests/extrac08.at, tests/extrac13.at: + * tests/extrac14.at, tests/incr01.at, tests/incr03.at, + tests/link01.at: + * tests/multiv01.at, tests/multiv02.at, tests/multiv03.at: + * tests/pipe.at, tests/rename02.at, tests/rename03.at: + * tests/rename05.at, tests/same-order01.at, tests/same-order02.at: + * tests/sparse01.at: + Likewise. + +2010-10-12 Paul Eggert + + gnulib: sync from latest gnulib, notably bootstrap and + parse-datetime + + * bootstrap: Sync from gnulib. + * doc/.gitignore: Rename getdate.texi to parse-datetime.texi. + * doc/Makefile.am (tar_TEXINFOS): Likewise. + * doc/tar.texi (Top): Adjust to renaming of getdate to + parse-datetime. + * gnulib.modules: Likewise. Also, remove ftruncate (now + obsolete). + And add inttostr (we missed this dependency). + * src/tar.c: Include parse-datetime.h, not getdate.h. All calls + to get_date replaced with parse_datetime. + +2010-09-24 Paul Eggert + + tar: -x -C symlink fix + + * src/misc.c (chdir_do): Don't use O_NOFOLLOW when opening the + argument to -C. This is for consistency with "tar -c -C FOO", and + matches the new documentation. + * tests/extrac14.at: New file. + * tests/Makefile.am (TESTSUITE_AT): Add it. + * tests/testsuite.at: Include it. + +2010-09-24 Paul Eggert + + tar: --dereference consistency + + This closes another race condition, that occurs when overwriting a + symlink with a regular file. + * NEWS (--dereference consistency): New section. + * doc/tar.texi (Option Summary): Describe new --deference + behavior. + (dereference): Likewise. Remove discussion that I didn't follow, + even before --dereference was changed. + * src/common.h (deref_stat, set_file_atime): Adjust signatures. + * src/compare.c (diff_file, diff_multivol): Respect + open_read_flags + instead of rolling our own flags. This implements the new + behavior + for --dereference. + (diff_file, diff_dumpdir): Likewise, for fstatat_flags. + * src/create.c: Adjust to set_file_atime signature change. + * src/extract.c (mark_after_links, file_newer_p, extract_dir): + Likewise. + * src/incremen.c (try_purge_directory): Likewise. + * src/misc.c (maybe_backup_file): Likewise. + * src/extract.c (file_newer_p): New arg STP. All callers changed. + (maybe_recoverable): New arg REGULAR. All callers changed. + Handle the case of overwriting a symlink with a regular file, + when --overwrite is specified but --dereference is not. + (open_output_file): Add O_CLOEXEC, O_NOCTTY, O_NONBLOCK for + consistency with file creation. Add O_NOFOLLOW if + overwriting_old_files && ! dereference_option. + * src/incremen.c (update_parent_directory): Use fstat, not + fstatat; + there's less to go wrong. + * src/misc.c (deref_stat): Remove DEREF arg. All callers changed. + Instead, use fstatat_flags. + (set_file_atime): Remove ATFLAG arg. All callers changed. + Instead, use fstatat_flags. + * src/names.c, src/update.c: Adjust to deref_stat signature + change. + * src/tar.c (get_date_or_file): Use stat, not deref_stat, as this + is not a file to be archived. + * tests/Makefile.am (TESTSUITE_AT): Add extrac13.at. + * tests/extrac13.at: New file. + * tests/testsuite.at: Include it. + +2010-09-20 Paul Eggert + + tar: do not crash with --listed-incremental + + Problem reported by Frantisek Hanzlik in + via Kamil Dudka in + . + I don't understand this code either, but Sergey can take a look at + this patch, and perhaps install a better one, when he has + the time. + * src/incremen.c (append_incremental_renames): Don't actually + append + anything to DIR if DIR is null. + +2010-09-19 Paul Eggert + + tar: prefer openat-style functions + + This change replaces traditional functions like 'open' with the + POSIX.1-2008 functions like 'openat'. Mostly this is an internal + refactoring change, in preparation for further changes to close + some races. + * gnulib.modules: Add faccessat, linkat, mkfifoat, renameat, + symlinkat. + Remove save-cwd. + * src/Makefile.am (tar_LDADD): Add $(LIB_EACCESS). + * tests/Makefile.am (LDADD): Likewise. + * src/common.h (chdir_fd): New extern var. + * src/compare.c (diff_file, diff_multivol): Use openat instead + of open. + * src/create.c (create_archive, restore_parent_fd): Likewise. + * src/extract.c (create_placeholder_file): Likewise. + * src/names.c (collect_and_sort_names): Likewise. + * src/update.c (append_file): Likewise. + * src/compare.c (diff_symlink): Use readlinkat instead of + readlink. + * src/compare.c (diff_file): Use chdir_fd instead of AT_FDCWD. + * src/create.c (subfile_open, dump_file0): Likewise. + * src/extract.c (fd_chmod, fd_chown, fd_stat, set_stat): + (repair_delayed_set_stat, apply_nonancestor_delayed_set_stat): + Likewise. + * src/extract.c (mark_after_links, file_newer_p, extract_dir): + (extract_link, apply_delayed_links): + Use fstatat rather than stat or lstat. + * src/misc.c (maybe_backup_file, deref_stat): Likewise. + * src/extract.c (make_directories): Use mkdirat rather than mkdir. + Use faccessat rather than access. This fixes a minor permissions + bug when tar is running setuid (who would want to do that?!). + (open_output_file): Use openat rather than open. + In the process, this removes support for Masscomp's O_CTG files, + which aren't compatible with openat's signature. Masscomp! Wow! + That's a blast from the past. As far as I know, that operating + system hasn't been supported for more than 20 years. + (extract_link, apply_delayed_links): + Use linkat rather than link. + (extract_symlink, apply_delayed_links): + Use symlinkat rather than symlink. + (extract_node): Use mknodat rather than mknod. + (extract_fifo): Use mkfifoat rather than mkfifo. + (apply_delayed_links): Use unlinkat rather than unlink or rmdir. + * src/misc.c (safer_rmdir, remove_any_file): Likewise. + * src/unlink.c (flush_deferred_unlinks): Likewise. + * src/extract.c (rename_directory): Use renameat rather than + rename. + * src/misc.c (maybe_backup_file, undo_last_backup): Likewise. + * src/misc.c: Don't include ; no longer needed now + that we're using openat etc. + (struct wd): Add member fd. Remove members err and fd. All uses + changed. + (CHDIR_CACHE_SIZE): New constant. + (wdcache, wdcache_count, chdir_fd): New vars. + (chdir_do): Use openat rather than save_cwd. Keep the cache up + to date. This code won't scale well, but is good enough for now. + * src/update.c (update_archive): Use openat + fdopendir + + streamsavedir rather than savedir. + + This file is a placeholder. It will be replaced with the actual + ChangeLog + by make dist. Run make ChangeLog if you wish to create it + earlier. + +2010-09-18 Paul Eggert + + tar: add utimens.h includes + + * src/extract.c: Include , needed for fdutimens + prototype. + * src/misc.c: Likewise. + +2010-09-18 Paul Eggert + + tar: switch to gnulib fdutimensat module + + * gnulib.modules: Add fdutimensat. + * src/common.h (fd_utimensat): Remove decl. + * src/extract.c (set_stat): Call fdutimensat, not fd_utimensat. + * src/misc.c (set_file_atime): Likewise. + (fd_utimensat): Remove. + +2010-09-17 Paul Eggert + + tar: extract permissions for . last + + * src/common.h (must_be_dot_or_slash): New decl. + * src/extract.c (mark_after_links): New function, taking code + that used to be in create_placeholder_file. + (create_placeholder_file): Use it. + (delay_set_stat): Always delay setting status for . and /. + * src/misc.c (must_be_dot_or_slash): Now extern. + * tests/extrac12.at: New file. + * tests/Makefile.am (TESTSUITE_AT): Add it. + * tests/testsuite.at: Likewise. + +2010-09-17 Paul Eggert + + tar: don't check for getdtablesize; use AC_CHECK_FUNCS_ONCE + + * configure.ac: Don't check for getdtablesize; no longer needed. + Use AC_CHECK_FUNCS_ONCE rather than AC_CHECK_FUNCS, for + efficiency. + +2010-09-17 Paul Eggert + + tar: extract symlink attributes, close some symlink-related races + + * NEWS: Describe symlink-extraction improvements. + * src/extract.c (enum permstatus): Remove. + (fchmod, fchown): Define dummy replacement macros if the system + does not supply them. + (implemented): New function. + (struct delayed_set_stat): Remove members invert_permissions, + permstatus. They were too confusing, and tried to do too much + in too-little space. Instead, add members current_mode, + current_mode_mask, interdir, atflag. All users changed. + (struct delayed_link): Add members mode, atime, mtime, to support + platforms such as BSD where symlinks have these attributes. + All users changed. + (fd_chmod): Renamed from fdchmod. New argument atflag. Check for + operation not supported at run-time, not at configure-time. Put + fd argument first. All callers changed. + (fd_chown): Likewise, renaming from fdchown. + (fd_stat): Likewise, renaming from fdstat. + (set_mode): Remove args stat_info, cur_info, invert_permissions, + permstatus. Add args mode, mode_mask, current_mode, + current_mode_mask, + atflag. All callers changed. Close some races. Use an easier-to + understand method for computing permissions. Work around POSIX + incompatibility in Linux fchmodat. Support extraction of symlink + modes, if the OS allows it. + (set_stat): Remove args cur_info, invert_permissions, permstatus. + Add args current_mode, current_mode_mask, interdir, atflag. + All callers changed. Close some races. Support extraction of + attributes on symlinks, if the OS allows it. + (delay_set_stat): Remove args invert_permissions, permstatus. + Add args current_mode, current_mode_mask, mode, atflag. + The ST arg can be null now, indicating that it's an intermediate + directory. All callers changed. + (repair_delayed_set_stat, apply_nonancestor_delayed_set_stat): + Close some races. + (extract_dir): Also be paranoid if only --same-permissions, due + to semantics of setgid and setuid directories on some hosts. + This closes a race on those hosts. Simplify calculation of + delay_set_stat arguments; the old code was truly strange and + probably wrong in some border cases. + (extract_dir, extract_file, extract_node, extract_fifo): Don't + rely on + unspecified behavior in mode arg of open, mknod, etc. Instead, + mask out those bits when creating the file, and add them later via + fchmod or chmodat. + (open_output_file): file_name is now const. Add arg current_mode, + current_mode_mask. All callers changed. When overwriting + old files, + refuse to overwrite something that is not a regular file, since + we're extracting a regular file. + (extract_file): Remove the FIXME comment. Whatever the protection + issues were, they should be fixed now. As a result of all + the other + API changes, we now use fchmod etc. rather than chmod etc., + closing + some races. + (create_placeholder_file, apply_delayed_links): Record desired + mode and times for symlinks, for OSes that support that. + +2010-09-16 Paul Eggert + + tar: tar -x without --incremental no longer sets atime again + + * src/extract.c (set_stat): Use UTIME_OMIT rather than UTIME_NOW. + The UTIME_NOW was there only to emulate the previous behavior of + using the current time, and the previous behavior was there only + because before we started assuming POSIX.1-2008 there was no + portable way to get the effect of UTIME_NOW. + +2010-09-16 Paul Eggert + + tar: another --atime-preserve race fix + + * src/common.h (set_file_atime): Add parentfd arg. + * src/compare.c (diff_file): Use it. + * src/create.c (dump_file0): Likewise. This closes yet another + race condition with symbolic links. + * src/misc.c (set_file_atime): Add parentfd arg. + +2010-09-16 Paul Eggert + + tar: --atime-preserve fixes for races etc. + + This patch fixes a race condition in the --atime-preserve=replace + option, which might cause tar to improperly follow a symbolic + link. + + It also drops the use of the _FIOSATIME ioctl of Solaris 2.x + and later, which loses resolution on time stamps. Modern Solaris + systems support full-resolution time stamps in the kernel, and + it's not worth the hassle of testing this call, useful only in + no-longer-supported Solaris variants. + + Also, it undoes a change I recently introduced to the --compare + option, which caused it to not follow symbolic links unless the + --dereference option was also used. Quite possibly this change is + a good idea, but the old behavior was documented and the change + should not have been installed casually. + + * configure.ac: Don't check for stropts.h and sys/filio.h. + * gnulib.modules: Add futimens, utimensat. Remove futimens. + * src/common.h (fd_utimensat): New decl. + * src/compare.c (diff_file, diff_multivol): + Don't use open_read_flags: those are for --create only. + * src/create.c (dump_file0): Adjust to set_file_atime changes. + Pass fstatat_flags to set_file_atime, so that symbolic links are + not followed inadvertantly. + * src/extract.c: Don't include utimens.h. + (set_stat): Use fd_utimensat ant UTIME_NOW rather than fdutimens. + * src/misc.c: Don't include utimens.h, stropts.h, sys/filio.h. + (fd_utimensat): New function. + (set_file_atime): Use it. New arg atflag, controlling symlink + handling. All callers changed. + +2010-09-14 Paul Eggert + + * configure.ac: tar: close some race conditions when extracting + + * configure.ac: Check for fchmod and fchown. Don't check + for utimes. + * src/extract.c (fdchmod, fdchown, fdstat): New functions. + (set_mode, set_stat): New arg FD. All callers changed. + This avoids some race conditions between closing a regular file + and setting its metadata, and it's a bit faster. + +2010-09-13 Paul Eggert + + tar: don't worry about fdopendir closing its argument + + * NEWS: Don't mention dirfd; no longer needed. + * gnulib.modules: Remove dirfd. + * src/create.c (get_directory_entries): Remove the code dealing + with dirfd failures, as the new fdopendir replacement doesn't + close its argument so we don't need to call dirfd. See + + and gnulib commit 970c9038e4cca46e1b037ae0a6d574dfae6a7327. + +2010-09-13 Paul Eggert + + * NEWS: Fix wording typo in previous change. + + Reported by Jim Meyering. + +2010-09-13 Paul Eggert + + tar: live within system-supplied limits on file descriptors + + * NEWS: Note the change. Mention dirfd and fdopendir. + * gnulib.modules: Add dirfd and fdopendir. The code was already + using fdopendir; dirfd is a new need. + * src/common.h (open_searchdir_flags, get_directory_entries): + (subfile_open, restore_parent_fd, tar_stat_close): New decls. + (check_exclusion_tags): Adjust signature to match code change. + * src/create.c (IMPOSTOR_ERRNO): New constant. + (check_exclusion_tags): First arg is now a struct tar_stat_info + const *, not an fd. All callers changed. + (dump_regular_file, dump_file0): A zero fd represents an unused + slot, so play it safe if the fd member is zero here. A negative + fd represents the negation of an errno value, so play it safe and + do not assign -1 to fd merely because an open fails. + (open_failure_recover, get_directory_entries, restore_parent_fd): + (subfile_open): New functions. These help to recover from file + descriptor exhaustion. + (dump_dir, dump_file0): Use them. + (dump_file0): Use tar_stat_close instead of rolling our own close. + * src/incremen.c (scan_directory): Use get_directory_entries, + subfile_open, etc., to recover from file descriptor exhaustion. + * src/names.c (add_hierarchy_to_namelist): Likewise. + (collect_and_sort_names): A negative fd represents the negation + of an errno value, so play it safe and do not assign -1 to fd. + * src/tar.c (decode_options): Set open_searchdir_flags. + Add O_CLOEXEC to all the open flags. + (tar_stat_close): New function, which knows how to deal with + new convention for directory streams and file descriptors. + Diagnose 'close' failures. + (tar_stat_destroy): Use it. + * src/tar.h (struct tar_stat_info): New member dirstream. + fd now has the negative of an errno value, not merely -1, if + the file could not be opened, so that failures to reopen + directories + are better-diagnosed later. + * tests/Makefile.am (TESTSUITE_AT): Add extrac11.at. + * tests/testsuite.at: Likewise. + * tests/extrac11.at: New file. + +2010-09-08 Paul Eggert + + tar: improve documentation of reliability and security issues + + * doc/tar.texi (Reliability and security, Reliability): + (Permissions problems, Data corruption and repair, Race + conditions): + (Security, Privacy, Integrity, Live untrusted data): + (Security rules of thumb): New nodes. + +2010-09-06 Paul Eggert + + tar: more reliable directory traversal when creating archives + + * NEWS: Document this. + * gnulib.modules: Add openat, readlinkat. + * src/common.h (open_read_flags, fstatat_flags): New global + variables. + (cachedir_file_p, dump_file, check_exclusion_tags, + scan_directory): + Adjust to new signatures, described below. + (name_fill_directory): Remove. + * src/compare.c (diff_file, diff_multivol): Use open_read_flags. + * src/create.c (struct exclusion_tag): Exclusion predicates + now take + a file descriptor, not a file name. + (add_exclusion_tag): Likewise. All uses changed. + (cachedir_file_p): Likewise. + (check_exclusion_tags): The directory is now a file descriptor, + not a file name. All uses changed. Use openat for better + traversal. + (file_dumpable_p): Arg is now a struct stat, not a struct + tar_stat_info. All uses changed. Check the arg's file types too. + (dump_dir0, dump_dir, dump_file0, dump_file): Omit top_level and + parent_device args, since st->parent tells us that now. All uses + changed. + (dump_dir): Likewise. Also, omit fd arg for similar reasons. + Apply fdsavedir to a dup of the file descriptor, since we need a + file descriptor for openat etc. as well, and fdsavedir (perhaps + unwisely) consumes its file descriptor when successful. + Do not consume st->fd when successful; this simplifies the caller. + (create_archive): Allocate a file descriptor when retraversing + a directory, during incremental dumps. + (dump_file0): Use fstatat, openat, and readlinkat for better + traversal. + When opening a file, use the result of fstat on the file + descriptor + rather than the fstatat on the directory entry, to avoid some race + conditions. No need to reopen the directory since we now + no longer + close it. Change "did we open the file?" test from 0 <= fd to + 0 < fd since fd == 0 now represents uninitialized. + (dump_file): Now accepts struct tar_stat_info describing parent, + not parent_device. Also, accept basename and fullname of entry. + All uses changed. + * src/incremen.c (update_parent_directory): Accept struct + tar_stat_info for parent, not name. All callers changed. + Use fstatat for safer directory traversal. + (procdir): Accept struct tar_stat_info, not struct stat and + dev_t, for info about directory. All callers changed. + (scan_directory): Accept struct tar_stat_info, not name, + device, and cmdline, for info about directory. All callers + changed. Do not consume the file descriptor, since caller + might need it. Use fstatat and openat for safer directory + traversal; also, use fstat after opening to double-check. + (name_fill_directory): Remove. + * src/names.c (add_hierarchy_to_namelist): Accept struct + tar_stat_info instead of device and cmdline. All callers changed. + When descending into a subdirectory, use openat and fstat for + safer directory traversal. + (collect_and_sort_names): Use open and fstat for safer directory + traversal. Set up struct tar_stat_info for callee's new API. + * src/tar.c (decode_options): Initialize open_read_flags + and fstatat_flags. + (tar_stat_destroy): Close st->fd if it is positive (not zero!). + * src/tar.h (struct tar_stat_info): New members parent, fd. + * src/update.c (update_archive): Adjust to dump_file's API change. + * tests/filerem02.at: Ignore stderr since its contents now depend + on the file system implementation. + +2010-09-05 Paul Eggert + + tar: remove lint discovered by Sun C compiler + + * src/common.h (WARN_ALL): Don't mask with 0xffffffff; on a 32-bit + host, 0xffffffff is of type 'unsigned int', which makes WARN_ALL + an unsigned int value that is too large to fit into an int, and + the C standard says that this has undefined behavior. The mask is + not needed, so omit it. + +2010-09-04 Paul Eggert + + tar: restore macros that are used in some cases + + * src/tar.c (LOW_DENSITY_NUM, MID_DENSITY_NUM, HIGH_DENSITY_NUM): + Restore these macros, undoing the previous change to this file. + The macros are used after all, in some cases. Sorry about that. + +2010-09-03 Paul Eggert + + tar: remove unused macros + + * src/create.c (UINTMAX_TO_CHARS): Remove; no longer used. + * src/tar.c (LOW_DENSITY_NUM, MID_DENSITY_NUM, HIGH_DENSITY_NUM): + Likewise. + * src/incremen.c (DIR_IS_NEW): Comment out; not used. + Mark this with a FIXME, since it looks like it should be used. + +2010-08-27 Sergey Poznyakoff + + Fix --remove-files in update/append mode. + + * src/update.c (update_archive): Call finish_deferred_unlinks when + done. + +2010-08-26 Paul Eggert + + tar: avoid assumptions about root access and chmod -w in test + cases + + * tests/extrac07.at, tests/extrac09.at, tests/listed03.at: Use + AT_UNPRIVILEGED_PREREQ, since this test requires non-root + privileges. + * tests/extrac07.at: Don't use "chmod -w", as POSIX says it's not + portable to start a chmod permissions-list with "-" as it may be + confused with an option. Use "chmod a-w" instead. + +2010-08-26 Paul Eggert + + tar: fix bug with -C and delayed setting of metadata + + * src/common.h (chdir_current): New decl. + * src/extract.c (struct delayed_set_stat, struct delayed_link): + New member change_dir. + (delay_set_stat, create_placeholder_file): Set it. + (apply_nonancestor_delayed_set_stat, apply_delayed_links): Use it. + (extract_link): Check that the links are all relative to the same + directory. + (extract_archive): Restore the current directory after + apply_nonancestor_delayed_set_stat has possibly changed it. + * src/misc.c (chdir_current): New external var; this used to + be the private static variable 'previous' inside chdir_dir. + All uses changed. + * tests/Makefile.am (TESTSUITE_AT): New test extrac10.at. + * tests/extrac10.at: New file. + * tests/testsuite.at: Include it. + +2010-08-25 Sergey Poznyakoff + + Don't apply file transformations to volume names. + + * src/list.c (decode_header): Don't apply file transformations + to volume names. + * tests/xform01.at: New testcase. + * tests/xform-h.at (xform): Rename macro to xformtest. Use + pushdef/popdef. + * tests/Makefile.am, tests/testsuite.at: Add xform01.at + +2010-08-25 Paul Eggert + + tar: optimize -c --sparse when file is entirely sparse + + * src/sparse.c (sparse_scan_file): If the file is entirely sparse, + that is, if ST_NBLOCKS is zero, don't bother scanning for nonzero + blocks. Idea by Kit Westneat, communicated by Bernd Schubert in + . + Also, omit unnecessary lseek at start of file. + +2010-08-25 Paul Eggert + + tar: don't assume size of a sparse file chunk fits in size_t + + * src/tar.h (struct sp_array): Change numbytes from size_t + to off_t. + All uses changed. + * scripts/xsparse.c (struct sp_array): Likewise. + Include , for SIZE_MAX. + (expand_sparse): Don't try to allocate a buffer bigger than + SIZE_MAX bytes. + * src/common.h (SIZE_TO_CHARS, size_to_chars, SIZE_FROM_HEADER): + (size_from_header): Remove decls. + * src/create.c (size_to_chars): Remove. + * src/list.c (size_from_header): Remove. + * src/sparse.c (sparse_extract_region, check_data_region): + (oldgnu_add_sparse, oldgnu_store_sparse_info, pax_decode_header): + Don't assume chunk sizes fit in size_t. + (oldgnu_add_sparse): Check for off_t overflow. + * src/xheader.c (sparse_numbytes_decoder, sparse_map_decoder): + Likewise. + +2010-08-25 Paul Eggert + + tar: use ctime, not mtime, when checking placeholders + + * src/extract.c (struct delayed_link): Rename member mtime + to ctime. + All uses changed to use ctime rather than mtime. + +2010-08-24 Paul Eggert + + tar: add comment to link04.at test + + * tests/link04.at: Add explanatory comment at head. + +2010-08-24 Paul Eggert + + tar: fix 1.23 Solaris regression related to PRIV_SYS_LINKDIR + + The idea was suggested by Petr Sumbera in the thread starting + here: + http://lists.gnu.org/archive/html/bug-tar/2010-08/msg00000.html + * src/extract.c (set_mode): Save the errno of the chmod that + failed, for the benefit of chmod_error_details. Do not bother + retrying chmod unless the mode suggests setuid is the issue. + (extract_archive): Remove redundant call to + priv_set_remove_linkdir. + * src/system.c: Include priv-set.h. + (sys_spawn_shell, sys_child_open_for_compress): + (sys_child_open_for_uncompress, sys_exec_command): + (sys_exec_info_script, sys_exec_checkpoint_script): + Invoke priv_set_restore_linkdir before execv or execlp, so that + the subprocess has the same privileges that tar originally did. + +2010-08-24 Paul Eggert + + tar: handle files that occur multiple times but have link count 1 + + This patch was inspired by the following patch that addressed a + similar problem in GNU coreutils du: + http://git.savannah.gnu.org/gitweb/?p=coreutils.git;h=efe53cc72b599979ea292754ecfe8abf7c839d22 + * src/common.h (name_count): New decl. + * src/create.c (trivial_link_count): New static var. + (create_archive): Initialize it. + (dump_hard_link, file_count_links): Use it, so that files with + link count 1 are handled correctly when they are found multiple + times. + * src/names.c (allocated_entries): Renamed from allocated_names, + since the identifier's name was misleading. All uses changed. + (entries): Renamed from names. All uses changed. + (scanned): Renamed from name_index. All uses changed. + (name_count): New var. + (name_add_name): Increment it. + * tests/link04.at: New file. + * tests/testsuite.at: Add it. + * tests/Makefile.am (TESTSUITE_AT): Likewise. + +2010-08-23 Paul Eggert + + tar: use nlink_t for link counts + + * src/create.c (struct link): nlink is now of type nlink_t, + not size_t. + +2010-08-23 Paul Eggert + + tar: don't export names that aren't used elsewhere + + * src/common.h (file_dumpable_p, gid_to_chars, major_to_chars): + (minor_to_chars, mode_to_chars, uid_to_chars, uintmax_to_chars): + (string_to_chars, dumpdir_creat0, dumpdir_create, dumpdir_free): + (dumpdir_locate, dumpdir_next, dumpdir_first, gid_from_header): + (major_from_header, minor_from_header, mode_from_header): + (time_from_header, uid_from_header, quote_copy_string, + request_stdin): + (xheader_init, transform_header_name): + Remove declarations; these are no longer exported from their + modules. + (GID_TO_CHARS, MAJOR_TO_CHARS, MINOR_TO_CHARS, MODE_TO_CHARS): + (UID_TO_CHARS, UINTMAX_TO_CHARS, UNAME_TO_CHARS, GNAME_TO_CHARS): + Move to src/create.c, since no other module uses these. + (GID_FROM_HEADER, MAJOR_FROM_HEADER, MINOR_FROM_HEADER): + (MODE_FROM_HEADER, TIME_FROM_HEADER, UID_FROM_HEADER): + Move to src/extract.c, since no other module uses these. + (dumpdir_t, dumpdir_iter_t): Remove; no longer used. + * src/create.c (gid_to_chars, major_to_chars, minor_to_chars): + (mode_to_chars, uid_to_chars, uintmax_to_chars, string_to_chars): + (file_dumpable_p): Now static. + * src/incremen.c (dumpdir_create0, dumpdir_create, dumpdir_free): + (dumpdir_locate, dumpdir_next, dumpdir_first): Now static. + (scan_directory, write_directory_file_entry): + Use struct dumpdir_iter * rather than dumpdir_iter_t. + * src/list.c (gid_from_header, major_from_header, + minor_from_header): + (mode_from_header, time_from_header, uid_from_header): + (transform_member_name): Now static. + * src/misc.c (quote_copy_string): #if 0 out, as it's not used + anywhere. + * src/system.c (wait_for_grandchild): Now static. + * src/tar.c (request_stdin): Now static. + * src/xheader.c (xheader_init): Now static. + +2010-08-23 Paul Eggert + + tar: fix misspelled identifier "set_comression_program_by_suffix" + + * src/suffix.c (set_compression_program_by_suffix): Renamed from + set_comression_program_by_suffix. + * src/buffer.c, src/common.h, src/tar.c: All uses changed. + +2010-08-20 Paul Eggert + + tar: change interdir_made from int to bool + + * src/extract.c (maybe_recoverable, create_placeholder_file): + Change interdir_made from int * to bool *, since the flag has just + two values 0 and 1. All uses changed. This does not affect tar's + behavior. + +2010-08-20 Paul Eggert + + tar: remove trailing white space from source files + + * ChangeLog.1, ChangeLog.CVS, Makefile.am, NEWS, README: + * README-hacking, directory, doc/Makefile.am, doc/dumpdir.texi: + * doc/gendocs_template, doc/intern.texi, doc/mastermenu.el: + * doc/snapshot.texi, doc/sparse.texi, doc/tar-snapshot-edit.texi: + * doc/value.texi, lib/Makefile.am, scripts/backup-specs: + * scripts/dump-remind.in, scripts/tar-snapshot-edit, + scripts/tarcat: + * scripts/xsparse.c, src/arith.h, src/buffer.c, src/compare.c: + * src/create.c, src/delete.c, src/exit.c, src/suffix.c, src/tar.c: + * src/tar.h, src/update.c, src/warning.c, src/xheader.c: + * tests/append01.at, tests/append02.at, tests/atlocal.in: + * tests/delete03.at, tests/exclude.at, tests/exclude06.at: + * tests/extrac04.at, tests/extrac05.at, tests/extrac06.at: + * tests/extrac07.at, tests/filerem01.at, tests/filerem02.at: + * tests/incr01.at, tests/incr02.at, tests/incr03.at, + tests/incr06.at: + * tests/label02.at, tests/label03.at, tests/label04.at: + * tests/label05.at, tests/link02.at, tests/link03.at: + * tests/listed01.at, tests/listed02.at, tests/long01.at: + * tests/longv7.at, tests/multiv01.at, tests/multiv02.at: + * tests/multiv03.at, tests/multiv05.at, tests/multiv06.at: + * tests/multiv07.at, tests/multiv08.at, tests/options.at: + * tests/options02.at, tests/remfiles03.at, tests/rename01.at: + * tests/rename02.at, tests/rename03.at, tests/rename04.at: + * tests/rename05.at, tests/same-order01.at, tests/same-order02.at: + * tests/shortfile.at, tests/shortupd.at, tests/sparse01.at: + * tests/sparse02.at, tests/sparsemv.at, tests/sparsemvp.at: + * tests/star/README, tests/star/gtarfail2.at: + * tests/star/multi-fail.at: + * tests/star/pax-big-10g.at, tests/star/quicktest.sh: + * tests/star/ustar-big-2g.at, tests/star/ustar-big-8g.at: + * tests/update01.at, tests/update02.at, tests/volsize.at: + * tests/volume.at: + Remove trailing spaces and tabs from lines, and remove + trailing empty lines from files. This makes it a bit easier + to share code among coreutils and other projects that do this. + +2010-08-19 Paul Eggert + + tar: update licenses to latest versions from www.gnu.org + + * COPYING: Update to latest version; this is just minor + formatting. + * doc/fdl.texi: Update from GFDL 1.2 to 1.3. + * doc/tar.texi: Adjust to new format of fdl.texi. Omit trailing + white space. + +2010-07-18 Paul Eggert + + * src/misc.c (struct wd): Fix comment to match code. + +2010-07-18 Paul R. Eggert + + tar: no need to report getcwd error if never using the result + + * src/misc.c (struct wd): Rename 'saved' to 'err', with new + semantics. + (chdir_arg, chdir_do): Adjust to new semantics. Do not report an + error merely because save_cwd fails; report an error only if + save_cwd's result is needed later. + * tests/extrac09.at: New file, to test for bug that was fixed. + * tests/testsuite.at: Include it. + * tests/Makefile.am (TESTSUITE_AT): Add it. + +2010-07-18 Paul R. Eggert + + tar: go back to absolutifying filenames in normalize_filename + for now + + * src/misc.c (normalize_filename): For now, go back to making + filenames absolute, even though this causes 'tar' to fail when + getcwd fails. However, do not attempt to resolve ".." as this + does not work with symlinks. Also, do the right thing with + leading file system prefixes and on hosts where // != /. + +2010-07-17 Sergey Poznyakoff + + Allow for size suffixes in -L and --record-size options. + + * src/tar.c (TAR_SIZE_SUFFIXES): New define. + (parse_opt): Allow for size suffixes in arguments to + -L and --record-size options. + * NEWS, doc/tar.texi: Update. + +2010-07-15 Paul R. Eggert + + tar: don't crash if getcwd fails + + * src/extract.c: Don't include xgetcwd.h. + (extract_dir): stat "." rather than statting getcwd's output. + * src/misc.c (normalize_filename_x): Rewrite so as not to resolve + /../, which can't be done reliably in the presence of symlinks. + Don't reject valid names such as ".". + (normalize_filename): Don't make it absolute; that way, we don't + have to invoke xgetcwd which might fail. Don't bother to realloc + at the end, since that uses time and now saves little space. + (chdir_do): Don't crash if xgetcwd fails. + * tests/Makefile.am (TESTSUITE_AT): Add listed03.at. + * tests/listed03.at: New file. + * tests/testsuite.at: Include listed03.at. + +2010-07-11 Sergey Poznyakoff + + Keep a detailed map of archive members stored in the record + buffer. + + A separate map (bufmap) provides information for creating + multi-volume continuation headers. + + * src/buffer.c (bufmap): New struct. + (bufmap_head, bufmap_tail, inhibit_map): New variables. + (mv_begin_write): New function. + (mv_begin): Rename to mv_begin_read. Rewrite using mv_begin_write. + All callers changed. + (mv_total_size): Remove. + (bufmap_locate, bufmap_free, bufmap_reset): New functions. + (_flush_write): Update bufmap. + (close_archive): Free bufmap. + (add_chunk_header): Take a bufmap argument. + (gnu_add_multi_volume_header): Likewise. + (add_multi_volume_header): Likewise. + (_gnu_flush_write): Rewrite using bufmap. + (real_s_name, real_s_totsize) + (real_s_sizeleft) + (save_name, save_totsize, save_sizeleft): Removed. All + uses updated. + (mv_size_left): Update bufmap_head. + (mv_end): Rewrite. + (multi_volume_sync): Remove. + + * src/common.h (mv_begin_write): New prototype. + (mv_begin): Rename to mv_begin_read. + * src/create.c: Use mv_begin_write instead of mv_begin. + Remove calls to mv_size_left and mv_end. + * src/sparse.c: Likewise. + + * tests/multiv07.at: Close stdin. + * tests/spmvp00.at: Update AT_KEYWORDS. + * tests/spmvp10.at: Likewise. + + * tests/multiv08.at: New testcase. + * tests/Makefile.am, tests/testsuite.at: Add multiv08.at. + +2010-07-11 Sergey Poznyakoff + + Version 1.23.90 + + * NEWS, configure.ac: Version 1.23.90 + * doc/tar.texi: Document the use of lbzip2. + +2010-06-28 Sergey Poznyakoff + + Fix exclusion of long file names when extracting from pax format + archives. + + * src/list.c (read_and): Call decode_header before attempting + name_match. + (list_archive): Remove call to decode_header. + + * src/compare.c (diff_archive): Remove call to decode_header. + * src/extract.c (extract_archive): Likewise. + + * test/exclude06.at: New test case. + * tests/testsuite.at: Include exclude06.at. + * tests/Makefile.am (TESTSUITE_AT): Add exclude06.at. + +2010-06-28 Sergey Poznyakoff + + Minor fix. + + * src/buffer.c (magic): Split the character constant to help + cc recognize character boundaries (7 is a valid hex character). + +2010-06-27 Sergey Poznyakoff + + Minor fix. + + * src/buffer.c (magic): Fix xz magic. + +2010-06-16 Paul Eggert + + Remove some lint, found by gcc -W etc. + + * src/common.h (label_notfound): New decl. + * src/buffer.c (set_volume_start_time, compress_type): + (guess_seekable_archive, open_compressed_archive, init_buffer): + (_flush_write, archive_is-dev, increase_volume_number): + (change_tape_menu, try_new_volume, add_chunk_header): + (multi_volume_sync): + Declare as 'static' if it's not exported. + Use function prototype (void) rather than old-style (). + * src/checkpoint.c (expand_checkpoint_string): Likewise. + * src/incremen.c (dirlist_replace_prefix, makedumpdir, + read_incr_db_2): + Likewise. + * src/list.c (print_volume_label): Likewise. + * src/misc.c (normalize_filename_x): Likewise. + * src/names.c (make_name, free_name, check_name_alloc, + name_next_elt): + Likewise. + * src/tar.c (tar_list_quoting_style, add_exclude_array): + (set_stat_signal): Likewise. + * src/transform.c (new_transform, + _single_transform_name_to_obstack): + (_transform_name_to_obstack): Likewise. + * src/unlink.c (dunlink_alloc): Likewise. + + * src/buffer.c (struct zip_magic): Use const when appropriate. + * src/incremen.c (obstack_code_rename, + write_directory_file_entry): + Likewise. + * src/sparse.c (COPY_STRING): Likewise. + * src/system.c (dec_to_env, time_to_env, oct_to_env, str_to_env): + (chr_to_env): Likewise. + * src/tar.c (tar_list_quoting_style, set_stat_signal): Likewise. + + * src/extract.c (extract_node): Don't return garbage. + + * src/names.c: Remove old-style declarations of getgrnam etc. + All modern systems declare these, and it's not worth the hassle + of ignoring the warnings on modern systems for old-style decls. + +2010-05-17 Sergey Poznyakoff + + Bugfix. + + * src/incremen.c (make_directory): Retain the slash if it is the + only character in a filename. + +2010-04-02 Sergey Poznyakoff + + Recode NEWS back to UTF-8 + +2010-04-01 Sergey Poznyakoff + + Fix the gzip.at test case. + + * tests/gzip.at: Suppress gzip error output, as it can differ + depending on its version etc. Bug reported by Ludovic Courtès. + +2010-03-28 Sergey Poznyakoff + + New option --full-time. + + * src/common.h (full_time_option): New global. + * src/tar.c (FULL_TIME_OPTION): New constant. + (options): New option --full-time. + (parse_opt): Handle the --full-time option. + * src/list.c (simple_print_header): Pass full_time_option + as the 2nd argument to tartime. + * doc/tar.texi: Update. + * NEWS: Update. + +2010-03-27 Sergey Poznyakoff + + Minor fixes in the testsuite. + + * tests/extrac07.at: Fix a typo (invalid number + of arguments before format list). + * tests/link02.at: Use `ln' instead of `link'. + * tests/link03.at: Likewise. + +2010-03-27 Sergey Poznyakoff + + Fix coredump. + + * src/names.c (collect_and_sort_names): Remove + entry from the table before freeing it. + +2010-03-27 Sergey Poznyakoff + + Fix dead loop on extracting existing symlinks with the -k option. + + * src/extract.c (create_placeholder_file) + (extract_link, extract_symlink) + (extract_node, extract_fifo): Handle all possible + return values from maybe_recoverable. This complements + 8f390db92fc. Reported by Ico Doornekamp . + * NEWS: Update. + +2010-03-20 Sergey Poznyakoff + + Fix undesired error exit on receiving SIGPIPE. + + * src/tar.c: Do not ignore SIGPIPE. + * tests/sigpipe.at: New testcase. + * tests/Makefile.am, tests/testsuite.at: Add sigpipe.at + * tests/remfiles01.at: Fix error code expectation. + * NEWS: Update. + +2010-03-17 Sergey Poznyakoff + + Fix --remove-files. + + Tar --remove-files relied on canonicalize_file_name, + which replaces symlinks in file name components with + the directories they point to. Due to this, tar + effectively ignored existence of symbolic links and + was unable to remove a directory that contained any + (Alexander Kozlov , 2010-03-15). + + * gnulib.modules: Remove canonicalize. + * src/misc.c (normalize_filename): Rewrite + from scratch. The function operates only on + its input string, it makes no attempt to test + components for existence or to resolve symbolic + links. + * tests/Makefile.am (TESTSUITE_AT): Add remfiles03.at. + * tests/testsuite.at: Likewise. + * tests/remfiles03.at: New test case. + * NEWS: Update. + +2010-03-12 Sergey Poznyakoff + + Bugfixes. + + * src/buffer.c (check_label_pattern): Initialize result. + * tests/remfiles01.at: Skip if run with root privileges. + +2010-03-11 Sergey Poznyakoff + + Fix `--test-label' and `--label -r' behavior. + + * doc/tar.texi (Including a Label in the Archive): Revise + the section. + * NEWS: Update + + * src/buffer.c (open_archive): Check volume label on + ACCESS_UPDATE as well. + * src/list.c (test_archive_label): Rewrite to match the + documentation. + * src/names.c (regex_usage_warning): Return int. + (names_notfound): Rewrite the conditional. + (label_notfound): New function. + + * tests/label03.at: New testcase. + * tests/label04.at: New testcase. + * tests/label05.at: New testcase. + * tests/Makefile.am: Add new testcases. + * tests/testsuite.at: Likewise. + +2010-03-11 Sergey Poznyakoff + + Doc fixes. + + * doc/tar.texi: Consistently use lowercase `see' within sentences. + More fixes spotted by Denis Excoffier. + * THANKS: Update. + +2010-03-11 Sergey Poznyakoff + + Shut up a gcc warning message. + + * src/tar.c (tar_help_filter): Use a separate const + variable to hold returns from gettext. Reported by + Peter Breitenlohner. + +2010-03-11 Sergey Poznyakoff + + Bugfix. + + * src/names.c (collect_and_sort_names): Initialize prev_name. + Reported by Dmitry V. Levin. + +2010-03-10 Sergey Poznyakoff + + Version 1.23 + + * configure.ac, NEWS: Update version number. + +2010-03-10 Sergey Poznyakoff + + Doc changes. + + * NEWS: Update. + * THANKS: Update. + * doc/snapshot.texi, doc/snapshot.texi, + doc/sparse.texi, doc/tar-snapshot-edit.texi, + doc/tar.texi: Spellchecked and proof-read. Thanks + to Denis Excoffier. + * gnulib.modules: Remove utime. + +2010-03-08 Kamil Dudka + + Fix possible overflow in code_timespec (tiny change) + + * src/misc.c (code_timespec): ignore invalid values of ns + +2010-03-08 Sergey Poznyakoff + + Minor fix in the testsuite. + + * tests/extrac05.at: Skip test if creating + sparse file fails. + +2010-03-08 Sergey Poznyakoff + + Fix eventual memory override and fd exhaustion in create.c Both + bugs reported by Kamil Dudka. + + * src/create.c (check_exclusion_tags): Do not keep + pointer to a location within tagname: it may change + after xrealloc. Use byte offset instead. + (dump_file0): Close fd before returning without + dumping the directory. + +2010-03-02 Sergey Poznyakoff + + Minor change. + + * doc/tar.texi: Improve some wording. + +2010-03-02 Antonio Diaz Diaz + + Add Lzip support + + * configure.ac: Add TAR_COMPR_PROGRAM(lzip) + * doc/tar.texi: Reflect lzip support. + * src/buffer.c (compress_type) : New constant. + (magic): Add magic for lzip. + * src/suffix.c (compression_suffixes): Add lz. + * src/tar.c: New option --lzip. + +2010-03-02 Sergey Poznyakoff + + Minor fix. + + * tests/exclude05.at: Rewrite awk invocation to avoid + overflowing awk's file table on Solaris. + +2010-03-02 Eric Blake + + Fix large file support. + + * scripts/xsparse.c (read_map): Use fseeko. + * src/incremen.c (write_directory_file): Likewise. + +2010-03-02 Sergey Poznyakoff + + Bugfix + + * src/buffer.c (seek_archive): Rewrite size computation + to prevent it from reaching negative values. Based on + report by Denis Excoffier . + +2010-02-25 Sergey Poznyakoff + + Supply more information to the --to-command script. + + * src/system.c (stat_to_env): Pass information about the current + volume in variables TAR_ARCHIVE, TAR_VOLUME, TAR_BLOCKING_FACTOR, + TAR_FORMAT. + * doc/tar.texi: Document new environment variables. + * NEWS: Likewise. + * configure.ac: Version number 1.22.91. + +2010-02-17 Sergey Poznyakoff + + Minor change. + + * src/names.c (regex_usage_warning): Fix warning message. + +2010-02-05 Sergey Poznyakoff + + Update THANKS + +2010-02-05 Ondřej Vašík + + Bugfix (tiny change) + + * src/xheader.c (xheader_read): Remove unnecessary call + to xheader_init. + +2010-01-26 Sergey Poznyakoff + + Enable silent build mode. + + * configure.ac: Require automake 1.11, autoconf 2.63. Enable + silent rules. + * NEWS: Update. + * lib/Makefile.am (rmt-command.h): Silent the rule. + +2010-01-25 Sergey Poznyakoff + + Read POSIX multivolume archives split at the header boundary. + + * src/common.h (read_header_mode): New enum. + (read_header): Change type of the 3rd argument. + * src/list.c (read_header): Change type of the 3rd argument. + All callers updated. + * src/buffer.c (try_new_volume): Allow for volumes split at the + extended/ustar header boundary. This is against POSIX specs, but + we must be able to read such archives anyway. + + * tests/multiv07.at: New test case. + * tests/Makefile.am: Add multiv07.at + * tests/testsuite.at: Likewise. + + * src/compare.c: Update calls to read_header. + * src/delete.c: Likewise. + * src/update.c: Likewise. + +2010-01-24 Sergey Poznyakoff + + Minor change. + + * NEWS: Update. + * doc/tar.texi: Update. + * src/create.c (finish_header): Minor change. + +2010-01-24 Rob Vermaas + + Bugfix (tiny change). + + * src/tar.c (format_default_settings)[REMOTE_SHELL]: Fix + misplaced comma. + +2010-01-24 Sergey Poznyakoff + + Minor fix. + + * src/incremen.c (read_incr_db_01) + (read_directory_file): Initialize bufsize to 0. + Suggested by noordsij@cs.helsinki.fi. + +2010-01-24 Sergey Poznyakoff + + Improve handling of --test-label. + + * src/list.c (print_volume_label): New function. + (print_header): Call print_volume_label. + (test_archive_label): New function. + * src/buffer.c (VOLUME_LABEL_APPEND): Remove. + (VOLUME_TEXT, VOLUME_TEXT_LEN): New macros + (drop_volume_label_suffix): New function. + (check_label_pattern): Use drop_volume_label_suffix. + * src/common.h (subcommand): New constant TEST_LABEL_SUBCOMMAND. + (test_label_option): Remove. + (drop_volume_label_suffix): New proto. + (test_archive_label): New proto. + * src/names.c (all_names_found): Remove test for + test_label_option. + * src/tar.c (subcommand_string): Handle TEST_LABEL_SUBCOMMAND. + (set_subcommand_option): Improve diagnostics. + (parse_opt): Set subcommand if --test-label is given. + (main): Handle TEST_LABEL_SUBCOMMAND. + +2010-01-24 Sergey Poznyakoff + + Fix listing of volume labels (in particular in PAX archives). + + * src/buffer.c (match_volume_label): Call set_volume_label. + (check_label_pattern): Get label string + as argument. + (match_volume_label): Handle volume labels stored in + global PAX headers. + * src/common.c (print_header,read_header): Change signature. + (read_header_primitive): Remove prototype. + * src/list.c (recent_global_header): New static. + (list_archive): Always print volume labels. + (read_header_primitive): Remove. + (read_header): Change the signature (all callers updated) + Save the recent global header. + (volume_label_printed): New static. + (simple_print_header): New function (ex-print_header). + (print_header): Change the signature (all callers updated). + For POSIX formats, print first volume header (if set). + * src/xheader.c (xheader_write_global): Write the data + accumulated in xhdr->stk even if keyword_global_override_list + is empty. + (xheader_read): On unexpected EOF, report error instead of + coredumping. + (XHDR_PROTECTED, XHDR_GLOBAL): New defines. + (struct xhdr_tab): Remove `protected' with `flags'. All uses + updated. + (decg): If XHDR_GLOBAL bit is set, call the keyword's decode + method instead of adding it to `kwl'. + + * src/compare.c: Update calls to read_header. + * src/create.c: Likewise. + * src/delete.c: Likewise. + * src/update.c: Likewise. + * src/extract.c: Likewise. + (extract_volhdr): Do not print "Reading