debian/tar
7 years agoVersion 1.29 release_1_29
Sergey Poznyakoff [Mon, 16 May 2016 06:57:39 +0000 (09:57 +0300)]
Version 1.29

7 years agoMinor fix
Sergey Poznyakoff [Mon, 16 May 2016 08:50:19 +0000 (11:50 +0300)]
Minor fix

* src/names.c (new_name): rename to make_file_name. All uses changed.

8 years agoFix argument handling when running external commands.
Sergey Poznyakoff [Thu, 14 Apr 2016 08:51:38 +0000 (11:51 +0300)]
Fix argument handling when running external commands.

* src/system.c (xexec): Use sh -c to run the command.  This fixed
bug introduced by 7b5e80396 (tar 1.27)
* doc/tar.texi: Fix checkpoint examples: (1) $TAR_FILENAME
is not available when creating archive and (2) --checkpoint
can't be used as abbreviation of --checkpoint-action

8 years agoRemove iotty test
Sergey Poznyakoff [Wed, 6 Apr 2016 05:34:55 +0000 (08:34 +0300)]
Remove iotty test

The auxiliary utility ttyemu proved to be unreliable.  Given existing
differences between pty implementations and termios ioctls on various
platforms, writing it in a portable way requires effort disproportional
to its actual purpose.

* configure.ac: Remove check for grantpt
* gnulib.modules: Remove posix_openpt, ptsname, and unlockpt
* tests/Makefile.am (TESTSUITE_AT): Remove iotty.at
(check_PROGRAMS): Remove ttyemu.
* tests/testsuite.at: Remove iotty.at
* tests/iotty.at: Remove.
* tests/ttyemu.c: Remove.

8 years agoxattrs: fix build on Darwin
Pavel Raiskup [Tue, 5 Apr 2016 14:53:47 +0000 (17:53 +0300)]
xattrs: fix build on Darwin

Be careful to define HAVE_XATTRS when not all needed xattr-related
functions are properly defined either in libc or libattr.

Reported independently by Denis Excoffier and Dominyk Tille.

* acinclude.m4 (TAR_HEADERS_ATTR_XATTR_H): Check for each xattr
function separately.  Don't AC_CHECK_LIB (LIBS is filled by
AC_SEARCH_LIBS when necessary).
* src/Makefile.am: The LDADD -lattr was redundant.

8 years agoRemove --preserve option
Sergey Poznyakoff [Thu, 24 Mar 2016 06:39:52 +0000 (08:39 +0200)]
Remove --preserve option

* src/tar.c: Remove --preserve option
* NEWS: Update.
* doc/tar.texi: Update.

8 years agoFix testcase
Sergey Poznyakoff [Thu, 24 Mar 2016 06:38:38 +0000 (08:38 +0200)]
Fix testcase

* tests/time02.at: Sort tar -d output

8 years agoUpdate THANKS file
Sergey Poznyakoff [Thu, 24 Mar 2016 05:30:16 +0000 (07:30 +0200)]
Update THANKS file

8 years agoNew option --clamp-mtime
Jeremy Bobbio [Thu, 24 Mar 2016 05:11:28 +0000 (07:11 +0200)]
New option --clamp-mtime

The new `--clamp-mtime` option will change the behavior of `--mtime` to only
use the time specified if the file mtime is newer than the given time.
The `--clamp-mtime` option can only be used together with `--mtime`.

Typical use case is to make builds reproducible: to loose less
information, it's better to keep the original date of an archive, except for
files modified during the build process. In that case, using a reference
(and thus reproducible) timestamps for the latter is good enough. See
<https://wiki.debian.org/ReproducibleBuilds> for more information.

Patch submitted by Jeremy Bobbio and
Daniel Kahn Gillmor <dkg@fifthhorseman.net>

* doc/tar.1: Document --clamp-mtime
* doc/tar.texi: Likewise.

* src/common.h (set_mtime_option_mode): New enum
(set_mtime_option): Change type to enum set_mtime_option_mode.
(NEWER_OPTION_INITIALIZED): Rename to NEWER_OPTION_INITIALIZED.
* src/create.c (start_header): Set mtime depending on set_mtime_option.
* src/tar.c (options,parse_opt): New option --clamp-mtime
(decode_options): Initialize mtime_option

* tests/time02.at: New testcase.
* tests/Makefile.am: Add new testcase
* tests/testsuite.at: Likewise.

8 years agoAcknowledgments
Sergey Poznyakoff [Mon, 21 Mar 2016 18:46:19 +0000 (20:46 +0200)]
Acknowledgments

* THANKS: Add Dagobert Michelsen

8 years agoFix the testsuite
Sergey Poznyakoff [Mon, 21 Mar 2016 18:33:26 +0000 (20:33 +0200)]
Fix the testsuite

* tests/sparse06.at: Don't use timeout: depending on the filesystem
mounted, current LA and lots of other factors, creation of archive can
take much more time than the expected 2 seconds.

8 years agoFix ckmtime
Sergey Poznyakoff [Mon, 21 Mar 2016 11:35:32 +0000 (13:35 +0200)]
Fix ckmtime

* gnulib.modules: Use timespec-sub
* tests/ckmtime.c: Use second resolution.

8 years agoFix the testsuite
Sergey Poznyakoff [Sat, 19 Mar 2016 20:32:34 +0000 (22:32 +0200)]
Fix the testsuite

* tests/sparse05.at: Use autom4te magic to generate mapfile,
instead of the shell command seq, which is not always available.
* tests/listed03.at: Skip the test if xgetcwd fails.
* tests/ckmtime.c: New file.
* tests/Makefile.am: Build ckmtime
* tests/testsuite.at (AT_CHECK_TIMESTAMP): Check whether newly created
files have timestamps consistent with the creation time.  Skip the test
if not.
* tests/incr01.at: Use AT_CHECK_TIMESTAMP
* tests/incr02.at: Likewise.
* tests/incr03.at: Likewise.
* tests/incr04.at: Likewise.
* tests/incr05.at: Likewise.
* tests/incr06.at: Likewise.
* tests/incr07.at: Likewise.
* tests/incr08.at: Likewise.
* tests/incr09.at: Likewise.
* tests/incr10.at: Likewise.
* tests/incr11.at: Likewise.
* tests/incremental.at: Likewise.
* tests/listed01.at: Likewise.
* tests/listed02.at: Likewise.
* tests/listed04.at: Likewise.
* tests/listed05.at: Likewise.

8 years agoTestsuite fixes.
Sergey Poznyakoff [Fri, 18 Mar 2016 20:18:58 +0000 (22:18 +0200)]
Testsuite fixes.

* paxutils: Update.
* src/unlink.c (flush_deferred_unlinks): OpenSolaris sets EEXIST
instead of ENOTEMPTY if trying to remove a non-empty directory.
* tests/numeric.at: Avoid using awk -v: some older awks don't support
that option.  Also fix environment variable usage.
* tests/onetop05.at: Skip test if unable to set initial directory
mode bits.
* tests/sparse06.at: Use --quiet option.

8 years agoRevise docs
Sergey Poznyakoff [Fri, 18 Mar 2016 12:27:27 +0000 (14:27 +0200)]
Revise docs

8 years agoFix build with --enable-gcc-warnings
Sergey Poznyakoff [Fri, 18 Mar 2016 11:08:39 +0000 (13:08 +0200)]
Fix build with --enable-gcc-warnings

* configure.ac: Disable stack-protector warnings

8 years agoImprove testsuite
Sergey Poznyakoff [Thu, 17 Mar 2016 12:22:35 +0000 (14:22 +0200)]
Improve testsuite

* tests/iotty.at: Skip test if ttyemu can't do its job

8 years agoDocument xattrs, ACL and SELinux-related options.
Sergey Poznyakoff [Wed, 16 Mar 2016 18:08:00 +0000 (20:08 +0200)]
Document xattrs, ACL and SELinux-related options.

* doc/tar.1: Document all options.
* doc/tar.texi: Likewise.

8 years agoFix appending to archive with changed blocking factor.
Sergey Poznyakoff [Mon, 14 Mar 2016 22:02:40 +0000 (00:02 +0200)]
Fix appending to archive with changed blocking factor.

* src/buffer.c (flush_archive): If previous reading attempt resulted
in short read, correctly use the remaining record space.
(backspace_output): Fix position calculation (still has to be
improved).

* tests/append05.at: New test case.
* tests/Makefile.am: Add new test.
* tests/testsuite.at: Likewise.

8 years agoFix coredump on parsing invalid traditional option
Sergey Poznyakoff [Mon, 14 Mar 2016 11:13:04 +0000 (13:13 +0200)]
Fix coredump on parsing invalid traditional option

* src/tar.c (find_argp_option): Fix loop termination condition.

8 years agoUpdate copyright years
Sergey Poznyakoff [Wed, 20 Jan 2016 09:29:17 +0000 (11:29 +0200)]
Update copyright years

8 years agoAllow escaped delimiters in transform expressions.
Sergey Poznyakoff [Wed, 20 Jan 2016 09:16:02 +0000 (11:16 +0200)]
Allow escaped delimiters in transform expressions.

Patch provided by Charles McGarvey and Flavio Poletti.

* src/transform.c (parse_transform_expr): Allow escaped delimiters
in transform expressions.
* tests/xform02.at: New test case.
* tests/Makefile.am: Add xform02.at
* tests/testsuite.at: Include xform02.at
* THANKS: Update.

8 years agoFix eventual dereference of uninitialized pointer.
Sergey Poznyakoff [Thu, 17 Dec 2015 14:04:40 +0000 (16:04 +0200)]
Fix eventual dereference of uninitialized pointer.

* src/exclist.c (hg_initfn): Initialize hgopt.

8 years agosparse: fix use of indeterminate value
Pavel Raiskup [Thu, 17 Dec 2015 14:01:18 +0000 (16:01 +0200)]
sparse: fix use of indeterminate value

* src/xheader.c (sparse_map_decoder): Move 'e' up from loop-block.

8 years agofix a typo
Sergey Poznyakoff [Fri, 11 Dec 2015 13:21:04 +0000 (15:21 +0200)]
fix a typo

* doc/tar.texi (Incremental Dumps): Add missing --file to the
'--list' example.

8 years agoMinor fixes.
Sergey Poznyakoff [Fri, 11 Dec 2015 12:19:44 +0000 (14:19 +0200)]
Minor fixes.

* doc/tar.texi: Document position-sensitive options in a
separate subsection.
* src/names.c (names_argp,names_argp_children): Explicitly initialize
all members.

8 years agoMinor fix
Sergey Poznyakoff [Thu, 10 Dec 2015 23:10:43 +0000 (01:10 +0200)]
Minor fix

8 years agoFix handling of filename-selection options.
Sergey Poznyakoff [Thu, 10 Dec 2015 22:37:17 +0000 (00:37 +0200)]
Fix handling of filename-selection options.

Filename-selection options are --wildcards, --recursive, etc. (see
names.c for a complete list).  These options are position-sensitive,
i.e. each such option affects all filenames and filename-selection
options that appear after it until eventually cancelled by a
corresponding counterpart option.

These options can appear in "file-from" file lists, which means that
they cannot be handled right away, but instead should be put on
the "name_elt" list and processed sequentionally, as file name arguments
are.

* src/common.h (warn_regex_usage): Remove.
(name_add_name): Change signature.
(name_add_dir, name_add_file): Remove prototypes.
* src/names.c (name_add_option, name_add_dir)
(name_add_file): Static functions.
(names_options, is_file_selection_option, names_parse_opt): Static functions.
(names_argp_children): New variable.
(NELT_NAME, NELT_CHDIR)
(NELT_FILE, NELT_NOOP): Redefine as enum nelt_type.
(NELT_FMASK): Remove.
(NELT_OPTION): New constant.
(name_elt) <type>: Change type.
<v.opt>: New member.
(name_elt_alloc_matflags): Remove.
(name_add_name): Take one argument.
(name_add_option): New static function.
(name_add_file): Take one argument.
(read_next_name): Use filename_terminator and
verbatim_files_from_option to initialize file.term and file.verbatim.
* src/tar.c: Move handling of filename-selection options to names.c

* tests/T-dir00.at: Fix typo.
* tests/T-recurse.at: Remove expected failure.

8 years agobetter test --{,no-}recursion options
Pavel Raiskup [Thu, 10 Dec 2015 12:55:34 +0000 (14:55 +0200)]
better test --{,no-}recursion options

* tests/recurs02.at: Also test --list mode.
* tests/T-recurse.at: New test case.  Test that -T option works
correctly together with --{,no-}recursion.
* tests/Makefile.am: Mention new test T-recurse.at.
* tests/testsuite.at: Likewise.

8 years agoBugfix
Pavel Raiskup [Sun, 6 Dec 2015 20:12:20 +0000 (22:12 +0200)]
Bugfix

* src/buffer.c (try_new_volume): Warn if user supplied malformed
tar archive.
Consistently use WARN (instead of ERROR) when reporting.

8 years agoFix segfault when extracting from a multi-volume archive.
Sergey Poznyakoff [Sun, 6 Dec 2015 20:02:16 +0000 (22:02 +0200)]
Fix segfault when extracting from a multi-volume archive.

Fix suggested by Pavel Raiskup.

* src/buffer.c (try_new_volume): Fix dereferencing NULL pointer.
* tests/multiv09.at: New testcase.
* tests/Makefile.am: Add new testcase.
* tests/testsuite.at: Likewise.

8 years agoFix NEWS
Sergey Poznyakoff [Sun, 6 Dec 2015 19:20:48 +0000 (21:20 +0200)]
Fix NEWS

8 years agonumeric-owner: print big UID/GID correctly
Pavel Raiskup [Sun, 6 Dec 2015 19:18:51 +0000 (21:18 +0200)]
numeric-owner: print big UID/GID correctly

* src/list.c (simple_print_header): Do not parse ustar header
for UID/GID again (tar_stat_info has already been correctly
filled with respect to possible uid/gid extended headers).
* tests/numeric.at: New testcase for --numeric-owner option.
* tests/Makefile.am: Add new testcase.
* tests/testsuite.at: Likewise.

8 years agoUse SEEK_HOLE for hole detection
Sergey Poznyakoff [Sat, 5 Dec 2015 21:36:22 +0000 (23:36 +0200)]
Use SEEK_HOLE for hole detection

Based on patch by Pavel Raiskup.

Use SEEK_HOLE/SEEK_DATA feature of lseek on systems that support
it.  This can make archiving of sparse files much faster.

Implement the --hole-detection option to allow users to select
hole-detection method.

* src/common.h (hole_detection_method): New enum.
(hole_detection): New global.
* src/sparse.c  (sparse_scan_file_wholesparse): New function as a
method for detecting sparse files without any data.
(sparse_scan_file_raw): Rename from sparse_scan_file; with edits.
(sparse_scan_file_seek): New function.
(sparse_scan_file): Reimplement function.
* src/tar.c: New option --hole-detection

* tests/checkseekhole.c: New file.
* tests/.gitignore: Mention two test binaries.
* tests/Makefile.am: Add new tests.
* tests/testsuite.at (AT_SEEKHOLE_PREREQ): New macro.
Include sparse06.at.
* tests/sparse06.at: New test case.
* tests/sparse02.at: Force raw hole-detection method.
* tests/sparsemv.at: Likewise.
* tests/sparsemvp.at: Likewise.

* doc/tar.1: Document --hole-detection option.
* doc/tar.texi: Document hole-detection algorithms and
command-line options.
* NEWS: Document hole-detection.

8 years agoCatch compressor execution errors.
Sergey Poznyakoff [Sat, 5 Dec 2015 14:54:26 +0000 (16:54 +0200)]
Catch compressor execution errors.

* src/misc.c (write_fatal_details): Move to buffer.c
* src/buffer.c (write_fatal_details): Close the archive and wait for
the compressor program to terminate in order to catch eventual execution
errors.
* src/system.c (sys_child_open_for_compress): Ignore SIGPIPE so tar will
not silently terminate when unable to write to the compressor.
* tests/comperr.at: New file.
* tests/Makefile.am: Add comperr.at
* tests/testsuite.at: Include comperr.at

8 years agoUpgrade paxutils
Sergey Poznyakoff [Sat, 5 Dec 2015 06:48:03 +0000 (08:48 +0200)]
Upgrade paxutils

8 years agoFix extraction from concatenated incremental archives with renamed directories.
Sergey Poznyakoff [Sun, 29 Nov 2015 18:51:08 +0000 (20:51 +0200)]
Fix extraction from concatenated incremental archives with renamed directories.

Complements 15c02c2b.

* src/extract.c (delayed_set_stat): Change type of file_name.
(delay_set_stat): Allocate file_name member.
(free_delayed_set_stat): Free file_name.
(fixup_delayed_set_stat): New function.
(rename_directory): Call fixup_delayed_set_stat on success.

* tests/incr11.at: New testcase.
* tests/incr10.at: Improve description.
* tests/Makefile.am: Add incr11.at
* tests/testsuite.at: Add incr11.at

8 years agoFix bug in the inplementation of --one-top-level.
Sergey Poznyakoff [Sat, 21 Nov 2015 19:56:49 +0000 (21:56 +0200)]
Fix bug in the inplementation of --one-top-level.

When extracting an archive that contains './' with the --one-top-level option,
the mode and ownership of '.' would be incorrectly applied to the current
working directory, instead of the requested top-level directory.

* src/list.c (enforce_one_top_level): Map '.' to the top-level
directory.
* tests/Makefile.am: Add onetop05.at
* tests/testsuite.at: Include onetop05.at.
* tests/onetop05.at: New file.
* tests/onetop01.at: Fix keywords.
* tests/onetop02.at: Likewise.
* tests/onetop03.at: Likewise.
* tests/onetop04.at: Likewise.

8 years agoWork around unlinkat bug on FreeBSD and GNU/Hurd
Sergey Poznyakoff [Wed, 11 Nov 2015 11:01:45 +0000 (13:01 +0200)]
Work around unlinkat bug on FreeBSD and GNU/Hurd

* src/unlink.c (dunlink_insert): New function.
(flush_deferred_unlinks): Skip cwds and nonempty directories
at the first pass.  If force is requested, run a second pass
removing them.
(queue_deferred_unlink): Make sure current working directory
entries are sorted in descending order by the value of dir_idx.
This makes sure they will be removed in right order, which works
around unlinkat bug on FreeBSD and GNU/Hurd.
* tests/remfiles08b.at: Remove expected failure.
* tests/remfiles09b.at: Likewise.

8 years agoFix coredump on FreeBSD when TAR_OPTIONS is set
Sergey Poznyakoff [Tue, 10 Nov 2015 16:25:47 +0000 (18:25 +0200)]
Fix coredump on FreeBSD when TAR_OPTIONS is set

* src/tar.c (parse_default_options): Use program_name instead of
program_invocation_short_name.  On some systems the latter is NULL when
the function is called, which causes coredumps.
(tar_set_quoting_style): Likewise.
* src/names.c: Likewise.

8 years agoUse sort in T-dir tests.
Sergey Poznyakoff [Mon, 2 Nov 2015 11:54:26 +0000 (13:54 +0200)]
Use sort in T-dir tests.

8 years agoFix distclean in tests/
Sergey Poznyakoff [Mon, 2 Nov 2015 11:17:43 +0000 (13:17 +0200)]
Fix distclean in tests/

* tests/Makefile.am: Remove "download"

8 years agoNew options: --owner-map and --group-map.
Sergey Poznyakoff [Mon, 2 Nov 2015 10:51:19 +0000 (12:51 +0200)]
New options: --owner-map and --group-map.

* NEWS: Update.
* doc/tar.1: Document --owner-map and --group-map
* doc/tar.texi: Likewise.

* src/map.c: New file.
* src/Makefile.am: Add map.c
* src/common.h (owner_map_read, owner_map_translate)
(group_map_read, group_map_translate): New protos.
* src/create.c (start_header): Use owner_map_translate
and group_map_translate to optionally translate user/group names/ids.
* src/tar.c: New options --owner-map and --group-map.

* tests/map.at: New file.
* tests/Makefile.am: Add map.at
* tests/testsuite.at: Include map.at.

8 years agodoc: fix font and spelling typos
Kir Kolyshkin [Thu, 24 Sep 2015 16:18:53 +0000 (09:18 -0700)]
doc: fix font and spelling typos

* doc/tar.1: Fix font and spelling typos in man page.
Copyright-paperwork-exempt: yes

8 years agoFix problems caught by static checking
Paul Eggert [Thu, 24 Sep 2015 15:31:07 +0000 (08:31 -0700)]
Fix problems caught by static checking

Most of these can be caught by configuring with --enable-gcc-warnings.
Problem reported by Pavel Raiskup in:
http://lists.gnu.org/archive/html/bug-tar/2015-09/msg00001.html
* src/buffer.c (format_total_stats):
Prefer pointer to const when it’s OK to use const.
(default_total_format): Now const.
* src/buffer.c (default_total_format):
* src/exclist.c (excfile_head, excfile_tail, vcs_ignore_files):
* src/misc.c (namebuf_add_dir, namebuf_finish):
* src/tar.c (verbatim_files_from_option, option_set_in_cl)
(optloc_eq, set_old_files_option):
Now static.
* src/common.h: Adjust to match the other changes described here.
* src/exclist.c (info_cleanup_exclist):
* src/tar.c (argp_program_version, argp_program_bug_address):
Remove; unused.
(parse_default_options): Define via prototype instead of old style.
(parse_default_options, decode_options):
Fill out incomplete initializers.

8 years agoImprove option sanity checking
Sergey Poznyakoff [Mon, 31 Aug 2015 05:37:46 +0000 (08:37 +0300)]
Improve option sanity checking

Any two conflicting options are reported only if they both occur in
the command line.  Otherwise, options defined in the command line
silently override those set in the TAR_OPTIONS environment variable.

* src/common.h (option_source): New enum.
(option_locus): New struct.
* src/names.c (name_elt): New member: line.
(name_add_file): Initialize line.
(read_name_from_file): Keep track of input line number for diagnostic
purposes.
(handle_option): Take a pointer to struct name_elt as 2nd parameter;
pass locus info to more_options().
* src/tar.c (tar_args): New member: loc.
(option_class): New enum.
(optloc_save,optloc_lookup)
(option_set_in_cl,optloc_eq): New functions.
(set_use_compress_program_option): Take into account option location.
(set_old_files_option): New function.
(parse_opt): Keep track of option locations.
(more_options): Improve error reporting.
(parse_default_options): New function.
(decode_options): Parse TAR_OPTION and command line separately.
Options from the latter silently override those from the former.

* lib/prepargs.c: Remove.
* lib/prepargs.h: Remove.
* lib/Makefile.am: Update.

8 years agoImprove check-full
Sergey Poznyakoff [Mon, 24 Aug 2015 10:04:09 +0000 (13:04 +0300)]
Improve check-full

* tests/atlocal.in: Download external archives to $abs_builddir/download.
(tarball_prereq): Create destination directory if necessary.
* tests/.gitignore: Add download

8 years agoFix check-full
Sergey Poznyakoff [Mon, 24 Aug 2015 09:49:47 +0000 (12:49 +0300)]
Fix check-full

* tests/atlocal.in (TAR_DATA_URL): Berlios is dead.  Get
test archives from gnu.org.ua

8 years agoInclude gnulib and paxutils as submodules.
Sergey Poznyakoff [Mon, 24 Aug 2015 08:45:29 +0000 (11:45 +0300)]
Include gnulib and paxutils as submodules.

* .gitmodules: New file.
* README-alpha: Update.
* README-hacking: Update.
* bootstrap: Install slightly modified version from the gnulib repo.
* bootstrap.conf: Add paxutils-related stuff.
* .gitignore: Update.
* doc/.gitignore: Update.
* po/.gitignore: Update.
* gnu/Makefile.am

8 years agoUpdate docs.
Sergey Poznyakoff [Mon, 24 Aug 2015 06:29:04 +0000 (09:29 +0300)]
Update docs.

* doc/tar.1: Document --verbatim-files-from option.

8 years agoAdd missing VCS files to --exclude-vcs list
Sergey Poznyakoff [Thu, 20 Aug 2015 14:49:13 +0000 (17:49 +0300)]
Add missing VCS files to --exclude-vcs list

* src/tar.c (vcs_file_table): Add .gitmodules and .gitattributes
* doc/tar.texi: Update.

8 years agoOptions to control option handling in file lists.
Sergey Poznyakoff [Mon, 3 Aug 2015 13:11:08 +0000 (16:11 +0300)]
Options to control option handling in file lists.

The --verbatim-files-from option disables option handling in
file lists.  The --no-verbatim-files-from reverts its effect.

The --null option implies --verbatim-files-from.  This restores
the documented behavior, broken by 26538c9b.

* src/common.h (verbatim_files_from_option): New global.
* src/names.c (name_elt): New member: file.verbatim
(name_add_file): Take 'verbatim' state as its third parameter.
(read_next_name): Don't call handle_option if file.verbatim
is set.
* src/tar.c: New options --verbatim-files-from and
--no-verbatim-files-from.

* doc/tar.texi: Document --verbatim-files-from and
--no-verbatim-files-from options.
* NEWS: Update.
* configure.ac: Version 1.28.90

* tests/T-null2.at: New testcase.
* tests/Makefile.am: Update.
* tests/testsuite.at: Update.

8 years agoFix typos (preceeded etc.)
Anders Jonsson [Sat, 25 Jul 2015 11:25:03 +0000 (13:25 +0200)]
Fix typos (preceeded etc.)

Copyright-paperwork-exempt: yes

8 years agotar: fix symlink race and symlink transform bug
Paul Eggert [Mon, 13 Jul 2015 16:53:00 +0000 (09:53 -0700)]
tar: fix symlink race and symlink transform bug

Problem reported by Tobias Stoeckmann in:
http://lists.gnu.org/archive/html/bug-tar/2015-07/msg00004.html
* gnulib.modules: Add areadlinkat-with-size.
* src/create.c: Include areadlink.h.
(dump_file0): Use areadlinkat_with_size, rather than trying to do
it by hand, incorrectly.  This also avoids assumption that
the symlink contents fit on the stack.  Also, use the transformed
link name, not the original link name, when deciding whether the
name is long enough to require writing a long link.

8 years agotar: port -d to longer symlinks
Paul Eggert [Mon, 13 Jul 2015 16:46:17 +0000 (09:46 -0700)]
tar: port -d to longer symlinks

* src/compare.c (diff_symlink):
Don't use alloca on symlink length; it might be too big for the stack.
Don't assume that readlinkat's return value fits in 'int'.
Prefer memcmp to strncmp where either will do.

8 years agotar: port to recent gnulib
Paul Eggert [Mon, 13 Jul 2015 16:32:46 +0000 (09:32 -0700)]
tar: port to recent gnulib

* gnulib.modules: Remove 'acl' and add 'file-has-acl'.

8 years agotar: pacify GCC 5.1 -Wformat-signedness
Paul Eggert [Mon, 13 Jul 2015 16:29:51 +0000 (09:29 -0700)]
tar: pacify GCC 5.1 -Wformat-signedness

* lib/wordsplit.c (struct wordsplit_node.flags):
Now unsigned, so that 'printf ("%x", p->flags)' doesn't provoke GCC.
* src/incremen.c (read_num, dumpdir_ok):
Don't printf an int with %x or %o.

9 years agoFix extraction from concatenated incremental archives.
Sergey Poznyakoff [Thu, 16 Apr 2015 10:02:10 +0000 (13:02 +0300)]
Fix extraction from concatenated incremental archives.

* src/common.h (remove_delayed_set_stat): New proto.
* src/extract.c (free_delayed_set_stat)
(remove_delayed_set_stat): New function.
(apply_nonancestor_delayed_set_stat): Use free_delayed_set_stat.
* src/misc.c (safer_rmdir): Remove delayed_set_stat entry
corresponding to the removed directory.
* tests/incr10.at: New test case.
* tests/Makefile.am: Add new test.
* tests/testsuite.at: Likewise.

9 years agoFix make installcheck
Sergey Poznyakoff [Fri, 10 Apr 2015 08:18:38 +0000 (11:18 +0300)]
Fix make installcheck

Make installcheck would fail unless make check had been run before it.
Reported by Erik Brangs <erik.brangs@gmx.de>

* tests/Makefile.am (installcheck-local): Depend on $(check_PROGRAMS)

9 years agotar: don't assume GZIP
Paul Eggert [Wed, 18 Mar 2015 05:54:28 +0000 (22:54 -0700)]
tar: don't assume GZIP

* Makefile.am (dist-hook): Port to gzip implementations that
warn about nontrivial settings in the GZIP environment var.

9 years agotar: don't suggest GZIP
Paul Eggert [Tue, 17 Mar 2015 17:46:20 +0000 (10:46 -0700)]
tar: don't suggest GZIP

* doc/tar.texi (gzip): Don't suggest using the GZIP environment
variable, as it will be deprecated in the next gzip release.

9 years agoImprove compression format recognition
Sergey Poznyakoff [Thu, 19 Feb 2015 15:00:58 +0000 (17:00 +0200)]
Improve compression format recognition

Some comressed archives can pass the checksum test, which makes tar
treat them as uncompressed archives.

* src/buffer.c (check_compressed_archive): Test the checksum only
if the block we read looks like a valid tar header (i.e. has
a magic string).

9 years agotar: port xattr-at.c to Solaris 10
Paul Eggert [Tue, 6 Jan 2015 04:24:18 +0000 (20:24 -0800)]
tar: port xattr-at.c to Solaris 10

* lib/xattr-at.c (setxattrat, lsetxattrat, getxattrat, lgetxattrat)
(listxattrat, llistxattrat): Compile only if HAVE_XATTRS, so that
the code doesn't call functions that are not declared.

9 years agotar: port wordsplit attribute to Sun C
Paul Eggert [Tue, 6 Jan 2015 04:07:34 +0000 (20:07 -0800)]
tar: port wordsplit attribute to Sun C

Reported by Ted Carr in:
http://lists.gnu.org/archive/html/bug-tar/2015-01/msg00002.html
* lib/wordsplit.h (__WORDSPLIT_ATTRIBUTE_FORMAT):
New macro, taken from Gnulib.
(struct wordsplit): Use it.
* lib/wordsplit.c (_wsplt_error): Use it.

9 years agoSilent a cc warning
Sergey Poznyakoff [Wed, 17 Dec 2014 06:37:14 +0000 (08:37 +0200)]
Silent a cc warning

* src/xheader.c (xheader_string_end): Make sure pointer
arithmetics applies on char*.

9 years agotar: port ISFOUND, WASFOUND to C89
Paul Eggert [Fri, 12 Dec 2014 03:01:57 +0000 (19:01 -0800)]
tar: port ISFOUND, WASFOUND to C89

Problem reported by Romano Maspero in:
http://lists.gnu.org/archive/html/bug-tar/2014-12/msg00010.html
* src/common.h (ISFOUND, WASFOUND): Port to C89.

9 years agoFix tar -c -l file file
Sergey Poznyakoff [Wed, 10 Dec 2014 02:34:02 +0000 (04:34 +0200)]
Fix tar -c -l file file

When the same file is added several times to the archive, count
correctly the number of hard links.  See also 37ddfb0b.

* src/create.c (dump_hard_link): Don't decrease nlink if it is 0.
* tests/link04.at: Test -cl options.

9 years agoHonor the pax-option overrides when creating archive.
Sergey Poznyakoff [Fri, 7 Nov 2014 11:03:18 +0000 (13:03 +0200)]
Honor the pax-option overrides when creating archive.

Changes proposed by Denis Excoffier.

* NEWS: Fix typos.
* doc/tar.texi: Fix typos.  Improve recipe for creation of binary
equivalent archives.
* src/create.c (write_extended): Use the value of the
--mtime option (if specified) as the default for exthdr.mtime.
* src/xheader.c (xheader_store): Create the header if at least
one override is supplied in --pax-option.

9 years agoAdd testcase for the previous commit.
Sergey Poznyakoff [Fri, 7 Nov 2014 09:47:44 +0000 (11:47 +0200)]
Add testcase for the previous commit.

* tests/sparse05.at: New file.
* tests/Makefile.am: Add sparse05.at
* tests/testsuite.at: Include sparse05.at

9 years agoFix bug in sparse file listing
Pavel Raiskup [Tue, 29 Jan 2013 09:39:30 +0000 (10:39 +0100)]
Fix bug in sparse file listing

List posix archives containing sparse files >8GB correctly and do not fail.
This fixes also bug in format of listing for sparse files >8GB - now the
real size is printed instead of the effective one (this is not strictly
posix format related).

* src/list.c: Remove redundant assignment.
* src/tar.h: Add new 'real_size' and 'real_size_set' fields in
  tar_stat_info struct.
* src/xheader.c: Correctly handle (especially sparse) file sizes directly in
  xheader_decode().

9 years agoFix a typo
Sergey Poznyakoff [Wed, 15 Oct 2014 11:20:07 +0000 (14:20 +0300)]
Fix a typo

9 years agoFix README
Sergey Poznyakoff [Wed, 1 Oct 2014 20:19:02 +0000 (23:19 +0300)]
Fix README

Remove the reference to PORTS

9 years agoBugfixes.
Sergey Poznyakoff [Wed, 24 Sep 2014 21:22:16 +0000 (00:22 +0300)]
Bugfixes.

* doc/tar.1: Fix typo in font spec.
* src/tar.c (sort_mode_arg, sort_mode_flag): Protect "inode"
(SAVEDIR_SORT_INODE) with D_INO_IN_DIRENT

9 years agoBugfix: entries read from the -T file did not get proper matching_flag.
Sergey Poznyakoff [Thu, 18 Sep 2014 15:06:40 +0000 (18:06 +0300)]
Bugfix: entries read from the -T file did not get proper matching_flag.

* src/common.h (name_add_file): Change signature.
* src/names.c (name_elt_alloc_matflags): New function.
(name_add_name): Use name_elt_alloc_matflags.
(name_add_file): Take matching flags as third argument.
(read_next_name): Remove trailing slashes.
* src/tar.c (parse_opt): Pass matching_flags to name_add_file.

* tests/T-dir00.at: New file.
* tests/T-dir01.at: New file.
* tests/Makefile.am: Add new testcases.
* tests/testsuite.at: Likewise.

9 years agoImprove documentation.
Sergey Poznyakoff [Sat, 16 Aug 2014 06:42:25 +0000 (09:42 +0300)]
Improve documentation.

* doc/tar.1: Document --skip-old-files and --warning=existing-file
* doc/tar.texi: Document --warning=existing-file

9 years agoVersion 1.28 release_1_28
Sergey Poznyakoff [Sun, 27 Jul 2014 20:45:19 +0000 (23:45 +0300)]
Version 1.28

9 years agoMinor change in docstrings.
Nathan Stratton Treadway [Sun, 27 Jul 2014 20:31:26 +0000 (23:31 +0300)]
Minor change in docstrings.
nor ch#

9 years agoRestructure the remfiles testsuite.
Nathan Stratton Treadway [Sun, 27 Jul 2014 20:27:28 +0000 (23:27 +0300)]
Restructure the remfiles testsuite.

9 years agoDon't build ttyemu and run tty I/O test if grantpt is not available.
Sergey Poznyakoff [Tue, 22 Jul 2014 01:24:35 +0000 (04:24 +0300)]
Don't build ttyemu and run tty I/O test if grantpt is not available.

* configure.ac (TAR_COND_GRANTPT): Define conditional depending
on whether grantpt is available.
* gnulib.modules: Remove grantpt. It relies upon a helper binary
pt_chown which it installs and which is useless in the testsuite.
* tests/Makefile.am [TAR_COND_GRANTPT]: Build ttyemu
* tests/iotty.at: Skip test if ttyemu is not build.
* tests/ttyemu.c (noecho): Fix error message
(main): Use TIOCSCTTY if it is defined.

9 years agoFix a typo and some wordings in the documentation.
Benno Schulenberg [Thu, 5 Jun 2014 16:26:46 +0000 (18:26 +0200)]
Fix a typo and some wordings in the documentation.

* doc/tar.texi: Fix some missing articles, and make it clearer
that "any" does not mean "anything" but "either of the two".

9 years agoFix the testsuite
Nathan Stratton Treadway [Tue, 22 Jul 2014 00:34:20 +0000 (03:34 +0300)]
Fix the testsuite

* tests/incr07.at: Don't assume case-sensitive filesystem.

9 years agotar: minor fixups related to recent checkpoint.c change
Paul Eggert [Fri, 11 Jul 2014 05:34:25 +0000 (22:34 -0700)]
tar: minor fixups related to recent checkpoint.c change

* src/checkpoint.c (getwidth, format_checkpoint_string):
Use long and strtol, not int, to avoid overflow issues.
(getwidth): Don't assume termios.h defines TIOCGWINSZ,
as it doesn't on some older hosts.

9 years agoBugfixes
Sergey Poznyakoff [Fri, 11 Jul 2014 05:09:30 +0000 (08:09 +0300)]
Bugfixes

* gnulib.modules: Add faccessat
* src/checkpoint.c: Include termios.h

9 years agotar: document xgetcwd test case better
Nathan Stratton Treadway [Sun, 29 Jun 2014 06:57:37 +0000 (23:57 -0700)]
tar: document xgetcwd test case better

* src/misc.c (normalize_filename): Add commentary for clarity.
* tests/extrac09.at: Retitle test case and add comments for clarity.

9 years agoFix typos in ChangeLog
Sergey Poznyakoff [Tue, 24 Jun 2014 08:53:35 +0000 (11:53 +0300)]
Fix typos in ChangeLog

* ChangeLog.CVS: Fix typos.
* ChangeLog.amend: New file.
* Makefile.am: Define changelog_amend_file.

10 years agotar: do not dereference NULL pointer with '--remove-files .'
Paul Eggert [Tue, 29 Apr 2014 21:22:07 +0000 (14:22 -0700)]
tar: do not dereference NULL pointer with '--remove-files .'

Problem reported by Thorsten Hirsch in:
http://lists.gnu.org/archive/html/bug-tar/2014-04/msg00011.html
* src/unlink.c (flush_deferred_unlinks):
Do not attempt to find the parent of "." when "." is
at the top level.
* tests/remfiles10.at: New file.
* tests/Makefile.am (TESTSUITE_AT):
* tests/testsuite.at: Add it.

10 years agoRefuse to write archive contents to a tty.
Sergey Poznyakoff [Thu, 27 Mar 2014 05:06:02 +0000 (07:06 +0200)]
Refuse to write archive contents to a tty.

* NEWS: Update.
* src/buffer.c (_open_archive): Refuse to write to a tty.
* tests/iotty.at: Test output to a tty.

10 years agofix an eternal loop in handle_option
Vitezslav Cizek [Wed, 26 Mar 2014 21:01:22 +0000 (23:01 +0200)]
fix an eternal loop in handle_option

* src/names.c (handle_option): increment loop counter

10 years agoFail if archive comes from a terminal.
Sergey Poznyakoff [Thu, 20 Mar 2014 14:28:25 +0000 (16:28 +0200)]
Fail if archive comes from a terminal.

Based on patch from Pavel Raiskup <praiskup@redhat.com>.

* gnulib.modules: Add new modules.
* src/buffer.c (_open_archive): Refuse to read archive from a tty.
* tests/Makefile.am (TESTSUITE_AT): Add iotty.at
(check_PROGRAMS): New program ttyemu
* tests/testsuite.at: Include iotty.at
* tests/iotty.at: New file.
* tests/ttyemu.c: New file.

10 years agotar: port to Solaris 9
Paul Eggert [Thu, 13 Mar 2014 04:01:32 +0000 (21:01 -0700)]
tar: port to Solaris 9

Problem reported by Jesse C in:
http://lists.gnu.org/archive/html/bug-tar/2014-03/msg00034.html
* gnulib.modules: Add strtoimax and strtoumax, since tar invokes
these functions directly and they don't exist on Solaris 9.

10 years agoTest the --[no-]recursive options (see commit 2bd9c153_.
Sergey Poznyakoff [Tue, 25 Feb 2014 08:37:09 +0000 (10:37 +0200)]
Test the --[no-]recursive options (see commit 2bd9c153_.

* tests/recurs02.at: New test case.
* tests/Makefile.am: Add new file.
* tests/testsuite.at: Add new file.

10 years agoSupport exclusion patterns from various VCS ignore lists.
Sergey Poznyakoff [Fri, 21 Feb 2014 15:57:26 +0000 (17:57 +0200)]
Support exclusion patterns from various VCS ignore lists.

* src/Makefile.am (tar_SOURCES): Add exclist.c
* src/common.h (EXCL_DEFAULT, EXCL_RECURSIVE)
(EXCL_NON_RECURSIVE): New flags.
(excfile_add, info_attach_exclist)
(info_cleanup_exclist,info_free_exclist)
(exclude_vcs_ignores): New prototypes.
* src/create.c (dump_dir0): Call info_attach_exclist.
* src/exclist.c: New file.
* src/incremen.c (scan_directory): Call info_attach_exclist.
* src/names.c (excluded_name): Moved to exclist.c. Change signature.
All uses updated.
* src/tar.c: New options: --exclude-ignore, --exclude-ignore-recursive
and --exclude-vcs-ignores.
(tar_stat_destroy): Free exclist.
* src/tar.h (tar_stat_info): New member exclude_list.

* NEWS: Document new exclusion options.
* doc/tar.texi: Likewise.
* doc/tar.1: Likewise.

10 years agoFix in testsuite
Sergey Poznyakoff [Fri, 14 Feb 2014 11:03:58 +0000 (13:03 +0200)]
Fix in testsuite

* acls03.at: Fix improper invocation of setfacl.

10 years agotestsuite: add test for buggy default ACLs
Pavel Raiskup [Mon, 3 Feb 2014 13:00:56 +0000 (14:00 +0100)]
testsuite: add test for buggy default ACLs

* tests/Makefile.am: Mention acls03.at.
* tests/testsuite.at: Likewise.
* tests/acls03.at: New testcase.

10 years agoacls: bugfix for default ACLs extraction
Pavel Raiskup [Mon, 3 Feb 2014 09:32:24 +0000 (10:32 +0100)]
acls: bugfix for default ACLs extraction

When --acls option is on (regardless of tarball contents or
tarball format), we should explicitly set OR delete default ACLs
for extracted directories.  Prior to this update, we always
created arbitrary default ACLs based standard file permissions.

* configure.ac (with_posix_acls): Check also for acl_free and
acl_delete_def_file to mark IEEE 1003.1e ACLs as supported.
* src/xattrs.c (acl_delete_def_file_at): New function.
(xattrs__acls_set): Do not treat acls_option at all;  Delete
default ACLs if appropriate.

References:
http://www.mail-archive.com/bug-tar@gnu.org/msg04355.html
Thanks: Juan J. Martínez and Mark Steinborn

10 years agotar: imply --xattrs when --xattrs-{inc,exc}lude used
Pavel Raiskup [Thu, 23 May 2013 09:36:23 +0000 (11:36 +0200)]
tar: imply --xattrs when --xattrs-{inc,exc}lude used

Options --xattrs-include=MASK and --xattrs-exclude=MASK now turn
on the --xattrs option.

Fix also bug in printing in xattrs.c - don't print when option is
negative.

* src/tar.c (set_xattr_option): New static function.
(parse_opt): Call new function when --xatrrs, --xattrs-include or
--xattrs-exclude option is used.
* src/xattrs.c (xattrs_print, xattrs_print_char): Expect positive
values in options.

10 years agoTHANKS: Add Anthony G. Basile.
Sergey Poznyakoff [Fri, 14 Feb 2014 09:02:40 +0000 (11:02 +0200)]
THANKS: Add Anthony G. Basile.

10 years agoUse correct headers/libraries when providing xattr support
Sergey Poznyakoff [Fri, 14 Feb 2014 08:55:26 +0000 (10:55 +0200)]
Use correct headers/libraries when providing xattr support

See https://savannah.gnu.org/patch/index.php?8252. Patch provided
by Anthony G. Basile.

* acinclude.m4 (TAR_HEADERS_ATTR_XATTR_H): Look for <sys/xattr.h>
first and then for <attr/xattr.h>.  Link against libattr.so if
needed.
* lib/xattr-at.h: Include sys/xattr.h or attr/xattr.h, depending
on which one is detected.
* src/Makefile.am [TAR_LIB_ATTR] (tar_LDADD): Link against -lattr.

10 years agoMinor change
Sergey Poznyakoff [Fri, 14 Feb 2014 08:44:19 +0000 (10:44 +0200)]
Minor change

* src/tar.c (decode_options): Silently ignore --one-top-level
if used with a non-reading command.

10 years agoNew option --sort=ORDER
Sergey Poznyakoff [Thu, 13 Feb 2014 22:11:57 +0000 (00:11 +0200)]
New option --sort=ORDER

This option makes tar sort the entries of directories that will be
added to an archive according to ORDER (none, name, or order).

Based on proposition by Dick Streefland (https://savannah.gnu.org/patch/?7892).

* src/common.h (savedir_sort_order): New global.
* src/create.c: Pass savedir_sort_order to streamsavedir.
* src/misc.c: Likewise.
* src/tar.c: New option --sort.

* NEWS: Update.
* doc/tar.texi: Document the --sort option.
* doc/tar.1: Likewise.