]> Dogcows Code - chaz/tar/log
chaz/tar
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.

12 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.

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

12 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.

12 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.

12 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

12 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.

12 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

12 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.

12 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.

12 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.

12 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.

12 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.

12 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.

12 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.

12 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>.

12 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.

12 years agotar: remove lint
Paul Eggert [Sun, 11 Mar 2012 20:00:52 +0000 (13:00 -0700)] 
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.

12 years agodoc: suggest Bash for large-fd script
Paul Eggert [Tue, 14 Feb 2012 18:18:07 +0000 (10:18 -0800)] 
doc: suggest Bash for large-fd script

* doc/tar.texi (Multi-Volume Archives): Suggest Bash for shell
script that might use >&10.  Problem reported by Edward F Eaglehouse in
<http://lists.gnu.org/archive/html/bug-tar/2012-02/msg00002.html>.

12 years agotar: quote 'like this', not `like this'
Paul Eggert [Wed, 18 Jan 2012 08:14:40 +0000 (00:14 -0800)] 
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.

12 years agotar: port --overwrite symlink test to GNU/Hurd
Paul Eggert [Wed, 18 Jan 2012 06:21:52 +0000 (22:21 -0800)] 
tar: port --overwrite symlink test to GNU/Hurd

Problem reported by Pino Toscano in
<http://lists.gnu.org/archive/html/bug-tar/2012-01/msg00040.html>.
* gnulib.modules: Add fcntl-h, which defines
HAVE_WORKING_O_NOFOLLOW.
* src/extract.c (open_output_file): Use HAVE_WORKING_O_NOFOLLOW,
not O_NOFOLLOW, when testing whther O_NOFOLLOW works.

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

12 years agotar: fix core dump with --index-file=bad_path
Paul Eggert [Wed, 11 Jan 2012 19:37:10 +0000 (11:37 -0800)] 
tar: fix core dump with --index-file=bad_path

* src/tar.c (decode_options): Exit cleanly if index file won't open.
Problem reported by Khanh-Dang Nguyen Thu Lam in
<http://lists.gnu.org/archive/html/bug-tar/2012-01/msg00018.html>.

12 years agotar: don't assume O_NONBLOCK is benign on regular files
Paul Eggert [Fri, 6 Jan 2012 20:38:55 +0000 (12:38 -0800)] 
tar: don't assume O_NONBLOCK is benign on regular files

On Data Migration Facility (DMF), High Peformance Storage System (HPSS),
and presumably other file systems based on hierarchical storage, opening
a regular file with O_NONBLOCK can cause later reads to fail with
errno == EAGAIN.  We need the O_NONBLOCK to avoid some security races.
Work around the problem by using fcntl to clear the O_NONBLOCK
flag if I/O fails with that errno value.
Problem reported by Vitezslav Cizek in
<http://lists.gnu.org/archive/html/bug-tar/2012-01/msg00000.html>.
* src/common.h (blocking_read, blocking_write): New decls.
* src/misc.c (blocking_read, blocking_write): New functions.
* src/compare.c (process_rawdata):
* src/create.c (dump_regular_file):
* src/extract.c (extract_file):
* src/sparse.c (sparse_scan_file, sparse_extract_region):

12 years agoFix --keep-old-files option.
Sergey Poznyakoff [Sat, 26 Nov 2011 13:41:43 +0000 (15:41 +0200)] 
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.

13 years agoWarn about existing files in keep-old-files mode (complements 8f390db9).
Sergey Poznyakoff [Thu, 17 Nov 2011 20:19:05 +0000 (22:19 +0200)] 
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"

13 years agoFix the "Creating directory:" output
Sergey Poznyakoff [Thu, 17 Nov 2011 08:27:52 +0000 (10:27 +0200)] 
Fix the "Creating directory:" output

* src/list.c (print_for_mkdir): don't use unquoted name length for
computing its output width.

13 years agoFix operation of --verify in conjunction with --listed-incremental
Sergey Poznyakoff [Tue, 15 Nov 2011 10:58:32 +0000 (12:58 +0200)] 
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.

13 years ago* doc/tar.texi (Option Summary, absolute): Document -P better,
Paul Eggert [Tue, 18 Oct 2011 20:07:10 +0000 (13:07 -0700)] 
* doc/tar.texi (Option Summary, absolute): Document -P better,

by describing how it deals with symbolic links on extraction.

13 years ago2011-09-27 Paul Eggert <eggert@cs.ucla.edu>
Paul Eggert [Wed, 28 Sep 2011 04:21:48 +0000 (21:21 -0700)] 
2011-09-27 Paul Eggert <eggert@cs.ucla.edu>

* src/tar.c (stat_on_signal): Use SA_RESTART if available.

13 years ago* doc/tar.texi: Remove front- and back-cover texts.
Paul Eggert [Tue, 20 Sep 2011 17:29:05 +0000 (10:29 -0700)] 
* 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.

13 years agoMinor changes.
Sergey Poznyakoff [Mon, 19 Sep 2011 17:22:25 +0000 (20:22 +0300)] 
Minor changes.

* scripts/tar-snapshot-edit: License under GPLv3+.
Remove trailing whitespace.

13 years agoMinor changes.
Nathan Stratton Treadway [Mon, 19 Sep 2011 13:12:04 +0000 (16:12 +0300)] 
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.

13 years agoUpgrade tar-snapshot-edit script.
Nathan Stratton Treadway [Mon, 19 Sep 2011 12:29:00 +0000 (15:29 +0300)] 
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.

13 years agotar: --owner and --group names and numbers
Paul Eggert [Sat, 13 Aug 2011 17:19:07 +0000 (10:19 -0700)] 
tar: --owner and --group names and numbers

The --owner and --group options now accept operands of the form
NAME:NUM, so that you can specify both symbolic name and numeric
ID for owner and group.  Also, in these options, NAME no longer
needs to be present in the current host's user and group
databases; this implements Debian enhancement request 136231
<http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=136231> reported
by Mark W. Eichin, communicated by Thayne Harbaugh to bug-tar in
<http://lists.gnu.org/archive/html/bug-tar/2011-08/msg00001.html>.
* NEWS, doc/tar.texi (Option Summary, override): Document enhancement.
* src/common.h (group_name_option, owner_name_option): New decls.
* src/create.c (start_header): Don't assume owner and group names
are in current host database.
* src/tar.c (parse_owner_group): New function, for parsing NAME:NUM.
(parse_opt): Use it.
(decode_options): Initialize owner_name_option, group_name_option.
* tests/owner.at: New file, to test this enhancement.
* tests/Makefile.am (TESTSUITE_AT): Add it.
* tests/testsuite.at: Include it.

13 years ago.gitignore: update
Paul Eggert [Sat, 13 Aug 2011 16:58:04 +0000 (09:58 -0700)] 
.gitignore: update

* .gitignore: Add rmt.
* lib/.gitignore: New file.

13 years agoFix the --exclude-backups option.
Sergey Poznyakoff [Sat, 30 Jul 2011 15:26:38 +0000 (18:26 +0300)] 
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.

13 years agotar: simplify birthtime calculations
Paul Eggert [Tue, 7 Jun 2011 23:07:08 +0000 (16:07 -0700)] 
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.

13 years agotar: use birthtime rather than ctime when checking identity
Paul Eggert [Tue, 7 Jun 2011 22:16:55 +0000 (15:16 -0700)] 
tar: use birthtime rather than ctime when checking identity

Without this fix, tar would sometimes mishandle the extraction of
hard links to symbolic links.  Problem reported in
<http://lists.gnu.org/archive/html/bug-tar/2011-06/msg00000.html>
by Andreas Stolcke.
* src/extract.c (struct delayed_link): Change ctime member to birthtime.
(same_birthtime): New function.
(create_placeholder_file, extract_link, apply_delayed_links):
Use it to compare birthtimes (when available) instead of ctime.

13 years ago* doc/tar.texi (Old Options): Clarify distinction from short options.
Paul Eggert [Thu, 26 May 2011 19:09:52 +0000 (12:09 -0700)] 
* doc/tar.texi (Old Options): Clarify distinction from short options.

Adjust other parts of the manual to use examples that parse the
same regardless of whether "-" is in front of the option clump.  See
<http://lists.gnu.org/archive/html/bug-tar/2011-05/msg00022.html>.

13 years agoTestsuite fix.
Sergey Poznyakoff [Sat, 12 Mar 2011 20:22:21 +0000 (22:22 +0200)] 
Testsuite fix.

* tests/sparse04.at: Use the -f option.

13 years agoVersion 1.26
Sergey Poznyakoff [Sat, 12 Mar 2011 09:47:59 +0000 (11:47 +0200)] 
Version 1.26

* NEWS, configure.ac: Update.
* po/POTFILES.in: Remove paxexit.c (see bb971a1e).

13 years ago--atime-preserve=replace: fix correctness and performance bugs
Paul Eggert [Mon, 7 Mar 2011 23:40:32 +0000 (15:40 -0800)] 
--atime-preserve=replace: fix correctness and performance bugs

reported by Eric Blake in
<http://lists.gnu.org/archive/html/bug-tar/2011-03/msg00000.html>.
* src/compare.c (diff_file): Do not restore atime of size-zero files.
* src/create.c (dump_file0): Likewise.  Also, do not restore atime
when fd is zero, because that indicates a file we haven't opened.

13 years ago* doc/tar.texi: Adjust example commands and output for accuracy.
Paul Eggert [Wed, 23 Feb 2011 00:40:30 +0000 (16:40 -0800)] 
* doc/tar.texi: Adjust example commands and output for accuracy.

The original problem was reported by Michael Witten in
<http://lists.gnu.org/archive/html/bug-tar/2011-02/msg00033.html>.

13 years agotar: if (p) free (p); -> free (p);
Paul Eggert [Wed, 16 Feb 2011 21:47:00 +0000 (13:47 -0800)] 
tar: if (p) free (p); -> free (p);

There is no longer (since SunOS 4) any need to guard against
free (NULL), so replace each "if (p) free (p);" with "free (p);".
From Jim Meyering in
<http://lists.gnu.org/archive/html/bug-tar/2011-01/msg00026.html>.
* src/incremen.c (scan_directory, read_directory_file): As above.
(try_purge_directory): Likewise.
* src/list.c (read_header): Likewise.
* src/misc.c (assign_string): Likewise.

13 years agoCorrectly store long sparse file names in PAX archives.
Sergey Poznyakoff [Sat, 27 Nov 2010 12:35:08 +0000 (14:35 +0200)] 
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.

13 years agotests: make the truncate test smaller and less buggy (tiny change)
Paul Eggert [Mon, 6 Dec 2010 22:26:57 +0000 (14:26 -0800)] 
tests: make the truncate test smaller and less buggy (tiny change)

Reported by Solar Designer in
<http://lists.gnu.org/archive/html/bug-tar/2010-12/msg00003.html>.
* tests/truncate.at: Use a smaller test case, and make its
race condition less likely.

13 years agotests: skip SIGPIPE-dependent tests in environments ignoring SIGPIPE
Paul Eggert [Sat, 27 Nov 2010 03:35:20 +0000 (19:35 -0800)] 
tests: skip SIGPIPE-dependent tests in environments ignoring SIGPIPE

Problem reported by Sven Joachim in
<http://lists.gnu.org/archive/html/bug-tar/2010-11/msg00043.html>.
* tests/remfiles01.at: Use AT_SIGPIPE_PREREQ.
* tests/sigpipe.at: Likewise.
* tests/testsuite.at (AT_SIGPIPE_PREREQ): New macro.

14 years agotar: work around NetBSD and Tru64 symlink incompatibility with POSIX
Paul Eggert [Thu, 25 Nov 2010 07:07:46 +0000 (23:07 -0800)] 
tar: work around NetBSD and Tru64 symlink incompatibility with POSIX

Problem reported by Bruno Haible in
<http://lists.gnu.org/archive/html/bug-gnulib/2010-11/msg00306.html>.
* src/extract.c (maybe_recoverable):  Also treat EFTYPE (if defined)
and ENOTSUP like ELOOP.

14 years agotar: adjust to paxutils change: paxexit.c -> paxexit-status.c
Paul Eggert [Wed, 24 Nov 2010 05:41:11 +0000 (21:41 -0800)] 
tar: adjust to paxutils change: paxexit.c -> paxexit-status.c

* lib/Makefile.am (libtar_a_SOURCES): paxexit.c renamed to
paxexit-status.c.

14 years agotar: remove unused function dir_removed_diag
Paul Eggert [Wed, 24 Nov 2010 01:56:24 +0000 (17:56 -0800)] 
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.

14 years agotar: work around FreeBSD symlink incompatibility with POSIX
Paul Eggert [Tue, 23 Nov 2010 20:57:47 +0000 (12:57 -0800)] 
tar: work around FreeBSD symlink incompatibility with POSIX

* src/extract.c (maybe_recoverable): Treat EMLINK like ELOOP, for
FreeBSD.  Problem reported by Christian Weisgerber in
<http://lists.gnu.org/archive/html/bug-tar/2010-11/msg00080.html>.

14 years ago* src/names.c: tar: fix bug with --one-file-system --listed-incremental
Paul Eggert [Tue, 23 Nov 2010 06:50:58 +0000 (22:50 -0800)] 
* src/names.c: tar: fix bug with --one-file-system --listed-incremental

Problem (and idea for fix) reported by Martin Weigel
<http://lists.gnu.org/archive/html/bug-tar/2010-11/msg00071.html>.
* src/common.h (is_individual_file): Remove decl.
* src/create.c (dump_file0): Replace "is_individual_file (p)"
with "top_level".
* src/incremen.c (procdir): Replace "!is_individual_file
(name_buffer)" with "st->parent".  Fix bug with --one-file-system
and --listed-incremental.
* src/names.c (individual_file_table, register_individual_file):
(is_individual_file): Remove.  All uses removed.

14 years agotests: new test listed04 for --one-file-system --listed-incremental
Paul Eggert [Tue, 23 Nov 2010 01:58:55 +0000 (17:58 -0800)] 
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.

14 years agoscripts: fix option parsing
Paul Eggert [Mon, 22 Nov 2010 23:18:10 +0000 (15:18 -0800)] 
scripts: fix option parsing

Problem reported by Dennis Wydra in
<http://lists.gnu.org/archive/html/bug-tar/2010-11/msg00082.html>.
* scripts/backup.in: Accept "-l LEVEL".  Be more systematic about
backslashes inside ``; it shouldn't matter for modern shells but
it might matter for older ones.
* scripts/restore.in: Likewise.
* scripts/backup.in: Adjust implementation of -t/--time to match
the new implementation of -l/--level.

14 years agoIssue a warning if the archive being compared contais transformed file names.
Sergey Poznyakoff [Mon, 15 Nov 2010 09:22:27 +0000 (11:22 +0200)] 
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.

14 years agoMinor change.
Sergey Poznyakoff [Mon, 15 Nov 2010 09:21:45 +0000 (11:21 +0200)] 
Minor change.

* doc/tar.texi: Reword the description of decompress-program.

14 years agotar: fix --verify option, which broke in 1.24
Paul Eggert [Mon, 15 Nov 2010 08:07:53 +0000 (00:07 -0800)] 
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.

14 years agoMerge branch 'master' of ssh://git.sv.gnu.org/srv/git/tar
Paul Eggert [Mon, 8 Nov 2010 19:14:28 +0000 (11:14 -0800)] 
Merge branch 'master' of ssh://git.sv.gnu.org/srv/git/tar

14 years agotests: avoid spurious failure when VERSION_CONTROL envvar is set
Jim Meyering [Mon, 8 Nov 2010 18:59:42 +0000 (19:59 +0100)] 
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.

14 years agoVersion 1.25
Sergey Poznyakoff [Sun, 7 Nov 2010 14:04:05 +0000 (16:04 +0200)] 
Version 1.25

* configure.ac: Version 1.25
* NEWS: Describe the changes.

14 years agoRun alternative decompression programs if the principal one is not available.
Sergey Poznyakoff [Thu, 4 Nov 2010 14:09:25 +0000 (16:09 +0200)] 
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.

14 years agotests: fix some issues with signals, timestamps, "test" typo
Paul Eggert [Tue, 2 Nov 2010 08:04:33 +0000 (01:04 -0700)] 
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.

14 years agoFix extraction of device nodes.
Sergey Poznyakoff [Mon, 1 Nov 2010 13:04:41 +0000 (15:04 +0200)] 
Fix extraction of device nodes.

* src/extract.c (extract_node): Do not mask out node type.
The bug was introduced in commit ea964cce.

14 years agotar: don't cross struct member boundaries with OLDGNU_MAGIC
Paul Eggert [Thu, 28 Oct 2010 05:25:18 +0000 (22:25 -0700)] 
tar: don't cross struct member boundaries with OLDGNU_MAGIC

* src/create.c (write_gnu_long_link, start_header): Access
header->buffer + offsetof (struct posix_header, magic), instead of
header->header.magic, when reading or writing the OLDGNU_MAGIC
pattern.  The code violates the C standard without this change,
and GCC warns about this if fortify checking is enabled.  It's not
a bug on traditional (i.e., non-debugging) platforms, but it does
violate the C standard so it should be fixed.  Problem originally
reported by John Emil Karlson in
<http://lists.gnu.org/archive/html/bug-tar/2010-04/msg00023.html>.
* src/list.c (decode_header): Likewise.

14 years agotests: port to sh variants that squirrel away file descriptors
Paul Eggert [Thu, 28 Oct 2010 03:25:18 +0000 (20:25 -0700)] 
tests: port to sh variants that squirrel away file descriptors

OpenBSD /bin/sh, and some other sh variants, squirrel away file
descriptors before closing them.  For example, for "cat 3<&-" they
first dup file descriptor 3 to a fd that is 10 or greater, then
close 3 (because if "cat" had been a builtin command like ":" then
they would have wanted to avoid the fork and restore the fd after
":" finished); and they treat ordinary (forking) commands the same
as builtin commands.  This approach fails after "ulimit -n 10".
Work around this deficiency by closing the file descriptors before
invoking ulimit.  Problem reported by Christian Weisgerber in
<http://lists.gnu.org/archive/html/bug-tar/2010-10/msg00041.html>;
solution suggested by Jilles Tjoelker in
<http://article.gmane.org/gmane.comp.shells.dash/415>.

* tests/extrac11.at (scarce file descriptors): Close file
descriptors before invoking ulimit -n.

14 years agoTransform file names when updating and appendig to archives.
Sergey Poznyakoff [Wed, 27 Oct 2010 11:07:46 +0000 (14:07 +0300)] 
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

14 years agotests: port to Solaris diff
Paul Eggert [Wed, 27 Oct 2010 01:12:33 +0000 (18:12 -0700)] 
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".

14 years agotar: fix -x --overwrite bug (no --dereference, ! O_NOFOLLOW)
Paul Eggert [Wed, 27 Oct 2010 00:57:44 +0000 (17:57 -0700)] 
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.

14 years agotar: don't use "((" in shell scripts
Paul Eggert [Tue, 26 Oct 2010 22:04:15 +0000 (15:04 -0700)] 
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.

14 years agoMake sure name matching occurs before name transformation.
Sergey Poznyakoff [Tue, 26 Oct 2010 14:47:16 +0000 (17:47 +0300)] 
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.

14 years agotar: don't assume stdin is open when testing fd limits
Paul Eggert [Tue, 26 Oct 2010 18:33:23 +0000 (11:33 -0700)] 
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.

14 years agoFurther fixes in bootstrap.
Sergey Poznyakoff [Tue, 26 Oct 2010 13:48:40 +0000 (16:48 +0300)] 
Further fixes in bootstrap.

* bootstrap: Restore the default for gnulib_path
(symlink_to_dir): Re-apply 67cad07.

14 years agotar: fix bug with -C and extracting directories
Paul Eggert [Tue, 26 Oct 2010 03:20:19 +0000 (20:20 -0700)] 
tar: fix bug with -C and extracting directories

Problem reported by Denis Excoffier in
<http://lists.gnu.org/archive/html/bug-tar/2010-10/msg00034.html>.

* src/extract.c (extract_dir): Use mkdirat, not mkdir.
* tests/extrac16.at: New file, to test for this bug.
* tests/Makefile.am (TESTSUITE_AT): Add it.
* tests/testsuite.at: Include it.

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

14 years agoVersion 1.24
Sergey Poznyakoff [Sun, 24 Oct 2010 21:01:40 +0000 (00:01 +0300)] 
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.

14 years agotar: use more-accurate diagnostic when intermediate mkdir fails
Paul Eggert [Sat, 16 Oct 2010 05:26:14 +0000 (22:26 -0700)] 
tar: use more-accurate diagnostic when intermediate mkdir fails

Without this change, if tar tried to extract a file A/B/C, noticed
that A/B didn't exist, attempted to mkdir A/B, and the mkdir
failed, it did not diagnose the mkdir failure, but simply reported
the failure to open A/B/C.  This sometimes led to confusion
because it wasn't clear what tar was trying to do, in particular
that tar tried to mkdir A/B.  With this patch, tar issues two
diagnostics in this case: one for A/B and the other for A/B/C.
Problem reported by Hauke Laging in
<http://lists.gnu.org/archive/html/bug-tar/2010-10/msg00020.html>.
* gnulib.modules: Remove faccessat.
* src/extract.c (make_directories): New arg INTERDIR_MADE.
Diagnose mkdir failure.  Return 0 on success, nonzero on failure,
as opposed to nonzero iff some directory was created.  All callers
changed.  Simplify the code when mkdir fails, by checking whether
the desired file exists unless errno==EEXIST: this is more robust.
* tests/extrac15.at: New test, to check this.
* tests/Makefile.am (TESTSUITE_AT): Add it.
* tests/testsuite.at: Include it.

14 years agotests: port to NFS file servers with clock skew
Paul Eggert [Sat, 16 Oct 2010 04:52:40 +0000 (21:52 -0700)] 
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.

14 years agognulib: sync from latest gnulib, notably bootstrap and parse-datetime
Paul Eggert [Mon, 11 Oct 2010 23:21:41 +0000 (16:21 -0700)] 
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.

14 years agotar: -x -C symlink fix
Paul Eggert [Fri, 24 Sep 2010 20:13:25 +0000 (13:13 -0700)] 
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.

14 years agotar: --dereference consistency
Paul Eggert [Fri, 24 Sep 2010 02:41:05 +0000 (19:41 -0700)] 
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.

14 years agotar: do not crash with --listed-incremental
Paul Eggert [Mon, 20 Sep 2010 18:34:33 +0000 (11:34 -0700)] 
tar: do not crash with --listed-incremental

Problem reported by Frantisek Hanzlik in
<https://bugzilla.redhat.com/635318> via Kamil Dudka in
<http://lists.gnu.org/archive/html/bug-tar/2010-09/msg00066.html>.
I don't understand this code either, but Sergey can take a look at
this patch, and perhaps install a better one, when he has the time.
* src/incremen.c (append_incremental_renames): Don't actually append
anything to DIR if DIR is null.

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