2026-05-11  Pavel Raiskup (mirror bot)  <praiskup-mirroring@raiskup.cz>

	Merge remote-tracking branch 'source_repo/master' into ci

2026-05-11  Paul Eggert  <eggert@cs.ucla.edu>

	Pacify GCC 16.1 -Wanalyzer-use-of-uninitialized-value

	This fixes a false positive with gcc 16.1.1 20260501 (Red Hat
	16.1.1-1) on x86-64.
	* src/extract.c (set_stat): Use differently-worded but equivalent
	test
	to help the compiler see that ts[0].tv_sec is used only if sedt.

2026-05-11  Paul Eggert  <eggert@cs.ucla.edu>

	build: update gnulib submodule to latest

2026-05-11  Pavel Raiskup (mirror bot)	<praiskup-mirroring@raiskup.cz>

	Merge remote-tracking branch 'source_repo/master' into ci

2026-05-11  Paul Eggert  <eggert@cs.ucla.edu>

	tar: remove no-longer-accurate comment

2026-05-11  Paul Eggert  <eggert@cs.ucla.edu>

	Quote --set-mtime-command file names

	Problem reported by Raphael Karger.
	* src/system.c: Include quotearg.h.
	(sys_exec_setmtime_script): Quote the file name for the shell.

2026-04-13  Pavel Raiskup (mirror bot)	<praiskup-mirroring@raiskup.cz>

	Merge remote-tracking branch 'source_repo/master' into ci

2026-04-13  Paul Eggert  <eggert@cs.ucla.edu>

	Use mkdtempat instead of mkdtemp

	This fixes an interaction of -C with incremental 'X'.
	Problem reported by Pavel Cahyna.
	* gnulib.modules: Remove mkdtemp.
	Add tempname, since our mkdtempat uses it.
	* lib/mkdtempat.c, lib/mkdtempat.h: New files.
	* lib/Makefile.am (noinst_HEADERS): Add mkdtempat.h.
	(libtar_a_SOURCES): Add mkdtempat.c.
	* src/incremen.c: Include mkdtempat.h.
	(purge_directory): Use mkdtempat, not mkdtemp.

2026-04-13  Paul Eggert  <eggert@cs.ucla.edu>

	tar: comment struct fdbase

	* src/common.h (struct fdbase): Add comment.

2026-04-13  Paul Eggert  <eggert@cs.ucla.edu>

	tar: ENFILE is like EMFILE

	* src/create.c (open_failure_recover):
	* src/misc.c (fdbase_opendir):
	Treat ENFILE like EMFILE.

2026-04-08  Pavel Raiskup (mirror bot)	<praiskup-mirroring@raiskup.cz>

	Merge remote-tracking branch 'source_repo/master' into ci

2026-04-08  Paul Eggert  <eggert@cs.ucla.edu>

	tar: incremental 'X' follows --one-top-level

	* src/incremen.c (purge_directory):
	Also respect --one-top-level when handling 'X'.

2026-04-08  Paul Eggert  <eggert@cs.ucla.edu>

	Simplify one_top_level_dir logic

	* src/tar.c (one_top_level_option): Remove.  All uses removed.
	All external uses changed to equivalent of !!one_top_level_dir.
	(decode_options): Set one_top_level_dir to be consistent with
	the old one_top_level_option.

2026-04-08  Paul Eggert  <eggert@cs.ucla.edu>

	--one-top-level now keeps "../" and ".../"

	* src/list.c (enforce_one_top_level): Do not strip prefixes like
	"../" (which should not be allowed unless -P) and ".../" (which
	are ordinary file names).  The "../" not being allowed should be
	addressed in a different way.

2026-04-08  Paul Eggert  <eggert@cs.ucla.edu>

	Disallow --one-top-level=''.

	* src/tar.c (decode_options): Do not accept an empty string
	as a relative file name.

2026-04-06  Pavel Raiskup (mirror bot)	<praiskup-mirroring@raiskup.cz>

	Merge remote-tracking branch 'source_repo/master' into ci

2026-04-06  Paul Eggert  <eggert@cs.ucla.edu>

	Prefer signed int in sparse.c

	* src/sparse.c (pax_dump_header_0, floorlog10)
	(pax_dump_header_1, struct ok_n_block_ptr, decode_num)
	(pax_decode_header): Prefer signed to unsigned integers
	where either will do, as this allows for better runtime
	checking for overflow.	The integers in question cannot
	be negative or greater than INTMAX_MAX anyway.

2026-04-04  Pavel Raiskup (mirror bot)	<praiskup-mirroring@raiskup.cz>

	Merge remote-tracking branch 'source_repo/master' into ci

2026-04-04  Paul Eggert  <eggert@cs.ucla.edu>

	tar: strip '/' from incremental 'X' entries

	Problem identified by Michał Majchrowicz and Marcin Wyczechowski,
	members of the AFINE Team.
	* gnulib.modules: Add mempcpy, which we were already using anyway.
	* src/incremen.c (purge_directory):
	Use a safer suffix for 'X' entries, too.
	Also, do not turn "/" to "//" or "//" to "///" (possible only
	if -P).

2026-03-22  Pavel Raiskup (mirror bot)	<praiskup-mirroring@raiskup.cz>

	Merge remote-tracking branch 'source_repo/master' into ci

2026-03-22  Paul Eggert  <eggert@cs.ucla.edu>

	Prefer UNNAMED to MAYBE_UNUSED

	* src/buffer.c, src/compare.c, src/exclist.c, src/extract.c:
	* src/sparse.c, src/tar.c, src/xheader.c:
	UNNAMED is for when an identifier is never used and so does not
	need a name.  Prefer it to MAYBE_UNUSED when that is the case.
	Also, drop MAYBE_UNUSED in some places where the identifier
	is always used.

2026-03-22  Paul Eggert  <eggert@cs.ucla.edu>

	Update tar.h comments

	* src/tar.h: Update comments.

2026-03-22  Paul Eggert  <eggert@cs.ucla.edu>

	Fix more -t/-x discrepancies

	Problem reported by Guillermo de Angel in:
	https://lists.gnu.org/r/bug-tar/2026-03/msg00007.html
	* THANKS: Add him, and sort.
	* src/extract.c (extract_dir, extract_file):
	* src/incremen.c (purge_directory):
	Do not call skip_member, as the caller now does that, and does it
	more reliably.
	* src/extract.c (extract_file):
	Mark file as skipped when we’ve read it.
	(extract_archive): Always call skip_member after extracting,
	as it suppresses the skip as needed.
	* src/incremen.c (try_purge_directory): Remove; no longer
	needed.  Move internals to purge_directory.
	* src/list.c (read_header): Do not treat LNKTYPE header as having
	size zero, as it can be nonzero (e.g., ‘pax -o linkdata’).
	Set info->skipped field according to how the header was read.
	(member_is_dir): Remove; no longer needed.
	(skim_member): Skip directory data too, unless it’s already been
	skipped (i.e., read).
	* tests/extrac32.at: New file.
	* tests/Makefile.am (TESTSUITE_AT):
	* tests/testsuite.at:
	Add it.
	* tests/skipdir.at (skip directory members):
	Fix test to match the correct behavior.
	This fixes a bug introduced in commit
	b009124ffde415515081db844d7a104e1d1c6c58
	dated 2025-05-12 17:17:21 +0300.

2026-03-22  Paul Eggert  <eggert@cs.ucla.edu>

	build: update gnulib submodule to latest

2026-03-12  Pavel Raiskup (mirror bot)	<praiskup-mirroring@raiskup.cz>

	Merge remote-tracking branch 'source_repo/master' into ci

2026-03-12  Paul Eggert  <eggert@cs.ucla.edu>

	Update NEWS for previous patch

2026-03-12  Marco Nenciarini  <marco.nenciarini@enterprisedb.com>
(tiny change)

	Respect --ignore-failed-read in file_removed_diag (bug#68075)

	* src/misc.c (file_removed_diag): Guard set_exit_status call
	with !ignore_failed_read_option, consistent with stat_diag and
	other diagnostic functions.
	* tests/filerem03.at: New test.
	* tests/testsuite.at: Include it.
	* tests/Makefile.am: Add it.

2026-03-10  Pavel Raiskup (mirror bot)	<praiskup-mirroring@raiskup.cz>

	Merge remote-tracking branch 'source_repo/master' into ci

2026-03-10  Paul Eggert  <eggert@cs.ucla.edu>

	Update NEWS for previous patch

2026-03-10  Weixie Cui	<cuiweixie@gmail.com>  (tiny change)

	Fix wrong fd in restore_parent_fd fallback path

	Use fstat(origfd) instead of fstat(parentfd) when verifying the
	alternatively-opened directory; parentfd is invalid in this branch.

2026-02-18  Pavel Raiskup (mirror bot)	<praiskup-mirroring@raiskup.cz>

	Merge remote-tracking branch 'source_repo/master' into ci

2026-02-18  Paul Eggert  <eggert@cs.ucla.edu>

	Document timestamp resolution more accurately

2026-01-30  Pavel Raiskup (mirror bot)	<praiskup-mirroring@raiskup.cz>

	Merge remote-tracking branch 'source_repo/master' into ci

2026-01-30  Paul Eggert  <eggert@cs.ucla.edu>

	tar: --one-top-level=DIR must be relative

	* src/tar.c (decode_options): Require --one-top-level operand
	to be relative.

2026-01-24  Pavel Raiskup (mirror bot)	<praiskup-mirroring@raiskup.cz>

	Merge remote-tracking branch 'source_repo/master' into ci

2026-01-24  Paul Eggert  <eggert@cs.ucla.edu>

	maint: pacify -Wzero-as-null-pointer-constant

	Recent Gnulib enables this warning, and it did find a bug
	in GNU Tar, so pacify GCC everywhere else by preferring
	NULL to 0 for pointers.

2026-01-24  Paul Eggert  <eggert@cs.ucla.edu>

	Fix EOF return from wordsplit_finish

	* lib/wordsplit.c (wordsplit_finish):
	Fix typo caught by -Wzero-as-null-pointer-constant

2026-01-24  Paul Eggert  <eggert@cs.ucla.edu>

	Sync bootstrap from gnulib

2026-01-24  Paul Eggert  <eggert@cs.ucla.edu>

	build: update gnulib and paxutils submodules to latest

	* src/extract.c: Include issymlinkat.h, not issymlink.h.

2026-01-24  Paul Eggert  <eggert@cs.ucla.edu>

	Update copyright years

	UPDATE_COPYRIGHT_USE_INTERVALS=1 \
	$HOME/src/gnu/gnulib/build-aux/update-copyright \
	  $(git ls-files | sed -e '/^gnulib$/d
				   /^paxutils$/d
				   /^COPYING$/d
				   /\/fdl.texi$/d')
	sed -i '2000,${
	    /^Copyright @copyright/d
	    s/^[0-9]*--\(2026 Free Software Foundation, Inc.\)/Copyright
	    (C) \1/
	  }' doc/tar.texi

2025-11-27  Pavel Raiskup (mirror bot)	<praiskup-mirroring@raiskup.cz>

	Merge remote-tracking branch 'source_repo/master' into ci

2025-11-27  Paul Eggert  <eggert@cs.ucla.edu>

	Fix commit typo when bringing back placeholders

	Problem reported by Pavel Raiskup in:
	https://lists.gnu.org/r/bug-tar/2025-11/msg00028.html
	* src/extract.c (contains_dot_dot): Bring back this function here,
	from its former location in src/names.c.  Make it static since
	it is used only in this compilation unit.

2025-11-27  Pavel Raiskup (mirror bot)	<praiskup-mirroring@raiskup.cz>

	Merge remote-tracking branch 'source_repo/master' into ci

2025-11-27  Paul Eggert  <eggert@cs.ucla.edu>

	Bring back placeholders

	They can still be useful if -h is used.  See Pavel Cahyna in:
	https://lists.gnu.org/r/bug-tar/2025-11/msg00026.html
	while we’re at it bring them back if -P is used,
	as they can still be useful there too.
	* src/extract.c (HAVE_BIRTHTIME, BIRTHTIME_EQ):
	Bring back these macros.
	(struct delayed_link, struct string_list):
	Bring back these structs.
	(delayed_link_table, delayed_link_head, delayed_link_tail):
	Bring back these static vars.
	(dl_hash, dl_compare, find_direct_ancestor)
	(find_delayed_link_source, create_placeholder_file)
	(apply_delayed_link, apply_delayed_links):
	Bring back these static functions.
	(mark_metadata_set): Rename from mark_after_links.  All uses
	changed.
	(extract_link, extract_symlink):
	Create placeholders as before, except only if -P or -h are used.
	(extract_finish): Deal with delayed links, as before.

2025-11-23  Pavel Raiskup (mirror bot)	<praiskup-mirroring@raiskup.cz>

	Merge remote-tracking branch 'source_repo/master' into ci

2025-11-23  Paul Eggert  <eggert@cs.ucla.edu>

	Support gnulib-style timestamps in checkpoint logs

	* gnulib.modules: Add nstrftime-limited, time_rz.  Sort.
	* src/checkpoint.c: Include <strftime.h>.
	(format_checkpoint_string): Use nstrftime instead of strftime.
	Also fix an obscure bug on platforms that lack tm_gmtoff+tm_zone by
	calling tzalloc on those platforms; if it fails, fall back
	on gmtime.
	Also, use fwrite instead of fprintf, since we typically know the
	length already and this gives us a more-accurate byte count
	in case there are partial writes.

2025-11-23  Paul Eggert  <eggert@cs.ucla.edu>

	build: update gnulib submodule to latest

2025-11-23  Paul Eggert  <eggert@cs.ucla.edu>

	Port to C23 qualifier-generic fns like strchr

	* src/checkpoint.c (getarg):
	* src/tar.c (expand_pax_option):
	Const-qualify results of strchr etc. if args are const-qualified.

2025-11-18  Pavel Raiskup (mirror bot)	<praiskup-mirroring@raiskup.cz>

	Merge remote-tracking branch 'source_repo/master' into ci

2025-11-18  Paul Eggert  <eggert@cs.ucla.edu>

	build: update gnulib submodule to latest

2025-11-16  Pavel Raiskup (mirror bot)	<praiskup-mirroring@raiskup.cz>

	Merge remote-tracking branch 'source_repo/master' into ci

2025-11-15  Paul Eggert  <eggert@cs.ucla.edu>

	Prefer countof to sizeof / sizeof

	C2y plans to introduce a new countof operator that will be
	convenient for GNU tar, so start using it now via Gnulib.
	* gnulib.modules: Add stdcountof-h.
	* lib/wordsplit.c, src/buffer.c, src/suffix.c, src/tar.c:
	Include stdcountof.h, and prefer countof (X) to sizeof X /
	sizeof *X.

2025-11-15  Pavel Raiskup (mirror bot)	<praiskup-mirroring@raiskup.cz>

	Merge remote-tracking branch 'source_repo/master' into ci

2025-11-15  Paul Eggert  <eggert@cs.ucla.edu>

	Port new extraction test to FreeBSD 15

	* tests/extrac31.at (extracting untrusted incremental):
	Port to FreeBSD 15 wording.

2025-11-15  Paul Eggert  <eggert@cs.ucla.edu>

	Port to compilers where COMMON_INLINE is static

	Problem found with clang 15.0 on CheriBSD.
	* src/names.c (namelist_match, register_match):
	Now plain static, not static COMMON_INLINE, since the later
	could mean the declaration is ‘static static’ which is
	not allowed.

2025-11-15  Paul Eggert  <eggert@cs.ucla.edu>

	Pacify clang 14 -Wbitwise-conditional-parentheses

	* src/common.h (add_printf):
	* src/sparse.c (decode_num):
	Parenthesize to pacify Apple clang version 14.0.0
	(clang-1400.0.29.202).

2025-11-15  Paul Eggert  <eggert@cs.ucla.edu>

	Skip sparse test on non-sparse file systems

	* tests/sparse05.at (listing sparse files bigger than 2^33 B):
	If there were problems generating BIGFILE remove it,
	as it has likely exhausted the file system.
	Problem found on Darwin 21.6 APFS.

2025-11-15  Paul Eggert  <eggert@cs.ucla.edu>

	Adjust to Gnulib strftime changes for macOS

	Stop using the fprintftime module, as as with recent Gnulib changes
	it breaks the build on macOS, and fixing this would drag in
	threading
	libraries and macOS-specific libraries that are overkill for tar.
	Instead, just use strftime; that’s good enough here and arguably
	better in case someone attacks tar with a huge time format string.
	* gnulib.modules: Remove fprintftime.
	* src/checkpoint.c: Do not include fprintftime.
	(format_checkpoint_string): Always output some useful info
	(a decimal
	seconds count), even if localtime fails. Do not output more than
	256 bytes of time info, as that’s likely a DoS attack.
	Stick with
	plain strftime, as fprintftime’s extra features are overkill
	here.

2025-11-15  Paul Eggert  <eggert@cs.ucla.edu>

	Port intmax macro to strict C11

	Needed for Apple clang version 14.0.0 (clang-1400.0.29.202).
	* src/common.h (intmax): Define macro only if _Generic works, and
	use _Generic in it rather that using EXPR_SIGNED.  This is needed
	to make the first argument of verify_expr an integer constant
	expression, which is required for strict C11.  Although GCC is
	smart enough to treat (1 ? 0 : V) as an integer constant
	expression even if V is an integer variable, C11 does not require
	support for this sort of thing.

2025-11-15  Paul Eggert  <eggert@cs.ucla.edu>

	Port new tests to Solaris 10 strerror

	* tests/extrac31.at: Adjust to Solaris 10 diagnostics.

2025-11-15  Paul Eggert  <eggert@cs.ucla.edu>

	Do not create empty placeholder files

	* src/extract.c (HAVE_BIRTHTIME, BIRTHTIME_EQ, struct delayed_link)
	(delayed_link_table, delayed_link_head delayed_link_tail)
	(struct string_list, dl_hash, dl_compare, find_direct_ancestor)
	(find_delayed_link_source, create_placeholder_file,
	apply_delayed_link)
	(apply_delayed_links): Remove.	All uses removed.
	(struct delayed_set_stat): New member metadata_set,
	replacing after_links.	All uses changed.
	(apply_nonancestor_delayed_set_stat): Arg METADATA_SET replaces
	the old AFTER_LINKS.  All callers changed.
	(extract_archive): Do not worry about "..", since openat2
	now does that for us.
	* src/names.c (first_dot_dot): Remove.	All uses removed.

2025-11-15  Paul Eggert  <eggert@cs.ucla.edu>

	Use openat2 to jailify the extraction directory

	This addresses CVE-2025-45582.
	* gnulib.modules: Add openat2.
	* src/misc.c (open_subdir): New static function.
	(fdbase_opendir): Use it.
	* src/tar.c (open_searchdir_how): New var, replacing and
	augmenting open_searchdir_flags.  All uses changed.
	* tests/extrac31.at: New file.
	* tests/Makefile (TESTSUITE_AT), tests/testuite.at: Add it.

2025-11-15  Paul Eggert  <eggert@cs.ucla.edu>

	Omit trailing white space and empty lines

	Standardize on “working directory”

2025-11-15  Paul Eggert  <eggert@cs.ucla.edu>

	Use fewer flags when opening directories

	This doesn’t change behavior; it is a refactoring for
	compatibility with a future patch that will use Linux’s
	openat2 syscall, which is pickier about flags.
	* src/tar.c (decode_options): When searching directories,
	do not use O_NOCTTY, O_NONBLOCK, and O_NOATIME.
	openat2 rejects all three flags if O_PATH is used.
	The first two flags are definitely irrelevant for directories,
	and O_NOATIME probably doesn’t matter either.

2025-11-15  Paul Eggert  <eggert@cs.ucla.edu>

	Improve performance of relative opendir

	* src/misc.c (fdbase_opendir): When the new directory is a
	subdirectory of the old one, open relative to the old one rather
	than relative all the way back to chdir_fd, and if that open fails
	for a non-EMFILE reason, keep rather than discard the old
	directory.

2025-11-15  Paul Eggert  <eggert@cs.ucla.edu>

	Work around Oracle Developer Studio compiler bug

	* src/create.c (dump_file0): Reword.

2025-11-15  Paul Eggert  <eggert@cs.ucla.edu>

	Cache parent directories

	Although this might help (or hurt) performance, the main
	motivation is to make it easier in future commits
	to prevent tarballs from escaping the extraction directory.
	* src/common.h: (BADFD): New constant.
	(struct fdbase): New type.
	* src/create.c (dump_file0): Use parent->fd instead of caching
	it into a local, as the latter approach is now awkward.
	* src/extract.c (extract_link): Don’t save errno unless needed.
	* src/misc.c (safer_rmdir): New arg F.	All callers changed.
	(maybe_backup_file): Construct full after_backup_name, now
	that find_backup_file_name no longer does that for us.
	(chdir_fd): Now static not extern, as other modules now use fdbase.
	(fdbase_cache): New static var.
	(fdbase_clear): New function.  Call it whenever removing
	or renaming directories or symlinks to directories.
	(fdbase_opendir): New static function.
	(fdbase, fdbase1): New functions.  Call them whenever the
	code formerly passed chdir_fd to a syscall.

2025-11-15  Paul Eggert  <eggert@cs.ucla.edu>

	Prefer issymlinkat

	* gnulib.modules: Add issymlinkat, already an indirect dependency.
	* src/extract.c: Include issymlink.h.
	(is_directory_link, open_output_file):
	Prefer issymlinkat to doing it by hand.

2025-11-15  Paul Eggert  <eggert@cs.ucla.edu>

	Make xclose static

	* src/buffer.c (xclose): Move from here ...
	* src/system.c: ... to here, and make it static.

2025-11-15  Paul Eggert  <eggert@cs.ucla.edu>

	Prefer O_PATH to O_SEARCH on Linux kernels

	* src/tar.c (decode_options): Prefer O_PATH to an O_SEARCH that is
	actually O_RDONLY.

2025-11-15  Paul Eggert  <eggert@cs.ucla.edu>

	Prefer streq/memeq when they will do

	Gnulib’s new streq and memeq functions make code a bit more
	readable and, we hope, a bit more reliable and easy to maintain.
	* gnulib.modules: Add stringeq.
	* lib/wordsplit.c (wordsplit_find_env):
	* src/buffer.c (check_compressed_archive, check_tty)
	(_open_archive, new_volume, try_new_volume)
	(drop_volume_label_suffix):
	* src/checkpoint.c (checkpoint_compile_action):
	* src/compare.c (process_rawdata, diff_symlink):
	* src/create.c (cachedir_file_p):
	* src/delete.c (delete_archive_members):
	* src/exclist.c (hg_addfn, get_vcs_ignore_file):
	* src/extract.c (ds_compare, remove_delayed_set_stat)
	(fixup_delayed_set_stat, apply_nonancestor_delayed_set_stat)
	(extract_link):
	* src/incremen.c (nfs_file_stat, compare_directory_canonical_names)
	(procdir):
	* src/list.c (read_header, decode_header):
	* src/misc.c (replace_prefix):
	* src/names.c (uname_to_uid, gname_to_gid, read_next_name)
	(name_compare):
	* src/sparse.c (check_data_region):
	* src/suffix.c (find_compression_suffix):
	* src/system.c (sys_detect_dev_null_output)
	(sys_child_open_for_compress, sys_child_open_for_uncompress):
	* src/tar.c (set_archive_format, tar_set_quoting_style)
	(optloc_eq, set_use_compress_program_option, decode_signal)
	(report_textual_dates, decode_options):
	* src/update.c (update_archive):
	* src/warning.c (set_warning_option):
	* src/xattrs.c (xattrs_xattrs_set):
	* src/xheader.c (xheader_keyword_override_p)
	(xheader_set_keyword_equal, locate_handler)
	(xheader_protected_keyword_p):
	Prefer memeq/streq to memcmp/strcmp when either will do.

2025-11-15  Paul Eggert  <eggert@cs.ucla.edu>

	Refactor to avoid duplication in "./" scanning

	* src/exclist.c (excluded_name):
	* src/misc.c (normalize_filename_x, must_be_dot_or_slash)
	(chdir_arg):
	Use dotslash or dotslashlen instead of doing things by hand.
	* src/misc.c (slashlen, dotslashlen): New functions.
	(safer_rmdir): Do not worry about unlinkat with AT_REMOVEDIR
	succeeding on ".", as POSIX prohibits it, and it does not succeed
	on any known platform. This simplifies the file name test.
	Continue to worry about "/" though, as POSIX does allow
	it to be removed.

2025-11-15  Paul Eggert  <eggert@cs.ucla.edu>

	chdir_id refactoring

	This prepares for future changes that need directory IDs.
	* src/common.h (struct chdir_id): New struct.
	* src/extract.c (extract_dir): Use chdir_id to avoid duplicate
	stats.
	* src/misc.c (struct wd): New member ID.
	(grow_wd): New function, extracted from chdir_arg and that
	also initializes id.err.
	(chdir_arg): Use it.  Initialize id.err.
	(chdir_id): New function.

2025-11-15  Paul Eggert  <eggert@cs.ucla.edu>

	Remove unreachable assignment to mtime.tv_nsec

	Caught by Oracle Developer Studio 12.6
	* src/incremen.c (read_incr_db_01): Remove unreachable code.

2025-11-15  Paul Eggert  <eggert@cs.ucla.edu>

	Omit duplicate declaration of ‘usage’

	* README-hacking: Add testing note.

2025-11-15  Paul Eggert  <eggert@cs.ucla.edu>

	Fix test to match paxutils quoting change

	* tests/incr08.at (filename normalization):
	Adjust test to match quoting change in paxutils.

2025-11-15  Paul Eggert  <eggert@cs.ucla.edu>

	Use Gnulib gendocs instead of our own

	I ported our fix into Gnulib so there’s no longer a need
	for a separate copy.
	* doc/Makefile.am (GENDOCS): Now in ../build-aux, not here.
	* doc/gendocs.sh, doc/gendocs_template: Remove.
	* gnulib.modules: Add gendocs.

2025-11-15  Paul Eggert  <eggert@cs.ucla.edu>

	maint: sync bootstrap, fdl.texi from Gnulib

	build: update gnulib and paxutils submodules to latest

2025-11-13  Pavel Raiskup (mirror bot)	<praiskup-mirroring@raiskup.cz>

	Merge remote-tracking branch 'source_repo/master' into ci

2025-11-13  Matteo Croce  <teknoraver@meta.com>  (tiny change)

	fix build error when compiling with --without-xattrs

	* src/extract.c (set_xattr):
	* src/xattrs.c (xattrs_xattrs_add, xattrs_xattrs_get,
	xattrs_xattrs_set):
	Add MAYBE_UNUSED.

2025-11-12  Pavel Raiskup (mirror bot)	<praiskup-mirroring@raiskup.cz>

	Merge remote-tracking branch 'source_repo/master' into ci

2025-11-12  David Leadbeater  <dgl@dgl.cx>  (tiny change)

	Quote arguments in diagnostic messages.

2025-10-19  Pavel Raiskup (mirror bot)	<praiskup-mirroring@raiskup.cz>

	Merge remote-tracking branch 'source_repo/master' into ci

2025-10-19  Sergey Poznyakoff  <gray@gnu.org>

	Version 1.35.90

2025-08-20  Pavel Raiskup (mirror bot)	<praiskup-mirroring@raiskup.cz>

	Merge remote-tracking branch 'source_repo/master' into ci

2025-08-20  Collin Funk  <collin.funk1@gmail.com>  (tiny change)

	maint: Update library names used by Gnulib.

	* src/Makefile.am (tar_LDADD):
	* tests/Makefile.am (LDADD): Update library names according
	to Gnulib.

2025-08-19  Pavel Raiskup (mirror bot)	<praiskup-mirroring@raiskup.cz>

	Merge remote-tracking branch 'source_repo/master' into ci

2025-08-19  Paul Eggert  <eggert@cs.ucla.edu>

	Avoid overrun when converting ns-resolution timestamps to text

	Caught by gcc -fsanitize=address.
	Inspired by Matthias Andree’s bug report in:
	https://lists.gnu.org/r/bug-tar/2025-08/msg00019.html
	though I found this bug via a simple "make check"
	with sanitization enabled.
	* src/common.h (TIMESPEC_STRSIZE_BOUND):
	Make room for leading '-', needed in addition to the '-' room
	supplied by SYSINT_BUFSIZE due to the way code_timespec works.

2025-08-14  Pavel Raiskup (mirror bot)	<praiskup-mirroring@raiskup.cz>

	Merge remote-tracking branch 'source_repo/master' into ci

2025-08-14  Paul Eggert  <eggert@cs.ucla.edu>

	Avoid hash_meta_directory int overflow

	* src/incremen.c (hash_directory_meta):
	Avoid possibility of signed integer overflow.

2025-08-14  Paul Eggert  <eggert@cs.ucla.edu>

	Use Gnulib’s same-inode module

	This is more portable to non-POSIX systems.
	However, don’t bother trying to port to systems
	where st_ino is not a scalar of type dev_t,
	as these systems no longer seem to be active targets
	and it’s not worth the maintenance hassle.
	* gnulib.modules: Add same-inode, now that we use it
	explicitly rather than indirectly.
	* src/compare.c (diff_link):
	* src/create.c (compare_links, restore_parent_fd):
	* src/incremen.c (compare_directory_meta, procdir):
	* src/extract.c (dl_compare, repair_delayed_set_stat)
	(apply_nonancestor_delayed_set_stat, extract_link)
	(apply_delayed_link):
	* src/names.c (add_file_id):
	* src/system.c (sys_file_is_archive, sys_detect_dev_null_output):
	Include same-inode.h, and prefer its macros and functions
	to doing things by hand.
	* src/create.c (struct link):
	* src/extract.c (struct delayed_set_stat, struct delayed_link):
	* src/incremen.c (struct directory):
	* src/names.c (struct file_id_list):
	Rename members to st_dev and st_ino so that SAME_INODE and
	PSAME_INODE can be used on the type.  All uses changed.
	* src/system.c (sys_compare_links): Remove.
	All uses replaced by psame_inode.

2025-08-08  Pavel Raiskup (mirror bot)	<praiskup-mirroring@raiskup.cz>

	Merge remote-tracking branch 'source_repo/master' into ci

2025-08-08  Collin Funk  <collin.funk1@gmail.com>

	manual: remove '.info' suffix in manual names passed to @xref

	Texinfo 7.2 began warning about the '.info' suffix in the
	manual names
	passed to @xref and similar commands.  They eventually plan to stop
	stripping the '.info' suffix internally which will lead to
	broken links
	in the manuals without this change.

	* doc/tar.texi (files): Remove '.info' suffix from manual name.

2025-07-27  Pavel Raiskup (mirror bot)	<praiskup-mirroring@raiskup.cz>

	Merge remote-tracking branch 'source_repo/master' into ci

2025-07-27  Paul Eggert  <eggert@cs.ucla.edu>

	--no-overwrite-dir no overwrite even temporarily

	Problem and fix reported by Pavel Cahyna in
	https://lists.gnu.org/r/bug-tar/2025-01/msg00000.html
	* src/extract.c (extract_dir): With --no-overwrite-dir,
	skip the chmod if the directory already exists.
	* tests/extrac23.at (--no-overwrite-dir on empty directory):
	Move the part of the test that looks at a nonempty directory ...
	* tests/extrac30.at: ... to this new file, because the test now
	must be run as non-root.  Adjust the test to match the new
	behavior.
	* tests/Makefile.am (TESTSUITE_AT), tests/testsuite.at: Add it.

2025-07-26  Pavel Raiskup (mirror bot)	<praiskup-mirroring@raiskup.cz>

	Merge remote-tracking branch 'source_repo/master' into ci

2025-07-26  Paul Eggert  <eggert@cs.ucla.edu>

	Use flexible array member in struct dumpdir

	* src/incremen.c: Include flexmember.h.
	(struct dumpdir): contents is now a flexible member, not a pointer.
	This is more idiomatic and slightly more efficient.
	(dumpdir_create0): Adjust to the new struct dumpdir layout.

2025-07-26  Paul Eggert  <eggert@cs.ucla.edu>

	Avoid undefined behavior in magic checking

	* src/buffer.c (check_compressed_archive):
	* src/list.c (read_header, decode_header):
	Use memcmp, not strcmp, when looking for magic strings in
	headers, since input headers are not guaranteed to be
	strings and strcmp has undefined behavior otherwise.

2025-07-26  Paul Eggert  <eggert@cs.ucla.edu>

	Port more code to UBSan, and fix alignment bug

	Problem with extract_file reported by Kirill Furman in:
	https://lists.gnu.org/r/bug-tar/2025-07/msg00003.html
	Since the UBSan thing seems to be a recurring issue,
	I fixed other instances of the problem that I found.
	Also, I noticed that the same line of code had another failure to
	conform to C23’s rules for pointers (an alignment issue
	not caught
	by UBSan), so I fixed that too.  None of these issues matter on
	practical production hosts.
	* src/common.h (charptr): New function.
	* src/buffer.c (available_space_after, short_read, flush_archive)
	(backspace_output, try_new_volume, simple_flush_read)
	(_gnu_flush_read, _gnu_flush_write):
	* src/compare.c (read_and_process):
	* src/create.c (write_eot, write_gnu_long_link)
	(dump_regular_file, dump_dir0):
	* src/extract.c (extract_file):
	* src/incremen.c (get_gnu_dumpdir):
	* src/list.c (read_header):
	* src/sparse.c (sparse_dump_region, sparse_extract_region):
	* src/system.c (sys_write_archive_buffer)
	(sys_child_open_for_compress, sys_child_open_for_uncompress):
	* src/update.c (append_file, update_archive):
	Use it.
	* src/buffer.c (set_next_block_after): Arg is now void *,
	not union block *, since it need not be a valid union block
	* pointer
	and this can matter on unusual or debugging implementations.
	Turn a loop into an if so that the code is O(1) not O(N).

2025-07-14  Pavel Raiskup (mirror bot)	<praiskup-mirroring@raiskup.cz>

	Merge remote-tracking branch 'source_repo/master' into ci

2025-07-14  Paul Eggert  <eggert@cs.ucla.edu>

	Pacify gcc -Wunterminated-string-initialization

	This diagnostic is new to GCC 15.
	* src/create.c (cachedir_file_p): Mark local as nonstring.

2025-06-20  Pavel Raiskup (mirror bot)	<praiskup-mirroring@raiskup.cz>

	Merge remote-tracking branch 'source_repo/master' into ci

2025-06-20  Paul Eggert  <eggert@cs.ucla.edu>

	Sync bootstrap from Gnulib

	build: update gnulib and paxutils submodules to latest

2025-06-12  Pavel Raiskup (mirror bot)	<praiskup-mirroring@raiskup.cz>

	Merge remote-tracking branch 'source_repo/master' into ci

2025-06-12  Paul Eggert  <eggert@cs.ucla.edu>

	Port short_read to UBSan

	Problem reported by Kirill Furman in:
	https://lists.gnu.org/r/bug-tar/2025-06/msg00002.html
	* src/buffer.c (short_read): Use (char *) record_start,
	instead of record_start->buffer, to avoid undefined behavior
	accessing past end of buffer.  In practice the undefined
	behavior is harmless unless running with -fsanitize=undefined
	or a similarly-picky implementation.

2025-06-02  Pavel Raiskup (mirror bot)	<praiskup-mirroring@raiskup.cz>

	Merge remote-tracking branch 'source_repo/master' into ci

2025-06-02  Sergey Poznyakoff  <gray@gnu.org>

	Bugfix

	* src/names.c (all_names_found): Exempt wildcard entries from
	hierarchy
	checking.

2025-05-14  Pavel Raiskup (mirror bot)	<praiskup-mirroring@raiskup.cz>

	Merge remote-tracking branch 'source_repo/master' into ci

2025-05-14  Sergey Poznyakoff  <gray@gnu.org>

	Fix spurious "Not found in archive" errors.

	* src/names.c (namelist_match_from): New function.
	(namelist_match): Rewrite as a wrapper over it.
	(register_match): New function.
	(name_match)" Update all possible matches in the name list.

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

2025-05-13  Sergey Poznyakoff  <gray@gnu.org>

	Minor changes

2025-05-12  Pavel Raiskup (mirror bot)	<praiskup-mirroring@raiskup.cz>

	Merge remote-tracking branch 'source_repo/master' into ci

2025-05-12  Sergey Poznyakoff  <gray@gnu.org>

	Handle directory members consistently when listing and when
	extracting.

	* src/list.c (skim_member): Recognize directory members using
	the same rules as during extraction.
	* tests/skipdir.at: New testcase.
	* tests/testsuite.at: Add new test.
	* tests/Makefile.am: Likewise.

2025-05-12  Pavel Raiskup (mirror bot)	<praiskup-mirroring@raiskup.cz>

	Merge remote-tracking branch 'source_repo/master' into ci

2025-05-12  Anssi Hannula  <anssi.hannula@bitwise.fi>  (tiny change)

	Fix missing type in mknodat() mode argument

	Per POSIX, the type of the file to be created should be OR'ed
	to the
	`mode` argument of mknodat().

	However, set_xattr() creates an empty file using mknodat()
	and does not
	do that.

	E.g. Linux kernel considers zero type as S_IFREG, so the code
	works on
	most systems.

	However, e.g. fakeroot, at least up to the current v1.36, does not
	consider 0 as S_IFREG, instead creating an invalid file, causing
	tar to
	enter an infinite retry loop when trying to create a file
	with xattrs
	under fakeroot.

	Since set_xattr is used only when extracting regular files,
	fix that
	by ORing its mode argument with S_IFREG.

2025-05-12  Pavel Raiskup (mirror bot)	<praiskup-mirroring@raiskup.cz>

	Merge remote-tracking branch 'source_repo/master' into ci

2025-05-12  Tobias Stoeckmann  <tobias@stoeckmann.org>	(tiny change)

	Fix typos

2025-05-08  Pavel Raiskup (mirror bot)	<praiskup-mirroring@raiskup.cz>

	Merge remote-tracking branch 'source_repo/master' into ci

2025-05-08  xiangjingsi  <xiangjingsi@qq.com>  (tiny change)

	Fix restoring extended attributes from global PAX headers

2025-05-07  Pavel Raiskup (mirror bot)	<praiskup-mirroring@raiskup.cz>

	Merge remote-tracking branch 'source_repo/master' into ci

2025-05-07  Sergey Poznyakoff  <gray@gnu.org>

	Upgrade paxutils.

2025-05-06  Sergey Poznyakoff  <gray@gnu.org>

	Fix typo

2025-05-06  Sergey Poznyakoff  <gray@gnu.org>

	Minor fix

	* src/extract.c (set_mode): Re-stat the file if current_mode_mask
	bits tell so.

2025-05-06  Pavel Raiskup (mirror bot)	<praiskup-mirroring@raiskup.cz>

	Merge remote-tracking branch 'source_repo/master' into ci

2025-05-06  Sergey Poznyakoff  <gray@gnu.org>

	Skip file or archive member if its transformed name is empty.

	* NEWS: Document changes.
	* doc/tar.texi: Document changes.
	* src/common.h (transform_stat_info): Change return value.
	(transform_name_fp): Change signature.
	(WARN_EMPTY_TRANSFORM): New constant.
	* src/create.c: Check return from transform_name.  Skip file, if it
	is false.
	* src/list.c (transform_stat_info): Return bool.
	(read_and): Skip member if transform_stat_info returns false.
	* src/transform.c (_transform_name_to_obstack): Change return type.
	Always allocate result in obstack.
	(transform_name_fp): Change arguments.	Return true on
	success (transformed string not empty).  Otherwise return false and
	don't change the source string.
	* src/warning.c: New warning class: empty-transform.
	* tests/extrac17.at: Use --warning=empty-transform.

2025-05-06  Sergey Poznyakoff  <gray@gnu.org>

	Minor fix

	* src/list.c (transform_stat_info): Modify argument pointer,
	not the global variable.

2025-04-30  Pavel Raiskup (mirror bot)	<praiskup-mirroring@raiskup.cz>

	Merge remote-tracking branch 'source_repo/master' into ci

2025-04-29  Paul Eggert  <eggert@cs.ucla.edu>

	Port to recent Gnulib hash_remove

	Problem reported by Bruno Haible in:
	https://lists.gnu.org/r/bug-tar/2025-04/msg00003.html
	* src/incremen.c (remove_directory): hash_delete → hash_remove.

2025-04-11  Pavel Raiskup (mirror bot)	<praiskup-mirroring@raiskup.cz>

	Merge remote-tracking branch 'source_repo/master' into ci

2025-03-14  Sergey Poznyakoff  <gray@gnu.org>

	Fix restoring permissions of intermediate directories with
	--skip-old-files

	Detailed bug report: https://savannah.gnu.org/bugs/index.php?66774

	* src/extract.c (update_interdir_set_stat): New function.
	(extract_dir): If the directory already exists, check if it
	has been created as intermediate directory earlier.  If so,
	update its delayed_set_stat data from archive.

	* tests/Makefile.am: Add new testcase.
	* tests/testsuite.at: Add new testcase.
	* tests/extrac28.at: New file.

2025-03-14  Sergey Poznyakoff  <gray@gnu.org>

	documentation: remove incorrect statement

	Reported in https://savannah.gnu.org/bugs/index.php?66704

2025-01-29  Paul Eggert  <eggert@cs.ucla.edu>

	doc: mention timestamp limits

2025-01-02  Pavel Raiskup (mirror bot)	<praiskup-mirroring@raiskup.cz>

	Merge remote-tracking branch 'source_repo/master' into ci

2025-01-02  Paul Eggert  <eggert@cs.ucla.edu>

	Adjust to recent Gnulib module renaming

	* gnulib.modules: stdbool was renamed to bool, etc.

2025-01-02  Paul Eggert  <eggert@cs.ucla.edu>

	build: update gnulib and paxutils submodules to latest

2025-01-02  Paul Eggert  <eggert@cs.ucla.edu>

	doc: fix man page copyright notice

	* doc/tar.1: Put copyright notice where the update procedure
	will update it properly, and fix it.

2025-01-02  Paul Eggert  <eggert@cs.ucla.edu>

	Update copyright years

	UPDATE_COPYRIGHT_USE_INTERVALS=1 \
	$HOME/src/gnu/gnulib/build-aux/update-copyright \
	  $(git ls-files | sed -e '/^gnulib$/d
				   /^paxutils$/d
				   /^COPYING$/d
				   /\/fdl.texi$/d')
	sed -i '2000,${
	    /^Copyright @copyright/d
	    s/^[0-9]*--\(2025 Free Software Foundation, Inc.\)/Copyright
	    (C) \1/
	  }' doc/tar.texi

2024-12-27  Pavel Raiskup (mirror bot)	<praiskup-mirroring@raiskup.cz>

	Merge remote-tracking branch 'source_repo/master' into ci

2024-12-27  Paul Eggert  <eggert@cs.ucla.edu>

	tests: port to test dirs where `pwd` != `pwd -P`

	Problem reported by Bruno Haible in:
	https://lists.gnu.org/r/bug-tar/2024-12/msg00003.html
	* tests/incr08.at: Use pwd -P, not plain pwd.

2024-12-27  Paul Eggert  <eggert@cs.ucla.edu>

	tests: port to testing in Linux /tmp

	* tests/selnx01.at: Discard restorecon output,
	as it contains "Warning no default label for ..."
	when run in Linux tmpfs on Fedora 40.

2024-11-06  Pavel Raiskup (mirror bot)	<praiskup-mirroring@raiskup.cz>

	Merge remote-tracking branch 'source_repo/master' into ci

2024-11-06  Paul Eggert  <eggert@cs.ucla.edu>

	Fix bad pointer usage in xsparse.c

	* scripts/xsparse.c (read_xheader): Avoid undefined behavior by
	accessing via null pointer sparse_map or out of its bounds when
	the input is invalid.  This means we no longer need the
	‘expect’
	local, so omit it for simplicity.

2024-11-06  Paul Eggert  <eggert@cs.ucla.edu>

	Port xsparse.c to AIX

	* scripts/xsparse.c (emalloc): Do not report failure when malloc
	(0) returns NULL, as it does on AIX.  Simply return a null
	pointer; that’s good enough for xsparse.c.

2024-11-06  Paul Eggert  <eggert@cs.ucla.edu>

	Fix xsparse.c big heap allocation bugs

	* scripts/xsparse.c (expand_sparse): Read into auto buffer,
	not heap.
	The heap code was wrong for two reasons: it called malloc just once
	in the try-again loop, and even when it succeeded it could have
	left so few bytes available in the heap that later stdio calls
	could fail.  Reading into the auto buffer might be a bit slower
	but speed is not an issue here and it’s better to be simple.

2024-11-04  Pavel Raiskup (mirror bot)	<praiskup-mirroring@raiskup.cz>

	Merge remote-tracking branch 'source_repo/master' into ci

2024-11-04  Sergey Poznyakoff  <gray@gnu.org>

	Remove non-ASCII comment text

	Update paxutils

2024-11-03  Pavel Raiskup (mirror bot)	<praiskup-mirroring@raiskup.cz>

	Merge remote-tracking branch 'source_repo/master' into ci

2024-11-02  Paul Eggert  <eggert@cs.ucla.edu>

	Add LG_BLOCKSIZE to omit some *, % ops

	* src/buffer.c (_flush_write, short_read, seek_archive)
	(_gnu_flush_write):
	* src/create.c (write_gnu_long_link, dump_regular_file)
	(dump_dir0):
	* src/delete.c (write_recent_bytes, flush_file)
	(delete_archive_members):
	* src/list.c (read_header):
	* src/sparse.c (sparse_dump_region, sparse_extract_region)
	(pax_dump_header_1):
	* src/tar.c (parse_opt):
	* src/update.c (append_file):
	Prefer shifting and masking to dividing and remaindering by
	BLOCKSIZE.  This reclaims some compiler optimizations lost
	by our recent preference for signed integers.
	* src/tar.h (LG_BLOCKSIZE): New constant, for shifting.

2024-11-02  Paul Eggert  <eggert@cs.ucla.edu>

	Improve sparse I/O performance

	* src/sparse.c (sparse_dump_region, sparse_extract_region):
	Don’t insist on reading and writing sparse files 512
	bytes at a time.  This resulted in a 4× to 6× performance
	improvement on my platform.

2024-11-02  Paul Eggert  <eggert@cs.ucla.edu>

	Simplify read_incr_db_01 malloc

	* src/incremen.c (read_incr_db_01): Replace arg initbuf with two
	args pbuf and pbufsize so that we can simplify memory allocation.
	Caller changed.  Omit now-unnecessary free, xstrdup, strlen.

2024-11-02  Paul Eggert  <eggert@cs.ucla.edu>

	Avoid malloc in change_tape_menu

	* src/buffer.c (change_tape_menu): Avoid unnecessary xstrdup.

2024-11-02  Paul Eggert  <eggert@cs.ucla.edu>

	Improve common.h comment

2024-11-02  Paul Eggert  <eggert@cs.ucla.edu>

	Count short read slop when seeking

	* src/buffer.c (short_read_slop): New static var.
	(get_archive_status): Treat anything other than fifos and sockets
	as potentially seekable; they’ll tell us if they aren’t,
	whereas
	fifos and sockets cannot be seekable.  Check named files for
	initial offset too, to deal with names like /dev/stdin.
	Do not worry about start_offset’s value if !seekable_archive,
	as it won’t be used.	Use short_read_slop.
	(short_read, try_new_volume, simple_flush_read, _gnu_flush_read):
	Set short_read_slop.

2024-11-02  Pavel Raiskup (mirror bot)	<praiskup-mirroring@raiskup.cz>

	Merge remote-tracking branch 'source_repo/master' into ci

2024-11-02  Paul Eggert  <eggert@cs.ucla.edu>

	Prefer other types to int in xattrs.c

	* src/xattrs.c (xattrs__acls_set) [HAVE_POSIX_ACLS]:
	Prefer acl_type_t to int for ACL types.
	(acls_get_text, xattrs_acls_get, xattrs_acls_set)
	(xattrs_xattrs_get, xattrs_selinux_get, xattrs_selinux_set)
	(xattrs_xattrs_set): Prefer bool for booleans.

2024-11-02  Paul Eggert  <eggert@cs.ucla.edu>

	Prever other types to int in warning.c

	* src/warning.c (set_warning_option): Prefer bool for boolean.

2024-11-02  Paul Eggert  <eggert@cs.ucla.edu>

	Prefer other types to int in transform.c

	* src/transform.c (add_char_segment, parse_xform_flags)
	(parse_transform_expr): Prefer char for char.
	(parse_transform_expr): Don’t assume strlen (expr) <= INT_MAX.

2024-11-02  Paul Eggert  <eggert@cs.ucla.edu>

	Avoid unlikely verbose_option overflow

	* src/tar.c (parse_opt, decode_options):
	Avoid undefined behavior if verbose_option overflows.

2024-11-02  Paul Eggert  <eggert@cs.ucla.edu>

	Prefer other types to int in system.c

	* src/system.c (is_regular_file, sys_exec_setmtime_script):
	Prefer bool for boolean.
	(sys_exec_command): Prefer char for char.

2024-11-02  Paul Eggert  <eggert@cs.ucla.edu>

	Prefer other types to int in sparse.c

	* src/sparse.c (oldgnu_get_sparse_info, star_get_sparse_info):
	Prefer char for char.

2024-11-02  Paul Eggert  <eggert@cs.ucla.edu>

	Prefer other types to int in names.c

	* src/names.c (uname_to_uid, gname_to_gid, handle_option)
	(make_file_name): Prefer bool for boolean.
	(struct name_elt, read_name_from_file): Prefer char for char.
	(handle_option): Invert sense of return value, for clarity.
	All uses changed.
	(merge_sort_sll, merge_sort, collect_and_sort_names):
	Don’t assume list length fits in int.  Use intptr_t not idx_t,
	since the bound is the size of all memory rather than one array.

2024-11-02  Paul Eggert  <eggert@cs.ucla.edu>

	Prefer other types to int in misc.c

	* src/misc.c (quote_copy_string, tar_savedir):
	Use bool for booleans.	All uses changed.
	(quote_copy_string): Use char for chars.
	(unquote_string): Return void, since nobody uses return value.
	(unquote_string): Check for overflow in escapes like \777.
	(wdcache): Now array of idx_t not int, since in theory it
	might contain values greater than INT_MAX.  All uses changed.

2024-11-02  Paul Eggert  <eggert@cs.ucla.edu>

	Prefer other types to int in map.c

	* src/map.c (map_read): Prefer bool for booleans.
	(owner_map_translate, group_map_translate):
	Return void, not int, as nobody uses the return value.

2024-11-02  Paul Eggert  <eggert@cs.ucla.edu>

	Fix some uses of int in list.c

	* src/list.c (decode_xform): Last arg is now int, not a void *
	pointer to that int.  All uses changed.
	(enforce_one_top_level): Don’t assume string length fits in int.
	(transform_stat_info): Prefer char to int for typeflag.
	All uses changed.
	(decode_header): Prefer bool for booleans.  All uses changed.
	(ugswidth): Now idx_t, not int, since in theory it could
	exceed INT_MAX.  All uses changed.
	(simple_print_header, print_for_mkdir): Don’t assume printf
	length
	fits in int, and similarly for length of user or group name.
	* src/transform.c (transform_name_fp): Last arg is now int,
	not void *.
	All uses changed.

2024-11-02  Paul Eggert  <eggert@cs.ucla.edu>

	Prefer other types to int in incremen.c

	* src/incremen.c (struct dumpdir_iter, dumpdir_first)
	(read_incr_db_01, dumpdir_ok, list_dumpdir):
	Prefer bool to int for booleans.  All uses changed.
	(read_incr_db_01): Don’t assume getline returns <= INT_MAX.
	(dumpdir_ok): Prefer char to int for chars.

2024-11-02  Paul Eggert  <eggert@cs.ucla.edu>

	Prefer other types to int in extract.c

	* src/extract.c (fd_chmod, extract_chdir, open_output_file)
	(extract_file, extract_link, extract_symlink, extract_node)
	(extract_fifo, tar_extractor_t, pepare_to_extract): Prefer char to
	int for typeflag, since it’s a char.	All uses changed.
	(fd_chmod): Use clearer code for errno.
	(extract_dir, extract_file, create_placeholder_file, extract_link)
	(extract_symlink, extract_node, extract_fifo, tar_extractor_t):
	Return bool true for success, false for failure.  All uses changed.
	(open_output_file): Prefer bool for boolean.
	(prepare_to_extract): Simplify by returning the extractor a null
	pointer, rather than storing through a pointer to an extractor.

2024-11-02  Paul Eggert  <eggert@cs.ucla.edu>

	Prefer other types to int in delete.c

	* src/delete.c (write_record): Arg is bool, not int.
	All callers changed.

2024-11-02  Paul Eggert  <eggert@cs.ucla.edu>

	Be a bit more consistent about comparing to zero

	* src/buffer.c (xclose, archive_is_dev, close_archive)
	(write_fatal_details, init_volume_number)
	(closeout_volume_number, new_volume, try_new_volume):
	* src/checkpoint.c (format_checkpoint_string):
	* src/compare.c (process_rawdata, diff_file, diff_dumpdir):
	* src/create.c (create_archive, restore_parent_fd, dump_file0):
	* src/delete.c (delete_archive_members):
	* src/exclist.c (cvs_addfn):
	* src/extract.c (set_mode, mark_after_links, delay_set_stat)
	(repair_delayed_set_stat, make_directories, file_newer_p)
	(maybe_recoverable, apply_nonancestor_delayed_set_stat)
	(extract_dir, open_output_file, find_delayed_link_source)
	(create_placeholder_file, extract_symlink, extract_node)
	(extract_fifo, apply_delayed_link):
	* src/incremen.c (update_parent_directory, scan_directory)
	(read_obstack, read_incr_db_2, write_directory_file)
	(try_purge_directory):
	* src/map.c (map_read):
	* src/misc.c (maybe_backup_file, undo_last_backup, chdir_do)
	(tar_savedir):
	* src/names.c (handle_file_selection_option, add_file_id)
	(handle_option, read_next_name, add_hierarchy_to_namelist)
	(collect_and_sort_names):
	* src/system.c (run_decompress_program, dec_to_env, time_to_env)
	(oct_to_env, str_to_env, chr_to_env, sys_exec_setmtime_script):
	* src/tar.c (get_date_or_file, parse_default_options)
	(decode_options, main):
	* src/unlink.c (flush_deferred_unlinks):
	* src/update.c (append_file):
	* src/xattrs.c (xattrs__acls_set, xattrs_xattrs_set):
	Prefer < 0 when looking at syscalls; prefer != 0 to nothing
	when testing an integer in a boolean context.
	This is for style, not substance; for example, it’s easier
	to read ‘if (wordsplit (...) != WRDSE_OK) ...’ than
	‘if (wordsplit (...)) ...’ if you don’t already know that
	wordsplit returns an enum rather than bool.
	* src/names.c (add_file_id, read_next_name, regex_usage_warning):
	* src/transform.c (parse_xform_flags):
	Return bool not int, possibly inverting sense so that true
	means OK.
	All callers changed.
	* src/tar.c (main): Report errno info if stdopen fails.

2024-11-02  Paul Eggert  <eggert@cs.ucla.edu>

	dumpdir_cmp signature

	* src/compare.c (dumpdir_cmp): Return char, not int.

2024-11-02  Paul Eggert  <eggert@cs.ucla.edu>

	Check for checkpoint string overflow

	It’s very unlikely, but would lead to undefined behavior.
	* src/checkpoint.c (format_checkpoint_string): Accept and return
	intmax_t, not idx_t.  All callers changed.  Check for integer
	overflow by using add_printf.  If overflow occurs, don’t bother
	with extending width.

2024-11-02  Paul Eggert  <eggert@cs.ucla.edu>

	Prefer int to idx_t for some small sizes

	* src/create.c (max_octal_val, to_octal, tar_copy_str)
	(tar_name_copy_str, to_base256, to_chars_subst, to_chars)
	(gid_to_chars, major_to_chars, minor_to_chars, mode_to_chars)
	(off_to_chars, time_to_chars, uid_to_chars, string_to_chars)
	(split_long_name, write_ustar_long_name, simple_finish_header):
	* src/list.c (from_header, gid_from_header, major_from_header)
	(minor_from_header, mode_from_header, off_from_header)
	(time_from_header, uid_from_header):
	Prefer int to idx_t where either will do because the buffer sizes
	are known to be small, as this can be a performance win on 32-bit
	platforms.  Also, in a few cases the values were negative, whereas
	idx_t is supposed to be nonnegative.

2024-11-02  Paul Eggert  <eggert@cs.ucla.edu>

	Pacify gcc -Wmissing-variable-declarations

	* src/buffer.c (start_offset): Now static.

2024-11-02  Paul Eggert  <eggert@cs.ucla.edu>

	Prefer other types to int in compare.c

	* src/compare.c (get_stat_data, verify_volume):
	Use bool for booleans.
	(verify_volume): Count headers with intmax_t, not int.

2024-11-02  Paul Eggert  <eggert@cs.ucla.edu>

	Prefer other types to int in checkpoint.c

	* src/checkpoint.c (checkpoint_state): Now enum, not int.
	(tty_cleanup): Now bool, not int.

2024-11-02  Paul Eggert  <eggert@cs.ucla.edu>

	Prefer other types to int in buffer.c

	This increases the volume number maximum from 2**31 - 1 to 2**63
	- 1.
	* src/buffer.c (record_index, inhibit_map, new_volume):
	Prefer bool to int for booleans.
	* src/buffer.c (volno, global_volno):
	* src/system.c (sys_exec_info_script):
	Prefer intmax_t to int.
	* src/buffer.c (increase_volume_number): Omit by-hand check for
	overflow that relied on undefined behavior.
	(new_volume): Check for that overflow here instead, without
	relying on undefined behavior.
	(print_stats): Avoid undefined behavior if printf sums overflow,
	and reliably treat printf error like overflow.
	* src/common.h (add_printf): New inline function.

2024-11-02  Paul Eggert  <eggert@cs.ucla.edu>

	Prefer other types to int in tar.c

	Use types that are more specific than ‘int’, if that is easy.
	* src/tar.c (after_date_option, xattrs_option, check_links_option)
	(confirm, confirm_file_EOF, set_xattr_option, optloc_eq)
	(get_date_or_file):
	Prefer bool to int.
	(tar_list_quoting_styles, tar_set_quoting_style, parse_opt):
	Prefer idx_t to int.
	(optloc_lookup, option_set_in_cl): Prefer enum option_class to int.
	(decode_signal): Avoid some pointer reallocation.
	(sort_mode_flag, hole_detection_types, set_old_files_option)
	(is_subcommand_class): Prefer enum to int.
	(parse_opt) [DEVICE_PREFIX]: Remove unused var.
	Simplify creation of device name.
	(find_argp_option_key, find_argp_option): Prefer char to int.
	(enum subcommand_class): Now named.
	(subcommand_class): Now char, not int.
	(decode_options): Check for unlikely int overflow.

2024-11-02  Paul Eggert  <eggert@cs.ucla.edu>

	Remove major, minor signedness assumption

	* src/common.h (uintmax): Remove; no longer used.
	* src/list.c (simple_print_header): Don’t assume major and minor
	agree in signedness.

2024-11-02  Paul Eggert  <eggert@cs.ucla.edu>

	Fix checkpoint_flush_actions width typo

	* src/checkpoint.c (checkpoint_flush_actions): long → intmax_t.

2024-11-02  Paul Eggert  <eggert@cs.ucla.edu>

	Fewer uses of uintmax_t in xheader.c

	* src/tar.h (struct xheader):
	* src/xheader.c (xheader_string_end):
	Use idx_t, not uintmax_t, for string length.
	* src/xheader.c (xheader_string_add):
	Avoid duplicate calls to strlen.
	(xheader_string_end): Remove by-hand check for size overflow;
	it’s not possible, as this is measuring allocated storage.

2024-11-02  Paul Eggert  <eggert@cs.ucla.edu>

	Prefer intmax_t for occurrence counts

	* src/common.h (struct name):
	* src/tar.c (occurrence_option, parse_opt):
	Use intmax_t, not uintmax_t, for occurrence counts.

2024-11-02  Paul Eggert  <eggert@cs.ucla.edu>

	Remove unnecessary casts

	Some of these date back to pre-C89.
	* src/buffer.c (backspace_output):
	* src/create.c (to_base256, gid_to_chars, major_to_chars)
	(minor_to_chars, off_to_chars, time_to_chars, uid_to_chars):
	* src/list.c (from_header, tartime):
	* src/map.c (owner_map_translate, group_map_translate):
	* src/system.c (sys_truncate):
	* src/utf8.c (utf8_init):
	* src/xattrs.c (acls_one_line):
	* src/xheader.c (xheader_string_end):
	Remove casts.
	* src/create.c (uintmax_to_chars): Remove.  All uses removed.
	(simple_finish_header): Use to_octal.

2024-11-02  Paul Eggert  <eggert@cs.ucla.edu>

	Check for setenv failures when running scripts

	* src/system.c (dec_to_env): Use umaxtostr for speed,
	since convenience isn’t needed here.
	(sys_exec_info_script, sys_exec_checkpoint_script):
	Check for setenv failure.

2024-11-02  Paul Eggert  <eggert@cs.ucla.edu>

	Prefer off_t to uintmax_t for continued_file_*

	* src/buffer.c (continued_file_size, continued_file_offset):
	Now off_t, not uintmax_t.  All uses changed.
	* src/common.h (UINTMAX_FROM_HEADER):
	* src/list.c (uintmax_from_header):
	Remove; unused.
	* src/list.c (simple_print_header):
	* src/xheader.c (volume_size_decoder, volume_offset_decoder):
	Treat offset as off_t, not uintmax_t.

2024-11-02  Paul Eggert  <eggert@cs.ucla.edu>

	Prefer idx_t to size_t in common.h

	* src/common.h (struct name): Prefer idx_t to size_t.
	(volume_label_count): Remove; unused.

2024-11-02  Paul Eggert  <eggert@cs.ucla.edu>

	Prefer idx_t to size_t in tar.h

	* src/tar.h (struct xheader, struct tar_stat_info):
	Prefer idx_t to size_t.  All uses changed.

2024-11-02  Paul Eggert  <eggert@cs.ucla.edu>

	Prefer idx_t to size_t in xheader.c

	* src/xheader.c (x_obstack_grow, x_obstack_blank)
	(xheader_format_name, xheader_ghdr_name, xheader_write)
	(struct xhdr_tab, locate_handler, decode_record, decx, decg)
	(xheader_read, xattr_encode_keyword, xheader_print_n)
	(xheader_string_end, dummy_decoder, atime_decoder, gid_decoder)
	(gname_decoder, linkpath_decoder, ctime_decoder, mtime_decoder)
	(path_decoder, sparse_path_decoder, size_decoder, uid_decoder)
	(uname_decoder, sparse_size_decoder, sparse_numblocks_decoder)
	(sparse_offset_coder, sparse_offset_decoder)
	(sparse_numbytes_coder, sparse_numbytes_decoder)
	(sparse_map_decoder, dumpdir_decoder, volume_label_decoder)
	(volume_size_decoder, volume_offset_decoder)
	(volume_filename_decoder, xattr_selinux_decoder)
	(xattr_acls_a_decoder, xattr_acls_d_decoder, xattr_coder)
	(xattr_decoder, sparse_major_decoder, sparse_minor_decoder):
	Prefer idx_t to size_t.

2024-11-02  Paul Eggert  <eggert@cs.ucla.edu>

	Prefer intmax_t to size_t in xheader.c

	* src/common.h (INTMAX_STRSIZE_BOUND): New constant.
	(SYSINT_BUFSIZE): Use it.
	* src/xheader.c (global_header_count, xheader_format_name):
	Prefer intmax_t to size_t, as the values are not sizes.

2024-11-02  Paul Eggert  <eggert@cs.ucla.edu>

	Omit unnecessary initialization in dunlink_alloc

	* src/unlink.c (dunlink_alloc): Remove unnecessary assignment
	to p->next.

2024-11-02  Paul Eggert  <eggert@cs.ucla.edu>

	Remove unused static vars in unlink.c

	* src/unlink.c (unlink_count, deferred_unlink_delay):
	Remove.  All uses removed.

2024-11-02  Paul Eggert  <eggert@cs.ucla.edu>

	Prefer idx_t to size_t in transform.c

	* src/transform.c (struct replace_segm, struct transform)
	(add_literal_segment, add_backref_segment, run_case_conv)
	(_single_transform_name_to_obstack): Prefer idx_t to size_t.

2024-11-02  Paul Eggert  <eggert@cs.ucla.edu>

	Prefer idx_t to size_t in xattrs.c

	* src/xattrs.c (xattr_map_free, xattr_map_add)
	(xheader_xattr_add, xattr_map_copy, struct xattrs_mask_map)
	(fixup_extra_acl_fields, xattrs_acls_cleanup, acls_get_text)
	(xattrs__acls_get_a, xattrs__acls_get_d, acls_one_line)
	(mask_map_realloc, xattrs_xattrs_get, xattrs__fd_set)
	(xattrs_matches_mask, xattrs_xattrs_set, xattrs_print_char)
	(xattrs_print): Prefer idx_t to size_t.

2024-11-02  Paul Eggert  <eggert@cs.ucla.edu>

	Prefer idx_t to size_t in tar.c

	* src/tar.c (strip_name_components, archive_names)
	(allocated_archive_names, tar_list_quoting_styles)
	(expand_pax_option, parse_opt):
	Prefer idx_t to size_t.
	(decode_options): Use a static word rather than going
	to to the bother of dynamically allocating an array.
	(main): Do not preallocate array.  Do not call ‘free’
	on a pointer that now might be to static storage.

2024-11-02  Paul Eggert  <eggert@cs.ucla.edu>

	Prefer idx_t to size_t in system.c

	* src/buffer.c (_flush_write): Return idx_t, not ssize_t,
	to accommodate system.c changes.  All uses changed.
	(_gnu_flush_write): Output correct errno value after write error.
	Simplify multi-volume mode.
	* src/system.c (sys_write_archive_buffer)
	(sys_child_open_for_compress, sys_exec_setmtime_script):
	Prefer idx_t to size_t.

2024-11-02  Paul Eggert  <eggert@cs.ucla.edu>

	Streamline compression suffix detection

	* src/suffix.c (struct compression_suffix):
	Use arrays rather than pointers that need relocation.
	All uses changed.
	(compression_suffixes): Now const.
	Omit trailing null entry; all uses changed.
	(find_compression_suffix): Simplify length calculations.
	No longer any need to call strlen.

2024-11-02  Paul Eggert  <eggert@cs.ucla.edu>

	Fewer uses of size_t in suffix.c

	* src/suffix.c (struct compression_suffix)
	(find_compression_suffix, set_compression_program_by_suffix)
	(strip_compression_suffix): Prefer idx_t to size_t.

2024-11-02  Paul Eggert  <eggert@cs.ucla.edu>

	Fewer uses of size_t in sparse.c

	* src/sparse.c (struct tar_sparse_optab, dump_zeros)
	(tar_sparse_dump_region, tar_sparse_extract_region)
	(zero_block_p, sparse_add_map, sparse_dump_region)
	(sparse_extract_region, sparse_dump_file, sparse_extract_file)
	(check_data_region, sparse_diff_file, oldgnu_get_sparse_info)
	(oldgnu_store_sparse_info, oldgnu_dump_header)
	(star_get_sparse_info, pax_dump_header_0):
	Prefer idx_t to size_t.

2024-11-02  Paul Eggert  <eggert@cs.ucla.edu>

	Adjust better to Gnulib signed-int read changes

	The 2024-08-09 Gnulib changes that caused some modules prefer
	signed types to size_t means that Tar should follow suit.
	* src/buffer.c (short_read):
	* src/system.c (sys_child_open_for_compress)
	(sys_child_open_for_uncompress):
	rmtread and safe_read return ptrdiff_t not idx_t;
	don’t rely on implementation defined conversion.
	* src/misc.c (blocking_read): Never return a negative number.
	Return idx_t, not ptrdiff_t, with the same convention for EOF
	and error as the new full_read.  All callers changed.
	* src/sparse.c (sparse_dump_region, check_sparse_region)
	(check_data_region):
	* src/update.c (append_file):
	full_read no longer returns SAFE_READ_ERROR for I/O error;
	instead it
	returns the number of bytes successfully read, and sets errno.
	Adjust to this.
	* src/system.c (sys_child_open_for_uncompress):
	Rewrite to avoid need for goto and label.

2024-11-02  Paul Eggert  <eggert@cs.ucla.edu>

	Simplify name_buffer initialization

	* src/names.c (name_init): Remove no-longer-needed initialization
	of name_buffer, name_buffer_length.  It was confusing anyway,
	since it caused name_buffer_length to not equal the length of
	name_buffer.

2024-11-02  Paul Eggert  <eggert@cs.ucla.edu>

	Simplify add_hierarchy_to_namelist allocation

	* src/names.c (add_hierarchy_to_namelist):
	Use xpalloc rather than a complicated homebrew heuristic.

2024-11-02  Paul Eggert  <eggert@cs.ucla.edu>

	Remove xattrs_clear_setup

	It’s never actually called.
	* src/xattrs.c (clear_mask_map, xattrs_clear_setup):
	Remove.  All uses removed.

2024-11-02  Paul Eggert  <eggert@cs.ucla.edu>

	Remove name_term

	It’s never actually called.
	* src/names.c (name_term): Remove.  All uses removed.

2024-11-02  Paul Eggert  <eggert@cs.ucla.edu>

	Diagnose sys_exec_info_script failures

	* src/system.c (sys_exec_info_script): Diagnose failures in
	getline, fclose.  Don’t worry about freeing memory
	as caller will immediately exit anyway.

2024-11-02  Paul Eggert  <eggert@cs.ucla.edu>

	Pacify GCC in info_attach_exclist

	* src/exclist.c (info_attach_exclist): Remove unnecessary test
	for whether dir and ex are null.  GCC complains about the first
	one in some cases.  Use C99-style decls.

2024-11-02  Paul Eggert  <eggert@cs.ucla.edu>

	Fewer uses of size_t in names.c

	* src/names.c (name_buffer_length, read_name_from_file)
	(copy_name, all_names_found, add_hierarchy_to_namelist)
	(rebase_child_list, make_file_name, stripped_prefix_len):
	Prefer idx_t to size_t.

2024-11-02  Paul Eggert  <eggert@cs.ucla.edu>

	Fewer uses of size_t in misc.c

	* src/misc.c (assign_string_n, quote_copy_string)
	(normalize_filename, replace_prefix, remove_any_file)
	(blocking_read, wd_alloc, wdcache_count, chdir_arg, chdir_do)
	(read_diag_details, struct namebuf, namebuf_name):
	Prefer idx_t to size_t.

2024-11-02  Paul Eggert  <eggert@cs.ucla.edu>

	Fewer uses of size_t in list.c

	* src/list.c (recent_long_name_blocks, recent_long_link_blocks)
	(read_header, from_header, gid_from_header, major_from_header)
	(minor_from_header, mode_from_header, off_from_header)
	(time_from_header, uid_from_header, uintmax_from_header)
	(tartime): Prefer idx_t to size_t.

2024-11-02  Paul Eggert  <eggert@cs.ucla.edu>

	Fewer uses of size_t in incremen.c

	* src/incremen.c (struct dumpdir, dumpdir_create0, struct
	dumpdir_iter)
	(dumpdir_next, dumpdir_size, make_directory)
	(dirlist_replace_prefix, rebase_directory, makedumpdir)
	(maketagdumpdir, append_incremental_renames, read_obstack)
	(read_incr_db_2, get_gnu_dumpdir, try_purge_directory)
	(list_dumpdir): Prefer idx_t to size_t.

2024-11-02  Paul Eggert  <eggert@cs.ucla.edu>

	Fewer uses of size_t in extract.c

	* src/extract.c (struct delayed_set_stat, struct delayed_link)
	(delay_set_stat, apply_nonancestor_delayed_set_stat)
	(extract_file): Prefer idx_t to size_t.
	(struct delayed_set_stat): Remove unused member xattr_map_size.

2024-11-02  Paul Eggert  <eggert@cs.ucla.edu>

	Fewer uses of size_t in exclist.c

	* src/exclist.c (hg_addfn): Prefer idx_t to size_t.

2024-11-02  Paul Eggert  <eggert@cs.ucla.edu>

	Fewer uses of size_t in delete.c

	* src/delete.c (write_recent_blocks, write_recent_bytes):
	Prefer idx_t to size_t.

2024-11-02  Paul Eggert  <eggert@cs.ucla.edu>

	Fewer uses of size_t in create.c

	* src/create.c (struct exclusion_tag, to_octal, tar_copy_str)
	(tar_name_copy_str, to_base256, to_chars_subst, to_chars)
	(gid_to_chars, major_to_chars, minor_to_chars, mode_to_chars)
	(off_to_chars, time_to_chars, uid_to_chars, uintmax_to_chars)
	(string_to_chars, start_private_header, write_gnu_long_link)
	(split_long_name, write_ustar_long_name, simple_finish_header)
	(dump_dir0, ensure_slash, create_archive):
	Prefer idx_t to size_t.

2024-11-02  Paul Eggert  <eggert@cs.ucla.edu>

	Fewer uses of size_t in compare.c

	* src/compare.c (read_and_process): Prefer idx_t to size_t.

2024-11-02  Paul Eggert  <eggert@cs.ucla.edu>

	Simplify checkpoint_action allocation

	* src/checkpoint.c: Include <flexmember.h>.
	(struct checkpoint_action): New member commandbuf.
	(checkpoint_action_tail): Now pointer to pointer,
	to simplify updating.  All uses changed.
	(alloc_action): New arg quoted_string, to lessen number of
	separate allocations.  All uses changed.

2024-11-02  Paul Eggert  <eggert@cs.ucla.edu>

	checkpoint_total_format is now const

	* src/checkpoint.c (checkpoint_total_format):
	Now const, and local to format_checkpoint_string.

2024-11-02  Paul Eggert  <eggert@cs.ucla.edu>

	Fewer uses of size_t in checkpoint.c

	* src/checkpoint.c (copy_string_unquote, getarg)
	(format_checkpoint_string): Prefer idx_t to size_t.
	(copy_string_unquote): Simplify by using ximemdup0.
	(getarg): Avoid quadratic reallocation behavior by
	using xpalloc.

2024-11-02  Paul Eggert  <eggert@cs.ucla.edu>

	Fewer uses of size_t in buffer.c

	* src/buffer.c (flush_write_ptr, flush_bufmap, bufmap_locate):
	(struct zip_magic, available_space_after, _flush_write)
	(short_read, flush_archive, try_new_volume)
	(gnu_add_multi_volume_header, simple_flush_read)
	(simple_flush_write, _gnu_flush_read, _gnu_flush_write)
	(gnu_flush_write): Prefer idx_t to size_t when either will do, as
	signed types are typically safer.  For a tiny value in memory,
	just use ‘char’.

2024-10-31  Pavel Raiskup (mirror bot)	<praiskup-mirroring@raiskup.cz>

	Merge remote-tracking branch 'source_repo/master' into ci

2024-10-31  Sergey Poznyakoff  <gray@gnu.org>

	Don't assume archive read from stdin starts at offset 0

	* src/buffer.c (start_offset): New variable.
	(get_archive_status): If reading from seekable stdin, store the
	position in the stream corresponding to record_start in
	start_offset.
	(seek_archive): Compute current offset relative to start_offset.

2024-10-25  Pavel Raiskup (mirror bot)	<praiskup-mirroring@raiskup.cz>

	Merge remote-tracking branch 'source_repo/master' into ci

2024-10-25  Sergey Poznyakoff  <gray@gnu.org>

	Add missing safety check

	* src/system.c (sys_exec_info_script): Check if fdopen succeded.
	Fix by Matteo Croce.

2024-10-25  Pavel Raiskup (mirror bot)	<praiskup-mirroring@raiskup.cz>

	Merge remote-tracking branch 'source_repo/master' into ci

2024-10-25  Sergey Poznyakoff  <gray@gnu.org>

	Remove useless check

	* src/exclist.c (info_attach_exclist): Don't check whether dir
	is NULL. It can't be.

2024-10-25  Pavel Raiskup (mirror bot)	<praiskup-mirroring@raiskup.cz>

	Merge remote-tracking branch 'source_repo/master' into ci

2024-10-25  Sergey Poznyakoff  <gray@gnu.org>

	Bugfix

	This fixes an extra argument left over in a function call by commit
	0dfcfa4aa4.  Reported by Matteo Croce.

	* src/buffer.c (_open_archive): Fix extra argument to paxfatal.

2024-09-12  Pavel Raiskup  <praiskup@redhat.com>

	Fix the build from git-head

	https://lists.gnu.org/archive/html/bug-tar/2024-09/msg00000.html

2024-08-19  Pavel Raiskup (mirror bot)	<praiskup-mirroring@raiskup.cz>

	Merge remote-tracking branch 'source_repo/master' into ci

2024-08-19  Paul Eggert  <eggert@cs.ucla.edu>

	Fewer macros in xheader.c

	* src/xheader.c (HEADER_TEMPLATE):
	Remove.  All uses replaced with definiens.
	(XHDR_PROTECTED, XHDR_GLOBAL): Now constants, not macros.

2024-08-19  Paul Eggert  <eggert@cs.ucla.edu>

	Fewer macros in xattrs.c

	* src/xattrs.c (XATTRS_PREFIX, XATTRS_PREFIX_LEN, USER_DOT_PFX):
	Now constants, not macros.

2024-08-19  Paul Eggert  <eggert@cs.ucla.edu>

	Fewer macros in unlink.c

	* src/unlink.c (IS_CWD): Now a (lower-cased) function.

2024-08-19  Paul Eggert  <eggert@cs.ucla.edu>

	Fewer macros in transform.c

	* src/transform.c (CASE_CTL_RESET): Remove, replacing with one
	instance of code (with a goto, alas).  Still a bit clearer,
	I think.

2024-08-19  Paul Eggert  <eggert@cs.ucla.edu>

	Fewer macros in tar.c

	* src/tar.c (FORMAT_MASK, TAR_SIZE_SUFFIXES, SUBCL_READ)
	(SUBCL_WRITE, SUBCL_UPDATE, SUBCL_TEST, SUBCL_OCCUR)
	(IS_SUBCOMMAND_CLASS, NS_PRECISION_FORMAT_MASK):
	Now constants or (lower-cased) functions, not macros.
	(subcommand_class):
	Replace hopeful comments with code implementing them.

2024-08-19  Paul Eggert  <eggert@cs.ucla.edu>

	Fewer macros in tar.h

	* src/tar.h (REGTYPE, AREGTYPE, SYMTYPE, BLKTYPE, FIFOTYPE)
	(XHDTYPE, XGLTYPE, TSUID, TSGID, TSVTX, TUREAD, TUWRITE, TUEXEC)
	(TGREAD, TGWRITE, TGEXEC, TOREAD, TOWRITE, TOEXEC)
	(SPARSES_IN_EXTRA_HEADER, SPARSES_IN_OLDGNU_HEADER)
	(SPARSES_IN_SPARSE_HEADER, GNUTYPE_DUMPDIR, GNUTYPE_LONGLINK)
	(GNUTYPE_LONGNAME, GNUTYPE_MULTIVOL, GNUTYPE_SPARSE)
	(GNUTYPE_VOLHDR, SOLARIS_XHDTYPE, SPARSES_IN_STAR_HEADER)
	(SPARSES_IN_STAR_EXT_HEADER, BLOCKSIZE):
	Now constants, not macros.

2024-08-19  Paul Eggert  <eggert@cs.ucla.edu>

	Fewer macros in system.c

	* src/system.c (PREAD, PWRITE): Now constants, not macros.

2024-08-19  Paul Eggert  <eggert@cs.ucla.edu>

	Fewer macros in names.c

	* src/names.c (EXCLUDE_OPTIONS, INCLUDE_OPTIONS):
	Now (lowercased) functions, not macros.
	(SUCCESSOR): Remove, replacing uses with definiens.

2024-08-19  Paul Eggert  <eggert@cs.ucla.edu>

	Fewer macros in incremen.c

	* src/incremen.c (DIRF_INIT, DIRF_NFS, DIRF_FOUND, DIRF_NEW)
	(DIRF_RENAMED, DIR_IS_INITED, DIR_IS_NFS, DIR_IS_FOUND)
	(DIR_IS_RENAMED, DIR_SET_FLAG, DIR_CLEAR_FLAG, NFS_FILE_STAT)
	(PD_FORCE_CHILDREN, PD_FORCE_INIT, PD_CHILDREN)
	(TAR_INCREMENTAL_VERSION, TEMP_DIR_TEMPLATE):
	Now constants or (lowercased) functions, not macros.
	(ST_DEV_MSB) [!HAVE_ST_FSTYPE_STRING]: Remove.
	Replace only use with something simpler.

2024-08-19  Paul Eggert  <eggert@cs.ucla.edu>

	Fewer macros in extract.c

	* src/extract.c (ALL_MODE_BITS, RECOVER_NO, RECOVER_OK)
	(RECOVER_SKIP): Now constants or inline functions, not macros.
	(maybe_recoverable): Return enum recover, not int.

2024-08-19  Paul Eggert  <eggert@cs.ucla.edu>

	Fewer macros in create.c

	* src/create.c (CACHEDIR_SIGNATURE, CACHEDIR_SIGNATURE_SIZE)
	(MAX_VAL_WITH_DIGITS, MAX_OCTAL_VAL): Now constants or
	inline functions or removed, instead of macros.
	(max_octal_val): Accept size rather than type.

2024-08-19  Paul Eggert  <eggert@cs.ucla.edu>

	Fewer macros in buffer.c

	* src/buffer.c (READ_ERROR_MAX, NMAGIC, VOL_SUFFIX):
	Now constants rather than macros.  Rename NMAGIC to n_zip_magic.

2024-08-19  Paul Eggert  <eggert@cs.ucla.edu>

	Fewer macros in common.h

	In common.h, replace macros with constants or functions when that
	is easy.  This makes code a bit more reliable (functions evaluate
	their args exactly once) and easier to debug (many debugging
	environments cannot access macros).
	* src/common.h (CHKBLANKS): Remove.  All uses removed.
	(NAME_FIELD_SIZE, PREFIX_FIELD_SIZE, UNAME_FIELD_SIZE)
	(GNAME_FIELD_SIZE, TAREXIT_SUCCESS, TAREXIT_DIFFERS)
	(TAREXIT_FAILURE, LG_8, LG_256, DEFAULT_CHECKPOINT)
	(MAX_OLD_FILES, TF_READ, TF_WRITE, TF_DELETED, XFORM_REGFILE)
	(XFORM_LINK, XFORM_SYMLINK, XFORM_ALL, WARN_ALONE_ZERO_BLOCK)
	(WARN_BAD_DUMPDIR, WARN_CACHEDIR, WARN_CONTIGUOUS_CAST)
	(WARN_FILE_CHANGED, WARN_FILE_IGNORED, WARN_FILE_REMOVED)
	(WARN_FILE_SHRANK, WARN_FILE_UNCHANGED, WARN_FILENAME_WITH_NULS)
	(WARN_IGNORE_ARCHIVE, WARN_IGNORE_NEWER, WARN_NEW_DIRECTORY)
	(WARN_RENAME_DIRECTORY, WARN_SYMLINK_CAST, WARN_TIMESTAMP)
	(WARN_UNKNOWN_CAST, WARN_UNKNOWN_KEYWORD, WARN_XDEV)
	(WARN_DECOMPRESS_PROGRAM, WARN_EXISTING_FILE, WARN_XATTR_WRITE)
	(WARN_RECORD_SIZE, WARN_FAILED_READ, WARN_MISSING_ZERO_BLOCKS)
	(WARN_VERBOSE_WARNINGS, WARN_ALL, EXCL_DEFAULT, EXCL_RECURSIVE)
	(EXCL_NON_RECURSIVE): Now enum constants rather than macros.
	(time_option_initialized, isfound, wasfound, warning_enabled):
	Now functions rather than macros TIME_OPTION_INITIALIZED, ISFOUND,
	WASFOUND, WARNING_ENABLED.  All uses changed.
	(OLDER_STAT_TIME, OLDER_TAR_STAT_TIME, EXTRACT_OVER_PIPE)
	(TAR_ARGS_INITIALIZER): Remove.  All uses replaced with their
	definiens or equivalent.

2024-08-19  Paul Eggert  <eggert@cs.ucla.edu>

	Fix non-ASCII in sparse.c

2024-08-19  Paul Eggert  <eggert@cs.ucla.edu>

	Prefer function to COPY_BUF macro

	* src/sparse.c (struct ok_n_block_ptr): New type.
	(decode_num): Revamp API so that it does the work of both
	the old decode_num and the old COPY_BUF.  Always read to the
	next newline even if there is a lot of junk in between.
	(pax_decode_header): Use the new API.
	(COPY_BUF): Remove.

2024-08-19  Paul Eggert  <eggert@cs.ucla.edu>

	Prefer function to COPY_STRING macro

	* src/sparse.c (struct block_ptr):
	New type, to allow a functional style.
	(dump_str_nl, floorlog10): New static functions.
	(COPY_STRING): Remove.	All uses replaced by dump_str_nl.
	(pax_dump_header_1): Use floorlog10 instead of creating a string.
	Simplify size calculation.

2024-08-19  Paul Eggert  <eggert@cs.ucla.edu>

	Fix string size bound calculation

	* src/common.h (UINTMAX_STRSIZE_BOUND):
	Fix typo that luckily didn’t break anything.

2024-08-19  Paul Eggert  <eggert@cs.ucla.edu>

	maint: switch from ERROR to paxerror etc

	Prefer functions like ‘paxerror’ to macros like ‘ERROR’.
	The functions have cleaner semantics, and calls are
	easier to read.

2024-08-19  Paul Eggert  <eggert@cs.ucla.edu>

	build: update gnulib and paxutils submodules to latest

2024-08-15  Pavel Raiskup (mirror bot)	<praiskup-mirroring@raiskup.cz>

	Merge remote-tracking branch 'source_repo/master' into ci

2024-08-15  Paul Eggert  <eggert@cs.ucla.edu>

	Adjust to verror change for program name

	* configure.ac (ENABLE_ERROR_PRINT_PROGNAME):
	Adjust to match new Gnulib behavior.

2024-08-15  Pavel Raiskup (mirror bot)	<praiskup-mirroring@raiskup.cz>

	Merge remote-tracking branch 'source_repo/master' into ci

2024-08-15  Paul Eggert  <eggert@cs.ucla.edu>

	build: update gnulib and paxutils submodules to latest

2024-08-15  Paul Eggert  <eggert@cs.ucla.edu>

	Fix duplicate write_error_details decl

	* src/common.h (write_error_details): Remove decl
	that belongs to paxutils.

2024-08-15  Paul Eggert  <eggert@cs.ucla.edu>

	Fix minor diagnostic discrepancies in incrementals

	* src/incremen.c (read_directory_file, get_gnu_dumpdir):
	Be more consistent about fatal errors.

2024-08-15  Paul Eggert  <eggert@cs.ucla.edu>

	Add verror module

	* gnulib.modules: Add verror; paxlib will need this.

2024-08-15  Paul Eggert  <eggert@cs.ucla.edu>

	Use idx_t for write_fatal_details size

	* src/buffer.c (write_fatal_details): Prefer idx_t to size_t
	for object size.

2024-08-15  Paul Eggert  <eggert@cs.ucla.edu>

	Use intmax_t for read_incr_db_01 line numbers

	* src/incremen.c (read_incr_db_01): Don’t assume line numbers
	are less than LONG_MAX.

2024-08-15  Paul Eggert  <eggert@cs.ucla.edu>

	Avoid need for base64_init and extra table

	Simplify the code by assuming C99 initializers.
	* src/list.c (base_64_digits): Remove.
	(base64_map): Now a constant.  Now has its (old value + 1) % 65,
	as that’s the only easy portable way to do it with a static
	initializer (even on platforms where CHAR_BIT != 8); all uses
	changed.
	(base64_init): Remove; only use removed.
	(from_header): Adjust to new values in base64_map.

	* src/list.c (base_64_digits): Remove; no longer needed.
	(base64_map): Now const, initialized statically, and with
	invalid entries being 0 not 64, and with valid entries
	being 1 greater than before.

2024-08-15  Paul Eggert  <eggert@cs.ucla.edu>

	Remove cast from from_header

	* src/list.c (from_header): Reword to avoid a cast
	to unsigned char.

2024-08-15  Paul Eggert  <eggert@cs.ucla.edu>

	Prefer signed to unsigned when decoding options

	* src/tar.c (assert_format, decode_options):
	Prefer signed to unsigned integers.
	(optloc_save): Prefer enum to unsigned integer.
	Simplify allocation.
	(decode_options): No need to call ngettext for a value known
	to be plenty large.

2024-08-15  Paul Eggert  <eggert@cs.ucla.edu>

	Don’t assume pid fits in unsigned long

	* src/system.c (sys_wait_command): Convert pid_t to intmax_t,
	not to unsigned long.

2024-08-15  Paul Eggert  <eggert@cs.ucla.edu>

	Avoid casts in tar_checksum

	* src/list.c (tar_checksum, from_header):
	Recode to avoid casts.

2024-08-15  Paul Eggert  <eggert@cs.ucla.edu>

	Support >UINT_MAX lines in map files

	* src/map.c (parse_id, map_read): Prefer intmax_t to unsigned
	for line numbers.

2024-08-15  Paul Eggert  <eggert@cs.ucla.edu>

	Prefer signed integer in struct directory

	* src/incremen.c (struct directory):
	Prefer int to unsigned where either will do.

2024-08-15  Paul Eggert  <eggert@cs.ucla.edu>

	Simplify make_directory via xizalloc

	* src/incremen.c (make_directory): Simplify by using
	xizalloc instead of explicit initialization.

2024-08-15  Paul Eggert  <eggert@cs.ucla.edu>

	Use idx_t, not size_t, for xattr value lengths.

	* src/tar.h (struct xattr_map):
	* src/xattrs.c (xattr_map_add): Prefer idx_t to size_t.  All uses
	changed.

2024-08-15  Paul Eggert  <eggert@cs.ucla.edu>

	Use intmax_t, not size_t, for input line numbers

	This works better on platforms where SIZE_MAX < OFF_MAX.
	* src/common.h (struct common locus):
	* src/names.c (struct name_elt):
	Use intmax_t for line numbers.	All uses changed.

2024-08-15  Paul Eggert  <eggert@cs.ucla.edu>

	In short_read, use %td not %lu

	* src/buffer.c (short_read): Don’t assume sizes fit
	in unsigned long.

2024-08-15  Paul Eggert  <eggert@cs.ucla.edu>

	Prefer signed types in blocking_read etc

	* src/compare.c (process_noop, process_rawdata):
	Return bool, not int.
	* src/compare.c (process_noop, process_rawdata):
	* src/create.c (dump_regular_file):
	* src/extract.c (extract_file):
	* src/misc.c (blocking_read, blocking_write):
	* src/sparse.c (sparse_scan_file_raw, sparse_extract_region):
	Prefer signed types like idx_t to unsigned ones like size_t.
	(sparse_scan_file_raw): Diagnose read errors.

2024-08-15  Paul Eggert  <eggert@cs.ucla.edu>

	Fix minor integer overflow in xsparse.c

	* scripts/xsparse.c (read_xheader):
	Don’t assume size_t fits in unsigned.
	Make the version numbers off_t, not just unsigned.

2024-08-15  Paul Eggert  <eggert@cs.ucla.edu>

	Prefer stoint to strtoul and variants

	When parsing numbers prefer using strtosysint (renamed stoint)
	to using strtoul and its variants.
	This is simpler and faster and likely more reliable than
	relying on quirks of the system strtoul etc,
	and it standardizes how tar deals with parsing integers.
	Among other things, the C standard and POSIX don’t specify
	what strtol does to errno when conversions cannot be performed,
	and it requires strtoul to support "-" before unsigned numbers.
	* gnulib.modules (strtoimax, strtol, strtoumax, xstrtoimax):
	Remove.
	* src/checkpoint.c (checkpoint_compile_action, getwidth)
	(format_checkpoint_string):
	* src/incremen.c (read_incr_db_01, read_num)
	* src/map.c (parse_id):
	* src/misc.c (decode_timespec):
	* src/sparse.c (decode_num):
	* src/tar.c (parse_owner_group, parse_opt):
	* src/transform.c (parse_transform_expr):
	* src/xheader.c (decode_record, decode_signed_num)
	(sparse_map_decoder):
	Prefer stoint to strtol etc.
	Don’t rely on errno == EINVAL as the standards don’t
	guarantee it.
	* src/checkpoint.c (getwidth, format_checkpoint_string):
	Check for invalid string suffix.
	* src/checkpoint.c (getwidth):
	Return intmax_t, not long.  All callers changed.
	* src/incremen.c (read_directory_file):
	It’s just a one-digit number, so just subtract '0'.
	* src/map.c (parse_id): Return bool not int.  All callers changed.
	* src/misc.c (stoint): Rename from strtosysint, and add
	a bool * argument for reporting overflow.  All callers changed.
	(decode_timespec): Simplify by using ckd_sub rather than
	checking for overflow by hand.
	* src/tar.c (incremental_level): Now signed char to
	emphasize that it can be only -1, 0, 1.  All uses changed.
	* src/xheader.c (decode_record): Avoid giant diagnostics.

2024-08-15  Paul Eggert  <eggert@cs.ucla.edu>

	Handle enormous record sizes better

	Formerly the code could misbehave when the user specified a record
	size greater than min (INT_MAX * 512 + 511, PTRDIFF_MAX,
	SSIZE_MAX).
	* src/delete.c (new_blocks, delete_archive_members):
	* src/system.c (sys_exec_info_script):
	* src/tar.c (blocking_factor, record_size):
	Don’t limit blocking factor to INT_MAX.
	Prefer signed type for record_size.
	Do not exceed IDX_MAX or SSIZE_MAX for record_size;
	the SSIZE_MAX limit is needed so that ‘read’ and ‘write’
	calls behave sensibly.

2024-08-15  Paul Eggert  <eggert@cs.ucla.edu>

	Default to GNU/Linux dev_t etc

	* configure.ac (dev_t, ino_t, major_t, minor_t):
	Default to GNU/Linux types.  This shouldn’t affect behavior;
	it’s just a cleanup.

2024-08-15  Paul Eggert  <eggert@cs.ucla.edu>

	Avoid strtoul

	This is part of the general trend to prefer signed integer types,
	to allow better runtime checking with -fsanitize=undefined etc.
	* gnulib.modules: Remove strtoul.  Add xstrtoimax.
	* src/checkpoint.c (checkpoint, format_checkpoint_string):
	* src/system.c (sys_exec_checkpoint_script):
	* src/tar.c (checkpoint_option):
	Use intmax_t, not unsigned, for checkpoint numbers.
	All uses changed.
	* src/checkpoint.c (checkpoint_compile_action): Don’t assume
	time_t == unsigned long.  Treat overflows as TYPE_MAXIMUM (time_t),
	essentially infinity.
	* src/tar.c (tar_sparse_major, tar_sparse_minor):
	* src/tar.h (struct tar_stat_info):
	Use intmax_t, not unsigned, for sparse major and minor.
	All uses changed.
	* src/tar.c (parse_opt):
	Don’t mishandle multiple specifications of sparse major
	and minor.
	* src/transform.c (struct transform):
	Use idx_t, not unsigned, for match_number.  All uses changed.
	(parse_transform_expr): Don’t mishandle large match numbers
	by wrapping them around.

2024-08-09  Pavel Raiskup (mirror bot)	<praiskup-mirroring@raiskup.cz>

	Merge remote-tracking branch 'source_repo/master' into ci

2024-08-04  Paul Eggert  <eggert@cs.ucla.edu>

	Avoid snprintf

	* gnulib.modules: Remove snprintf.
	* lib/wordsplit.c (wordsplit_pathexpand):
	Do not arbitrarily truncate diagnostic.
	(wordsplit_c_quote_copy): Rewrite to avoid the need to
	invoke snprintf on a temporary buffer.

2024-08-04  Paul Eggert  <eggert@cs.ucla.edu>

	Avoid wordsplit quadratic behavior

	* lib/wordsplit.c (wsplt_assign_var):
	Avoid unlikely overflow when adding wsp->ws_envidx + n.
	Avoid quadratic behavior when growing ws_envbuf.

2024-08-04  Paul Eggert  <eggert@cs.ucla.edu>

	Prefer ialloc for wordsplit

	* lib/wordsplit.c (alloc_space, wsplt_assign_var, expvar)
	(wordsplit_tildexpand, wordsplit_pathexpand)
	(wordsplit_get_words): Use ialloc API on idx_t args.

2024-08-04  Paul Eggert  <eggert@cs.ucla.edu>

	Omit wordsplit API that tar doesn’t need

	* lib/wordsplit.c: Include <attribute.h> here, not in wordsplit.h.
	(WRDSO_ESC_SET, WRDSO_ESC_TEST): Move here from wordsplit.h.
	(WORDSPLIT_EXTRAS_extern): New macro.  Used by functions
	that tar doesn’t need to be exposed.
	(wordsplit_append, wordsplit_c_quoted_length, wsplt_quote_char)
	(wordsplit_c_unquote_char, wordsplit_c_quote_char)
	(wordsplit_c_quote_copy, wordsplit_get_words, wordsplit_perror):
	Omit unless _WORDSPLIT_EXTRAS.
	(WORDSPLIT_ENV_INIT): Move here from wordsplit.h, and
	make it a constant rather than a macro.
	(wordsplit_strerror): Arg is now pointer to const.
	* lib/wordsplit.h: Do not include attribute.h, so that library
	users need not worry about attribute.h.
	(wordsplit_t): Declare only if _WORDSPLIT_EXTRAS.  Similarly for
	functions that are not exported to tar.

2024-08-04  Paul Eggert  <eggert@cs.ucla.edu>

	wordsplit_get_words need not fail

	* lib/wordsplit.c (wordsplit_get_words):
	Do not fail merely because realloc fails.
	Return void, since failure is no longer possible.

2024-08-04  Paul Eggert  <eggert@cs.ucla.edu>

	More wordsplit int cleanup

	* lib/wordsplit.c: Include limits.h.
	(_wsplt_subsplit, wordsplit_add_segm, wsnode_quoteremoval)
	(wsnode_coalesce, wsnode_tail_coalesce, find_closing_paren)
	(expvar, begin_var_p, node_expand, begin_cmd_p, expcmd)
	(scan_qstring, scan_word, wordsplit_c_quoted_length)
	(wordsplit_string_unquote_copy, wordsplit_c_quote_copy)
	(exptab_matches, wordsplit_process_list):
	Prefer bool to int.
	(wordsplit_init, alloc_space, coalesce_segment)
	(wsnode_quoteremoval, wordsplit_finish, wordsplit_append):
	Use WRDSE_OK instead of 0 when the context is that of WRDSE_*.
	(wsnode_flagstr, coalesce_segment, wsnode_quoteremoval)
	(wordsplit_finish, node_split_prefix, wsplt_assign_var, expvar)
	(expcmd, wordsplit_tildexpand, wordsplit_pathexpand)
	(wsplt_unquote_char, wsplt_quote_char)
	(wordsplit_string_unquote_copy):
	Prefer '\0' to 0 when it is a char.
	(wsnode_insert): Omit last arg, which was always 0.
	All callers changed.
	(wordsplit_add_segm, node_split_prefix):
	Use unsigned, not int, for flag, for consistency.
	(wordsplit_finish, begin_var_p, begin_cmd_p, skip_sed_expr)
	(xtonum, wsplt_unquote_char, wsplt_quote_char)
	(wordsplit_c_unquote_char, wordsplit_c_quote_char)
	(wordsplit_c_quote_copy):
	Prefer char to int for chars.
	(xtonum): Don’t treat "\400" as if it were "\000".

2024-08-04  Paul Eggert  <eggert@cs.ucla.edu>

	Diagnose argp overflow

	* src/names.c (handle_option):
	* src/tar.c (parse_default_options):
	Report an error if wordsplitting yields more than INT_MAX words,
	rather than misbehaving.  argp_parse can’t handle more than
	INT_MAX, unfortunately.

2024-08-04  Paul Eggert  <eggert@cs.ucla.edu>

	Fix unlikely buffer overrun when checkpointing

	* src/checkpoint.c (format_checkpoint_string):
	Don’t overrun buffer when word splitting.

2024-08-04  Paul Eggert  <eggert@cs.ucla.edu>

	Prefer idx_t to size_t in wordsplit

	* gnulib.modules: Add ialloc.
	* lib/wordsplit.c: Include ialloc.h.
	(PRINTMAX): New constant.
	(printflen, printfdots): New functions.
	(wordsplit_dump_nodes, expvar, wordsplit_process_list): Use them.
	(_wsplt_subsplit, wordsplit_string_unquote_copy):
	Don’t limit lengths to INT_MAX.
	(wordsplit_run): Remove.  All callers changed to use wordsplit_len.
	(wordsplit_perror): Don’t limit lengths to ULONG_MAX.
	* lib/wordsplit.c (wordsplit_init, alloc_space, struct
	wordsplit_node)
	(wsnode_len, wordsplit_add_segm, coalesce_segment,
	wsnode_quoteremoval)
	(wordsplit_finish, wordsplit_append, node_split_prefix)
	(find_closing_paren, wordsplit_find_env, wsplt_assign_var)
	(expvar, node_expand, expcmd, wordsplit_trimws)
	(wordsplit_tildexpand, isglob, wordsplit_pathexpand)
	(skip_sed_expr, skip_delim_internal, skip_delim)
	(skip_delim_real, scan_qstring, scan_word)
	(wordsplit_c_quoted_length, wordsplit_process_list)
	(wordsplit_len, wordsplit_free_words, wordsplit_get_words):
	* lib/wordsplit.h (struct wordsplit):
	Prefer idx_t to size_t for indexes.
	* lib/wordsplit.h: Include idx.h.

2024-08-04  Paul Eggert  <eggert@cs.ucla.edu>

	Support >INT_MAX -C dirs

	* src/extract.c (struct delayed_set_stat, struct delayed_link):
	* src/misc.c (normalize_filename, wd_count, chdir_count)
	(chdir_arg, tar_getcdpath):
	* src/names.c (name_gather, addname, add_hierarchy_to_namelist):
	* src/unlink.c (struct deferred_unlink, flush_deferred_unlinks):
	Use idx_t, not int, for directory indexes, so as to not
	limit their number to INT_MAX; this is theoretically possible
	if -T is used.
	* src/names.c (name_next_elt, name_next):
	Use bool for boolean.

2024-08-04  Paul Eggert  <eggert@cs.ucla.edu>

	maint: fix some encodings and email addresses

2024-08-04  Paul Eggert  <eggert@cs.ucla.edu>

	Parse level options more reliably

	* src/tar.c (parse_opt): Don’t mishandle out-of-range
	LEVEL_OPTION.

2024-08-04  Paul Eggert  <eggert@cs.ucla.edu>

	Minor utf8.c improvements

	* src/utf8.c: Minor rephrases for -1.

2024-08-04  Paul Eggert  <eggert@cs.ucla.edu>

	Simplify ST_DEV_MSB

	* src/incremen.c (ST_DEV_MSB):
	Use TYPE_WIDTH rather than computing it by hand.

2024-08-04  Paul Eggert  <eggert@cs.ucla.edu>

	Use ckd_mul, ckd_add in to_octal, to_base256

	* src/create.c (to_octal, to_base256): Simplify.

2024-08-04  Paul Eggert  <eggert@cs.ucla.edu>

	Use ckd_mul, ckd_add in from_header

	* src/common.h (LG_64): Remove; no longer used.
	* src/list.c (from_header):
	Use ckd_mul, ckd_add rather than doing it by hand.

2024-08-04  Paul Eggert  <eggert@cs.ucla.edu>

	Prefer < 0 to == -1 where either will do

	Also, fix an unlikely read overflow in sys_exec_setmtime_script.
	* src/buffer.c (open_compressed_archive):
	* src/compare.c (verify_volume):
	* src/exclist.c (info_attach_exclist):
	* src/misc.c (xfork):
	* src/sparse.c (sparse_scan_file_seek):
	* src/system.c (sys_wait_for_child, sys_spawn_shell)
	(wait_for_grandchild, sys_wait_command, sys_exec_info_script)
	(sys_exec_checkpoint_script, sys_exec_setmtime_script):
	* src/transform.c (_single_transform_name_to_obstack):
	* src/xattrs.c (xattrs__acls_set, xattrs_acls_get)
	(xattrs_xattrs_get, xattrs__fd_set, xattrs_selinux_get)
	(xattrs_selinux_set):
	* tests/checkseekhole.c (check_seek_hole, main):
	Simplify failure tests by just looking at return value sign.
	* src/system.c (sys_exec_setmtime_script):
	Don’t assume ‘read’ result fits in int.
	(sys_exec_setmtime_script): Don’t reject 1 second before Epoch.

2024-08-04  Paul Eggert  <eggert@cs.ucla.edu>

	xsparse dry runs should not create output

	* scripts/xsparse.c (expand_sparse, main): Check for syscall
	failure.  Do not create output file if a dry run.

2024-08-04  Paul Eggert  <eggert@cs.ucla.edu>

	Better xsparse outname guessing

	* scripts/xsparse.c (guess_outname): Use simpler algorithm,
	that doesn’t mishandle outnames like ‘/foo’.

2024-08-04  Paul Eggert  <eggert@cs.ucla.edu>

	Use xalignalloc

	It ports around issues that our handwritten code does not.
	* gnulib.modules: Add xalignalloc.
	* src/misc.c (ptr_align, page_aligned_alloc): Remove.
	All page_aligned_alloc callers changed to use xalignalloc.

2024-08-04  Paul Eggert  <eggert@cs.ucla.edu>

	Make stripped_prefix_len signed

	This is part of the general guideline that signed integer types
	are safer.
	* src/names.c (stripped_prefix_len): Return ptrdiff_t,
	not size_t.  All callers changed.

2024-08-04  Paul Eggert  <eggert@cs.ucla.edu>

	from_header minor width cleanup

	* src/list.c (from_header): Use UINTMAX_WIDTH rather than
	computing it by hand.

2024-08-04  Paul Eggert  <eggert@cs.ucla.edu>

	Don’t assume mode_t fits in unsigned long

	* src/system.c (oct_to_env): Don’t assume mode_t fits in unsigned
	long.  Do not output excess leading 1 bits.  When the mode is
	zero, generate "0" rather than "00".  Use sprintf instead of
	snprintf, since the output won’t be truncated; in general
	we don’t
	use snprintf unless we want output to be truncated and truncation
	is typically not GNU style.

2024-08-04  Paul Eggert  <eggert@cs.ucla.edu>

	Prefer C99 formats like %jd to doing it by hand

	It’s now safe to assume support for C99 formats like %jd,
	so remove
	some of the longwinded formatting code put in only to be
	portable to
	pre-C99 platforms.
	* gnulib.modules: Add intprops.
	* src/buffer.c (format_total_stats, try_new_volume)
	(write_volume_label):
	* src/checkpoint.c (format_checkpoint_string):
	* src/compare.c (verify_volume):
	* src/create.c (to_chars_subst, dump_regular_file):
	* src/incremen.c (read_num):
	* src/list.c (read_and, from_header, simple_print_header)
	(print_for_mkdir):
	* src/sparse.c (sparse_dump_region):
	* src/system.c (dec_to_env, sys_exec_info_script)
	(sys_exec_checkpoint_script):
	* src/xheader.c (out_of_range_header):
	Prefer C99 formats like %jd and %ju to STRINGIFY_BIGINT.
	* src/common.h: Sort includes.
	Include intprops.h, verify.h.  All other includes of verify.h
	removed.
	(intmax, uintmax): New functions and macros.
	(STRINGIFY_BIGINT): Remove; no longer used.
	(TIMESPEC_STRSIZE_BOUND): Make it 1 byte bigger, for negatives.
	* src/create.c (MAX_VAL_WITH_DIGITS, to_base256):
	Use *_WIDTH macros rather than assuming no padding bits.
	Prefer UINTMAX_MAX to (uintmax_t) -1.
	* src/list.c (tartime): Use strftime result rather
	than running strlen later.
	* src/misc.c (timetostr): New function.  Prefer it when
	printing time_t values.

2024-08-04  Paul Eggert  <eggert@cs.ucla.edu>

	Fix unlikely problems with time overflow

	Also, fix some rounding errors while we’re in the neighborhood.
	* src/buffer.c (duration_ns, compute_duration_ns): Rename from
	‘duration’ and ‘compute_duration’, and count ns rather
	than s, to
	lessen rounding error.	All uses changed.
	(compute_duration_ns): Work even if the clock moves backward
	and time_t is unsigned.
	(print_stats): Don’t worry about null or empty TEXT, as that
	cannot happen.	Compare double to UINTMAX_MAX + 1.0, not
	to UINTMAX_MAX, so that the comparison is exact.
	Handle the unlikely case that numbytes >= UINTMAX_MAX.
	* src/tar.c (parse_opt): Treat -L hugenumber as effectively
	infinity rather than erroring out.
	Prefer ckd_add to checking overflow by hand.

2024-08-04  Paul Eggert  <eggert@cs.ucla.edu>

	maint: omit space between "*" and "p"

2024-08-04  Paul Eggert  <eggert@cs.ucla.edu>

	ptrdiff_t, not int

	* src/delete.c (delete_archive_members): Use ptrdiff_t, not int,
	to count memory blocks.
	(write_recent_bytes): Simplify remainder calculation.

2024-08-04  Paul Eggert  <eggert@cs.ucla.edu>

	ptrdiff_t, not ssize_t

	* src/buffer.c (bufmap_reset, _flush_write):
	Use ptrdiff_t, not ssize_t, to record pointer differences.
	POSIX allows systems where size_t is 64 bits but ssize_t is
	only 32;
	Ultrix used to do that, though no current systems do.

2024-08-04  Paul Eggert  <eggert@cs.ucla.edu>

	Prefer stdckdint.h to intprops.h

	Problem reported by Collin Funk in:
	https://lists.gnu.org/r/bug-tar/2024-07/msg00000.html
	though this patch is more general than Collin’s suggestion.
	* src/compare.c (diff_multivol):
	* src/delete.c (move_archive):
	* src/sparse.c (oldgnu_add_sparse, pax_decode_header):
	* src/system.c (mtioseek):
	Prefer ckd_add and ckd_mul to the intprops.h equivalents,
	since stdckdint.h is now standard.

2024-08-04  Paul Eggert  <eggert@cs.ucla.edu>

	Use ckd_add in page_aligned_alloc

	* src/misc.c (page_aligned_alloc): Use ckd_add
	instead of doing overflow checking by hand.

2024-08-04  Paul Eggert  <eggert@cs.ucla.edu>

	Simplify read_header overflow checking

	* src/list.c (read_header): Use ckd_add instead of
	doing overflow checking by hand.  Although the old code
	was correct on all practical hosts, the new code is simpler
	and works even on weird hosts where SIZE_MAX <= INT_MAX.

2024-08-04  Paul Eggert  <eggert@cs.ucla.edu>

	Cleaner overflow checking in xheader_read

	* src/xheader.c (xheader_read): Prefer ckd_add to
	doing overflow checking by hand.

2024-08-04  Paul Eggert  <eggert@cs.ucla.edu>

	maint: use static_assert

	* gnulib.modules: Add assert-h, for static_assert.
	* src/common.h, src/list.c, src/misc.c:
	Prefer static_assert to #if + #error.  This doesn’t fix any
	bugs; it’s
	just that in general it’s better to avoid the preprocessor.

2024-08-04  Paul Eggert  <eggert@cs.ucla.edu>

	Fix tests/ckmtime.c arithmetic

	* tests/ckmtime.c (main): Don’t assume time_t is signed.
	Avoid integer overflows (quite possible if time_t is 32 bit).
	Do calculations precisely, without any rounding errors.

2024-08-04  Paul Eggert  <eggert@cs.ucla.edu>

	Fix unlikely overflow in utf8_convert

	* src/utf8.c (utf8_convert): Check for integer overflow.

2024-08-04  Paul Eggert  <eggert@cs.ucla.edu>

	Fix unlikely overflow in transform.c

	* src/transform.c (_single_transform_name_to_obstack):
	Use xinmalloc to check for integer overflow.

2024-08-04  Paul Eggert  <eggert@cs.ucla.edu>

	Better overflow checking for blocking factor

	* src/tar.c (parse_opt): Use ckd_add and ckd_mul instead of
	less-obvious code that relies on implementation-defined
	conversions.

2024-08-04  Paul Eggert  <eggert@cs.ucla.edu>

	xsparse cleanup, including integer overflow

	* scripts/xsparse.c: Include inttypes.h, for strtoimax.
	Don’t include stdint.h, since inttypes.h includes it.
	Sort include directives.
	Make all extern functions and vars static, except for ‘main’.
	(string_to_off): Use strtoimax instead of doing overflow
	checking by hand, incorrectly (it relied on undefined behavior).
	(string_to_size): New arg MAXSIZE.  All callers changed.
	(get_var): Return bool not int.  Fix unlikely integer overflow.
	Use strncmp instead of memcmp, to avoid unlikely pointer overflow.
	(read_xheader, read_map, main): Avoid unlikely integer overflow.
	Check for I/O errors more consistently.
	(main): Prefer bool to int, and put vars near use.

2024-08-04  Paul Eggert  <eggert@cs.ucla.edu>

	maint: fix some unlikely wordsplit overflows

	* gnulib.modules: Add reallocarray.
	* lib/wordsplit.c: Include stdckdint.h.
	(ISDELIM, expvar, isglob, scan_word):
	Defend against strchr (s, 0) always succeeding.
	(alloc_space, wsplit_assign_vars):
	Fix some unlikely integer overflows, partly by using reallocarray.
	(alloc_space): Avoid quadratic worst-case behavior.
	(isglob): Return bool, not int.  Accept size_t, not int.
	(to_num): Remove; no longer used.
	(xtonum): Clarify the code the bit.  Rely on portable
	conversion to unsigned char rather than problematic pointer cast.

2024-07-29  Pavel Raiskup (mirror bot)	<praiskup-mirroring@raiskup.cz>

	Merge remote-tracking branch 'source_repo/master' into ci

2024-07-29  Paul Eggert  <eggert@cs.ucla.edu>

	maint: prefer C23 if available

	* gnulib.modules: Add std-gnu23.

2024-07-29  Paul Eggert  <eggert@cs.ucla.edu>

	Add some gnulib.modules

	* gnulib.modules: Add errno, limits-h, safe-read, sys_stat.
	Not sure about the relationship between gnulib.modules
	and paxutils/gnulib.modules, but anyway tar itself uses
	these so we should depend on them.  (Perhaps it would be
	better if there was just one Gnulib module list for tar;
	that would be less confusing.)

2024-07-29  Paul Eggert  <eggert@cs.ucla.edu>

	build: update gnulib and paxutils submodules to latest

2024-07-27  Pavel Raiskup (mirror bot)	<praiskup-mirroring@raiskup.cz>

	Merge remote-tracking branch 'source_repo/master' into ci

2024-07-27  Paul Eggert  <eggert@cs.ucla.edu>

	Pacify gcc 14 -Wanalyzer-null-argument

	* src/tar.c (optloc_eq): Add another ‘assume’.

2024-07-27  Paul Eggert  <eggert@cs.ucla.edu>

	Pacify gcc 14 -Wanalyzer-infinite-loop

	* gnulib.modules: Add stddef, for ‘unreachable’.
	* src/compare.c (dumpdir_cmp): Tell GCC that the default case
	is unreachable.  Make just one pass through the string,
	instead of two passes (one via strcmp, another via strlen).

2024-07-27  Pavel Raiskup (mirror bot)	<praiskup-mirroring@raiskup.cz>

	Merge remote-tracking branch 'source_repo/master' into ci

2024-07-27  Paul Eggert  <eggert@cs.ucla.edu>

	maint: make a few funcs and vars static

	* src/buffer.c (last_stat_time, write_fatal_details):
	* src/tar.c (name_more_files):
	* src/xattrs.c (xheader_xattr_add):
	Now static.

2024-07-27  Paul Eggert  <eggert@cs.ucla.edu>

	maint: remove GLOBAL as per GCC 14

	* src/common.h (GLOBAL): Remove this macro, and all its uses.
	It collides with GCC 14 and -Wmissing-variable-declarations.
	Change all uses of GLOBAL to use extern instead,
	and declare the variables in their respective .c files.
	Move .c file’s extern declarations here, so that they
	appear only once and are checked against definitions.
	* src/names.c (unconsumed_option_tail): Now static.

2024-07-27  Pavel Raiskup (mirror bot)	<praiskup-mirroring@raiskup.cz>

	Merge remote-tracking branch 'source_repo/master' into ci

2024-07-27  Paul Eggert  <eggert@cs.ucla.edu>

	Modernize use of Gnulib, paxutils

	* configure.ac: Omit stuff no longer needed now that Gnulib or
	paxlib does it, or the code no longer needs the configure-time
	checks.
	Do not use AC_SYS_LARGEFILE (Gnulib largefile does this) or check
	for fcntl.h, memory.h, net/errno.h, sgtty.h, string.h,
	sys/param.h, sys/device.h, sys/gentape.h, sys/inet.h,
	sys/io/trioctl.h, sys/time.h, sys/tprintf.h, sys/tape.h, unistd.h,
	locale.h, netdb.h; these are all now standard, or old ways
	of getting
	at magtapes are no longer needed and we now have only sys/mtio.h.
	Do not check for lstat, readlink, symlink, and check only for
	waitpid’s existence rather than attempting to replace it.
	Do not check for decls of getgrgid, getpwuid, or time.
	Check just once for iconv.h.
	* gnulib.modules: Add largefile.
	* lib/.gitignore, lib/Makefile.am (noinst_HEADERS,
	libtar_a_SOURCES):
	Remove system-ioctl.h, which is no longer in paxlib.
	All includes now changed to just check HAVE_SYS_MTIO_H directly.
	* lib/wordsplit.c (wordsplit_c_escape_tab, wordsplit_errstr)
	(wordsplit_nerrs):
	Now static or an enum, and without any leading "_" in the name.
	* src/buffer.c (record_start, record_end, current_block,
	records_read):
	* src/delete.c (records_skipped): Add extern decl to pacify GCC.
	* src/compare.c, src/create.c, src/extract.c: Omit uses of
	HAVE_READLINK and HAVE_SYMLINK since we now let Gnulib deal with
	platforms lacking readlinkat and symlinkat.
	* src/system.c: Use "#if !HAVE_WAITPID" instead of "#if MSDOS".

2024-07-27  Paul Eggert  <eggert@cs.ucla.edu>

	build: update gnulib and paxutils submodules to latest

2024-07-24  Pavel Raiskup (mirror bot)	<praiskup-mirroring@raiskup.cz>

	Merge remote-tracking branch 'source_repo/master' into ci

2024-07-24  Paul Eggert  <eggert@cs.ucla.edu>

	maint: higher-precision checkpoint timestamps

	* src/checkpoint.c (format_checkpoint_string):
	Use current_timespec to get nanosecond resolution.
	This also frees us from the necessity of including <sys/time.h>
	to use gettimeofday, which is removed in POSIX.1-2024.

2024-07-24  Paul Eggert  <eggert@cs.ucla.edu>

	build: update gnulib and paxutils submodules to latest

	Sync bootstrap from Gnulib

2024-07-15  Pavel Raiskup (mirror bot)	<praiskup-mirroring@raiskup.cz>

	Merge remote-tracking branch 'source_repo/master' into ci

2024-07-15  Paul Eggert  <eggert@cs.ucla.edu>

	Sync bootstrap from Gnulib

2024-07-15  Paul Eggert  <eggert@cs.ucla.edu>

	maint: adjust to Gnulib -Wsystem-headers change

	* configure.ac: Do not suppress -Wsystem-headers, as
	Gnulib no longer enables it.

2024-07-15  Paul Eggert  <eggert@cs.ucla.edu>

	build: update gnulib submodule to latest

2024-06-06  Pavel Raiskup (mirror bot)	<praiskup-mirroring@raiskup.cz>

	Merge remote-tracking branch 'source_repo/master' into ci

2024-06-06  Sergey Poznyakoff  <gray@gnu.org>

	Various formatting fixes

2024-06-05  Pavel Raiskup (mirror bot)	<praiskup-mirroring@raiskup.cz>

	Merge remote-tracking branch 'source_repo/master' into ci

2024-06-05  Sergey Poznyakoff  <gray@gnu.org>

	Fix spurious diagnostic during extraction of . with
	--keep-newer-files

	Bug reported in https://savannah.gnu.org/bugs/?65838.

	Bug introduced by 79d1ac38c1.

	* src/extract.c (make_directories): Restore second argument.  This
	reverts the change made in 79d1ac38c1.
	(maybe_recoverable, rename_directory): Update calls to
	make_directories.
	* tests/extrac27.at: New file.
	* tests/Makefile.am: Add new test.
	* tests/testsuite.at: Likewise.

2024-03-03  Pavel Raiskup (mirror bot)	<praiskup-mirroring@raiskup.cz>

	Merge remote-tracking branch 'source_repo/master' into ci

2024-03-03  Paul Eggert  <eggert@cs.ucla.edu>

	tar: fix current_block confusion

	Problem reported by Robert Morris in:
	https://lists.gnu.org/r/bug-tar/2024-03/msg00001.html
	* src/delete.c (flush_file): Simply return at EOF,
	so that current_block continues to point to end of input.

2024-03-03  Paul Eggert  <eggert@cs.ucla.edu>

	tar: fix unlikely overflow

	* src/delete.c (flush_file): Fix arithmetic overflow if
	TYPE_MAXIMUM (off_t) - BLOCKSIZE < current_stat_info.stat.st_size.

2024-03-03  Paul Eggert  <eggert@cs.ucla.edu>

	tar: improve diagnostic for truncated archive

	* src/buffer.c (seek_archive): If EOF has been read, don’t
	attempt
	to seek past it.  This replaces a bogus "rmtlseek not stopped at a
	record boundary" message with a better "Unexpected EOF in archive"
	when I run ‘tar tvf gtar13c.tar’ using the gtar13.tar
	file here:
	https://lists.gnu.org/r/bug-tar/2024-03/msg00001.html

2024-01-16  Pavel Raiskup (mirror bot)	<praiskup-mirroring@raiskup.cz>

	Merge remote-tracking branch 'source_repo/master' into ci

2024-01-16  Sergey Poznyakoff  <gray@gnu.org>

	Avoid gcc 13 "unused parameter" warnings

2024-01-15  Pavel Raiskup (mirror bot)	<praiskup-mirroring@raiskup.cz>

	Merge remote-tracking branch 'source_repo/master' into ci

2024-01-15  Sergey Poznyakoff  <gray@gnu.org>

	Recognize suffixes .z (gzip) and .tzo (lzop)

	Fix description of the CACHEDIR.TAG file.

2024-01-15  Pavel Raiskup (mirror bot)	<praiskup-mirroring@raiskup.cz>

	Merge remote-tracking branch 'source_repo/master' into ci

2024-01-15  Sergey Poznyakoff  <gray@gnu.org>

	Fix --exclude-ignore option.

	This fixes https://savannah.gnu.org/bugs/?64387.

	* src/exclist.c (info_attach_exclist): Always use file->flags.
	(exclude_vcs_ignores): Pass flags from struct vcs_ignore_file
	to excfile_add.

	* tests/exclude19.at: New test.
	* tests/exclude20.at: New test.
	* tests/Makefile.am: Add new tests.
	* tests/testsuite.at: Add new tests.

2024-01-15  Pavel Raiskup (mirror bot)	<praiskup-mirroring@raiskup.cz>

	Merge remote-tracking branch 'source_repo/master' into ci

2024-01-15  Sergey Poznyakoff  <gray@gnu.org>

	Fix missing space in the manual

2024-01-14  Pavel Raiskup (mirror bot)	<praiskup-mirroring@raiskup.cz>

	Merge remote-tracking branch 'source_repo/master' into ci

2024-01-14  Sergey Poznyakoff  <gray@gnu.org>

	When given -c -a, issue a warning if no compressor is associated
	with the suffix.

	* src/suffix.c (find_compression_suffix): Always return stripped
	archive name length in the last argument.  Return 0 if there is no
	suffix.
	(find_compression_program): Remove.
	(set_compression_program_by_suffix): Take third argument,
	controlling
	whether to issue a warning if no suitable compression program
	is found
	for the suffix.
	* src/common.h (set_compression_program_by_suffix): Change
	prototype.
	* src/buffer.c, src/tar.c: All uses of
	set_compression_program_by_suffix
	changed.

2024-01-02  Pavel Raiskup  <praiskup@redhat.com>

	README.md: pull-requests

	mirror README.md

2024-01-02  Pavel Raiskup (mirror bot)	<praiskup-mirroring@raiskup.cz>

	Merge remote-tracking branch 'source_repo/master' into ci

2024-01-02  Paul Eggert  <eggert@cs.ucla.edu>

	Port EOF detection test to macOS

	* tests/delete06.at: Don’t assume the diagnostic is
	“Value too large for defined data type”, as strerror
	uses a different wording on macOS 12.6.

2024-01-02  Paul Eggert  <eggert@cs.ucla.edu>

	Skip test on macOS 12.6

	* tests/xform04.at: Skip test on macOS 12.6, which is behind
	the times
	and doesn’t think that ⱥ (U+2C65 LATIN SMALL LETTER A WITH
	STROKE) is
	printable.

2024-01-02  Paul Eggert  <eggert@cs.ucla.edu>

	Port --numeric-owner basic tests to macOS

	* tests/numeric.at: If chown fails, skip the test.
	This is needed on macOS 12.6 if the user has group
	ID 4294967295 (nogroup), which chown rejects.

2024-01-02  Paul Eggert  <eggert@cs.ucla.edu>

	Update copyright years

	UPDATE_COPYRIGHT_USE_INTERVALS=1 \
	gnulib/build-aux/update-copyright \
	  $(git ls-files | sed -e '/^gnulib$/d
				   /^paxutils$/d
				   /^COPYING$/d
				   /\/fdl.texi$/d')
	sed -i '2000,${
	    /^Copyright @copyright/d
	    s/^[0-9]*--\(2024 Free Software Foundation, Inc.\)/Copyright
	    (C) \1/
	  }' doc/tar.texi

2024-01-02  Paul Eggert  <eggert@cs.ucla.edu>

	doc: fix date in example

	* doc/tar.texi: Fix copyright date in example.

2024-01-02  Paul Eggert  <eggert@cs.ucla.edu>

	build: update gnulib submodule to latest

2023-09-13  Pavel Raiskup (mirror bot)	<praiskup-mirroring@raiskup.cz>

	Merge remote-tracking branch 'source_repo/master' into ci

2023-09-13  Paul Eggert  <eggert@cs.ucla.edu>

	Support multi-byte --transform='...\L...' etc

	Support upcasing and downcasing in multi-byte locales.
	* gnulib.modules: Add c32rtomb, c32tolower, c32toupper,
	mbrtoc32-regular.
	* src/transform.c: Do not include ctype.h.  Include mcel.h.
	(stk, stk_init): Move up.
	(run_case_conv): Return void, not char *.  Append result to
	stk directly; this avoids the need for a separate allocation.
	All callers changed.  Do not assume a single-byte locale.
	* tests/xform04.at: New test.
	* tests/Makefile.am (TESTSUITE_AT):
	* tests/testsuite.at: Add it.

2023-09-13  Paul Eggert  <eggert@cs.ucla.edu>

	Simplify wordsplit_string_unquote_copy

	* lib/wordsplit.c (wordsplit_string_unquote_copy): Simplify.

2023-09-13  Paul Eggert  <eggert@cs.ucla.edu>

	Parse in a more locale-independent way

	update submodules to latest
	* gnulib.modules: Add c-ctype.
	* lib/wordsplit.c, src/buffer.c, src/exclist.c, src/incremen.c:
	* src/list.c, src/misc.c, src/names.c, src/sparse.c, src/tar.c:
	* src/xheader.c:
	Include c-ctype.h, and use its API rather than ctype.h’s.
	This is more likely to work when oddball locales are used.
	* src/transform.c: Include ctype.h, since this module still uses
	tolower and toupper (this is probably wrong - should be
	multi-byte).

2023-09-13  Paul Eggert  <eggert@cs.ucla.edu>

	Use single is_octal_digit function

	* src/list.c (ISOCTAL): Remove.
	(is_octal_digit): New static function.
	All uses of ISOCTAL and ISODIGIT replaced with is_octal_digit.

2023-09-11  Pavel Raiskup (mirror bot)	<praiskup-mirroring@raiskup.cz>

	Merge remote-tracking branch 'source_repo/master' into ci

2023-09-11  Paul Eggert  <eggert@cs.ucla.edu>

	maint: fix THANKS misspellings

	* THANKS: Fix recently-introduced misspellings.

2023-09-11  Pavel Raiskup (mirror bot)	<praiskup-mirroring@raiskup.cz>

	Merge remote-tracking branch 'source_repo/master' into ci

2023-09-11  Paul Eggert  <eggert@cs.ucla.edu>

	Fix pointer bug in drop_volume_label_suffix

	Problem reported by Marc Espie in:
	https://lists.gnu.org/r/bug-tar/2023-09/msg00003.html
	* src/buffer.c (drop_volume_label_suffix):
	Redo to not compute a pointer before the start of a buffer,
	as this is not portable.

2023-09-11  Paul Eggert  <eggert@cs.ucla.edu>

	quote unknown header keywords in diagnostics

	* src/xheader.c (decx): Quote unknown header in warning, as it may
	contain control characters.  Problem reported by Wicher Minnaard.

2023-09-10  Pavel Raiskup (mirror bot)	<praiskup-mirroring@raiskup.cz>

	Merge remote-tracking branch 'source_repo/master' into ci

2023-09-10  Paul Eggert  <eggert@cs.ucla.edu>

	Prefer mcel to mbuiter

	Prefer the lighter-weight mcel implementation to the heavier-weight
	mbuiter that GNU tar does not need.
	* bootstrap.conf (avoided_gnulib_modules): Avoid mbuiter, mbuiterf.
	* gnulib.modules: Add mcel-prefer.

2023-09-10  Paul Eggert  <eggert@cs.ucla.edu>

	build: update gnulib submodule to latest

2023-09-07  Pavel Raiskup (mirror bot)	<praiskup-mirroring@raiskup.cz>

	Merge remote-tracking branch 'source_repo/master' into ci

2023-09-07  Markus Mayer  <mmayer@broadcom.com>  (tiny change)

	.gitmodules: switch to HTTPS

	HTTPS is not only encrypted but also better suited for corporate
	firewalls. Let's use it to clone submodules.

2023-08-23  Pavel Raiskup (mirror bot)	<praiskup-mirroring@raiskup.cz>

	Merge remote-tracking branch 'source_repo/master' into ci

2023-08-22  Sergey Poznyakoff  <gray@gnu.org>

	docs: replace references to fileutils with coreutils.

	GNU fileutils is decommissioned and superseded by coreutils.
	This fixes Savannah bug #64495.

2023-08-22  Pavel Raiskup  <praiskup@redhat.com>

	Patch manually

	The 'git am' is too pedantic, and more likely to fail.

2023-08-22  Pavel Raiskup (mirror bot)	<praiskup-mirroring@raiskup.cz>

	Merge remote-tracking branch 'source_repo/master' into ci

2023-08-22  Sergey Poznyakoff  <gray@gnu.org>

	Fix Savane bug #64581

	This reverts commit 4f3824743f50808a0079e6057107de53c4a25f22.

2023-08-21  Pavel Raiskup (mirror bot)	<praiskup-mirroring@raiskup.cz>

	Merge remote-tracking branch 'source_repo/master' into ci

2023-08-21  Paul Eggert  <eggert@cs.ucla.edu>

	Bump extrac26 timeout

	* tests/extrac26.at: Increase timeout from 15 to 60 s.
	On my old machine it took 15 s.

2023-08-21  Paul Eggert  <eggert@cs.ucla.edu>

	Simplify recently-added hash code

	* src/extract.c (delay_set_stat): Simplify hash lookup;
	no need to initialize members other than file_name.
	Avoid assignment in ‘if’ when it’s easy.
	(extract_finish): Do not bother to free when we are about to exit.

2023-08-21  Benjamin Woodruff  <bgw@meta.com>

	Fix O(n^2) time bug in --delay-directory-restore

	delayed_set_stat avoids inserting duplicate entries into
	delayed_set_stat_head. It was doing this by scanning the entire
	list.

	Normally this list is small, but if --delay-directory-restore is
	used (including automatically for incremental archives), this list
	grows with the total number of directories in the archive.

	The entire scan takes O(n) time. Extracting an archive with n
	directories could therefore take O(n^2) time.

	The included test uses AT_SKIP_LARGE_FILES, allowing it to
	optionally be
	skipped. It may execute slowly on certain filesystems or disks,
	as it
	creates thousands of directories.

	There are still potentially problematic O(n) scans in
	find_direct_ancestor and remove_delayed_set_stat, which this
	patch does
	not attempt to fix.

	* NEWS: Update.
	* src/extract.c (delayed_set_stat_table): Create a table for O(1)
	lookups of entries in the delayed_set_stat_head list. The list
	remains, as tracking insertion order is important.
	(dl_hash, dl_compare): New hash table helper functions.
	(delay_set_stat): Create the hash table, replace the O(n) list scan
	with a hash_lookup, insert new entries into the hash table.
	(remove_delayed_set_stat): Also remove entry from hash table.
	(apply_nonancestor_delayed_set_stat): Also remove entry from hash
	table.
	(extract_finish): Free the (empty) hash table.
	* tests/extrac26.at: New file.
	* tests/Makefile.am (TESTSUITE_AT): Include extrac26.at.
	* tests/testsuite.at: Include extrac26.at.

2023-08-21  Paul Eggert  <eggert@cs.ucla.edu>

	Pacify gcc -Wanalyzer-fd-use-without-check

	* src/system.c (sys_exec_setmtime_script):
	Treat fds with more care.

2023-08-21  Paul Eggert  <eggert@cs.ucla.edu>

	build: update gnulib submodule to latest

2023-08-15  Pavel Raiskup  <praiskup@redhat.com>

	Best-effort CI fixing concept

2023-08-15  Pavel Raiskup (mirror bot)	<praiskup-mirroring@raiskup.cz>

	Merge remote-tracking branch 'source_repo/master' into ci

2023-08-15  Sergey Poznyakoff  <gray@gnu.org>

	Revert "Fix savannah bug #63567"

	Commit e89c7a45eb broke deletion from archives. The reported number
	of bytes read is rounded to the nearest record anyway, revert the
	commit and document the fact.

	Reported by Ed Santiago. See
	https://bugzilla.redhat.com/show_bug.cgi?id=2230127

	* doc/tar.texi: Document the fact that --totals rounds up the
	number of bytes reads to the nearest record.
	* src/buffer.c: Revert changes.
	* tests/delete06.at: Fix expected status code and stderr.

2023-08-02  Pavel Raiskup (mirror bot)	<praiskup-mirroring@raiskup.cz>

	Merge remote-tracking branch 'source_repo/master' into ci

2023-08-02  Paul Eggert  <eggert@cs.ucla.edu>

	Stop using alloca

	* gnulib.modules: Remove alloca.
	* src/create.c (dump_file0): Return address of any allocated
	storage.  Caller changed to free it.  Use xmalloc instead
	of alloca, to obtain this storage.
	* src/list.c (from_header): Use quote_mem instead of quote,
	removing the need to use alloca.

2023-08-01  Pavel Raiskup (mirror bot)	<praiskup-mirroring@raiskup.cz>

	Merge remote-tracking branch 'source_repo/master' into ci

2023-08-01  Sergey Poznyakoff  <gray@gnu.org>

	New option: --set-mtime-command

	* NEWS: Document new option.
	* src/common.h (COMMAND_MTIME): New constant.
	* src/create.c (set_mtime_command)
	(set_mtime_format): New globals.
	(sys_exec_setmtime_script): New prototype.
	* src/system.c (start_header): Handle COMMAND_MTIME.
	* src/tar.c (sys_exec_setmtime_script): New function.

2023-07-25  Pavel Raiskup (mirror bot)	<praiskup-mirroring@raiskup.cz>

	Merge remote-tracking branch 'source_repo/master' into ci

2023-07-25  Paul Eggert  <eggert@cs.ucla.edu>

	* doc/tar.texi: Fix minor reproducibility typos.

2023-07-25  Paul Eggert  <eggert@cs.ucla.edu>

	Improve reproducibility recipe

	* doc/tar.texi (Reproducibility): Improve index.
	Improve and add comments to recipe.  In the recipe,
	don’t worry about file names beginning with ‘-’ for
	simplicity;
	don’t use touch -c as it exits with status 0 even when it
	does not work; and set directory timestamps too.

2023-07-25  Sergey Poznyakoff  <gray@gnu.org.ua>

	* doc/tar.texi: Define reproducibility.

2023-07-24  Pavel Raiskup (mirror bot)	<praiskup-mirroring@raiskup.cz>

	Merge remote-tracking branch 'source_repo/master' into ci

2023-07-24  Paul Eggert  <eggert@cs.ucla.edu>

	New doc about reproducible archives

	* doc/tar.texi (Reproducibility): New section.
	Spruce some other sections related to timestamps etc.

2023-07-19  Pavel Raiskup (mirror bot)	<praiskup-mirroring@raiskup.cz>

	Merge remote-tracking branch 'source_repo/master' into ci

2023-07-19  Paul Eggert  <eggert@cs.ucla.edu>

	tests: fix LDADD

	Problem reported by Christian Weisgerber <naddy@mips.inka.de> in:
	https://lists.gnu.org/r/bug-tar/2023-07/msg00015.html
	* tests/Makefile.am (LDADD): Add $(LIBINTL), $(LIBICONV).

2023-07-18  Pavel Raiskup (mirror bot)	<praiskup-mirroring@raiskup.cz>

	Merge remote-tracking branch 'source_repo/master' into ci

2023-07-18  Sam James  <sam@gentoo.org>

	tests: Fix xz tests by unsetting XZ_OPT, XZ_DEFAULTS

2023-07-18  Sam James  <sam@gentoo.org>

	tests: Fix bashism in testsuite.at

	&> is a bashism and causes various tests to fail with /bin/sh
	as non-bash
	(e.g. dash). Use the same pattern the rest of the file uses
	instead of &>.

2023-07-18  Paul Eggert  <eggert@cs.ucla.edu>

	tests: fix TESTSUITE_AT

	Problem reported by Lukas Javorsky <ljavorsk@redhat.com> in:
	https://lists.gnu.org/r/bug-tar/2023-07/msg00002.html
	* tests/Makefile.am (TESTSUITE_AT): Add exclude17.at, exclude18.at.
	Remove compress.m4; all uses changed.  Add a comment saying how
	to rederive this.  Sort.

2023-07-18  Pavel Raiskup (mirror bot)	<praiskup-mirroring@raiskup.cz>

	Merge remote-tracking branch 'source_repo/master' into ci

2023-07-18  Sergey Poznyakoff  <gray@gnu.org>

	Fix savannah bug #64441

	* src/Makefile.am (tar_LDADD): Add libiconv libraries.

2023-07-18  Pavel Raiskup (mirror bot)	<praiskup-mirroring@raiskup.cz>

	Merge remote-tracking branch 'source_repo/master' into ci

2023-07-18  Sergey Poznyakoff  <gray@gnu.org>

	Version 1.35

2023-07-17  Pavel Raiskup (mirror bot)	<praiskup-mirroring@raiskup.cz>

	Merge remote-tracking branch 'source_repo/master' into ci

2023-07-17  Sergey Poznyakoff  <gray@gnu.org>

	Use full-read instead of safe-read

	This helps handle archiving on certain filesystems where read()
	returns less bytes than requested when reading from a regular
	file.

	References:

	  https://savannah.gnu.org/bugs/index.php?64426
	  https://lists.gnu.org/archive/html/bug-tar/2021-07/msg00001.html

	* gnulib.modules: Add full-read.
	* src/common.h: Include full-read.h
	* src/misc.c: Use full_read.
	* src/sparse.c: Likewise.
	* src/update.c: Likewise.

2023-07-13  Pavel Raiskup (mirror bot)	<praiskup-mirroring@raiskup.cz>

	Merge remote-tracking branch 'source_repo/master' into ci

2023-07-11  Sergey Poznyakoff  <gray@gnu.org>

	Fix typo in comments

	This and the bug fixed by the previous commit were reported by
	Benno Schulenberg.

2023-07-10  Sergey Poznyakoff  <gray@gnu.org>

	Fix --update --wildcards

	* src/common.h (name): New field: is_wildcard.
	(name_scan): Change protoype.
	* src/delete.c: Update calls to name_scan.
	* src/names.c (addname, add_starting_file): Initialize is_wildcard.
	(namelist_match): Take two arguments.  If second one is true,
	return
	only exact matches.
	(name_scan): Likewise.	All callers updated.
	(name_from_list): Skip patterns.
	* src/update.c (remove_exact_name): New function.
	(update_archive): Do not remove matching name, if it is a pattern.
	Instead, add a new entry with the matching file name.

	* tests/update04.at: New test.
	* tests/Makefile.am: Add new test.
	* tests/testsuite.at: Include new test.

	* NEWS: Update.

2023-07-10  Benno Schulenberg  <bensberg@telfort.nl>

	Various fixes in the documentation

	* doc/tar.1: Add missing dots, use plural when necessary,
	tweak a wording.  Remove an incorrect observation, three times.
	Add some missing articles, correct some formatting,
	and expand the opaque descriptions of two options.
	* doc/tar.texi: Drop a stray `cd` command from an example.
	Correct two cross references, correct the paragraph
	about the manpage, and unbreak a URL.
	* src/names.c: Correct and shorten an error message: "non-optional"
	means "mandatory", but "non-option" is what was meant.	And the
	phrase "in archive create or update mode" was both unneeded and
	incomplete.
	* tests/positional01.at: Change expected error text.
	* tests/positional02.at: Likewise.
	* tests/positional03.at: Likewise.

2023-06-29  Pavel Raiskup (mirror bot)	<praiskup-mirroring@raiskup.cz>

	Merge remote-tracking branch 'source_repo/master' into ci

2023-06-29  Paul Eggert  <eggert@cs.ucla.edu>

	build: update gnulib submodule to latest

2023-06-26  Pavel Raiskup (mirror bot)	<praiskup-mirroring@raiskup.cz>

	Merge remote-tracking branch 'source_repo/master' into ci

2023-06-25  Paul Eggert  <eggert@cs.ucla.edu>

	tar: extract delayed links in order

	Extract delayed links in tar file order, rather than
	in hash table order with modifications.
	This is simpler and more likely to use the kernel’s
	cached filesystem data, assuming related delayed links
	are nearby in the tar file.
	* src/extract.c (struct delayed_link.has_predecessor):
	Remove.  All uses removed.
	(delayed_link_head, delayed_link_tail): New static vars.
	This resurrects delayed_link_head’s old function
	except that the linked list is now in forward order, not reverse.
	(find_delayed_link_source): Now simply returns bool,
	since the callers no longer need the pointer.
	(create_placeholder_file):
	Put the delayed link at the end of the linked list.
	Omit no-longer-needed last arg.  All callers changed.
	(apply_delayed_links): Simplify now that we can just iterate
	through the delayed_link_head list.

2023-06-25  Paul Eggert  <eggert@cs.ucla.edu>

	tar: make safe for -Wunused-parameter

	This also ports to C23 [[maybe_unused]].
	* configure.ac (WARN_CFLAGS): Do not add -Wno-unused-parameter.
	Add MAYBE_UNUSED where needed in source code.
	Also, put it at the front where C23 requires it.

2023-06-25  Paul Eggert  <eggert@cs.ucla.edu>

	* po/.gitignore: Omit redundant *~ entries.

2023-06-25  Paul Eggert  <eggert@cs.ucla.edu>

	tar: omit unnecessary freeing

	* src/tar.c (main): Omit unnecessary freeing.

2023-06-18  Pavel Raiskup (mirror bot)	<praiskup-mirroring@raiskup.cz>

	Merge remote-tracking branch 'source_repo/master' into ci

2023-06-18  Sergey Poznyakoff  <gray@gnu.org>

	Make sure each delayed link entry is visited once

	* src/extract.c (create_placeholder_file): Use FLEXNSIZEOF
	(overlooked
	by c542d3d0c8)
	(apply_delayed_links): Don't follow the "next" chain after
	its entries
	have been applied.

2023-06-17  Pavel Raiskup (mirror bot)	<praiskup-mirroring@raiskup.cz>

	Merge remote-tracking branch 'source_repo/master' into ci

2023-06-17  Paul Eggert  <eggert@cs.ucla.edu>

	Omit unnecessary freeing

	* src/extract.c (apply_delayed_link): Don’t bother to
	free memory, as we’re about to exit.

2023-06-17  Pavel Raiskup (mirror bot)	<praiskup-mirroring@raiskup.cz>

	Merge remote-tracking branch 'source_repo/master' into ci

2023-06-17  Paul Eggert  <eggert@cs.ucla.edu>

	Port to strict C99 struct hack

	Portability bug caught by GCC 13 -fstrict-flex-arrays.
	* gnulib.modules: Add flexmember.
	* src/create.c (struct link):
	* src/exclist.c (struct excfile):
	* src/extract.c (struct delayed_link, struct string_list):
	Include <flexmember.h>.  Use FLEXIBLE_ARRAY_MEMBER, for
	portability to strict C99 or later.  All storage
	allocations changed to use FLEXNSIZEOF.

2023-06-17  Paul Eggert  <eggert@cs.ucla.edu>

	Use Gnulib ‘dup2’ module

	This simplifies code that would otherwise use dup and close.
	* gnulib.modules: Add dup2.
	* src/system.c: Add #pragma to pacify GCC 13.
	(xdup2): Simplify by using dup2.

2023-06-17  Paul Eggert  <eggert@cs.ucla.edu>

	Use Gnulib ‘free-posix’ module

	Paxutils uses it so we should too.
	* gnulib.modules: Add ‘free-posix’.
	* src/misc.c (remove_any_file): Assume ‘free’ keeps errno.

2023-06-17  Paul Eggert  <eggert@cs.ucla.edu>

	* buffer.c: work around GCC bug 109856

	Recommend Y2038 safety

	build: update gnulib and paxutils submodules to latest

	* .gitignore: Add slash, as bootstrap does this now.

	Sync bootstrap from Gnulib

2023-06-06  Pavel Raiskup (mirror bot)	<praiskup-mirroring@raiskup.cz>

	Merge remote-tracking branch 'source_repo/master' into ci

2023-06-06  Pavel Raiskup  <praiskup@redhat.com>

	Comment a bit on the xattr extraction logic

	* src/extract.c (extract_file): Document why we pre-create
	with S_IWUSR.
	(set_xattr): Drop the INVERT_PERMISSIONS doc leftover.

2023-06-06  Pavel Raiskup  <praiskup@redhat.com>

	Fix --xattr-include='*' documentation

	* doc/tar.texi (Extended File Attributes): The default extraction
	pattern consists of just 'user.*' namespace only.  While on it, try
	to explain the reasons for this default behavior.

2023-05-18  Pavel Raiskup  <praiskup@redhat.com>

	copr: build into a separate copr dir

2023-05-18  Pavel Raiskup (mirror bot)	<praiskup-mirroring@raiskup.cz>

	Merge remote-tracking branch 'source_repo/master' into ci

2023-05-18  Sergey Poznyakoff  <gray@gnu.org>

	Honor --numeric-owner when storing ACL entries

	Based on patch from Fabian Grünbichler
	<f.gruenbichler@proxmox.com>

	* src/xattrs.c (acls_get_text): New function.  If given
	--numeric-owner,
	use acl_to_any_text to convert ACL to textual representation.
	Print
	warning if that function is not available.
	(xattrs__acls_get_a, xattrs__acls_get_d): Use acls_get_text.

2023-05-18  Pavel Raiskup (mirror bot)	<praiskup-mirroring@raiskup.cz>

	Merge remote-tracking branch 'source_repo/master' into ci

2023-05-18  Sergey Poznyakoff  <gray@gnu.org>

	Upgrade paxutils to d50ea31268

	This fixes two bugs related to remote archives:

	1. Access from unprivileged user accounts.
	2. Malfunctioning seek (L) command.

2023-05-18  Pavel Raiskup (mirror bot)	<praiskup-mirroring@raiskup.cz>

	Merge remote-tracking branch 'source_repo/master' into ci

2023-05-18  Sergey Poznyakoff  <gray@gnu.org>

	Don't copy DISTFILES during bootstrapping

	DISTFILES are necessary only during bootstrapping and should not be
	distributed.

	This partially reverts commit 9f0e54ab2.

2023-05-17  Pavel Raiskup  <praiskup@redhat.com>

	Use the SPDX License format

2023-05-01  Pavel Raiskup (mirror bot)	<praiskup-mirroring@raiskup.cz>

	Merge remote-tracking branch 'source_repo/master' into ci

2023-05-01  Benno Schulenberg  <bensberg@telfort.nl>

	Add missing option to manpage and remove duplicate operation

	* doc/tar.1: Add needed option -f after operation -A, sort
	operation -t
	  alphabetically, add --file after --concatenate, consistently
	  use long
	  option --file in the GNU-style section, and delete duplicate
	  --update.
	* doc/tar.texi: Add small missing word, and lowercase a letter.

2023-04-18  Pavel Raiskup (mirror bot)	<praiskup-mirroring@raiskup.cz>

	Merge remote-tracking branch 'source_repo/master' into ci

2023-04-18  Sergey Poznyakoff  <gray@gnu.org>

	Change some wording in doc/intern.texi

2023-04-18  Pavel Raiskup (mirror bot)	<praiskup-mirroring@raiskup.cz>

	Merge remote-tracking branch 'source_repo/master' into ci

2023-04-18  Anton Makrushin  <makrusan@gmail.com>

	Exclude VCS directory with writing from an archive

	See https://savannah.gnu.org/bugs/?62859

2023-02-21  Pavel Raiskup (mirror bot)	<praiskup-mirroring@raiskup.cz>

	Merge remote-tracking branch 'source_repo/master' into ci

2023-02-21  Sergey Poznyakoff  <gray@gnu.org>

	Detect EOF when deleting from archive.

	See https://savannah.gnu.org/bugs/?63823

	* src/delete.c (flush_file): Break the loop on EOF.
	* tests/delete06.at: New test.
	* tests/Makefile.am: Add new test.
	* tests/testsuite.at: Likewise.

2023-02-11  Pavel Raiskup (mirror bot)	<praiskup-mirroring@raiskup.cz>

	Merge remote-tracking branch 'source_repo/master' into ci

2023-02-11  Sergey Poznyakoff  <gray@gnu.org>

	Changes in extended header decoder

	* src/xheader.c (decode_time): Fix error detection.
	(raw_path_decoder): Ignore empty paths.

2023-02-11  Sergey Poznyakoff  <gray@gnu.org>

	Prevent dead loop in extract_file

	* src/extract.c (maybe_recoverable): If make_directories indicates
	success, suppose some intermediate directories have been made, even
	if in fact they have not.  That's necessary to avoid dead
	loops when
	maybe_recoverable is called with the same arguments again.

2023-02-11  Pavel Raiskup (mirror bot)	<praiskup-mirroring@raiskup.cz>

	Merge remote-tracking branch 'source_repo/master' into ci

2023-02-11  Sergey Poznyakoff  <gray@gnu.org>

	Fix boundary checking in base-256 decoder

	* src/list.c (from_header): Base-256 encoding is at least 2 bytes
	long.

2023-01-18  Pavel Raiskup (mirror bot)	<praiskup-mirroring@raiskup.cz>

	Merge remote-tracking branch 'source_repo/master' into ci

2023-01-06  Paul Eggert  <eggert@cs.ucla.edu>

	Adjust to Gnulib macro renaming

	* src/Makefile.am, tests/Makefile.am (LDADD):
	Gnulib renamed LIB_HAS_ACL to FILE_HAS_ACL_LIB.

2023-01-06  Paul Eggert  <eggert@cs.ucla.edu>

	build: update gnulib, paxutils submodules to latest

2023-01-06  Paul Eggert  <eggert@cs.ucla.edu>

	Go back to single-file bootstrap

	Gnulib now supports a single-file bootstrap with --pull
	and --gen options, in place of the three files
	autopull.sh, autogen.sh, bootstrap-funclib.sh.
	This keeps the top level a bit cleaner.
	* bootstrap: Sync from Gnulib build-aux/bootstrap
	instead of from top/bootstrap.
	* autopull.sh, autogen.sh, bootstrap-funclib.sh: Remove.

2023-01-06  Paul Eggert  <eggert@cs.ucla.edu>

	Fix ‘assume’ include

	* src/tar.c: Include verify.h, needed for ‘assume’.

2023-01-06  Paul Eggert  <eggert@cs.ucla.edu>

	Update copyright years

	UPDATE_COPYRIGHT_USE_INTERVALS=1 \
	gnulib/build-aux/update-copyright \
	  $(git ls-files | sed -e '/^gnulib$/d
				   /^paxutils$/d
				   /^COPYING$/d
				   /\/fdl.texi$/d')

2022-12-29  Sergey Poznyakoff  <gray@gnu.org>

	Optionally warn about missing zero blocks at the end of the archive

	(In response to savannah bug #63574)

	* doc/intern.texi: Document actual tar behaviour in regard to
	missing end-of-file marker.
	* doc/tar.texi: Rewrite the "warnings" section.  Document
	--warning=missing-zero-blocks
	* src/common.h (WARN_MISSING_ZERO_BLOCKS): New constant.
	(WARN_ALL): Include all warning bits.
	* src/list.c (read_and): If EOF is reached without seeing
	end-of-file
	blocks and the "missing-zero-blocks" warning is requested,
	warn about
	the fact.
	* src/warning.c: New warnings: "missing-zero-blocks", "verbose".
	(warning_option): Change definition to reflect changes in common.h

2022-12-27  Sergey Poznyakoff  <gray@gnu.org>

	Fix example use of find command in documentation

2022-12-26  Sergey Poznyakoff  <gray@gnu.org>

	Fix savannah bug #63567

	* src/buffer.c (short_read): Increase records_read only if a full
	record has been read.

2022-11-04  Pavel Raiskup (mirror bot)	<praiskup-mirroring@raiskup.cz>

	Merge remote-tracking branch 'source_repo/master' into ci

2022-11-04  Paul Eggert  <eggert@cs.ucla.edu>

	Fix -Af F bug when F is not a regular file

	Problem reported by Boris Gjenero in:
	https://lists.gnu.org/r/bug-tar/2022-11/msg00001.html
	* src/update.c (append_file): Don’t assume that FILE_NAME is a
	regular file whose size can be determined before reading.
	Instead, simply read from the file until its end is reached.

2022-11-04  Paul Eggert  <eggert@cs.ucla.edu>

	Fix README-* files

	README-alpha is for alpha releases, which are not from Git or
	CVS, so
	omit mention of that.  I'm not sure we'll ever do alpha releases,
	but
	if we do, README-alpha assumes the tarballs are already bit.

	Update README-hacking with info that was mistakenly put into
	README-alpha.  Also mention Bison, needed for parse-date.y.

2022-10-27  Pavel Raiskup (mirror bot)	<praiskup-mirroring@raiskup.cz>

	Merge remote-tracking branch 'source_repo/master' into ci

2022-10-27  Paul Eggert  <eggert@cs.ucla.edu>

	Fix undefined behavior on bad extended header

	* src/xheader.c (locate_handler): Avoid undefined behavior
	if strlen(keyword) < kwlen.

2022-10-22  Pavel Raiskup (mirror bot)	<praiskup-mirroring@raiskup.cz>

	Merge remote-tracking branch 'source_repo/master' into ci

2022-10-22  Sergey Poznyakoff  <gray@gnu.org>

	Fix savannah bug #63123

	The bug was introduced by commit 79d1ac38c1, which didn't take into
	account all the consequences of returning RECOVER_OK on EEXIST, in
	particular interactions with the delayed_set_stat logic.

	The commit 79d1ac38c1 is reverted (the bug it was intended to fix
	was actually fixed by 79a442d7b0).  Instead:

	* src/extract.c (maybe_recoverable): Don't call maybe_recoverable
	if EEXIST is reported when UNLINK_FIRST_OLD_FILES option is set.

2022-10-22  Pavel Raiskup (mirror bot)	<praiskup-mirroring@raiskup.cz>

	Merge remote-tracking branch 'source_repo/master' into ci

2022-10-22  Sergey Poznyakoff  <gray@gnu.org>

	Fix savannah bug #63250

	* src/buffer.c (magic): Add signature of LZMA files produced by xz.

2022-10-08  Pavel Raiskup (mirror bot)	<praiskup-mirroring@raiskup.cz>

	Merge remote-tracking branch 'source_repo/master' into ci

2022-10-07  Paul Eggert  <eggert@cs.ucla.edu>

	Mention previous bug fix

2022-10-07  Paul Eggert  <eggert@cs.ucla.edu>

	tests: check for recently-fixed bug

	* tests/exclude17.at: New file.
	* tests/testsuite.at (AT_CHECK_TIMESTAMP): Add it.

2022-10-07  Aurélien Martin  <amartin@witekio.com>  (tiny change)

	tar: fix --exclude-vcs-ignores memory

	The function frees the patterns' wordsplit structure without asking
	add_exclude to reallocate the strings.	In many cases, this
	leads to
	each file name in the directory being checked against the memory
	location where it just got reallocated.
	* src/exclist.c: Use EXCLUDE_ALLOC.

2022-10-05  Pavel Raiskup (mirror bot)	<praiskup-mirroring@raiskup.cz>

	Merge remote-tracking branch 'source_repo/master' into ci

2022-09-10  Paul Eggert  <eggert@cs.ucla.edu>

	build: update submodules to latest

	* src/common.h: Include <inttostr.h> since paxutils no longer does.
	(STRINGIFY_BIGINT): New macro, copied from older paxutils.
	(UINTMAX_STRSIZE_BOUND): New constant, also from older paxutils.

2022-09-10  Paul Eggert  <eggert@cs.ucla.edu>

	Fix bootstrap.conf when no paxutils

	* bootstrap.conf: Don’t assume the paxutils subdirectory already
	exists, when bootstrapping.

2022-09-03  Pavel Raiskup (mirror bot)	<praiskup-mirroring@raiskup.cz>

	Merge remote-tracking branch 'source_repo/master' into ci

2022-09-03  Paul Eggert  <eggert@cs.ucla.edu>

	Fix data loss when acting as filter

	This bug was introduced by the recent lseek-related changes.
	* src/delete.c (delete_archive_members):
	* src/update.c (update_archive):
	Copy the member if acting as a filter, rather than lseeking over
	it, which is possible if stdin is a regular file.
	* src/list.c (skim_file, skim_member):
	* src/sparse.c (sparse_skim_file):
	New functions, for copying when a filter.
	* src/list.c (skip_file): Remove; replaced with skim_file.
	All callers changed.
	(skip_member): Reimplement in terms of skim_member.
	* src/sparse.c (sparse_skip_file):
	Remove; replaced with sparse_skim_file.  All callers changed.
	* src/update.c (acting_as_filter): New static var.
	(update_archive): Set it; this is like delete.c.
	* tests/delete01.at (deleting a member after a big one):
	* tests/delete02.at (deleting a member from stdin archive):
	Also test filter case.

2022-09-02  Pavel Raiskup (mirror bot)	<praiskup-mirroring@raiskup.cz>

	Merge remote-tracking branch 'source_repo/master' into ci

2022-09-02  Paul Eggert  <eggert@cs.ucla.edu>

	Fix --delete bug with short reads

	* gnulib.modules: Add idx.
	* src/common.h: Include idx.h.
	* src/delete.c (move_archive): Don’t botch short reads.

2022-08-26  Pavel Raiskup (mirror bot)	<praiskup-mirroring@raiskup.cz>

	Merge remote-tracking branch 'source_repo/master' into ci

2022-08-26  Paul Eggert  <eggert@cs.ucla.edu>

	Do not diagnose same xattr file twice

	* src/extract.c (set_xattr): Simplify, by having it do only
	the mknodat and xattrs_xattrs_set, rather than also
	trying to recover from failure.  Caller simplified too.
	* tests/xattr07.at (xattrs: xattrs and --skip-old-files):
	Adjust test to match fixed behavior.

2022-08-26  Paul Eggert  <eggert@cs.ucla.edu>

	Fix bug with -x --xattr read-only files

	Problem reported by Kevin Raymond in:
	https://bugzilla.redhat.com/show_bug.cgi?id=1886540
	* src/extract.c (open_output_file): If we already created the
	empty file, do not open with O_EXCL, or with O_CREAT or O_TRUNC
	for that matter.  Instead, use only O_NOFOLLOW to avoid some
	races.	When estimating current mode, use openflag & O_EXCL rather
	than overwriting_old_files.
	(extract_file): Also invert S_IWUSR if it’s not set.
	* tests/xattr08.at: New test.
	* tests/Makefile.am, tests/testsuite.at: Add it.

2022-08-15  Pavel Raiskup (mirror bot)	<praiskup-mirroring@raiskup.cz>

	Merge remote-tracking branch 'source_repo/master' into ci

2022-08-15  Paul Eggert  <eggert@cs.ucla.edu>

	Avoid quadratic behavior with delayed links

	Do this by searching a hash table instead of a linked list.
	Problem reported by Martin Dørum in https://mort.coffee/home/tar/
	via Gavin Smith in:
	https://lists.gnu.org/r/bug-tar/2022-07/msg00003.html
	* src/extract.c: Include hash.h.
	Improve performance a bit on non-birthtime hosts
	(struct delayed_link.has_predecessor): New member.
	(delayed_link_head): Remove, replacing with ...
	(delayed_link_table): ... this new variable.  All uses
	of linked list replaced with hash table.
	(dl_hash, dl_compare): New functions for hash table.
	(create_placeholder_file): Initialize has_predecessor.
	(apply_delayed_link): New function, with body taken from
	most of the old apply_delayed_link.
	(apply_delayed_links): Use it.	Respect has_predecessor.
	Don’t bother freeing as we are about to exit.

2022-08-15  Paul Eggert  <eggert@cs.ucla.edu>

	Improve performance a bit on non-birthtime hosts

	* src/extract.c (HAVE_BIRTHTIME, BIRTHTIME_EQ): New macros.
	(struct delayed_link, create_placeholder_file, extract_link)
	(apply_delayed_links): Avoid unnecessary work on platforms
	like GNU/Linux that lack birthtime.

2022-08-15  Paul Eggert  <eggert@cs.ucla.edu>

	Avoid excess lseek etc.

	* src/buffer.c, src/delete.c: Do not include system-ioctl.h.
	* src/buffer.c (guess_seekable_archive): Remove.  This is now done
	by get_archive_status, in a different way.
	(get_archive_status): New function that gets archive_stat
	unless remote, and sets seekable_archive etc.
	(_open_archive): Prefer bool for boolean.
	(_open_archive, new_volume): Get archive status consistently
	by calling get_archive_status in both places.
	* src/buffer.c (backspace_output):
	* src/compare.c (verify_volume):
	* src/delete.c (move_archive):
	Let mtioseek worry about mtio.
	* src/common.h (archive_stat): New global, replacing ar_dev and
	ar_ino.  All uses changed.
	* src/delete.c (move_archive): Check for integer overflow.
	Also report overflow if the archive position would go negative.
	* src/system.c: Include system-ioctl.h, for MTIOCTOP etc.
	(mtioseek): New function, which also checks for integer overflow.
	(sys_save_archive_dev_ino): Remove.
	(archive_stat): Now
	(sys_get_archive_stat): Also initialize mtioseekable_archive.
	(sys_file_is_archive): Don’t return true if the archive is
	/dev/null
	since it’s not a problem in that case.
	(sys_detect_dev_null_output): Cache dev_null_stat.

	doc: omit MS-DOS mentions in doc
	It’s really FAT32 we’re worried about now, not MS-DOS.
	And doschk is no longer a GNU program.

2022-08-15  Paul Eggert  <eggert@cs.ucla.edu>

	Omit MS-DOS mentions in doc

	It’s really FAT32 we’re worried about now, not MS-DOS.
	And doschk is no longer a GNU program.

2022-08-08  Pavel Raiskup (mirror bot)	<praiskup-mirroring@raiskup.cz>

	Merge remote-tracking branch 'source_repo/master' into ci

2022-07-25  Paul Eggert  <eggert@cs.ucla.edu>

	Work around GCC bug 106436

	* src/tar.c (optloc_eq): Use ‘assume’ to pacify GCC bug.

2022-07-25  Paul Eggert  <eggert@cs.ucla.edu>

	Avoid unlikely crash when xasprintf returns 0

	Problem caught by GCC 12.
	* src/tar.c (easprintf): New static function, which never returns
	a null pointer.  All uses of xasprintf replaced by uses of this
	function.

2022-07-25  Paul Eggert  <eggert@cs.ucla.edu>

	Update .gitignore

	* .gitignore: Redo for current sources.

2022-07-25  Paul Eggert  <eggert@cs.ucla.edu>

	Fix minor type confusion

	* src/tar.c (decode_options): Don’t assign ‘false’ to
	a pointer.

2022-07-25  Paul Eggert  <eggert@cs.ucla.edu>

	Work around GCC bug 106428

	* src/names.c (read_next_name): Reword and clarify
	to avoid GCC bug 106428.

2022-07-25  Paul Eggert  <eggert@cs.ucla.edu>

	Work around GCC bug 106427

	* lib/wordsplit.c (coalesce_segment): Reword to avoid
	GCC bug 106427.

2022-07-24  Paul Eggert  <eggert@cs.ucla.edu>

	Adjust to Gnulib bootstrap revamp

	* autogen.sh, autopull.sh, bootstrap-funclib.sh:
	New files, copied from gnulib/top.
	* bootstrap: Copy from gnulib/top/bootstrap (as opposed
	to copying from gnulib/build-aux/bootstrap, as we used to).
	* bootstrap.conf (bootstrap_post_pull_hook)
	(bootstrap_post_import_hook): New functions.
	Move commands into these functions as needed.

2022-07-11  Paul Eggert  <eggert@cs.ucla.edu>

	* doc/tar.1: Fix --xattrs-exclude typo.

2022-06-14  Pavel Raiskup (mirror bot)	<praiskup-mirroring@raiskup.cz>

	Merge remote-tracking branch 'source_repo/master' into ci

2022-06-14  Paul Eggert  <eggert@cs.ucla.edu>

	Avoid EOVERFLOW problems in some symlink tests

	* src/extract.c (is_directory_link): New arg ST.  Caller changed.
	(is_directory_link, open_output_file):
	Use readlinkat, not fstatat, to determine whether a string
	names a symlink.  This avoids EOVERFLOW issues.
	(extract_dir): Avoid duplicate calls to fstatat when
	keep_directory_symlink_option && fstatat_flags == 0
	and the file is a symlink to an existing file.

2022-06-14  Pavel Raiskup (mirror bot)	<praiskup-mirroring@raiskup.cz>

	Merge remote-tracking branch 'source_repo/master' into ci

2022-06-13  Paul Eggert  <eggert@cs.ucla.edu>

	Fix ‘make dist-xz’ bug

	Problem reported by Pavel Raiskup in:
	https://lists.gnu.org/r/bug-tar/2022-06/msg00014.html
	* bootstrap.conf (copy_files): Also copy DISTFILES.

2022-06-13  Pavel Raiskup (mirror bot)	<praiskup-mirroring@raiskup.cz>

	Merge remote-tracking branch 'source_repo/master' into ci

2022-06-13  Paul Eggert  <eggert@cs.ucla.edu>

	Fix commentary in new test case

2022-06-13  Pavel Raiskup (mirror bot)	<praiskup-mirroring@raiskup.cz>

	Merge remote-tracking branch 'source_repo/master' into ci

2022-06-13  Paul Eggert  <eggert@cs.ucla.edu>

	Fix doc -c typo

	https://lists.gnu.org/r/bug-tar/2022-06/msg00006.html
	* doc/tar.texi (Extended File Attributes): Fix typo.

2022-06-13  Pavel Raiskup (mirror bot)	<praiskup-mirroring@raiskup.cz>

	Merge remote-tracking branch 'source_repo/master' into ci

2022-06-13  Paul Eggert  <eggert@cs.ucla.edu>

	Update to current Autoconf & Gettext

	* acinclude.m4, configure.ac:
	Use AS_HELP_STRING, not AC_HELP_STRING.
	* bootstrap: Sync from Gnulib.
	* configure.ac: Require Autoconf 2.71 and Gettext 0.21.
	Use AC_PROG_CC, not AC_PROG_CC_STDC.
	Prefer AC_COMPILE_IFELSE to AC_TRY_COMPILE.
	Use AC_CONFIG_FILES.
	* gnulib.modules: Use gettext-h, not gettext.

2022-06-13  Paul Eggert  <eggert@cs.ucla.edu>

	build: update gnulib and paxutils submodules to latest

2022-06-11  Pavel Raiskup (mirror bot)	<praiskup-mirroring@raiskup.cz>

	Merge remote-tracking branch 'source_repo/master' into ci

2022-06-11  James Abbatiello  <abbeyj@gmail.com>  (tiny change)

	tar: fix race condition

	Problem reported in:
	https://lists.gnu.org/r/bug-tar/2022-03/msg00000.html
	* src/extract.c (make_directories): Retry the file creation as
	long as the directory exists, regardless of whether tar itself
	created the directory.

2022-06-11  Paul Eggert  <eggert@cs.ucla.edu>

	tar: fix race condition

	Problem reported by James Abbatiello in:
	https://lists.gnu.org/r/bug-tar/2022-03/msg00000.html
	* src/extract.c (make_directories): Do not assume that when
	mkdirat fails with errno == EEXIST that there is an existing file
	that can be statted.  It could be a dangling symlink.  Instead,
	wait until the end and stat it.

2022-06-11  Paul Eggert  <eggert@cs.ucla.edu>

	test: new test extrac25.at

	* tests/Makefile.am (TESTSUITE_AT): Add extrac25.at.
	* tests/extrac25.at: New file.
	* tests/testsuite.at: Include it.

2022-06-09  Pavel Raiskup (mirror bot)	<praiskup-mirroring@raiskup.cz>

	Merge remote-tracking branch 'source_repo/master' into ci

2022-06-09  Paul Eggert  <eggert@cs.ucla.edu>

	Warn “file changed as we read it” less often

	* src/create.c (dump_file0): Remove an fstatat call that is
	unnecessary because the file wasn’t read so we can treat
	the first
	fstatat as atomic.  Warn “file changed” when the file’s size,
	mtime, user ID, group ID, or mode changes, instead of when the
	file’s size or ctime changes.  Also, when such a change happens,
	do not change exit status if --ignore-failed-read.  Finally,
	don’t
	attempt to change atime back if it didn’t change.

2022-06-09  Paul Eggert  <eggert@cs.ucla.edu>

	Modernize NEWS hook to current Emacs

2022-05-03  Pavel Raiskup (mirror bot)	<praiskup-mirroring@raiskup.cz>

	Merge remote-tracking branch 'source_repo/master' into ci

2022-05-03  Paul Eggert  <eggert@cs.ucla.edu>

	doc: fix abrupt sentence in HTML

	Typo reported by Jackson Dougherty in:
	https://lists.gnu.org/r/bug-tar/2022-05/msg00000.html
	* doc/tar.texi: Don’t assume that tex and info are the only two
	formats.

2022-04-30  Pavel Raiskup (mirror bot)	<praiskup-mirroring@raiskup.cz>

	Merge remote-tracking branch 'source_repo/master' into ci

2022-02-16  Paul Eggert  <eggert@cs.ucla.edu>

	tar: revamp "file is the archive" diagnostic

	* src/create.c (dump_file0): For clarity, change diagnostic
	wording from "file is the archive; not dumped" to "archive cannot
	contain itself; not dumped".  All test cases and documentation
	changed.

2022-01-02  Pavel Raiskup (mirror bot)	<praiskup-mirroring@raiskup.cz>

	Merge remote-tracking branch 'source_repo/master' into ci

2022-01-02  Sergey Poznyakoff  <gray@gnu.org>

	Update copyright years

2021-12-14  Pavel Raiskup (mirror bot)	<praiskup-mirroring@raiskup.cz>

	Merge remote-tracking branch 'source_repo/master' into ci

2021-12-14  Paul Eggert  <eggert@cs.ucla.edu>

	Copy COPYING and fdl.texi from upstream

2021-12-14  Paul Eggert  <eggert@cs.ucla.edu>

	Format ` and ' more nicely in doc

	Use @documentencoding and set txicodequoteundirected and
	txicodequotebacktick to get nicer-looking quoting in the manual.

2021-12-14  Paul Eggert  <eggert@cs.ucla.edu>

	Don’t recommend delete=mtime

	That stops working after the year 2242.

2021-12-13  Pavel Raiskup (mirror bot)	<praiskup-mirroring@raiskup.cz>

	Merge remote-tracking branch 'source_repo/master' into ci

2021-12-13  Paul Eggert  <eggert@cs.ucla.edu>

	More reproducible tarball doc

	* doc/tar.texi (PAX keywords): Improve discussion of how
	to generate reproducible tarballs.

2021-12-13  Pavel Raiskup (mirror bot)	<praiskup-mirroring@raiskup.cz>

	Merge remote-tracking branch 'source_repo/master' into ci

2021-12-13  Sergey Poznyakoff  <gray@gnu.org>

	Raise version number

2021-12-13  Pavel Raiskup (mirror bot)	<praiskup-mirroring@raiskup.cz>

	Merge remote-tracking branch 'source_repo/master' into ci

2021-12-13  Paul Eggert  <eggert@cs.ucla.edu>

	.gitignore maintenance (some automated)

	bootstrap: copy from Gnulib

	build: update gnulib and paxutils submodules to latest

	Add NEWS items for changes since 1.34

2021-12-13  Paul Eggert  <eggert@cs.ucla.edu>

	Omit unnecessary devmajor and devminor setting

	* src/create.c (dump_file0): Omit redundant setting of devmajor
	and devminor; start_header already does this.

2021-12-13  Paul Eggert  <eggert@cs.ucla.edu>

	Omit devmajor and devminor for non-special files

	* src/create.c (start_header): Leave the devmajor and devminor
	fields empty for files that are not character and block special
	devices, even when the archive format is pax, ustar or v7.
	This avoids generating irrelevant differences which helps with
	reproducible builds, and is more compatible with what Solaris 10
	tar does.

2021-12-13  Paul Eggert  <eggert@cs.ucla.edu>

	Use ‘bool’ in create.c

	* src/create.c: Prefer ‘bool’, ‘true’, ‘false’
	for booleans.

2021-11-05  Pavel Raiskup  <praiskup@redhat.com>

	Use GitHub Actions instead of Travis

	Merge branch 'master' into ci

2021-10-13  Paul Eggert  <eggert@cs.ucla.edu>

	* gnulib.modules: Add year2038.

2021-09-20  Paul Eggert  <eggert@cs.ucla.edu>

	build: improve build-from-git for older GCCs

	configure.ac: Bump GCC version from 4.6 to 11.2 when deciding
	whether
	to default to enabling GCC warnings when --enable-gcc-warnings
	is not
	specified, as older GCCs can generate too many false alarms.  From
	a suggestion by Christian Schoenebeck.

2021-09-19  Paul Eggert  <eggert@cs.ucla.edu>

	Simplify wordsplit code a bit

	These changes pacify gcc -Wanalyzer-null-dereference on x86-64 gcc
	11.2.1 20210728 (Red Hat 11.2.1-1).
	* lib/wordsplit.c (wsnode_tail): Remove unnecessary test.
	(coalesce_segment): Coalesce calls to wsnode_len.

2021-09-18  Paul Eggert  <eggert@cs.ucla.edu>

	build: document WERROR_CFLAGS

	* README-hacking: Mention 'make WERROR_CFLAGS='.

2021-09-17  Paul Eggert  <eggert@cs.ucla.edu>

	build: update paxutils submodule to latest

2021-09-17  Paul Eggert  <eggert@cs.ucla.edu>

	build: update gnulib submodule to latest

	* src/common.h (get_directory_entries):
	Add _GL_ATTRIBUTE_MALLOC _GL_ATTRIBUTE_DEALLOC_FREE.
	Problem found by gcc -Wsuggest-attribute=malloc and
	current Gnulib.

2021-09-17  Paul Eggert  <eggert@cs.ucla.edu>

	Pacify gcc -Warray-parameter

	* src/common.h (code_timespec): Declare sbuf arg to be an array,
	to be consistent with definition.

2021-09-17  Paul Eggert  <eggert@cs.ucla.edu>

	Fix null rereference if low-memory

	* src/incremen.c (read_incr_db_01): Use xstrdup not strdup.
	Problem found by gcc -Wanalyzer-possible-null-argument.

2021-09-02  Sergey Poznyakoff  <gray@gnu.org>

	Provide functions for manipulating arrays of extended attributes

	* src/common.h (xheader_xattr_free,xheader_xattr_copy): Remove
	protos.
	(xattr_map_init,xattr_map_copy)
	(xattr_map_add,xattr_map_free): New protos.
	* src/tar.h (xattr_map): New struct.
	(tar_stat_info): Replace xattr_map_size and xattr_map with one
	field: xattr_map.
	* src/xattrs.c (XATTRS_PREFIX,XATTRS_PREFIX_LEN): New defines.
	(xheader_xattr_init,xattr_map_init)
	(xattr_map_free,xattr_map_add)
	(xheader_xattr_add,xattr_map_copy): New functions.
	All uses changed.
	* src/create.c (start_header): Update to use struct xattr_map.
	* src/extract.c: Update to use struct xattr_map.
	* src/tar.c: Likewise.
	* src/xheader.c (xheader_xattr_init,xheader_xattr_free)
	(xheader_xattr_add,xheader_xattr_copy): Remove.
	(xattr_coder,xattr_decoder): Use xattr_map_ functions.

2021-08-28  Sergey Poznyakoff  <gray@gnu.org>

	Fix handling of extended header prefixes

	* src/xheader.c (locate_handler): Recognize prefix keywords only
	when followed by a dot.
	(xattr_decoder): Use xmalloc/xstrdup instead of alloc

2021-08-28  Sergey Poznyakoff  <gray@gnu.org>

	Handle invalid sparse entries in pax header

	* src/sparse.c (pax_decode_header): Check if sp.offset+sp.numbytes
	falls within the reported file size.  Check for possible integer
	overflow.

2021-08-28  Sergey Poznyakoff  <gray@gnu.org>

	transform: fix replacement of particular pattern instance

	This fixes handling of expressions like 's/s/@/2'

	Fix suggested by Anthony Heading.

	* src/transform.c (_single_transform_name_to_obstack): Avoid
	duplicating
	initial prefix if replace is not needed.

2021-07-01  Samanta Navarro  <ferivoz@riseup.net>

	Fix crash on invalid command line argument

	The copy_string_unquote function does not handle arguments
	which only
	consist of a single quote. A string is only quoted if two quoting
	characters exist.

	How to reproduce:

	tar --checkpoint-action exec=\"

2021-07-01  Sergey Poznyakoff  <gray@gnu.org>

	Fix the use of options with trailing slash in files-from list

	* src/names.c (read_name_from_file): Do not remove trailing slash
	here, since name_buffer might contain an option (e.g. -C /).
	(read_next_name): Remove trailing slash when we're sure we're
	dealing
	with a file name.
	See 163e96a0.

2021-06-01  Sergey Poznyakoff  <gray@gnu.org>

	Minor fix

	* scripts/backup-specs: Set standard paths for rsh (patch#9275).

2021-06-01  Samanta Navarro  <ferivoz@riseup.net>

	Fix typos

	Typos found with codespell

2021-06-01  Samanta Navarro  <ferivoz@riseup.net>

	Minor changes.

	* src/xheader.c (decode_record): Fix format specification.
	(xattr_encode_keyword): Allocate space for terminating \0.

2021-03-24  Sergey Poznyakoff  <gray@gnu.org>

	Fix gendocs_template

2021-03-08  Paul Eggert  <eggert@cs.ucla.edu>

	Tune for single-threaded tar

	This takes advantage of recent optimizations in Gnulib
	for single-threaded programs.
	* configure.ac (GNULIB_EXCLUDE_SINGLE_THREAD)
	(GNULIB_MBRTOWC_SINGLE_THREAD, GNULIB_REGEX_SINGLE_THREAD)
	(GNULIB_WCHAR_SINGLE_LOCALE): Define.

2021-03-08  Paul Eggert  <eggert@cs.ucla.edu>

	Port linking to AIX 7.1

	* src/Makefile.am (LDADD): Remove, folding into tar_LDADD.
	* src/Makefile.am (tar_LDADD), tests/Makefile.am (LDADD):
	Add the libraries gnulib-tool currently recommends: LIB_ACL,
	LIB_CLOCK_GETTIME, LIB_GETRANDOM, LIB_HARD_LOCALE, LIB_HAS_ACL,
	LIB_MBRTOWC, LIB_SETLOCALE_NULL.  Otherwise, tar won’t link
	on AIX
	7.1 with xlc because the -lpthread option is missing.

2021-03-08  Paul Eggert  <eggert@cs.ucla.edu>

	Port xattr-at.h to AIX 7.1

	* lib/xattr-at.h: Include <errno.h> before testing whether
	ENOATTR is defined.

2021-03-08  Paul Eggert  <eggert@cs.ucla.edu>

	build: update gnulib submodule to latest

2021-03-01  Sergey Poznyakoff  <gray@gnu.org>

	Fix building the online version of the manual.

	* doc/Makefile.am (GENDOCS): Use the version from the tar
	repository.
	(manual): Set the DISTRIN rendition.
	(manual-rebuild): New goal.
	* doc/README.manual: New file. Instructions for maintainers on
	how to
	update web documentation.
	* doc/gendocs.sh: A version from gnulib fixed as per
	https://lists.gnu.org/archive/html/bug-gnulib/2021-03/msg00002.html.
	* doc/gendocs_template: Updated version from gnulib.
	* doc/intern.texi: Fix the use of UNREVISED.
	* doc/tar.texi: Fix the use of GNUTAR.

2021-03-01  Paul Eggert  <eggert@cs.ucla.edu>

	Fix unlikely uninitalized var bug with sparse file

	* src/sparse.c (sparse_extract_file): Set *SIZE to
	stat.st_size so that the caller does not use *SIZE
	when uninitalized.  Problem found with GCC 10 and
	--enable-gcc-warnings CFLAGS='-O2 -flto -fanalyzer'.

2021-03-01  Paul Eggert  <eggert@cs.ucla.edu>

	Pacify --enable-gcc-warnings -flto -fanalyzer

	With GCC 10.2.1, ‘./configure --enable-gcc-warnings CFLAGS='-O2
	-flto -fanalyzer' issued a false alarm about uninitialized
	variable use.  Pacify GCC by using a variant of the code.
	* src/buffer.c (zip_program): Omit last placeholder entry.
	(n_zip_programs): New constant.
	(find_zip_program): Use it instead of placeholder.
	(first_decompress_program): Set *PSTATE to maximum value
	if skipping the table.	This avoids confusing gcc -flto
	into thinking *PSTATE is used uninitialized.
	(next_decompress_program): Simplify now that *PSTATE is maximal
	when skipping.

2021-03-01  Paul Eggert  <eggert@cs.ucla.edu>

	Pacify clang for unreachable ‘return’

	* src/sparse.c (sparse_scan_file_seek): Omit unreachable statement.

2021-03-01  Paul Eggert  <eggert@cs.ucla.edu>

	Pacify clang char conversion

	* src/create.c (to_chars): Pacify ‘clang’ about assigning
	128 to ‘char’.

2021-03-01  Paul Eggert  <eggert@cs.ucla.edu>

	Omit most uses of ‘inline’

	With today’s compilers ‘inline’ is typically not needed for
	performance (at least the way GNU Tar uses it) and it gets in the
	way of portability.
	* configure.ac: Omit AC_C_INLINE; no longer needed here.
	* lib/attr-xattr.in.h (setxattr, lsetxattr, fsetxattr, getxattr)
	(lgetxattr, fgetxattr, listxattr, llistxattr, flistxattr):
	* lib/wordsplit.c (skip_delim_internal, skip_delim)
	(skip_delim_real, exptab_matches):
	* src/delete.c (flush_file):
	* src/extract.c (safe_dir_mode):
	* src/misc.c (ptr_align):
	Now just static, not static inline.
	* lib/wordsplit.h (wordsplit_getwords): Remove; no longer used.
	* src/common.h (name_more_files): Now COMMON_INLINE, not
	extern inline - which is not portable according to C99,
	the way we were using it.

2021-03-01  Paul Eggert  <eggert@cs.ucla.edu>

	maint: port better to non-GCC compilers

	This can be helpful in porting to compilers like Oracle Developer
	Studio that support some but not all GCC attributes.
	* lib/wordsplit.c (FALLTHROUGH): Remove; now done by attribute.h.
	* lib/wordsplit.h (__WORDSPLIT_ATTRIBUTE_FORMAT): Remove;
	all uses replaced by ATTRIBUTE_FORMAT.
	* lib/wordsplit.h, src/buffer.c, src/common.h, src/compare.c:
	* src/sparse.c, src/system.c, src/xheader.c:
	Prefer ATTRIBUTE_FORMAT, MAYBE_UNUSED, _Noreturn, etc. to
	__attribute__.

2021-03-01  Paul Eggert  <eggert@cs.ucla.edu>

	Update paxutils from upstream

2021-02-28  Paul Eggert  <eggert@cs.ucla.edu>

	maint: 1.34 announcement update

	Hand-install 1.34 changes into master.
	Evidently these changes were not pushed to savannah,
	before I installed further changes today.

2021-02-28  Paul Eggert  <eggert@cs.ucla.edu>

	maint: port to Fedora 33

	Fedora 33 uses GCC 10.2.1, which is a bit pickier.
	* configure.ac: Do not use -Wsystem-headers, as this
	runs afoul of netdb.h on Fedora 33.
	* gnulib.modules: Add ‘attribute’.
	* lib/wordsplit.c (wsnode_new): Return the newly allocated
	pointer instead of a boolean, to pacify GCC 10.2.1 which otherwise
	complains about use of possibly-null pointers.	All uses changed.
	* src/buffer.c (try_new_volume): Don’t assume find_next_block
	succeeds.
	(_write_volume_label): Pacify GCC 10.2.1 with an ‘assume’,
	since
	LABEL must be nonnull here.
	* src/common.h (FALLTHROUGH): Remove; now in attribute.h.
	Include attribute.h, for ATTRIBUTE_NONNULL.
	* src/misc.c (assign_string_or_null): New function,
	taking over the old role of assign_string.
	(assign_string): Assume VALUE is non-null.
	(assign_null): New function, taking over the old
	role of assign_string when its VALUE was nonnull.
	All callers of assign_string changed to use these functions.
	(assign_string_n): Clear *STRING if VALUE is null,
	to fix a potential double-free.

2021-02-28  Paul Eggert  <eggert@cs.ucla.edu>

	Update gnulib and paxutils from upstream

2021-02-08  Pavel Raiskup  <praiskup@redhat.com>

	xattrs: fix capabilities root test

	Related discussion in the Fedora pull-request:
	https://src.fedoraproject.org/rpms/tar/pull-request/8

	* tests/capabs_raw01.at: Newer systems (currently e.g. Fedora 34)
	print getcap output in format CAP=VAL, not CAP+VAL.

2021-02-08  Sergey Poznyakoff  <gray@gnu.org>

	Gracefully handle duplicate symlinks when extracting

	If the archive being extracted contains multiple copies
	of the same symlink, extract only the first of them and
	skip the rest.	The use case is described in

	https://lists.gnu.org/archive/html/bug-tar/2021-01/msg00026.html

	The bug was introduced by 2d3396c3ea.

	* src/extract.c (create_placeholder_file): If placeholder already
	exists and is registered in the delayed_link list, return
	immediately.

2021-02-04  Sergey Poznyakoff  <gray@gnu.org>

	Fix savannah bug #60002

	Bug was introduced by commit 34d15af1.

	* src/extract.c (prepare_to_extract): When extracting over pipe,
	process only regular files.
	* tests/extrac24.at: New test case.
	* tests/Makefile.am: Add new test case.
	* tests/testsuite.at: Likewise.

2021-01-17  Sergey Poznyakoff  <gray@gnu.org>

	Fix memory leak in read_header

	Bug reported in https://savannah.gnu.org/bugs/?59897

	* src/list.c (read_header): Don't return directly from the loop.
	Instead set the status and break.  Return the status.  Free
	next_long_name and next_long_link before returning.

2021-01-17  Sergey Poznyakoff  <gray@gnu.org>

	Fix improper argument reference.

	(bug introduced by 1ff0b63f)

	* src/tar.c (parse_default_options): Pass args as is to the
	argp_parse.

2021-01-16  Sergey Poznyakoff  <gray@gnu.org>

	Fix regression itroduced by 66162927.

	* src/misc.c (chdir_arg): Initialize the abspath field to NULL.
	(tar_getcdpath): Actually initialize the abspath field here.

2021-01-14  Sergey Poznyakoff  <gray@gnu.org>

	Fixes in the delete_archive_members function

	* src/delete.c (delete_archive_members): Clean-up the code. Avoid
	entering the loop from the middle.  Free the memory allocated for
	current_stat_info.

2021-01-08  Sergey Poznyakoff  <gray@gnu.org>

	Use stdopen from gnulib

	* gnulib.modules: Request stdopen
	* lib/Makefile.am: Remove stdopen.c and stdopen.h
	* lib/stdopen.c: Remove.
	* lib/stdopen.h: Remove.
	* src/tar.c: stdopen returns 0 on success.

2021-01-08  Sergey Poznyakoff  <gray@gnu.org>

	Actually prefer /dev/full over /dev/null as a replacement for stdin

	* lib/stdopen.c (stdopen): Fix improper condition.
	Avoid leaking extra file descriptor.
	* src/tar.c (main): Set name of the stdout for diagnostics.
	Bail out if stdopen fails.

2021-01-07  Sergey Poznyakoff  <gray@gnu.org>

	Version 1.33

	* NEWS: Update.
	* configure.ac: Raise version number. Require automake 1.15 and
	autoconf 2.64.
	* gnulib: pull v0.1-4333-g30820c2
	* src/names.c: Use hash_remove instead of the deprecated
	hash_delete.

2021-01-06  Sergey Poznyakoff  <gray@gnu.org>

	Update copyright years

2020-07-13  Sergey Poznyakoff  <gray@gnu.org>

	Fix typo in the manpage

	* doc/tar.1: Fix description of the --newer option

2020-07-10  Pavel Raiskup  <praiskup@redhat.com>

	Bugfix --sparse --diff mode

	Originally reported in:
	https://bugzilla.redhat.com/show_bug.cgi?id=1853469

	* src/sparse.c (check_data_region): Only compare the part of buffer
	really fed by safe_read(), not whole rdsize.

2020-07-09  Pavel Raiskup  <praiskup@redhat.com>

	drop trailing newline

	travis: fix spec file location

	travis fixes

	.travis.yml

2020-06-24  Sergey Poznyakoff  <gray@gnu.org>

	Accept only position-sensitive (file-selection) options in file
	list files.

	Using such options as -f, -z, etc. is senseless in the file
	list file
	and bypasses the option consistency checks in decode_options.
	Therefore,
	only options related to file selection (a.k.a position-sensitive
	options)
	are allowed in files.

	* doc/tar.texi: Document changes.
	* src/common.h (tar_args): Move from tar.c
	(TAR_ARGS_INITIALIZER): New macro.
	* src/names.c: Declare option group identifiers as an enum.
	(names_parse_opt): Special handling for ARGP_KEY_ERROR.
	(names_argp): Remove static qualifier.
	(names_argp_children): Remove.
	* src/tar.c: Declare option group identifiers as an enum.
	(parse_opt): Special handling for ARGP_KEY_INIT.
	(argp_children): New static variable.
	(args): Remove static variable.
	(more_options): Allow only options from names_argp.
	(parse_default_options): Take a pointer to struct tar_args
	as argument.
	Replace the loc member during the call to argp_parse and restore it
	afterwards.
	(decode_options): Use automatic variable for args.

2020-06-22  Sergey Poznyakoff  <gray@gnu.org>

	Fix the logic of prepare_to_extract.

	* src/extract.c (prepare_to_extract): Return true to proceed with
	the extraction, and false to skip the current member.
	If extracting
	over a pipe, skip unlinking logic.
	(extract_archive): Update accordingly.

2020-06-15  Sergey Poznyakoff  <gray@gnu.org>

	Make sure link counting works for file names supplied with -T

	* src/common.h (name_count): Remove extern.
	(files_count): New enum.
	(filename_args): New extern.
	* src/names.c (name_count): Remove.
	(files_count): New variable.
	(name_add_name,name_add_file): Update filename_args.
	* src/create.c (create_archive): Set trivial_link_count
	depending on
	the filename_args.

2020-06-10  Alfred M. Szmidt  <ams@gnu.org>

	Remove freemanuals.texi

	* doc/Makefile.am (tar_TEXINFOS): Remove freemanuals.texi.
	* doc/freemanuals.texi: Delete file.
	* doc/tar.texi (Free Software Needs Free Documentation): Remove
	appendix.

2020-06-03  Sergey Poznyakoff  <gray@gnu.org>

	Fix typo in docs

2020-06-03  Sergey Poznyakoff  <gray@gnu.org>

	Bugfix

	* src/sparse.c (sparse_diff_file): Fix return value.

2020-05-19  Paul Eggert  <eggert@cs.ucla.edu>

	tar: avoid read overrun

	Problem reported by Timotej Kapus in:
	https://lists.gnu.org/r/bug-tar/2020-05/msg00001.html
	* src/transform.c (parse_transform_expr):
	Diagnose ‘--transform='s'’ instead of continuing past '\0'.

2020-02-15  Sergey Poznyakoff  <gray@gnu.org>

	Fix handling of linked rename chains in incremental backups

	* src/incremen.c: Change the meaning of the DIRF_RENAMED flag.
	Now it
	marks a directory which is the last one in a chain of renames.
	Regular renamed directories are recognized by their orig member
	being
	non-NULL.  Directories marked with DIRF_RENAMED start encoding
	of renames.
	(procdir): Clear DIRF_RENAMED flag on directories which are
	origins for
	renames.
	(makedumpdir): Use the orig member to check if the directory is a
	result of a rename.
	(store_rename): Move the check for DIR_IS_RENAMED to the
	caller. Don't
	clear the DIRF_RENAMED, it is not needed any more.

	* tests/rename06.at: New test.
	* tests/Makefile.am: Add rename06.at
	* tests/testsuite.at: Likewise.

2020-02-08  Sergey Poznyakoff  <gray@gnu.org>

	Update copyright years

2020-02-08  Sergey Poznyakoff  <gray@gnu.org>

	Fix the --no-overwrite-dir option

	Given this option, tar failed to preserve permissions of empty
	directories
	and to create files under directories owned by the current user
	that did
	not have the S_IWUSR bit set.

	* src/extract.c (fd_chmod): Rename to fd_i_chmod.
	(fd_chmod): New function.
	(safe_dir_mode): New function.
	(extract_dir): Special handling for existing directories in
	--no-overwrite-dir mode.
	* tests/extrac23.at: New file.
	* tests/Makefile.am: Add new test case.
	* tests/testsuite.at: Likewise.

2019-12-03  Sergey Poznyakoff  <gray@gnu.org>

	Wildcards in exclude-vcs-ignore mode should not match slash

	* src/exclist.c (info_attach_exclist): Use the FNM_FILE_NAME flag.

2019-11-27  Sergey Poznyakoff  <gray@gnu.org>

	Version 1.32.90

2019-11-25  Sergey Poznyakoff  <gray@gnu.org>

	Testsuite fixes

	* tests/sparse06.at: Skip the test if genfile is unable to create
	sparse files.
	* tests/sptrcreat.at: Likewise.
	* tests/sptrdiff00.at: Likewise.
	* tests/sptrdiff01.at: Likewise.

2019-11-14  Sergey Poznyakoff  <gray@gnu.org>

	Another testsuite fix.

	* tests/extrac11.at: Skip test if ulimit fails.

2019-11-13  Sergey Poznyakoff  <gray@gnu.org>

	Testsuite fix.

	* tests/remfiles10.at: Don't expect EINVAL when trying to remove
	CWD.

2019-08-25  Sergey Poznyakoff  <gray@gnu.org>

	Consistently use x2realloc for buffer reallocation

	* src/create.c (create_archive): Use x2realloc
	* src/names.c (copy_name)
	(add_hierarchy_to_namelist): Use x2realloc

2019-08-18  Sergey Poznyakoff  <gray@gnu.org>

	Fix extraction of symbolic links hardlinked to another symbolic
	links

	* src/extract.c (create_placeholder_file): Take additional
	argument:
	the delayed_link entry after which to the newly created one.
	(extract_link): Create a placeholder file if the target link name
	exists in the delayed_link list.

2019-04-11  Sergey Poznyakoff  <gray@gnu.org>

	Fix --delay-directory-restore on archives with reversed member
	ordering.

	* src/extract.c (find_direct_ancestor): Remove useless test.
	(delay_set_stat): If the file name being added is already in
	the list, update stored data instead of creating a new entry.
	This works for archives with reversed order of members.
	* tests/extrac22.at: New testcase.
	* tests/Makefile.am: Add new testcase.
	* tests/testsuite.at: Include new testcase.

2019-03-28  Sergey Poznyakoff  <gray@gnu.org>

	Minor change * scripts/backup.in: Fix typo

	Typesetting fixes in the manpage

2019-03-28  Zachary Vance  <za3k@za3k.com>

	POSIX extended format headers do not include PID by default

	The intent is to make binary-equivalent PAX archives easy
	to create.  If
	POSIXLY_CORRECT is set, the POSIX standard default is used,
	which embeds
	the pid.

	* src/common.h (posixly_correct): New global.
	* src/tar.c (decode_options): Detect the POSIXLY_CORRECT
	environment
	variable.
	* src/buffer.c (add_chunk_header): Change filenames of multipart
	files to
	omit the pid.
	* src/xheader.c (HEADER_TEMPLATE): New macro.
	(xheader_xhdr_name, xheader_ghdr_name): Use HEADER_TEMPLATE
	to select
	the template for the POSIX extended header name.
	* doc/tar.texi: Document the change.

2019-03-03  Sergey Poznyakoff  <gray@gnu.org>

	Check return value from xgetcwd

	* src/misc.c (chdir_arg,tar_getcdpath): Check for non-NULL
	return from xgetcwd. The function returns NULL for any
	error originating from getcwd.

2019-02-23  Sergey Poznyakoff  <gray@gnu.org>

	Version 1.32

2019-02-04  Sergey Poznyakoff  <gray@gnu.org>

	Minor fixes in docs.

	* doc/tar.1: Remove description of the --preserve option
	Document verbosity levels.
	* doc/tar.texi: Fix description of the -o option.

2019-01-15  Daniel Le  <greenrecyclebin@gmail.com>

	Fix typos in the documentation

	Short option "t" was mistranslated to "--test" instead of "--list"
	in commit
	67cad0792b4e6cf22c6cb1b167b149cd176d49f9.

2019-01-15  Sergey Poznyakoff  <gray@gnu.org>

	Fix build on AIX

	* src/unlink.c (flush_deferred_unlinks): Avoid possible duplicate
	case
	(if ENOTEMPTY==EEXIST)

2019-01-15  Sergey Poznyakoff  <gray@gnu.org>

	Version 1.31.90

2019-01-14  Sergey Poznyakoff  <gray@gnu.org>

	Ensure gnu format when running checkpoint tests

2019-01-14  Sergey Poznyakoff  <gray@gnu.org>

	Fix compression tests

	Existing compression tests used tar with compiled-in
	defaults. However,
	some of the defaults are sure to create archives that are not
	byte-to-byte
	reproducible (e.g. DEFAULT_ARCHIVE_FORMAT=POSIX, because the
	name field
	in posix extended headers uses PID of the creating process
	by default).
	Moreover, some compressors (e.g. gzip) store current timestamp in
	the file header when compressing from stdin, so that using cmp
	on the
	two created archives as the tests did is error-prone. Another
	problem
	is that the tests implicitly assumed that tar uses archive
	suffix to
	recognize its format when extracting, which isn't the
	case. Finally,
	there's hardly any reason in using sed to create m4 sources, when
	everything can be achieved by m4 itself.

	* tests/Makefile.am: Remove generation of compress-*.at files.
	* tests/compress.at.in: Remove.
	* tests/compress.m4: New file.
	* tests/testsuite.at: Include compress.m4, use TAR_CHECK_COMPRESS
	to
	check compression options.

2019-01-14  Sergey Poznyakoff  <gray@gnu.org>

	Fix possible NULL dereference (savannah bug #55369)

	* src/sparse.c (pax_decode_header): Check return from
	find_next_block.

2019-01-14  Sergey Poznyakoff  <gray@gnu.org>

	Fix compilation without iconv.

2019-01-14  Sergey Poznyakoff  <gray@gnu.org>

	Fix iconv usage.

	Patch by Christian Weisgerber.

	* src/utf8.c (utf8_convert): non-zero return from iconv means
	failure.

2019-01-14  Pavel Raiskup  <praiskup@redhat.com>

	tests: fix numeric.at for BSD

	While creating file, BSD kernels inherit the group ownership from
	parent directory.
	http://lists.gnu.org/archive/html/bug-tar/2016-06/msg00000.html

	* tests/numeric.at: Attempt to 'chown' the newly created directory
	to proper group (at least on affected machines that command is
	expected to succeed).

2019-01-14  Sergey Poznyakoff  <gray@gnu.org>

	Fix typo in manpage.

2019-01-14  Sergey Poznyakoff  <gray@gnu.org>

	Fix expected output in dirrem tests.

	In both tests, the "file changed as we read it" warning might be
	produced for dir/sub, depending on the ctime resolution and timing.
	The problem was fixed by 64b43fdf70d82c39eb2ca900cd4f8e49,
	but regressed
	after e7cd377f7801d42aa8e07addff93d2150666c237, which removed
	1 second
	delays between each pair of checkpoints. Since the presense
	or absense
	of this warning is irrelevant for the test, it is now suppressed.

	* tests/dirrem01.at: Suppress the file-changed warning.
	* tests/dirrem02.at: Likewise.

2019-01-12  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix the use of --checkpoint without explicit --checkpoint-action

	* src/checkpoint.c (checkpoint_finish_compile): Set default action,
	if necessary.
	* tests/checkpoint/defaults.at: New testcase.
	* tests/checkpoint/dot-compat.at: New testcase.
	* tests/checkpoint/dot-int.at: New testcase.
	* tests/checkpoint/dot.at: New testcase.
	* tests/checkpoint/interval.at: New testcase.
	* tests/Makefile.am: Add new testcases.
	* tests/testsuite.at Include new testcases.

2019-01-10  Sergey Poznyakoff  <gray@gnu.org.ua>

	Remove erroneous abort() call

	The call was introduced by commit ccef8581. It caused tar to abort
	on perfectly normal operations, like untarring archives containing
	./ with the -U option,

	See http://lists.gnu.org/archive/html/bug-tar/2019-01/msg00019.html
	for details.

	* src/extract.c (maybe_recoverable): Remove misplaced call
	to abort().

2019-01-02  Sergey Poznyakoff  <gray@gnu.org>

	Version 1.31

2018-12-28  Sergey Poznyakoff  <gray@gnu.org>

	Fix the difflink test

	Hardlinking a symlink produces hardlink on BSD and symlink
	on GNU/Linux. Avoid the ambiguity.

	* tests/difflink.at: Create hard link from a regular file.

2018-12-28  Sergey Poznyakoff  <gray@gnu.org>

	Work over a bug in gnulib error()

	The error() function from glibc correctly prefixes each message it
	prints with program_name as set by set_program_name. However, its
	replacement from gnulib, which is linked in on systems where this
	function is not available, prints the name returned by
	getprogname()
	instead. Due to this messages output by tar subprocess (which
	sets its
	program name to 'tar (child)') become indiscernible from those
	printed
	by the main process. In particular, this breaks the remfiles01.at
	and
	remfiles02.at test cases.

	* configure.ac: Define ENABLE_ERROR_PRINT_PROGNAME if using
	gnulib error().
	* src/tar.c [ENABLE_ERROR_PRINT_PROGNAME] (tar_print_progname):
	New function.
	(main) [ENABLE_ERROR_PRINT_PROGNAME]: Set error_print_progname.

2018-12-28  Sergey Poznyakoff  <gray@gnu.org>

	Implement the "wait" checkpoint action.

	This action instructs tar to pause until given signal is delivered.
	The newer genfile tool uses this action for communication between
	genfile and tar in exec mode. This eliminates race conitions and
	speeds up the tests based on exec mode.

	* doc/tar.texi: Document changes.
	* paxutils: Upgrade.
	* src/checkpoint.c: Implement the wait action.
	* src/common.h (decode_signal): New proto.
	* src/tar.c (decode_signal): New function.
	(set_stat_signal): Rewrite.
	* tests/dirrem01.at: Adjust genfile and tar command line arguments
	to use the new feature.
	* tests/dirrem02.at: Likewise.
	* tests/filerem01.at: Likewise.
	* tests/filerem02.at: Likewise.
	* tests/grow.at: Likewise.
	* tests/sptrcreat.at: Likewise.
	* tests/sptrdiff00.at: Likewise.
	* tests/sptrdiff01.at: Likewise.
	* tests/truncate.at: Likewise.

2018-12-27  Sergey Poznyakoff  <gray@gnu.org>

	Fix CVE-2018-20482

	* NEWS: Update.
	* src/sparse.c (sparse_dump_region): Handle short read condition.
	(sparse_extract_region,check_data_region): Fix dumped_size
	calculation.
	Handle short read condition.
	(pax_decode_header): Fix dumped_size calculation.
	* tests/Makefile.am: Add new testcases.
	* tests/testsuite.at: Likewise.

	* tests/sptrcreat.at: New file.
	* tests/sptrdiff00.at: New file.
	* tests/sptrdiff01.at: New file.

2018-12-21  Sergey Poznyakoff  <gray@gnu.org>

	Disallow modifications to the global pax extended header in
	update mode.

	Updating global headers in update mode is not possible, because:

	1) If the original archive was not in PAX format, writing the
	global header would overwrite first member header (and eventually
	data blocks) in the archive.
	2) Otherwise, using the --pax-option can make the updated header
	occupy more blocks than the original one, which would lead to the
	same effect as in 1.

	This also fixes
	  http://lists.gnu.org/archive/html/bug-tar/2018-12/msg00007.html

	* src/xheader.c (xheader_forbid_global): New function.
	* src/common.h (xheader_forbid_global): New prototype.
	* src/update.c (update_archive): Use xheader_forbid_global, instead
	of trying to write global extended header record.

2018-12-21  Sergey Poznyakoff  <gray@gnu.org>

	Bugfix

	Bug reported in
	  http://lists.gnu.org/archive/html/bug-tar/2018-12/msg00014.html

	* src/names.c (collect_and_sort_names): Fix iteration over
	namelist.

2018-12-21  Sergey Poznyakoff  <gray@gnu.org>

	Fix semantics of -K used together with explicit member names.

	This also fixes the bug reported in
	  http://lists.gnu.org/archive/html/bug-tar/2018-12/msg00012.html

	* src/common.h (starting_file_option): Describe the variable.
	* src/names.c (add_starting_file): New function.
	(name_match): Ignore everything before the member indicated by the
	--starting-file option
	* src/tar.c: Use add_starting_file to handle the -K option.

2018-12-21  Sergey Poznyakoff  <gray@gnu.org>

	Fix error handling when reading incremental snapshots

	Bug reported in
	  http://lists.gnu.org/archive/html/bug-tar/2018-12/msg00008.html

	* incremen.c (read_incr_db_01): Don't try to continue after errors.

2018-12-21  Sergey Poznyakoff  <gray@gnu.org>

	Reject pax options starting with equals sign

	Bug reported in
	  http://lists.gnu.org/archive/html/bug-tar/2018-12/msg00010.html

	* xheader.c (xheader_set_keyword_equal): Bail out if the keyword
	starts
	with =

2018-12-21  Sergey Poznyakoff  <gray@gnu.org>

	Fix buffer overflow

	Bug reported in
	  http://lists.gnu.org/archive/html/bug-tar/2018-12/msg00011.html

	* src/xheader.c (xheader_format_name): fix length calculation

2018-12-21  Sergey Poznyakoff  <gray@gnu.org>

	Fix improper memory access

	Bug reported in
	  http://lists.gnu.org/archive/html/bug-tar/2018-12/msg00009.html

	* src/transform.c (parse_transform_expr): Check if re is not empty
	before accessing its last byte.

2018-11-24  Sergey Poznyakoff  <gray@gnu.org>

	Fix parsing of ACLs

	Text returned by acl_to_text can contain comments (introduced
	by #).
	Strip comments and horizontal tabs prior to storing ACLs in PAX
	headers.

	* src/xattrs.c (xattrs_acls_cleanup): New function.
	(xattrs__acls_get_a,xattrs__acls_get_d): Use xattrs_acls_cleanup.

2018-11-24  Sergey Poznyakoff  <gray@gnu.org>

	Don't try to read past the end of header string fields

	* src/common.h (assign_string_n): New proto.
	(ASSIGN_STRING_N): New macro.
	* src/misc.c (assign_string_n): New function.
	* gnulib.modules: Add strnlen.
	* src/buffer.c: Use assign_string_n where appropriate.
	* src/list.c: Likewise.

2018-11-12  Sergey Poznyakoff  <gray@gnu.org>

	Fix verbose ACL listing

	* src/xattrs.c (acls_one_line): Advance pos.
	(xattrs_print): Insert a comma between ACL and default ACL if both
	are non-empty.

2018-10-28  Paul Eggert  <eggert@cs.ucla.edu>

	tar: fix numbered backup bug

	* src/misc.c (maybe_backup_file): Pass chdir_fd, not AT_FDCWD,
	to find_backup_file_name.  This fixes a bug whereby the wrong
	backup file name was chosen for numbered backups.

2018-10-28  Paul Eggert  <eggert@cs.ucla.edu>

	* src/tar.c (expand_pax_option): Pacify recent GCC.

2018-10-28  Paul Eggert  <eggert@cs.ucla.edu>

	build: update gnulib submodule to latest

	* src/misc.c (maybe_backup_file): Adjust to Gnulib change.

2018-08-02  Sergey Poznyakoff  <gray@gnu.org>

	Minor fixes in wordsplit.c

2018-08-02  Paul Eggert  <eggert@cs.ucla.edu>

	build: update gnulib submodule to latest

2018-07-31  Sergey Poznyakoff  <gray@gnu.org>

	Silence gcc warnings in wordsplit

2018-07-31  Sergey Poznyakoff  <gray@gnu.org>

	Fix double-free introduced by 577dc345

	* src/utf8.c (utf8_convert): Don't store freed value in *output

2018-07-31  Pavel Raiskup  <praiskup@redhat.com>

	Report race on systems without O_DIRECTORY

	* src/names.c (collect_and_sort_names): Report ENOTDIR after
	successful fstat() but !S_ISDIR.

2018-07-31  Pavel Raiskup  <praiskup@redhat.com>

	Avoid some resource leaks

	* src/incremen.c (store_rename): Free temp_name, leaked before for
	each renamed directory with --listed-incremental.
	* src/transform.c (add_literal_segment): Tighten arguments by
	const.
	(parse_transform_expr): Free 'str', leaked storage for each
	--transform option before.
	* src/utf8.c (utf8_convert): Deallocate buffer for failed iconv()
	call so callers don't have to.

2018-07-31  Sergey Poznyakoff  <gray@gnu.org>

	Sync wordsplit and paxutils with the most recent versions

2018-06-13  Paul Eggert  <eggert@cs.ucla.edu>

	* doc/tar.1: Fix font typo noted by esr.

2018-05-16  Paul Eggert  <eggert@cs.ucla.edu>

	* doc/tar.1: Don't refer to nonexistent tar(5).

2018-04-13  Jim Meyering  <meyering@fb.com>

	--one-top-level: avoid a heap-buffer-overflow

	* NEWS: Mention this.
	* src/suffix.c (strip_compression_suffix): Fix string comparison
	guard.
	Without this change, some ASAN-enabled test runs would fail
	with the
	following.  Also, strip an additional .tar suffix only if the just-
	stripped suffix did not match /^\.t/".

	==30815==ERROR: AddressSanitizer: heap-buffer-overflow on
	address 0x6020000002ed at pc 0x00000049d1f4 bp 0x7ffeb5906d50
	sp 0x7ffeb5906500
	READ of size 1 at 0x6020000002ed thread T0
	SCARINESS: 12 (1-byte-read-heap-buffer-overflow)
	    #0 0x49d1f3 in __interceptor_strncmp
	    /j/gcc/libsanitizer/sanitizer_common/sanitizer_common_interceptors.inc:407
	    #1 0x5670f3 in strip_compression_suffix /j/tar/src/suffix.c:107
	    #2 0x575788 in decode_options /j/tar/src/tar.c:2545
	    #3 0x5760c0 in main /j/tar/src/tar.c:2708
	    #4 0x7f105090df29 in __libc_start_main ../csu/libc-start.c:308
	    #5 0x408629 in _start (/j/tar/src/tar+0x408629)

	0x6020000002ed is located 3 bytes to the left of 6-byte region
	[0x6020000002f0,0x6020000002f6)
	allocated by thread T0 here:
	    #0 0x4d0710 in __interceptor_malloc
	    /j/gcc/libsanitizer/asan/asan_malloc_linux.cc:86
	    #1 0x4908ad in __interceptor_strndup
	    /j/gcc/libsanitizer/sanitizer_common/sanitizer_common_interceptors.inc:326
	    #2 0x5cbcbd in xstrndup /j/tar/gnu/xstrndup.c:32
	    #3 0x5a325b in base_name /j/tar/gnu/basename.c:57
	    #4 0x575772 in decode_options /j/tar/src/tar.c:2544
	    #5 0x5760c0 in main /j/tar/src/tar.c:2708
	    #6 0x7f105090df29 in __libc_start_main ../csu/libc-start.c:308

2018-04-07  Andrew Hounsell  <andrewhounsell@gmail.com>

	Tiny fix

	* doc/snapshot.texi: Fix a typo
	* scripts/tar-snapshot-edit: Fix a typo

2018-04-07  Jim Meyering  <jim@meyering.net>

	tests: avoid test failure with non-ancient autoconf

	Running "make check" would fail with this:
	  T-nonl.at:30: error: m4_divert_push: cannot change diversion
	  to `GROW' inside m4_expand
	* tests/T-nonl.at: Use printf in place of AS_ECHO_N.
	These days, printf should work for everyone.

2018-04-07  Jim Meyering  <meyering@fb.com>

	maint: avoid -Wstringop-truncation warnings from upcoming GCC8

	* src/create.c (start_private_header, start_header): Convert
	trivial uses of strncpy to memcpy, to avoid warnings like this:
	In function 'strncpy',
	    inlined from 'start_private_header' at create.c:522:3:
	/usr/include/bits/string_fortified.h:106:10: warning: \
	  '__builtin_strncpy' output truncated before terminating nul \
	  copying 2 bytes from a string of the same length \
	  [-Wstringop-truncation]

2018-04-07  Jim Meyering  <meyering@fb.com>

	maint: avoid -Wstringop-truncation warnings upcoming GCC8

	* src/buffer.c (gnu_add_multi_volume_header): Convert a use of
	strncpy to memcpy, to avoid this warning:
	In function 'strncpy',
	    inlined from 'gnu_add_multi_volume_header' at buffer.c:1782:3,
	    ...
	/usr/include/bits/string_fortified.h:106:10: error:
	'__builtin_strncpy'\
	   specified bound 100 equals destination size \
	   [-Werror=stringop-truncation]

2018-04-07  Jim Meyering  <meyering@fb.com>

	maint: avoid warnings from upcoming GCC8

	* src/transform.c (_single_transform_name_to_obstack): Mark with
	FALLTHROUGH statement rather than /* FALL THROUGH */ comment.
	Only the former works with gcc-8.
	* src/extract.c (maybe_recoverable): Call abort to tell gcc-8 that
	this code is unreachable.

2018-04-07  Sergey Poznyakoff  <gray@gnu.org>

	Rewrite struct tm formatting

	* src/list.c (tartime): Use strftime instead of manually formatting
	fields of the struct tm. This should also suppress some gcc
	warnings.

2018-04-07  Jim Meyering  <jim@meyering.net>

	tests: add coverage for new --zstd and all other compression tools

	* tests/compress.at.in: New file: template from which each
	per-compression-tool test is derived.
	* tests/Makefile.am (TESTSUITE_AT): Add it.
	(EXTRA_DIST): Add compress.at.in.
	(compress-*.at): New rules to generate a file/tests for each
	compression tool.
	* tests/testsuite.at (Compression): Add each of these generated
	files in a new section.
	* tests/.gitignore: Ignore the new generated files.

2018-03-18  Aaron Schrab  <aaron@schrab.com>

	Fix typo

2018-03-18  Sergey Poznyakoff  <gray@gnu.org>

	Version 1.30.90

	* NEWS: Update.
	* configure.ac: Update.
	* THANKS: Add Adam Borowski.

2018-03-18  Adam Borowski  <kilobyte@angband.pl>

	Add support for zstd compression

	* configure.ac (zstd): Register compression program.
	* doc/tar.1: Mention --zstd.
	* doc/tar.texi: Document zstd support.
	* src/buffer.c: Register zstd compression.
	* src/suffix.c: Add suffixes zst and tzst.
	* src/tar.c: New compression option --zstd.

2018-03-18  Pavel Raiskup  <praiskup@redhat.com>

	tests: fix race in dirrem01 and dirrem02

	Previously the '--checkpoint-action=echo' was triggered after
	'--checkpoint-action=sleep=1' - so the order of events *usually*
	was (for --format='gnu'):

	  ...
	  1. checkpoint handler before write of 'dir/sub' member
	  2. one-second delay
	  3. stderr write: 'tar: Write checkpoint 3'
	  4. write the member 'dir/sub' into the archive
	  5. check that the member's ctime has not been changed
	  6. genfile's detecting 'Write checkpoint', doing unlink
	  ...

	But sometimes, the genfile was fast enough to win the race and
	unlinked the directory before the member was written into the
	archive (IOW, the order was 1-2-3-6-4-5).  This led to the
	occasional warning 'tar: dir/sub: file changed as we read it'.

	Swap the order of 'sleep=1' and 'echo' actions so the genfile
	utility has (hopefully) enough time to do the unlink before
	writing the file into the archive (enforce 1-2-3-6-4-5 order).

	* tests/dirrem01.at: Swap 'sleep=1' and 'echo' actions.
	* tests/dirrem02.at: Likewise.

2018-03-13  Sergey Poznyakoff  <gray@gnu.org>

	Fix typos in the docs

2018-03-13  Sergey Poznyakoff  <gray@gnu.org.ua>

	Provide a way to skip tests that create very large files

	Define environment variable TARTEST_SKIP_LARGE_FILES=1 in order
	to skip tests that require lots of disk space.

	* tests/testsuite.at (AT_SKIP_LARGE_FILES): New macro.
	* tests/sparse03.at: Mark test with AT_SKIP_LARGE_FILES.
	* tests/sparse05.at: Likewise.
	* tests/star/pax-big-10g.at: Likewise.
	* tests/star/ustar-big-2g.at: Likewise.
	* tests/star/ustar-big-8g.at: Likewise.

2018-03-13  Sergey Poznyakoff  <gray@gnu.org.ua>

	Testsuite bugfix

	* tests/difflink.at: Define order of files within tested archive.

2018-03-13  Sergey Poznyakoff  <gray@gnu.org>

	testsuite: account for absolute file names starting with double
	slash

	* tests/incr08.at: Absolute file names can start with //
	* tests/xform03.at: Likewise.

2017-12-17  Sergey Poznyakoff  <gray@gnu.org>

	Version 1.30

	* configure.ac: Set version 1.30
	* NEWS: Update.

2017-11-20  Paul Eggert  <eggert@cs.ucla.edu>

	Fix "concatenating" typo.

	Problem reported by Rodrigo Queiro in:
	https://lists.gnu.org/r/bug-tar/2017-11/msg00021.html
	* doc/intern.texi (Extensions): Fix typo.

2017-11-18  Paul Eggert  <eggert@cs.ucla.edu>

	Port to gcc -Wimplicit-fallthrough=5

	* src/common.h (FALLTHROUGH): New macro, for use with gcc
	-Wimplicit-fallthrough=5, which is now the default when used with
	Gnulib after commit 2017-05-16T16:23:52!eggert@cs.ucla.edu
	and with --enable-gcc-warnings

2017-11-18  Paul Eggert  <eggert@cs.ucla.edu>

	Port to Texinfo 6.4

	* doc/tar.texi (Sparse Recovery): Omit ‘.’ from anchor name,
	as ‘makeinfo’ now complains about it.  All uses changed.

2017-11-18  Paul Eggert  <eggert@cs.ucla.edu>

	Document base-256 representation in GNU format

	Problem reported by Rodrigo Queiro in:
	https://lists.gnu.org/r/bug-tar/2017-11/msg00018.html
	* doc/intern.texi (Standard, Extensions):
	Document base-256 representations.

2017-11-18  Paul Eggert  <eggert@cs.ucla.edu>

	build: update gnulib submodule to latest

2017-11-18  Paul Eggert  <eggert@cs.ucla.edu>

	Fix typo caught by GCC 7.2.1

	* lib/wordsplit.c (wordsplit_perror): Add missing "break;".

2017-11-16  Sergey Poznyakoff  <gray@gnu.org.ua>

	Update docs

	* doc/Makefile.am: Add recipes.texi
	* doc/recipes.texi: New file.
	* doc/tar.texi: New appendix "Recipes"

2017-11-16  Pavel Raiskup  <praiskup@redhat.com>

	tests: more deterministic xattr07

	* tests/xattr07.at: Define order of files within tested archive.

2017-11-16  Sergey Poznyakoff  <gray@gnu.org.ua>

	Minor improvements in the docs.

2017-11-16  Sergey Poznyakoff  <gray@gnu.org.ua>

	New option --warning=failed-read

	* NEWS: Document the --warning=failed-read option.
	* doc/tar.texi: Likewise.
	* doc/tar.1: Likewise.
	* src/common.h (WARN_FAILED_READ): New constant.
	(WARNING_ENABLED): New macro.
	* src/misc.c (close_diag, open_diag)
	(read_diag_details, readlink_diag)
	(savedir_diag, seek_diag_details)
	(stat_diag): Suppress warnings if WARN_FAILED_READ is set.
	* src/warning.c (failed-read): New keyword.

2017-11-16  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix docs

	* doc/tar.texi: Fix description of the argument to --xattrs-exclude
	and --xattrs-include option. It is a globbing pattern, not a regex.

	Fix a typo (LZOP)

2017-11-16  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix the --delay-directory-restore option

	* src/extract.c (find_direct_ancestor): New function.
	(create_placeholder_file): Set after_links member on
	delayed_set_stat
	entries starting from the direct ancestor of the placeholder file.

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

	* NEWS: Update.

2017-11-09  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix reporting of hardlink mismatch during compare

	* src/common.h (quote_n_colon): New prototype.
	* src/misc.c (quote_n_colon): New function.
	* src/compare.c (report_difference, diff_link): Use quote_n_colon.

	* tests/difflink.at: New file.
	* tests/Makefile.am: Add difflink.at
	* tests/testsuite.at: Likewise.

2017-11-09  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix --verbatim-files-from

	* src/names.c (read_next_name): Don't unquote name read from the
	file, if --verbatim-files-from option is in effect.
	(names_options): improve description of --verbatim-files-from
	* tests/T-null2.at: Test the change.

2017-11-09  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix typo

	* doc/tar.texi

2017-09-30  Sergey Poznyakoff  <gray@gnu.org>

	Fix the effect of --transform over hard link targets without
	the --absolute-names

	* src/create.c (file_count_links): Apply safer_name_suffix to the
	hard link name prior to transforming it.
	* tests/xform03.at: New test case.
	* tests/Makefile.am: Add xform03.at
	* tests/testsuite.at: Likewise.

2017-08-24  Sergey Poznyakoff  <gray@gnu.org>

	Bugfix

	* src/tar.c (tar_help_filter): Add missing break statement

2017-06-29  Troels Thomsen  <troels@thomsen.io>

	Fix typo

2017-05-29  Pavel Raiskup  <praiskup@redhat.com>

	Fix non-deterministic archive type detection

	Due to analysis of partly uninitialized read-ahead buffer
	(short_read call), we sometimes mistakenly classified very small
	compressed archives as non-compressed; which in turn caused
	extraction failure.

	* src/buffer.c (check_compressed_archive): Don't assume that
	archives smaller than BLOCKSIZE could be non-compressed, as tar
	header always has at least one block.

2017-05-29  Jonas Julino  <ml-julino@1und1.de>
	    Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix handling of directories removed during incremental tar run

	* paxutils: Upgrade
	* src/create.c (create_archive): Use file_removed_diag
	instead of calling the corresponding *_diag function
	directly.
	* tests/dirrem01.at: New testcase.
	* tests/dirrem02.at: New testcase.
	* tests/Makefile.am: Add new tests.
	* tests/testsuite.at: Likewise.

2017-05-29  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix a bug in multi-volume archive creation.

	When creating multivolume archives, the bufmap code in buffer.c
	implicitly assumed that the members are stored in the archive
	contiguously, ignoring the member (and eventual extended) headers
	between them.  This worked until the member header happened to be
	at the very beginning of the volume, in which case its length was
	included in the calculation of the stored size and size left to
	store.	Due to this, the GNUFileParts extended header contained
	invalid GNU.volume.offset value, and the resulting archive failed
	to extract properly.

	This patch also eliminates improper listing of file part headers
	as regular files, when creating multivolume posix archives with -v.

	* src/buffer.c (bufmap): New member nblocks.  Counts number
	of blocks
	of file data written since reset.
	(bufmap_reset): Reset nblocks to 0.
	(_flush_write): Update nblocks.  When computing offset difference
	for
	bufmap_reset, count only data blocks, not headers.
	(close_archive): Flush archive until all blocks are written.
	(add_chunk_header): Use simple_finish_header instead of
	finish_header
	to avoid listing chunk header as regular file in verbose mode.
	* tests/multiv10.at: New test case.
	* tests/Makefile.am: Add new test.
	* tests/testsuite.at: Add new test.

2017-04-07  Paul Eggert  <eggert@cs.ucla.edu>

	--numeric-owner now affects private headers too

	Problem reported by Daniel Peebles in:
	http://lists.gnu.org/archive/html/bug-tar/2017-04/msg00004.html
	* NEWS: Document this.
	* src/create.c (write_gnu_long_link): If --numeric-owner,
	leave the user and group empty in a private header.  Cache the
	names for 0.

2017-02-28  Pavel Raiskup  <praiskup@redhat.com>

	Test and document --keep-directory-symlink

	* doc/tar.1: Document the option.
	* tests/extrac20.at: New testcase.
	* tests/Makefile.am: Mention extrac20.
	* tests/testsuite.at: Likewise.

2017-02-14  Paul Eggert  <eggert@cs.ucla.edu>

	Fix incompatibility with PGI 16.10

	* src/tar.c (options): Fix incompatibility with the C standard,
	which says that arguments to macro calls cannot contain #
	directives.

2017-01-02  Sergey Poznyakoff  <gray@gnu.org>

	Update copyright years

2016-11-12  Sergey Poznyakoff  <gray@gnu.org>

	Fix description of the "escape" quoting style

2016-11-12  Sergey Poznyakoff  <gray@gnu.org>

	Better error checking in the backup script.

	* scripts/backup.in: Check exit code of MT_BEGIN
	* scripts/backup.sh.in (backup_host): Return meaningful code
	in case of remote execution.  See the comment, though.

2016-11-12  Sergey Poznyakoff  <gray@gnu.org>

	Minor documentation fix

	* doc/tar.texi: Fix example about use of --no-recursion with -T

2016-11-12  Sergey Poznyakoff  <gray@gnu.org>

	Fix the --add-file option.

	* src/common.h (name_more_files): New proto.
	(files_from_option): Remove.
	* src/names.c (name_more_files): New file.
	(names_options): Fix declaration of the
	add-file option.
	(names_parse_opt): Handle --add-file.
	* src/tar.c (struct tar_args): Remove the input_files member.
	Change all uses: use name_more_files() instead.
	* tests/Makefile.am: Add new test.
	* tests/add-file.at: New testcase.
	* tests/testsuite.at: Add new test.

2016-11-11  Sergey Poznyakoff  <gray@gnu.org.ua>

	Add missing files

2016-11-11  Pavel Raiskup  <praiskup@redhat.com>

	don't set xattrs when --skip-old-files is used

	* src/extract.c (set_xattr): Properly handle maybe_recoverable()
	output.  Throw warnings to not complicate caller.
	(extract_file): Don't handle set_xattr's error.
	* tests/xattr07.at: New testcase.
	* tests/Makefile.am: Mention new testcase.
	* tests/testsuite.at: Likewise.
	* THANKS: Dawid.

2016-11-11  Sergey Poznyakoff  <gray@gnu.org.ua>

	Minor fix

	* src/tar.h (tar_stat_info): Change type of real_size_set to bool

2016-11-11  Pavel Raiskup  <praiskup@redhat.com>

	sparse: fix pax extraction for unicode filenames

	Make sure that 'GNU.sparse.name' header has higher priority than
	(for sparse-purposes artificially modified) 'path' pax header.

	Historically, the 'GNU.sparse.name' header comes before 'path';
	this caused that modified 'path' header won and that is not what
	we want in sparse "capable" tar implementation.

	* src/tar.h (tar_stat_info): New argument sparse_name_done.
	* src/xheader.c (raw_path_decoder): Move here the unconditional
	code from path_decoder.
	(path_decoder): Apply raw_path_decoder only if sparse_path_decoder
	was not yet called.
	(sparse_path_decoder): New wrapper around raw_path_decoder.
	* tests/sparse07.at: New testcase.
	* tests/testsuite.at: Mention new testcase.
	* tests/Makefile.am: Likewise.

2016-11-10  Pavel Raiskup  <praiskup@redhat.com>

	* tests/xattr06.at: Test include/exclude during archive/exctract.

2016-11-10  Ian McLeod	<imcleod@redhat.com>

	Bugfix - fix xattr exclude/include for archive create

	This makes archive create behavior consistent with the
	documentation.	Without this change xattr include/exclude options
	are accepted when creating an archive but are silently ignored.

	* src/xattrs.c (xattrs_xattrs_get): Apply exclude/include mask
	when fetching extended attributes
	* tests/Makefile.am: Add new test case.
	* tests/testsuite.at: Likewise.

2016-10-30  Paul Eggert  <eggert@Penguin.CS.UCLA.EDU>

	When extracting, skip ".." members

	* NEWS: Document this.
	* src/extract.c (extract_archive): Skip members whose names
	contain "..".

2016-09-26  Sergey Poznyakoff  <gray@gnu.org.ua>

	Mark all tests related to -C option with the "chdir" keyword

2016-09-26  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix interaction of -u with -C

	* src/update.c (update_archive): Pass correct change_dir
	value for addname
	* tests/update03.at: New file.
	* tests/Makefile.am: Add update03.at
	* tests/testsuite.at: Include update03.at

2016-09-21  Sergey Poznyakoff  <gray@gnu.org>

	Fix passing string values via TAR_OPTIONS

	* src/tar.c (parse_default_options): Don't free parsed words.
	* tests/options03.at: New testcase.
	* tests/Makefile.am: Add options03.at
	* tests/testsuite.at: Include options03.at

2016-05-27  Sergey Poznyakoff  <gray@gnu.org.ua>

	Tiny bugfix

2016-05-27  Sergey Poznyakoff  <gray@gnu.org.ua>

	Report positional options that were used but had no effect during
	archive creation

	* src/names.c (file_selection_option)
	(file_selection_option_name): New functions.
	(unconsumed_option_push, unconsumed_option_free)
	(unconsumed_option_report): New functions.
	(name_list_advance): Maintain a list
	of eventually unconsumed options during archive creation.
	Report unconsumed options, if any.

	* tests/positional01.at: New test case.
	* tests/positional02.at: New test case.
	* tests/positional03.at: New test case.
	* tests/Makefile.am: Add new test cases.
	* tests/testsuite.at: Likewise.

	* NEWS: Document the changes.
	* configure.ac: Version 1.29.90
	* doc/tar.texi: Document the changes.

2016-05-16  Sergey Poznyakoff  <gray@gnu.org.ua>

	Version 1.29

2016-05-16  Sergey Poznyakoff  <gray@gnu.org.ua>

	Minor fix

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

2016-04-14  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix argument handling when running external commands.

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

2016-04-06  Sergey Poznyakoff  <gray@gnu.org.ua>

	Remove iotty test

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

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

2016-04-05  Pavel Raiskup  <praiskup@redhat.com>

	xattrs: fix build on Darwin

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

	Reported independently by Denis Excoffier and Dominyk Tille.

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

2016-03-24  Sergey Poznyakoff  <gray@gnu.org.ua>

	Remove --preserve option

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

2016-03-24  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix testcase

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

2016-03-24  Sergey Poznyakoff  <gray@gnu.org.ua>

	Update THANKS file

2016-03-24  Jeremy Bobbio  <lunar@debian.org>

	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.

2016-03-21  Sergey Poznyakoff  <gray@gnu.org.ua>

	Acknowledgments

	* THANKS: Add Dagobert Michelsen

2016-03-21  Sergey Poznyakoff  <gray@gnu.org.ua>

	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.

2016-03-21  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix ckmtime

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

2016-03-20  Sergey Poznyakoff  <gray@gnu.org>

	Fix the testsuite

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

2016-03-18  Sergey Poznyakoff  <gray@gnu.org.ua>

	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.

2016-03-18  Sergey Poznyakoff  <gray@gnu.org.ua>

	Revise docs

2016-03-18  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix build with --enable-gcc-warnings

	* configure.ac: Disable stack-protector warnings

2016-03-17  Sergey Poznyakoff  <gray@gnu.org.ua>

	Improve testsuite

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

2016-03-16  Sergey Poznyakoff  <gray@gnu.org.ua>

	Document xattrs, ACL and SELinux-related options.

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

2016-03-14  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix appending to archive with changed blocking factor.

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

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

2016-03-14  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix coredump on parsing invalid traditional option

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

2016-01-20  Sergey Poznyakoff  <gray@gnu.org.ua>

	Update copyright years

2016-01-20  Sergey Poznyakoff  <gray@gnu.org.ua>

	Allow escaped delimiters in transform expressions.

	Patch provided by Charles McGarvey and Flavio Poletti.

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

2015-12-17  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix eventual dereference of uninitialized pointer.

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

2015-12-17  Pavel Raiskup  <praiskup@redhat.com>

	sparse: fix use of indeterminate value

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

2015-12-11  Sergey Poznyakoff  <gray@gnu.org.ua>

	fix a typo

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

2015-12-11  Sergey Poznyakoff  <gray@gnu.org.ua>

	Minor fixes.

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

2015-12-10  Sergey Poznyakoff  <gray@gnu.org>

	Minor fix

2015-12-10  Sergey Poznyakoff  <gray@gnu.org>

	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.

2015-12-10  Pavel Raiskup  <praiskup@redhat.com>

	better test --{,no-}recursion options

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

2015-12-06  Pavel Raiskup  <praiskup@redhat.com>

	Bugfix

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

2015-12-06  Sergey Poznyakoff  <gray@gnu.org>

	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.

2015-12-06  Sergey Poznyakoff  <gray@gnu.org>

	Fix NEWS

2015-12-06  Pavel Raiskup  <praiskup@redhat.com>

	numeric-owner: print big UID/GID correctly

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

2015-12-05  Sergey Poznyakoff  <gray@gnu.org.ua>

	Use SEEK_HOLE for hole detection

	Based on patch by Pavel Raiskup.

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

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

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

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

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

2015-12-05  Sergey Poznyakoff  <gray@gnu.org.ua>

	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

2015-12-05  Sergey Poznyakoff  <gray@gnu.org.ua>

	Upgrade paxutils

2015-11-29  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix extraction from concatenated incremental archives with
	renamed directories.

	Complements 15c02c2b.

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

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

2015-11-21  Sergey Poznyakoff  <gray@gnu.org>

	Fix bug in the inplementation of --one-top-level.

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

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

2015-11-11  Sergey Poznyakoff  <gray@gnu.org>

	Work around unlinkat bug on FreeBSD and GNU/Hurd

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

2015-11-10  Sergey Poznyakoff  <gray@gnu.org>

	Fix coredump on FreeBSD when TAR_OPTIONS is set

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

2015-11-02  Sergey Poznyakoff  <gray@gnu.org>

	Use sort in T-dir tests.

2015-11-02  Sergey Poznyakoff  <gray@gnu.org>

	Fix distclean in tests/

	* tests/Makefile.am: Remove "download"

2015-11-02  Sergey Poznyakoff  <gray@gnu.org>

	New options: --owner-map and --group-map.

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

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

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

2015-09-24  Kir Kolyshkin  <kir@openvz.org>  (tiny change)

	doc: fix font and spelling typos

	* doc/tar.1: Fix font and spelling typos in man page.

2015-09-24  Paul Eggert  <eggert@cs.ucla.edu>

	Fix problems caught by static checking

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

2015-08-31  Sergey Poznyakoff  <gray@gnu.org>

	Improve option sanity checking

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

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

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

2015-08-24  Sergey Poznyakoff  <gray@gnu.org>

	Improve check-full

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

2015-08-24  Sergey Poznyakoff  <gray@gnu.org>

	Fix check-full

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

2015-08-24  Sergey Poznyakoff  <gray@gnu.org>

	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

2015-08-24  Sergey Poznyakoff  <gray@gnu.org>

	Update docs.

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

2015-08-20  Sergey Poznyakoff  <gray@gnu.org.ua>

	Add missing VCS files to --exclude-vcs list

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

2015-08-03  Sergey Poznyakoff  <gray@gnu.org.ua>

	Options to control option handling in file lists.

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

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

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

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

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

2015-07-25  Anders Jonsson  <anders.jonsson@norsjovallen.se>  (tiny change)

	Fix typos (preceeded etc.)

2015-07-13  Paul Eggert  <eggert@cs.ucla.edu>

	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.

2015-07-13  Paul Eggert  <eggert@cs.ucla.edu>

	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.

2015-07-13  Paul Eggert  <eggert@cs.ucla.edu>

	tar: port to recent gnulib

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

2015-07-13  Paul Eggert  <eggert@cs.ucla.edu>

	tar: pacify GCC 5.1 -Wformat-signedness

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

2015-04-16  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix extraction from concatenated incremental archives.

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

2015-04-10  Sergey Poznyakoff  <gray@gnu.org.ua>

	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)

2015-03-18  Paul Eggert  <eggert@cs.ucla.edu>

	tar: don't assume GZIP

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

2015-03-17  Paul Eggert  <eggert@cs.ucla.edu>

	tar: don't suggest GZIP

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

2015-02-19  Sergey Poznyakoff  <gray@gnu.org.ua>

	Improve compression format recognition

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

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

2015-01-06  Paul Eggert  <eggert@cs.ucla.edu>

	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.

2015-01-06  Paul Eggert  <eggert@cs.ucla.edu>

	tar: port wordsplit attribute to Sun C

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

2014-12-17  Sergey Poznyakoff  <gray@gnu.org>

	Silent a cc warning

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

2014-12-12  Paul Eggert  <eggert@cs.ucla.edu>

	tar: port ISFOUND, WASFOUND to C89

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

2014-12-10  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix tar -c -l file file

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

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

2014-11-07  Sergey Poznyakoff  <gray@gnu.org>

	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.

2014-11-07  Sergey Poznyakoff  <gray@gnu.org>

	Add testcase for the previous commit.

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

2014-11-07  Pavel Raiskup  <praiskup@redhat.com>

	Fix bug in sparse file listing

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

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

2014-10-15  Sergey Poznyakoff  <gray@gnu.org.ua>

	Fix a typo

2014-10-01  Sergey Poznyakoff  <gray@gnu.org>

	Fix README

	Remove the reference to PORTS

2014-09-24  Sergey Poznyakoff  <gray@gnu.org>

	Bugfixes.

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

2014-09-18  Sergey Poznyakoff  <gray@gnu.org.ua>

	Bugfix: entries read from the -T file did not get proper
	matching_flag.

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

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

2014-08-16  Sergey Poznyakoff  <gray@gnu.org>

	Improve documentation.

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

