]> Dogcows Code - chaz/tar/log
chaz/tar
10 years agoUpdate copyright years.
Sergey Poznyakoff [Thu, 30 Jan 2014 11:54:15 +0000 (13:54 +0200)] 
Update copyright years.

10 years agoImprove one-top-level functionality
Sergey Poznyakoff [Tue, 28 Jan 2014 09:04:20 +0000 (11:04 +0200)] 
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.

10 years agoDetect tarbombs while extracting
Connor Behan [Mon, 27 Jan 2014 12:42:09 +0000 (14:42 +0200)] 
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.

10 years agoDon't install rmt.8 if rmt is not built.
Sergey Poznyakoff [Mon, 27 Jan 2014 12:32:46 +0000 (14:32 +0200)] 
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

10 years agoProvide tar(1) and rmt(8) manpages.
Sergey Poznyakoff [Mon, 27 Jan 2014 11:20:11 +0000 (13:20 +0200)] 
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.

10 years agoMake sure transformed file names retain trailing slash in listing.
Sergey Poznyakoff [Thu, 23 Jan 2014 16:04:36 +0000 (18:04 +0200)] 
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

10 years agocheckpoint actions: further improvements.
Sergey Poznyakoff [Wed, 22 Jan 2014 15:19:55 +0000 (17:19 +0200)] 
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

10 years agoImprove checkpoint interface.
Sergey Poznyakoff [Wed, 22 Jan 2014 05:28:02 +0000 (07:28 +0200)] 
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.`

10 years agoImplement statistics display in checkpoint actions.
Sergey Poznyakoff [Tue, 21 Jan 2014 11:05:16 +0000 (13:05 +0200)] 
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) <cop_totals>: 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.

10 years agoRemove shar archives from distribution.
Sergey Poznyakoff [Fri, 10 Jan 2014 09:37:50 +0000 (11:37 +0200)] 
Remove shar archives from distribution.

These are going to phase out in automake 2.0

10 years agoFix the use of --no-recursion and --recursion options.
Sergey Poznyakoff [Thu, 9 Jan 2014 22:13:15 +0000 (00:13 +0200)] 
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.

10 years agoMinor bugfixes
Sergey Poznyakoff [Thu, 9 Jan 2014 15:22:08 +0000 (17:22 +0200)] 
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.

10 years agotar: work aruond IBM XL C bug
Paul Eggert [Tue, 7 Jan 2014 19:15:56 +0000 (11:15 -0800)] 
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
<http://lists.gnu.org/archive/html/bug-tar/2014-01/msg00009.html>.

10 years agotar: update ancient configure cruft
Paul Eggert [Fri, 3 Jan 2014 19:48:40 +0000 (11:48 -0800)] 
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.

10 years agoVersion 1.27.1
Sergey Poznyakoff [Sun, 17 Nov 2013 16:37:50 +0000 (18:37 +0200)] 
Version 1.27.1

10 years agoFix star compatibility (sparse headers)
Sergey Poznyakoff [Sun, 17 Nov 2013 15:35:01 +0000 (17:35 +0200)] 
Fix star compatibility (sparse headers)

* src/sparse.c (star_get_sparse_info): Update file->dumped_size

10 years agoFix GNU long link header.
Sergey Poznyakoff [Sun, 17 Nov 2013 15:29:53 +0000 (17:29 +0200)] 
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.

10 years agoFix unquoting of input file names.
Sergey Poznyakoff [Sun, 17 Nov 2013 15:26:15 +0000 (17:26 +0200)] 
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.

10 years agobuild: fix bug where 'configure --with-posix-acls' disables ACLs
Paul Eggert [Thu, 24 Oct 2013 01:38:34 +0000 (18:38 -0700)] 
build: fix bug where 'configure --with-posix-acls' disables ACLs

Reported by Lars Wendler in
<http://lists.gnu.org/archive/html/bug-tar/2013-10/msg00022.html>.
* configure.ac (with_posix_acls): Fix typo.

10 years agoFix core dump on Solaris 10 when "." isn't readable.
Paul Eggert [Wed, 23 Oct 2013 02:16:26 +0000 (19:16 -0700)] 
Fix core dump on Solaris 10 when "." isn't readable.

Reported by Peter Kruse in
<http://lists.gnu.org/archive/html/bug-tar/2013-10/msg00017.html>.
This doesn't fix all the Solaris 10 test failures, just the core dump.
* src/common.h, src/misc.c (tar_getcdpath): Now static.
* src/misc.c (normalize_filename): Report a fatal error
if cdpath is null, since we don't know the absolute name
of the working directory in that case.  FIXME: there should
be no need to know absolute file names.
(chdir_arg): Simplify wd allocation.
Don't assume that xgetcwd returns non-null.

10 years agoVersion 1.27
Sergey Poznyakoff [Sat, 5 Oct 2013 21:02:17 +0000 (00:02 +0300)] 
Version 1.27

* NEWS: Update.
* configure.ac: Update.

10 years agoMinor fixes.
Sergey Poznyakoff [Sat, 5 Oct 2013 20:27:20 +0000 (23:27 +0300)] 
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.

10 years agoXfail the remfiles09b test.
Sergey Poznyakoff [Sat, 5 Oct 2013 06:29:55 +0000 (09:29 +0300)] 
Xfail the remfiles09b test.

* tests/remfiles09b.at: Turn into expected failure.

10 years agoTiny change
Nathan Stratton Treadway [Sat, 5 Oct 2013 06:28:52 +0000 (09:28 +0300)] 
Tiny change

* scripts/tar-snapshot-edit: Mention --show-snapshot-field-ranges option

10 years agoTiny change
Pavel Raiskup [Sat, 5 Oct 2013 06:26:52 +0000 (09:26 +0300)] 
Tiny change

* configure.ac (RSH): Define as AC_ARG_VAR.

10 years agoFix namespace contamination in testsuite.
Sergey Poznyakoff [Sat, 5 Oct 2013 06:10:35 +0000 (09:10 +0300)] 
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.

10 years agoProvide comprehensive testcases for various file removal modes.
Nathan Stratton Treadway [Sat, 5 Oct 2013 05:53:08 +0000 (08:53 +0300)] 
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.

10 years agoTiny changes.
Sergey Poznyakoff [Thu, 3 Oct 2013 19:41:04 +0000 (22:41 +0300)] 
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).

10 years agoRevamp tar_getcwd/normalize_filename stuff.
Sergey Poznyakoff [Tue, 1 Oct 2013 18:48:30 +0000 (21:48 +0300)] 
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.

10 years agoBugfix
Sergey Poznyakoff [Thu, 26 Sep 2013 21:59:18 +0000 (00:59 +0300)] 
Bugfix

* tests/remfiles08.at: Restore missing find

10 years agoUse relative addressing in deferred unlinks.
Sergey Poznyakoff [Thu, 26 Sep 2013 12:41:47 +0000 (15:41 +0300)] 
Use relative addressing in deferred unlinks.

* src/common.h (tar_dirname): New function.
* src/misc.c (normalize_filename_x): Make extern.
(tar_dirname): New function.
(tar_getcwd): Take into account absoulte pathnames.
* src/unlink.c (deferred_unlink) <dir_idx>: New member; keeps the
value of chdir_current at the moment of structure allocation.
(flush_deferred_unlinks): Use chdir_do and relative addressing.
(queue_deferred_unlink): Initialize dir_idx.
* tests/Makefile.am: Add new tests.
* tests/testsuite.at: Add new tests.
* tests/remfiles06.at: Fix description.
* tests/remfiles07.at: Fix description.
* tests/remfiles08.at: New test case.

10 years agoImprove tar-snapshot-edit
Nathan Stratton Treadway [Wed, 25 Sep 2013 15:02:05 +0000 (18:02 +0300)] 
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)

10 years agoImprove tar_getcwd
Sergey Poznyakoff [Wed, 25 Sep 2013 12:58:43 +0000 (15:58 +0300)] 
Improve tar_getcwd

* src/common.h (tar_getcwd): Return pointer is const.
* src/misc.c (wd) <cwd>: New member.
(chdir_arg): Initialize cwd.
(tar_getcwd): Use cwd member to cache the result.  Take into
account absolute pathnames,
(normalize_filename): Don't free the value
returned from tar_getcwd.
* src/names.c (name_next_elt): Remove leftover call chdir().
* tests/Makefile.am: Add new tests.
* tests/testsuite.at: Likewise.

* tests/incr08.at: New testcase.
* tests/remfiles04.at: New testcase.
* tests/remfiles05.at: New testcase.
* tests/remfiles06.at: New testcase.
* tests/remfiles07.at: New testcase.

10 years agoFix normalize_filename.
Sergey Poznyakoff [Tue, 24 Sep 2013 11:01:13 +0000 (14:01 +0300)] 
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.

10 years agoChanges for compatibility with Slackware installation scripts.
Sergey Poznyakoff [Mon, 23 Sep 2013 16:35:29 +0000 (19:35 +0300)] 
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.

10 years agoFix error message (complements 0ea6e686)
Sergey Poznyakoff [Sat, 21 Sep 2013 12:07:01 +0000 (15:07 +0300)] 
Fix error message (complements 0ea6e686)

* src/tar.c (set_subcommand_option): Mention --delete in the error message.

10 years agoImprove the incr07 test
Sergey Poznyakoff [Sun, 15 Sep 2013 17:38:57 +0000 (20:38 +0300)] 
Improve the incr07 test

10 years agoImplement the --show-snapshot-field-ranges option
Nathan Stratton Treadway [Sun, 15 Sep 2013 13:02:30 +0000 (16:02 +0300)] 
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.

10 years agoTake into account chdir_fd when extracting from incremental dumps.
Sergey Poznyakoff [Sun, 15 Sep 2013 07:13:45 +0000 (10:13 +0300)] 
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.

10 years agoMinor fix
Sergey Poznyakoff [Sun, 15 Sep 2013 05:56:31 +0000 (08:56 +0300)] 
Minor fix

* src/tar.c (main): Mention --delete in the error message.
* THANKS: Update

10 years ago* src/names.c (file_list_name): Properly prototype.
Paul Eggert [Fri, 13 Sep 2013 18:09:29 +0000 (11:09 -0700)] 
* src/names.c (file_list_name): Properly prototype.

10 years agotar: don't warn about zero timestamps
Paul Eggert [Fri, 13 Sep 2013 18:08:34 +0000 (11:08 -0700)] 
tar: don't warn about zero timestamps

* src/extract.c (check_time): Suppress warniing when t.tv_sec == 0.
Problem reported by Denis Excoffier.

10 years agoMinor fix in the testsuite.
Pavel Raiskup [Mon, 19 Aug 2013 11:26:18 +0000 (14:26 +0300)] 
Minor fix in the testsuite.

* tests/T-cd.at: sort the 'tar cf' output.

10 years agoImprove error diagnostics
Sergey Poznyakoff [Sat, 17 Aug 2013 10:48:24 +0000 (13:48 +0300)] 
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.

10 years agoRevamp initial name collection functions to ensure proper argument ordering.
Sergey Poznyakoff [Fri, 16 Aug 2013 19:54:40 +0000 (22:54 +0300)] 
Revamp initial name collection functions to ensure proper argument ordering.

* src/names.c (NELT_NOOP): New constant
(name_elt) <next,prev>: New members.
(name_array,allocated_entries,entries,scanned): Remove.
(check_name_alloc): Remove function.
(name_elt_alloc): New static.
(name_list_adjust,name_list_advance): New functions.
(name_add_name,name_add_dir)
(name_add_file): Use new allocation functions.
(read_next_name): Advance list head pointer as necessary
before returning.
(name_next_elt): Read elements from list.
* tests/T-cd.at: New file.
* tests/T-mult.at: New file.
* tests/T-nest.at: New file.
* tests/Makefile.am: Add new testcases.
* tests/testsuite.at: Likewise.

10 years agoDon't treat attempts to read an already read file list as fatal errors.
Sergey Poznyakoff [Fri, 16 Aug 2013 12:17:22 +0000 (15:17 +0300)] 
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.

10 years agoMinor change.
Sergey Poznyakoff [Fri, 16 Aug 2013 11:29:51 +0000 (14:29 +0300)] 
Minor change.

* src/names.c (name_next_elt): Simplify conditional.

10 years agoFix use of uninitialized memory
Pavel Raiskup [Thu, 15 Aug 2013 10:56:04 +0000 (13:56 +0300)] 
Fix use of uninitialized memory

* src/names.c (name_add_file): Initialize the ep->v.file.fp pointer
after structure allocation.

10 years agoMinor changes
Sergey Poznyakoff [Mon, 5 Aug 2013 12:14:08 +0000 (15:14 +0300)] 
Minor changes

* src/names.c (handle_option): Use program_invocation_short_name
instead of the constant string.
(read_next_name): Remove unused variable.

10 years agoUpdate the docs.
Sergey Poznyakoff [Sun, 4 Aug 2013 16:39:42 +0000 (19:39 +0300)] 
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.

10 years agoFix interacton of --verbose and --append.
Sergey Poznyakoff [Sun, 4 Aug 2013 16:00:46 +0000 (19:00 +0300)] 
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.

10 years agoBugfix.
Sergey Poznyakoff [Sun, 4 Aug 2013 15:45:15 +0000 (18:45 +0300)] 
Bugfix.

* src/names.c (read_name_from_file): Fix a typo. Remove
unused variable.

10 years agoReduce memory consuption when handling the -T option.
Sergey Poznyakoff [Sun, 4 Aug 2013 11:26:35 +0000 (14:26 +0300)] 
Reduce memory consuption when handling the -T option.

The commit cdb27293 made the -T option more flexible, but
incurred a very considerable memory overhead by storing
all file names in the argument array.  In case of very
big file lists this caused tar to run out of memory.  This
was reported by Christian Wetzel <wetzel@phoenix-pacs.de>
on March 14, 2013
(http://lists.gnu.org/archive/html/bug-tar/2013-03/msg00018.html).

On the other hand, Michal Å½eidl discovered that tar misfunctioned
when given empty file lists or lists with the trailing newline
misssing in the last entry.  This was reported by Pavel Raiskup
on July 23
(http://lists.gnu.org/archive/html/bug-tar/2013-07/msg00009.html and
msg00010.html).

This change fixes both issues.

* src/common.h (name_add_file,request_stdin): New prototype.
(more_options): New prototype.
* src/names.c (NELT_FILE): New entry type.
(name_elt) <file>: New union member.
(name_add_file): New function.
(read_name_from_file): New function, a rewrite of
the same function from tar.c
(read_next_name,copy_name): New static functions.
(name_next_elt): Handle NELT_FILE entries.
* src/tar.c (request_stdin): Make extern.
(read_name_from_file,add_file_id)
(update_argv): Removed.
(parse_opt): Change handling of the -T option.
(more_options): New function.

* tests/T-null.at: Rewrite test.
* tests/T-zfile.at: New file.
* tests/T-nonl.at: New file.
* tests/Makefile.am: Add new testcases.
* tests/testsuite.at: Likewise.

* THANKS: Update.

10 years agoFix the compatibility check for the --occurrence option.
Sergey Poznyakoff [Sat, 29 Jun 2013 12:05:21 +0000 (15:05 +0300)] 
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.

10 years agotestsuite: do not resist on file order in archive
Pavel Raiskup [Wed, 26 Jun 2013 15:35:41 +0000 (17:35 +0200)] 
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.

10 years agoImprove checks for incompatible options.
Sergey Poznyakoff [Sat, 29 Jun 2013 07:31:37 +0000 (10:31 +0300)] 
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.

10 years agotar: port to Mingw Shell
Paul Eggert [Fri, 28 Jun 2013 05:33:04 +0000 (22:33 -0700)] 
tar: port to Mingw Shell

* src/extract.c (extract_symlink) [!HAVE_SYMLINK]:
Fix typo by replacing WARN_SYMBOLIC_CAST with WARN_SYMLINK_CAST.
Problem reported by kaka in
<http://lists.gnu.org/archive/html/bug-tar/2013-06/msg00008.html>.

10 years agomaint: revert previous change
Paul Eggert [Mon, 6 May 2013 13:22:59 +0000 (06:22 -0700)] 
maint: revert previous change

It wasn't actually needed.  Reported by Stefano Lattarini in
<http://lists.gnu.org/archive/html/bug-tar/2013-04/msg00041.html>.
* configure.ac (AM_GNU_GETTEXT_VERSION): Decrease from 0.18.2 back to 0.16.

11 years agomaint: port to bleeding-edge Automake by assuming Gettext 0.18.2
Paul Eggert [Thu, 25 Apr 2013 04:22:11 +0000 (21:22 -0700)] 
maint: port to bleeding-edge Automake by assuming Gettext 0.18.2

Reported by Stefano Lattarini in
<http://lists.gnu.org/archive/html/bug-tar/2013-04/msg00009.html>.
* configure.ac (AM_GNU_GETTEXT_VERSION): Increase from 0.16 to 0.18.2.
README-alpha says that we do not make any efforts to accommodate
older versions of Gettext.

11 years agotar: port to --without-xattrs --enable-gcc-warnings
Paul Eggert [Thu, 25 Apr 2013 04:06:38 +0000 (21:06 -0700)] 
tar: port to --without-xattrs --enable-gcc-warnings

Reported by Pavel Raiskup in
<http://lists.gnu.org/archive/html/bug-tar/2013-03/msg00029.html>.
* src/xattrs.c (xattrs__fd_set) [!HAVE_XATTRS]: Omit.

11 years agodoc: port to texinfo 5
Paul Eggert [Thu, 25 Apr 2013 01:43:40 +0000 (18:43 -0700)] 
doc: port to texinfo 5

* doc/tar.texi (Reports, assumptions, Mixing):
Put FIXMEs at line start.

11 years agoContinue extracting from a separate volume after skipping a partial member.
Sergey Poznyakoff [Tue, 12 Mar 2013 21:11:32 +0000 (23:11 +0200)] 
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.

11 years agoFix interaction of various --exclude-tag options with --listed-incremental.
Sergey Poznyakoff [Sun, 10 Mar 2013 09:29:04 +0000 (11:29 +0200)] 
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.

11 years agotar: remove lint
Paul Eggert [Wed, 20 Feb 2013 16:09:38 +0000 (08:09 -0800)] 
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.

11 years agoPass command line arguments to external commands.
Sergey Poznyakoff [Sun, 10 Feb 2013 12:40:23 +0000 (14:40 +0200)] 
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.

11 years agotar: improve compile-time diagnostics
Nathan Stratton Treadway [Tue, 29 Jan 2013 06:11:05 +0000 (22:11 -0800)] 
tar: improve compile-time diagnostics

* src/misc.c (sysinttostr, strtosysint): Improve #error wording.

11 years agotar: improve quality of diagnostics with incrementals
Paul Eggert [Sun, 27 Jan 2013 16:41:32 +0000 (08:41 -0800)] 
tar: improve quality of diagnostics with incrementals

Inspired by a prototype by Nathan Stratton Treadway in
<http://lists.gnu.org/archive/html/bug-tar/2013-01/msg00000.html>.
* src/incremen.c (read_num): Rewrite by merging read_negative_num
and read_unsigned_num.  Use strtosysint rather than rolling this
stuff ourselves.  Change return type to bool.  All uses changed.
(read_negative_num, read_unsigned_num): Remove.
(read_num, read_timespec, read_incr_db_2): Improve quality of
diagnostics, e.g., by supplying byte offset of error.

11 years agotar: fix bug with sparse files with effective size of 8 GiB or more
Paul Eggert [Sat, 26 Jan 2013 17:52:55 +0000 (09:52 -0800)] 
tar: fix bug with sparse files with effective size of 8 GiB or more

Reported by Pavel Raiskup in
<http://lists.gnu.org/archive/html/bug-tar/2013-01/msg00001.html>.
* NEWS: Document the fix.
* src/sparse.c (pax_start_header): New function.
(pax_dump_header_0, pax_dump_header_1): Use it.

11 years agomaint: update copyrights for 2013 and as per current GNU standards
Paul Eggert [Mon, 31 Dec 2012 21:14:19 +0000 (06:14 +0900)] 
maint: update copyrights for 2013 and as per current GNU standards

11 years agomaint: remove unnecessary file
Paul Eggert [Mon, 31 Dec 2012 20:19:50 +0000 (12:19 -0800)] 
maint: remove unnecessary file

* src/configure.in: Remove.  This file has been obsolete for a while.

11 years agomaint: don't enable warnings by default unless GCC 4.6 or later
Paul Eggert [Mon, 24 Dec 2012 01:10:38 +0000 (17:10 -0800)] 
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.

11 years agoHandle incremental format 2 with negative numbers, too.
Paul Eggert [Sun, 23 Dec 2012 06:27:38 +0000 (22:27 -0800)] 
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):

11 years agoFix some problems with negative and out-of-range integers.
Paul Eggert [Sun, 23 Dec 2012 04:41:23 +0000 (20:41 -0800)] 
Fix some problems with negative and out-of-range integers.

Original problem reported for HP-UX LVM v2.2 by Michael White in
<http://lists.gnu.org/archive/html/bug-tar/2012-10/msg00000.html>.
This patch fixes some other gotchas that I noticed.
* gnulib.modules: Add extern-inline.
* src/common.h: Use _GL_INLINE_HEADER_BEGIN, _GL_INLINE_HEADER_END.
(COMMON_INLINE, max, min): New macros.
(represent_uintmax, valid_timespec): New inline functions.
(SYSINT_BUFSIZE): New constant.
(sysinttostr, strtosysint, decode_timespec): New decls.
* src/create.c (start_private_header): Silently bring the time_t
value into range; it is now the caller's responsibility to deal
with any overflow error.  Use uid 0 and gid 0 rather than the
user's uid/gid, since the faked header isn't "owned" by the user
and the uid/gid could in theory be out of range.  Leave major and
minor zeroed.
(FILL): Remove.
(write_gnu_long_link): Let start_private_header zero things out.
* src/create.c (write_gnu_long_link, write_extended):
* src/xheader.c (xheader_write_global):
Use start_time, not current time; no point hammering on the clock.
* src/compare.c (diff_multivol): Check that offset, size are in range.
* src/incremen.c (read_incr_db_01, write_directory_file_entry):
Allow negative time_t, dev_t, and ino_t.
* src/list.c (max): Remove (moved to common.h).
(read_header): Check that size is in range.
(from_header): Return intmax_t, not uintmax_t, to allow negative.
All callers changed.  At compile time, check assumptions about
intmax_t and uintmax_t.  Use bool for booleans.  Avoid overflow
hassles on picky hosts.
(mode_from_header): Last arg is now bool *, not unsigned *.
All callers changed.
(simple_print_header): Do not assume UID, GID fit in 'long'.
* src/list.c (from_header):
* src/xheader.c (out_of_range_header):
Arg is now a plain minimum value, not minus minval converted to
uintmax_t.  All callers changed.
* src/misc.c (COMMON_INLINE): New macro.
(sysinttostr, strtosysint, decode_timespec): New functions.
* src/sparse.c (oldgnu_add_sparse, oldgnu_fixup_header)
(star_fixup_header):
Check for offset overflow.
(decode_num): Clear errno before calling strtoumax.
* src/tar.c (expand_pax_option): Don't discard nanoseconds.
* src/xheader.c (assign_time_option): Allow negative time_t.
(decode_record): Simplify, since out-of-range string is guaranteed
to produce a value exceeding len_max.
(xheader_read): Last arg is off_t, not size_t.
Caller should diagnose negative arg, as needed.
Check that it's in range.
(enum decode_time_status): Remove.
(_decode_time): Remove, folding into decode_time.
(decode_time): Return bool, not enum decode_time_status.
Rely on decode_timespec to do most of the work.
(code_signed_num): New function.
(code_num): Use it.
(decode_signed_num): New function.
(decode_num): Use it.
(gid_coder, gid_decoder, uid_coder, uid_decoder, sparse_map_decoder)
(sparse_map_decoder): Code and decode negative values.
(sparse_map_decoder): Improve check for out-of-range values.
* tests/time01.at: New file.
* tests/Makefile.am (TESTSUITE_AT): Add it.
* tests/testsuite.at: Include it.

11 years agoPort use of mkdirat etc. to Solaris 10.
Paul Eggert [Sat, 22 Dec 2012 21:24:51 +0000 (13:24 -0800)] 
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.

11 years agoPort ACL configuration to Solaris 10.
Paul Eggert [Sat, 22 Dec 2012 20:58:32 +0000 (12:58 -0800)] 
Port ACL configuration to Solaris 10.

* configure.ac (with_posix_acls): Fix misspellings.
Stop checking at the first failure, to speed up 'configure'.

11 years agotar: remove unused externs, or make them static
Paul Eggert [Wed, 19 Dec 2012 20:33:43 +0000 (12:33 -0800)] 
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.

11 years ago* .gitignore: Regenerate.
Paul Eggert [Wed, 19 Dec 2012 20:26:55 +0000 (12:26 -0800)] 
* .gitignore: Regenerate.

11 years agobuild: new configure option --enable-gcc-warnings
Paul Eggert [Wed, 19 Dec 2012 04:36:22 +0000 (20:36 -0800)] 
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.

11 years agotar: don't truncate diagnostic
Paul Eggert [Thu, 13 Dec 2012 22:16:04 +0000 (14:16 -0800)] 
tar: don't truncate diagnostic

* src/list.c (from_header): Fix buffer size calculation when
generating a diagnostic.

11 years agoBugfix.
Sergey Poznyakoff [Mon, 3 Dec 2012 21:54:19 +0000 (23:54 +0200)] 
Bugfix.

* tests/Makefile.am: Fix double AM_CPPFLAGS

11 years agoUse AM_CPPFLAGS instead of INCLUDES.
Sergey Poznyakoff [Sat, 1 Dec 2012 17:07:47 +0000 (19:07 +0200)] 
Use AM_CPPFLAGS instead of INCLUDES.

11 years agoHousekeeping.
Sergey Poznyakoff [Mon, 19 Nov 2012 21:49:41 +0000 (23:49 +0200)] 
Housekeeping.

* NEWS: Mention the support for POSIX ACLs, extended
attributes and SELinux context.
* THANKS: List James Antill and Pavel Raiskup.

11 years agoFix indentation.
Sergey Poznyakoff [Mon, 19 Nov 2012 21:29:55 +0000 (23:29 +0200)] 
Fix indentation.

11 years agoAllow to store/extract '=' character in xattr keyword
Pavel Raiskup [Mon, 19 Nov 2012 21:25:49 +0000 (23:25 +0200)] 
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.

11 years agoBugfixes.
Pavel Raiskup [Mon, 19 Nov 2012 21:06:21 +0000 (23:06 +0200)] 
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.

11 years agoFix bootstrapping.
Pavel Raiskup [Mon, 19 Nov 2012 20:54:17 +0000 (22:54 +0200)] 
Fix bootstrapping.

* bootstrap (gnulib_extra_files): Remove $build_aux/missing

11 years agoVarious fixes.
Sergey Poznyakoff [Sun, 18 Nov 2012 22:14:31 +0000 (00:14 +0200)] 
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.

11 years agoMinor change.
Sergey Poznyakoff [Sun, 18 Nov 2012 21:05:00 +0000 (23:05 +0200)] 
Minor change.

* src/xattrs.c: Fix indentation. Fix copyleft statement, promote to GPLv3+.
* src/xattrs.h: Likewise

11 years agoAdd SELinux context store/restore/list support.
Pavel Raiskup [Sun, 18 Nov 2012 20:28:01 +0000 (22:28 +0200)] 
Add SELinux context store/restore/list support.

* gnulib.modules: Add selinux-at.
* src/Makefile.am (tar_LDADD): Add LIB_SELINUX.

* src/create.c (start_header, dump_file0): Handle selinux contexts.
* src/extract.c (delayed_set_stat) <cntx_name>: New member.
(delayed_link) <cntx_name>: New member.
(set_stat, delay_set_stat)
(apply_nonancestor_delayed_set_stat): Handle selinux contexts.
* src/tar.c: New options: "--selinux", "--no-selinux".
(tar_stat_destroy): Free cntx_name.
* src/tar.h (tar_stat_info) <cntx_name>: New member.
* src/xattrs.c (xattrs_selinux_get)
(xattrs_selinux_set): New functions.
(xattrs_print_char): Honor selinux_context_option.
(xattrs_print): Print selinux context.
* src/xheader.c: Handle new keyword "RHT.security.selinux".
* tests/Makefile.am: Add new tests.
* tests/testsuite.at: Likewise.
* tests/selacl01.at: New test.
* tests/selnx01.at: New test.

11 years agoSupport for POSIX ACLs
Pavel Raiskup [Sun, 18 Nov 2012 18:54:02 +0000 (20:54 +0200)] 
Support for POSIX ACLs

* configure.ac: Check whether ACLs are available on the
host system.
* gnulib.modules: Add acl
* src/create.c (start_header): Store ACLs when creating
a POSIX archive.
(dump_file0): Handle ACLs.
* src/extract.c (delayed_set_stat) <acls_a_ptr, acls_a_len>
<acls_d_ptr, acls_d_len>: New members.
(delayed_link): Likewise.
(set_stat,delay_set_stat)
(apply_nonancestor_delayed_set_stat): Set ACLs.
* src/tar.c: New options: "--acls", "--no-acls"
(tar_stat_destroy): Free acls_a_ptr and acls_d_ptr fields.
* src/tar.h (tar_stat_info) <acls_a_ptr, acls_a_len>
<acls_d_ptr, acls_d_len>: New members.
* src/xattrs.c (xattrs_acls_get, xattrs_acls_set): New functions.
* src/xheader.c: Support new keywors: "SCHILY.acl.access" and
"SCHILY.acl.default".
* tests/Makefile.am: Add new tests.
* tests/testsuite.at: Likewise.
* tests/acls01.at: New test.
* tests/acls02.at: New test.

11 years agoAdd basic suuport for extended attributes.
Pavel Raiskup [Sun, 18 Nov 2012 17:59:18 +0000 (19:59 +0200)] 
Add basic suuport for extended attributes.

* src/Makefile.am: Add xattrs.[ch]
* src/xattrs.c: New file.
* src/xattrs.h: New file.
* src/common.h (READ_LIKE_SUBCOMMAND): New define.
(selinux_context_option, acls_option, xattrs_option): New globals.
(xheader_xattr_init, xheader_xattr_free)
(xheader_xattr_copy, xheader_xattr_add): New protos.
(WARN_XATTR_WRITE): New mask.
* src/create.c (start_header): Handle xattrs pairs if in POSIX format.
(dump_file0): Handle extended attributes.
* src/extract.c (delayed_set_stat,delayed_link) <xattr_map_size>
<xattr_map>: New members.
(set_xattr): New static function.
(open_output_file): Accept an additional argument indicating
whether the file has already been created.
(set_stat,delay_set_stat)
(apply_nonancestor_delayed_set_stat)
(extract_file): Handle extended attributes.
* src/list.c (decode_header, simple_print_header): Display
extended attributes.
* src/tar.c: New options --xattrs, --no-xattrs, --xattrs-include,
--xattrs-exclude
(tar_stat_destroy): Free the xattr_map storage.
* src/tar.h (xattr_array): New struct.
(tar_stat_info) <xattr_map_size, xattr_map>: New members.
* src/warning.c: New warning control keyword "xattr-write".
* src/xheader.c (xheader_xattr_init)
(xheader_xattr_free, xheader_xattr_add)
(xheader_xattr_copy): New functions.
(struct xhdr_tab) <prefix>: New member.
(locate_handler): Permit selecting the keyword based on its
prefix.
(xheader_protected_pattern_p)
(xheader_protected_keyword_p): Likewise.
(xattr_coder, xattr_decoder): New functions.
(xhdr_tab): Reflect the changes to struct xhdr_tab.
New keyword "SCHILY.xattr".
* tests/Makefile.am: Add new tests.
* tests/testsuite.at: Likewise.
(AT_CHECK_UTIL, AT_XATTRS_UTILS_PREREQ)
(AT_CAPABILITIES_UTILS_PREREQ, AT_XATTRS_PREREQ): New defuns.
* tests/xattr01.at: New test.
* tests/xattr02.at: New test.
* tests/xattr03.at: New test.
* tests/xattr04.at: New test.
* tests/capabs_raw01.at: New test.

11 years agoPrepare for implementing extended attribute support.
Sergey Poznyakoff [Sun, 18 Nov 2012 17:20:46 +0000 (19:20 +0200)] 
Prepare for implementing extended attribute support.

This patch adds *xattr() stubs in case extended attribute support is
not present and implements the *attrat() family of functions.  Based
on the patch by Pavel Raiskup <pavel@raiskup.cz> for gnulib.

* acinclude.m4 (TAR_HEADERS_ATTR_XATTR_H): New defun.
* configure.ac: Call TAR_HEADERS_ATTR_XATTR_H
* lib/Makefile.am: Add xattr-at.[ch], distribute attr-xattr.in.h
[!TAR_COND_XATTR_H]: Build attr/xattr.h
* lib/attr-xattr.in.h: New file.
* lib/xattr-at.c: New file.
* lib/xattr-at.h: New file.

11 years agoFix creation of incremental archives when a subdirectory becomes a mountpoint.
Sergey Poznyakoff [Sat, 3 Nov 2012 11:31:48 +0000 (13:31 +0200)] 
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.

11 years agomaint: try to avoid unwanted chatter in ChangeLog
Jim Meyering [Fri, 27 Jul 2012 08:31:30 +0000 (01:31 -0700)] 
maint: try to avoid unwanted chatter in ChangeLog

* bootstrap.conf: Do not alter ChangeLog if it already exists.

11 years agodoc: improve discussion of compressed archives
Paul Eggert [Thu, 26 Jul 2012 15:49:39 +0000 (08:49 -0700)] 
doc: improve discussion of compressed archives

* doc/tar.texi (gzip): Don't claim that -I 'gzip --best' works.
Problem reported by Davide Brini in
<http://lists.gnu.org/archive/html/bug-tar/2012-07/msg00025.html>.
Also, improve some of the surrounding text.

This file is a placeholder. It will be replaced with the actual ChangeLog
by make dist.  Run make ChangeLog if you wish to create it earlier.

11 years agotests: fix permissions-assumption bug in test
Paul Eggert [Wed, 27 Jun 2012 16:56:03 +0000 (09:56 -0700)] 
tests: fix permissions-assumption bug in test

* tests/owner.at: Don't assume umask is 022.
Reported by Pavel Raiskup in
<http://lists.gnu.org/archive/html/bug-tar/2012-06/msg00015.html>.

11 years agotar: don't assume root is uid 0
Paul Eggert [Wed, 27 Jun 2012 00:14:45 +0000 (17:14 -0700)] 
tar: don't assume root is uid 0

This is not true for Tandem NonStop Kernel.  See Joachim Schmitz's
comment in <http://bugs.gnu.org/10305#111>.
* gnulib.modules: Add root-uid.
* src/extract.c: Include <root-uid.h>.
(extr_init): Don't assume root is uid 0.

12 years ago* src/compare.c (diff_dumpdir): Omit useless 'stat'.
Paul Eggert [Wed, 25 Apr 2012 05:05:43 +0000 (22:05 -0700)] 
* src/compare.c (diff_dumpdir): Omit useless 'stat'.

12 years ago* doc/tar.texi (Option Summary): Fix xref typo.
Paul Eggert [Wed, 25 Apr 2012 04:39:36 +0000 (21:39 -0700)] 
* doc/tar.texi (Option Summary): Fix xref typo.

Reported by Nathan Stratton Treadway in
<http://lists.gnu.org/archive/html/bug-tar/2012-04/msg00035.html>.

This file is a placeholder. It will be replaced with the actual ChangeLog
by make dist.  Run make ChangeLog if you wish to create it earlier.

12 years agoFix unrecognized option.
Sergey Poznyakoff [Thu, 29 Mar 2012 05:57:29 +0000 (08:57 +0300)] 
Fix unrecognized option.

* src/tar.c (parse_opt): Handle OLD_ARCHIVE_OPTION.

This page took 0.063698 seconds and 4 git commands to generate.