2017-09-01  Pádraig Brady  <P@draigBrady.com>

	version 8.28
	* NEWS: Record release date.

	tests: fix false failure in recent ls --hyperlink test
	* tests/ls/hyperlink.sh: If the hostname or any part of
	the absolute path would be changed due to URL encoding,
	the test would fail.  Therefore simplify to remove
	these components of the URL from consideration.

2017-08-31  Pádraig Brady  <P@draigBrady.com>

	maint: avoid a syntax-check failure
	* .gitignore: Remove lines indicated by sc_gitignore_redundant
	in a freshly checked out repo.

2017-08-30  Pádraig Brady  <P@draigBrady.com>

	tests: exclude the expensive gnulib fts-tests
	* gnulib: The only change in this gnulib update
	is the tagging of the fts-tests module as longrunning,
	which gnulib-tool currently implicitly excludes.
	This test was seen to take about 20s and 285MB.
	Reported by Assaf Gordon on space restricted VMs.

	tty: don't distinguish input errors
	* src/tty.c (main): Don't distinguish ENOTTY from other errors,
	because isatty() doesn't portably distinguish errors.
	Solaris returns ENOENT for all input errors for example.
	Musl also returns ENOENT, and ENODEV may be returned as disscussed at:
	http://openwall.com/lists/musl/2017/04/06/6
	* tests/misc/tty.sh: Adjust accordingly.

	tests: avoid printf '0*d' construct unsupported by ash
	* tests/ln/sf-1.sh: Generate specific length with space padding
	which is supported.
	Reported by Assaf Gordon on Alpine Linux.

2017-08-30  Pádraig Brady  <P@draigBrady.com>

	tests: skip tests upon failure to set SELinux context
	On some setups the root:object_r:tmp_t context is invalid.
	This does indicate a limitation in the test framework,
	but for now we'll relax this to skipping the tests.
	The tests still run on a Fedora 25 system for example.

	* tests/cp/cp-a-selinux.sh: Upon chcon error, skip rather than ERROR.
	* tests/install/install-Z-selinux.sh: Likewise.
	* tests/misc/chcon.sh: Likewise.
	* tests/misc/runcon-no-reorder.sh: Likewise.
	* tests/misc/selinux.sh: Likewise.
	* tests/mkdir/restorecon.sh: Likewise.

2017-08-30  Kamil Dudka  <kdudka@redhat.com>

	expr: fix a recently introduced memory leak
	* src/expr.c (eval6): Free memory allocated by mbs_logical_substr().

	Introduced in v8.27-47-ga9f2be5.  Detected by Coverity Analysis:

	Error: RESOURCE_LEAK:
	src/expr.c:851: leaked_storage: Variable "s" going out of scope
	leaks the storage it points to.
	849|             char *s = mbs_logical_substr (l->u.s, pos, len);
	850|             v = str_value (s);
	851|->         }
	852|         freev (l);
	853|         freev (i1);

2017-08-30  Pádraig Brady  <P@draigBrady.com>

	build: fix build of renameat2 on Alpine Linux
	* gnulib: The only change included in this update
	it the added check for the presence of <linux/fs.h>
	which is not present on Alpine Linux by default.

	tty: fix exit code with EINVAL
	* src/tty.c (main): All systems mention that isatty()
	man return EINVAL as well as (the POSIX compliant) ENOTTY.
	Also Centos 6 was seen to return EINVAL from ttyname().
	* tests/misc/tty.sh: Fix a test issue where we assume
	standard input is always a valid tty.
	Reported by Assaf Gordon on OpenSolaris 5.10 and 5.11,
	and Centos 6.5

2017-08-30  Pádraig Brady  <P@draigBrady.com>

	runcon: revert "disable use of the TIOCSTI ioctl"
	This reverts commit v8.27-97-g8cb06d4 because
	the setsid() fallback was not implemented correctly
	and disabling the ioctl was not a complete solution
	to the security issue of the child being passed
	the tty of the parent.

	Given runcon is not really a sandbox command,
	the advice is to use `runcon ... setsid ...`
	to avoid this particular issue.

2017-08-29  Pádraig Brady  <P@draigBrady.com>

	stat: fix determination of max name length on BSD systems
	We only use one of statfs or statvfs for `stat -f`
	and on the BSDs we use statfs which doesn't have the
	f_namelen member.  However on OpenBSD and later FreeBSD
	systems statfs does provide f_namemax, so use that.

	* NEWS: Mention the improvement for OpenBSD and FreeBSD.
	* m4/stat-prog.m4: Check for f_namemax in the statfs struct.
	* src/stat.c: Return '?' rather than '*' when we can't
	determine the max length of the file system.
	* tests/ln/sf-1.sh: This test was failing on all BSDs
	due to '*' being returned for the max length which
	caused the test to attempt to create 1Mi+1 names.
	The test now uses a short name when we can't determine
	the max name length to use.

	Reported by Assaf Gordon on various BSD based systems.

2017-08-29  Pádraig Brady  <P@draigBrady.com>

	stat,tail: support "AAFS" AppArmor file system
	* src/stat.c (human_fstype): This file system is used
	to manage AppArmor policy in the Linux kernel.

	all: update gnulib submodule to latest
	* bootstrap: Sync timestamp update.

2017-08-29  Pádraig Brady  <P@draigBrady.com>

	runcon: disable use of the TIOCSTI ioctl
	Similar to the issue with SELinux sandbox (CVE-2016-7545),
	children of runcon can inject arbitrary input to the terminal
	that would be run at the originating terminal privileges.

	The new libseccomp dependency is widely available and used
	on modern SELinux systems, but is not available by default
	on older systems like RHEL6 etc.

	* m4/jm-macros.m4: Check for libseccomp and
	warn if unavailable on selinux supporting systems.
	* src/local.mk: Link runcon with -lseccomp.
	* src/runcon.c (disable_tty_inject): A new function to
	disable use of the TIOCSTI using libseccomp, or with setsid()
	where libseccomp is unavailable.
	* tests/misc/runcon-no-inject.sh: A new test that uses
	python to make the TIOCSTI call, and ensure that doesn't succeed.
	* tests/local.mk: Reference the new test
	* NEWS: Mention the fix.
	Addresses http://bugs.gnu.org/24541

2017-08-29  Pádraig Brady  <P@draigBrady.com>

	ls: support --hyperlink to output file:// URIs
	Terminals such as iTerm2 and VTE based terminals
	(as of version 0.49.1), support hyperlinks when
	passed terminals codes as described at:
	https://gist.github.com/egmontkob/eb114294efbcd5adb1944c9f3cb5feda

	* src/ls.c (gobble_file): Allocate an absolute file name to output.
	(quote_name): Output the absolute name with the appropriate codes.
	(file_escape): A new function to encode file names as per rfc8089.
	(main): Handle the new option and call the file_escape_init() helper.
	Disable --dired when --hyperlink is specified.
	(print_dir): Get the absolute file name here too, so that the
	directory name can be linkified.
	* NEWS: Mention the new feature.
	* tests/ls/hyperlink.sh: Add a new test.
	* tests/local.mk: Reference the new test.
	* doc/coreutils.texi (ls invocation): Describe --hyperlink.

2017-08-29  Pádraig Brady  <P@draigBrady.com>

	doc: remove older ChangeLog items
	This saves about 0.5MB uncompressed from the tarball.

	* Makefile.am: Following on from v8.26-34-g2c64bc8
	update the oldest documented version to 8.18 which
	is now about 5 years old.  Also remove older ChangeLogs
	that were previously thought to be for changes not
	in the git history, but are adequately recorded upon review.
	* build-aux/ChangeLog-2007: Remove file.
	* lib/ChangeLog-2007: Likewise.
	* m4/ChangeLog-2007: Likewise.

2017-08-29  Colin Watson  <cjwatson@debian.org>

	env: add --chdir option
	This is useful when chaining with other commands that run commands in a
	different context, while avoiding using the shell to cd, and thus
	having to consider shell quoting the chained command.

	* NEWS (New features): Document the new option.
	* doc/coreutils.texi (env invocation): Likewise.
	* src/env.c (usage): Likewise.
	(main): Implement the new option.
	* tests/misc/env.sh: Test the new option.

2017-08-29  Pádraig Brady  <P@draigBrady.com>

	tests: don't fail tests when failing to write files
	* tests/sample-test: Use framework_error_ rather than fail=1
	* tests/chown/deref.sh: Likewise.
	* tests/chown/preserve-root.sh: Likewise.
	* tests/cp/src-base-dot.sh: Likewise.
	* tests/dd/unblock-sync.sh: Likewise.
	* tests/du/2g.sh: Likewise.
	* tests/du/inacc-dest.sh: Likewise.
	* tests/du/one-file-system.sh: Likewise.
	* tests/fmt/goal-option.sh: Likewise.
	* tests/ln/hard-backup.sh: Likewise.
	* tests/ls/color-dtype-dir.sh: Likewise.
	* tests/ls/m-option.sh: Likewise.
	* tests/ls/stat-dtype.sh: Likewise.
	* tests/ls/time-style-diag.sh: Likewise.
	* tests/ls/x-option.sh: Likewise.
	* tests/misc/chcon.sh: Likewise.
	* tests/misc/nohup.sh: Likewise.
	* tests/misc/od-N.sh: Likewise.
	* tests/misc/sort-compress.sh: Likewise.
	* tests/misc/tac-continue.sh: Likewise.
	* tests/misc/time-style.sh: Likewise.
	* tests/mv/backup-dir.sh: Likewise.
	* tests/mv/dir2dir.sh: Likewise.
	* tests/rm/dir-no-w.sh: Likewise.
	* tests/rm/dir-nonrecur.sh: Likewise.
	* tests/rm/inaccessible.sh: Likewise.
	* tests/rm/interactive-always.sh: Likewise.
	* tests/rm/interactive-once.sh: Likewise.
	* tests/rm/rm3.sh: Likewise.
	* tests/rm/v-slash.sh: Likewise.
	* tests/touch/relative.sh: Likewise.

2017-08-28  Josef Cejka  <jcejka@suse.com>
	    Bernhard Voelker  <mail@bernhard-voelker.de>

	df: avoid stat() for dummy file systems with -l
	When systemd is configured to automount a remote file system - see
	'man systemd.automount(5)', then the mount point is initially
	mounted by systemd with the file system type "autofs".
	When the resource is used later on, then the wanted file system is
	mounted over that mount point on demand.
	'df -l' triggered systemd to mount the file system because it called
	stat() on the mount point.
	Instead of single-casing "autofs" targets, we can avoid stat()ing
	all dummy file systems (which includes "autofs"), because those are
	skipped later on in get_dev() anyway.

	*src/df.c (filter_mount_list): Also skip dummy file systems unless
	the -a option or a specific target are given.
	* NEWS: Mention the fix.


	Fixes http://bugzilla.suse.com/show_bug.cgi?id=1043059

2017-08-28  Assaf Gordon  <assafgordon@gmail.com>

	doc: add 'realpath usage examples' section
	* doc/coreutils.texi (Realpath usage examples): New section.

2017-08-28  Assaf Gordon  <assafgordon@gmail.com>

	doc: fix realpath index entry
	The 'readlink' node has '@findex realpath' in it. This results in
	    info doc/coreutils.info realpath
	incorrectly jumping to the 'readlink' node (instead of the 'realpath'
	node). Change it to @cindex instead.

	* doc/coreutils.texi (readlink): Change '@findex realpath' to @cindex.

2017-08-28  Assaf Gordon  <assafgordon@gmail.com>

	realpath: improve usage description for --relative-{to,base}
	* src/realpath.c (usage): Explicitly say 'DIR' instead of 'FILE' for
	--relative-{to,base} parameters, to avoid giving the impression
	that regular files can be used as relative base.
	* doc/coreutils.texi (realpath): Same.

2017-08-24  Pádraig Brady  <P@draigBrady.com>

	ls: consistently quote symlink targets
	* src/ls.c (gobble_file): Disable the optimization to avoid quoting
	if the symlink target itself needs quoting.  This was introduced
	with the quoting alignment adjustments in v8.25-106-g01971c0
	* tests/ls/symlink-quote.sh: Add a test.
	* tests/local.mk: Reference the test.
	* NEWS: Mention the fix.

2017-08-24  Pádraig Brady  <P@draigBrady.com>

	tail: reinstate inotify use with FIFOs
	commit v8.27-44-g18f6b22 was too aggressive in
	only allowing inotify use with regular files. This will
	support responsive processing of `tail -f fifo | ...`

	* src/tail.c (any_non_regular): Adjust to allow FIFOs
	since inotify supports these well.
	* tests/tail-2/inotify-only-regular.sh: Adjust comment.

2017-08-19  Pádraig Brady  <P@draigBrady.com>

	maint: avoid a syntax check failure
	* src/sort.c: Don't include stdio--.h as fopen() is no longer used.

	tests: fix issues on alpine linux
	* tests/misc/seq-epipe.sh: Remove stale comment.
	* tests/misc/sort-debug-warn.sh: musl doesn't indicate a set_locale()
	failure with missing locales, so avoid a test portion in that case.
	* tests/misc/wc-files0.sh: Avoid a bug on older ash implementations.
	Addresses http://bugs.gnu.org/28054

2017-08-17  Paul Eggert  <eggert@cs.ucla.edu>

	ptx: fix some integer overflow bugs
	Problem reported by Lukas Zachar at:
	http://bugzilla.redhat.com/1482445
	* src/ptx.c (line_width, gap_size, maximum_word_length)
	(reference_max_width, half_line_width, before_max_width)
	(keyafter_max_width, truncation_string_length, compare_words)
	(compare_occurs, search_table, find_occurs_in_text, print_spaces)
	(fix_output_parameters, define_all_fields):
	Use ptrdiff_t, not int, for object offsets and sizes.
	(WORD, OCCURS): Use ptrdiff_t, not short int.
	(WORD_TABLE, number_of_occurs, generate_all_output):
	Prefer ptrdiff_t to size_t where either will do.
	(total_line_count, file_line_count, OCCURS, fix_output_parameters)
	(define_all_fields):
	Use intmax_t, not int, for line counts.
	(DELTA): Remove.  All uses changed.
	(OCCURS, find_occurs_in_text, fix_output_parameters):
	Use int, not size_t, for file indexes.
	(tail_truncation, before_truncation, keyafter_truncation)
	(head_truncation, search_table, define_all_fields)
	(generate_all_output):
	Use bool for booleans.
	(digest_word_file, find_occurs_in_text):
	Use x2nrealloc instead of checking for overflow by hand.
	(find_occurs_in_text, fix_output_parameters, define_all_fields):
	Omit unnecessary cast.
	(fix_output_parameters): Don’t assume integers fit in 11 digits.
	(fix_output_parameters, define_all_fields):
	Use sprintf return value rather than calling strlen.
	(define_all_fields): Do not rely on sprintf to generate a string
	that may contain more than INT_MAX bytes.
	(main): Use xstrtoimax, not xstrtoul.
	Use xnmalloc to catch integer overflow.

	nohup: simplify by using fcntl
	* src/nohup.c: Do not include cloexec.h.
	(main): Use fcntl rather than dup + set_cloexec_flag.

	sort: use pthread_sigmask, not sigprocmask
	POSIX says sigprocmask has unspecified behavior in a multithreaded
	program like ‘sort’.
	* src/sort.c (pthread_sigmask) [GNULIB_defined_pthread_functions]:
	New macro, for use when ‘sort’ is not multithreaded.
	(cs_enter, cs_leave): Use it.  Pass address, not value, as
	this is typically a tad faster.  All callers changed.

	sort: minor cleanups
	* src/sort.c (move_fd): Rename from move_fd_or_die,
	since it no longer can die.

	sort: file descriptor discipline
	Use O_CLOEXEC when creating file descriptors, so that subsidiary
	processes do not inherit file descriptors that they do not need.
	This is helpful for ‘sort’, as it is a multithreaded program that
	forks and execs.
	* bootstrap.conf (gnulib_modules): Add mkostemp, open, pipe2.
	* src/sort.c (create_temp_file): Open temporary file with O_CLOEXEC.
	(stream_open): Open the stream with O_CLOEXEC.
	(pipe_fork): Create the pipe with O_CLOEXEC.
	(check_output): Open the output file with O_CLOEXEC.
	(main): Use xfopen/xfclose to handle --files0-from, so that
	O_CLOEXEC is used properly.  This is simpler anyway.
	* tests/misc/sort-files0-from.pl: Adjust to change in diagnostic
	wording.

	build: update gnulib submodule to latest

2017-08-13  Pádraig Brady  <P@draigBrady.com>

	kill: fix signal number to name lookup on AIX
	* src/operand2sig.c (operand2sig): AIX uses a different bit pattern
	in the returned status from the wait() functions and from shells.
	Therefore hardcode the selection of the lower bits of the number.
	* NEWS: Mention the fix.

	build: use the appropriate single file include option with xlc
	* configure.ac: Set USE_XLC_INCLUDE when __xlc__ is defined.
	* src/local.mk: Use it to select the appropriate include option.
	Reported by Michael Felt.

	tests: avoid false failures on AIX
	* tests/ln/sf-1.sh: Limit the symlink size to 1MiB
	to avoid memory exhaustion seen on NFS on AIX, giving:
	  + printf '%0*d' 4294967296 0
	  + ./tests/ln/sf-1.sh: line 38: printf: warning: 0: Result too large
	* tests/id/setgid.sh: Skip the test when the adjusted gid
	would equal 4294967295, as that's reserved on AIX.
	Reported by Michael Felt.

	sort: handle musl locale differences in --debug reporting
	* src/sort.c (main): Don't assume hard_LC_COLLATE implies
	a successful setting of the locale as musl defaults to
	UTF8 when failing to set the specified locale.
	* tests/misc/sort-debug-warn.sh: Adjust for the now
	separated locale debug info and map the musl specific
	message back to the common case.
	Addresses https://bugs.gnu.org/28054

	seq: produce consistent error messages upon write error
	* src/seq.c (io_error): Use the same error message as would
	be generated at exit time when closing the stdout stream.
	The inconsistency was added with commit v8.25-26-gc92585b.
	This was noticed due to an inconsistency in the expected
	error message generated by seq on musl libc.
	Addresses https://bugs.gnu.org/28054

	tests: fix false failure with large printf formats
	* tests/misc/printf-surprise.sh: With musl libc the
	large printf format does succeed, outputting data.
	To avoid SIGPIPE being generated we ignore that signal
	and then handle the subsequent EPIPE error.
	Addresses https://bugs.gnu.org/28054

2017-08-12  Jim Meyering  <meyering@fb.com>

	build: adjust warning options to work with latest GCC
	* configure.ac: Disable some new warnings to avoid false positives.
	Building with warnings enabled and latest gcc would evoke build
	failure without these changes.  Disable the following in coreutils
	proper: -Wformat-overflow=2 -Wformat-truncation=2, and
	disable these for gnulib: -Wformat-truncation=2 -Wduplicated-branches

	gnulib: update to latest and adjust gl/modules/tempname.diff
	* gnulib: Update to latest.
	* gl/modules/tempname.diff: This patch failed to apply.
	Adjust it to reflect removal of the secure_getenv dependency.

2017-08-11  Jim Meyering  <meyering@fb.com>

	chroot: fix typo in preceding change: didn't compile
	* src/chroot.c (usage): Add backslashes.

2017-08-10  Jim Meyering  <meyering@fb.com>

	doc: correct technicality in chroot's --help output
	* src/chroot.c (usage): Use correct quoting in descriptive diagnostic.
	We would run `"$SHELL" -i`, not `${SHELL} -i`.

2017-08-08  Assaf Gordon  <assafgordon@gmail.com>

	doc: fix join example
	* doc/coreutils.texi (join invocation): Fix incorrect output in example.
	Reported by Phlosioneer in https://bugs.gnu.org/28014 .

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

	build: update gnulib submodule to latest

	copy: more-accurate warning about destruction
	* src/copy.c (copy_internal):
	* tests/cp/backup-is-src.sh, tests/mv/backup-is-src.sh:
	Say "might destroy", not "would destroy".

2017-08-02  Pádraig Brady  <P@draigBrady.com>

	maint: avoid a syntax-check failure
	* src/shred.c (wipename): As per the comment, the arguments
	to error() are sufficiently quoted, so split the call over
	multiple lines to avoid the syntax-check.

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

	build: update gnulib submodule to latest

2017-08-01  Paul Eggert  <eggert@cs.ucla.edu>

	copy: go back to failing 'cp --backup a~ a'
	Suggested by Kamil Dudka in:
	http://lists.gnu.org/archive/html/coreutils/2017-07/msg00072.html
	* NEWS: Document the changed nature of the fix.
	* doc/coreutils.texi, tests/cp/backup-is-src.sh:
	* tests/mv/backup-is-src.sh: Revert previous change.
	* src/copy.c (source_is_dst_backup): New function.
	(copy_internal): Use it.  Fail instead of falling back on numbered
	backups when it looks like the backup will overwrite the source.
	Although this reintroduces a race, it's more compatible with
	previous behavior.

2017-07-30  Paul Eggert  <eggert@cs.ucla.edu>

	copy: sanity-check --suffix
	* src/cp.c, src/install.c, src/ln.c, src/mv.c (main):
	Use set_simple_backup_suffix, to sanity-check the user-supplied
	backup suffix.

	copy: make backup files more reliably
	* NEWS, doc/coreutils.texi (Backup options): Document the change.
	* bootstrap.conf (gnulib_modules): Add backup-rename.
	* src/copy.c (copy_internal): Silently switch to numbered backups
	if a simple backup might lose data.  Use backup_file_rename
	to avoid races with numbered backups.
	* tests/cp/backup-is-src.sh, tests/mv/backup-is-src.sh:
	Adjust to match new behavior.

	shred: avoid rename race
	Use renameat2 to avoid a rename race condition, on recent-enough
	GNU/Linux.
	* bootstrap.conf (gnulib_modules): Add renameat2.
	* src/shred.c: Include renameat2.h.
	(wipename): Use renameat2 instead of rename.

	build: update gnulib submodule to latest

2017-07-24  Jim Meyering  <meyering@fb.com>

	maint: fix grammar in a shred.c comment
	* src/shred.c: Remove spurious "to" in an old comment.

2017-07-23  Pádraig Brady  <P@draigBrady.com>

	maint: fix recent syntax-check failures
	* .gitignore: Add /lib/utime.h from the recent gnulib update.
	* src/nproc.c (usage): Adjust spacing to placate help2man.

	shred: remove redundant zeroing of freed memory
	* src/shred.c (dopass): shred used to read the input file,
	and so needed to ensure internal memory was cleared.
	This is no longer the case since SH-UTILS-1_16f-260-gf381610
	so avoid this redundant clearing.
	(do_wipefd): Likewise.
	* NEWS: Remove the recent mention of this issue.

	maint: resync with blake2 upstream
	* src/blake2/blake2-impl.h: Don't use the equivalent explicit_bzero().

	tests: avoid a false failure on AIX
	* tests/misc/sync.sh: Normalize the error messages
	when syncing a non read/write directory, as AIX
	gives the "Is a directory" error.
	Also ensure that sync(1) returns an error for this
	case on all systems.

2017-07-20  Paul Eggert  <eggert@cs.ucla.edu>

	shred: use explicit_bzero
	* NEWS: Document this.
	* bootstrap.conf (gnulib_modules): Add explicit_bzero.
	* gl/lib/randint.c (randint_free):
	* gl/lib/randread.c (randread_free):
	* src/blake2/blake2-impl.h (secure_zero_memory):
	* src/shred.c (dopass, do_wipefd):
	Prefer explicit_bzero to memset when erasing secrets.

	build: update gnulib submodule to latest

2017-07-10  Andreas Schwab  <schwab@linux-m68k.org>

	nproc: fix indentation of usage output
	* src/nproc.c (usage): Align output.

2017-07-10  Jim Meyering  <meyering@fb.com>

	groups: do not exit early
	Most programs take care to operate on all command-line-specified
	operands before exiting.  That is an important feature that allows
	to identify all problems with the first run.  However, groups would
	exit upon the first problematic user name.
	Bug introduced via commit v6.10-56-g167b8025ac.
	* src/groups.c (main): Do not exit immediately upon error.
	* tests/misc/groups-process-all.sh: New file. Test for this.
	* tests/local.mk (all_tests): Add it.
	* NEWS (Bug fixes): Mention this.

2017-07-08  Jim Meyering  <jim@meyering.net>

	tests: groups-dash.sh: avoid false failure
	* tests/misc/groups-dash.sh: Avoid false failure on a system for which
	"none" is a valid user name.  The first invocation would succeed, and
	the second would fail with "groups: ‘--’: no such user".
	Use a user name that cannot exist.

	doc: tweak wording
	* NEWS (Bug fixes): Tweak wording of the mv/cp-vs-symlink-ownership
	entry and the one about df.

2017-06-27  Assaf Gordon  <assafgordon@gmail.com>

	expr: add multibyte support
	Discussed in https://bugs.gnu.org/26779 .

	* NEWS: Mention the improvement.
	* bootstrap.conf: Add gnulib modules mbslen,mbschr.
	* src/expr.c (mbs_logical_substr): New function to return a substring
	based on logical character positions (instead of bytes).
	(mbs_logical_cspn): Similar to strcspn/mbscspn, but returns number of
	logical characters instead of byte offset.
	(mbs_offset_to_chars): New function to return number of logical
	characters fitting in a given byte offset.
	(docolon): Report matched logical characters instead of bytes.
	(eval6): For length/substr/index operations, use logical characters
	instead of bytes by calling the above new functions.
	* tests/misc/expr.pl: Repeat all tests with non-C locale to detect any
	regressions.
	* tests/misc/expr-multibyte.pl: New tests with multibyte input.
	* tests/local.mk: Add new test file.

2017-06-20  Jim Meyering  <meyering@fb.com>

	maint: avoid spurious "make distcheck" failure
	When the generated file, doc/constants.texi, happens to be older than
	doc/coreutils.info, it will not be updated until/unless its generated
	contents change.  This is due to way that rule is careful to update
	the file, to avoid provoking a pointless rerunning of makeinfo.

	Note that this does not happen when one first runs "make distclean",
	as recommended in README-release.  However, I sometimes run it as
	a more-rigorous "make check", and shouldn't have to manually run
	"make distclean" first, in that case.

	Before this change, one could reproduce the failure by running
	`touch -dyesterday doc/constants.texi && make distcheck`.  It would
	fail with "makeinfo: could not open ../../doc/coreutils.info-t
	for writing: Permission denied"
	* Makefile.am (dist-hook): Touch the two generated files, so that
	they cannot be out of date wrt doc/coreutils.texi.

2017-06-17  Pádraig Brady  <P@draigBrady.com>

	maint: use C99 for loop initial declarations where possible
	This results in a net reduction of about 120 lines.

	tail: only use inotify with regular files
	* src/tail.c (any_non_regular): A new function to check passed files.
	(main): Use the above to skip inotify if any non regular files passed
	like /dev/tty or /dev/ttyUSB0 etc.
	* tests/tail-2/inotify-only-regular.sh: A new test.
	* tests/local.mk: Reference the new test.
	* NEWS: Mention the bug fix.
	Fixes http://bugs.gnu.org/21265 and http://bugs.gnu.org/27368

	tail: with -f don't warn if doing a blocking read of a tty
	* src/tail.c: (main): Only issue the warning about -f being
	ineffective when we're not going into simple blocking mode.
	* tests/tail-2/follow-stdin.sh: Ensure the warning is output correctly.
	Fixes http://bugs.gnu.org/27368

2017-06-11  Pádraig Brady  <P@draigBrady.com>

	tail: exit promptly when output no longer writable
	This will support use cases like:

	  tail -f file.log | grep -q trigger &&
	  process_immediately

	* src/tail.c (check_output_alive): A new function that
	uses select on fifos or pipes to detect if they're broken.
	(tail_forever): Call check_output_alive() periodically.
	(tail_forever_inotify): Merge the select() call from
	check_output_alive() into the select() originally present
	for the --pid case, and adjust accordingly.
	* tests/tail-2/pipe-f.sh: Add test cases.
	* NEWS: Mention the improvement.

2017-06-10  Jim Meyering  <meyering@fb.com>

	maint: update to work with GCC7's -Werror=implicit-fallthrough=5
	* src/system.h (FALLTHROUGH): Define.
	* src/cp.c (main): Use new FALLTHROUGH macro in place of comments.
	* src/basename.c (main): Likewise.
	* src/dircolors.c (append_quoted): Likewise.
	* src/echo.c (main): Likewise.
	* src/fold.c (main): Likewise.
	* src/join.c (main): Likewise.
	* src/kill.c (main): Likewise.
	* src/ls.c (get_funky_string, gobble_file): Likewise.
	* src/sort.c (parse_field_count, main): Likewise.
	* src/stat.c (print_it): Likewise.
	* src/tail.c (parse_obsolete_option): Likewise.
	* src/test.c (posixtest): Likewise.
	* src/wc.c (wc): Likewise.
	* src/who.c (main): Likewise.

2017-06-07  Pádraig Brady  <P@draigBrady.com>

	tail: with --pid, ensure all inotify events are processed
	* NEWS: Mention the bug fix.
	* src/tail.c (tail_forever_inotify): With --pid, avoid waiting
	for new events if there are still events to process.
	* tests/tail-2/inotify-dir-recreate.sh: Adjust to trigger.

	tests: fix issues with recently added tail test
	* tests/tail-2/inotify-dir-recreate.sh: Skip when
	inotify is not usable.  Also remove a bash specific &> construct.

2017-06-02  Pádraig Brady  <P@draigBrady.com>

	copy: don't fail when unable to chown symlinks
	* src/copy.c (copy_internal): Honor the x->require_preserve flag
	for symlinks as we do for ordinary files, so we don't exit with
	failure upon failure to chown a symbolic link.
	* NEWS: Mention the bug fix.

2017-05-29  Sebastian Kisela  <skisela@redhat.com>

	doc: mention `setpriv --no-new-privs` feature in runcon info
	* doc/coreutils.texi (runcon invocation): Mention setpriv usage.
	Discussed at https://bugzilla.redhat.com/1360903

2017-05-17  Pádraig Brady  <P@draigBrady.com>

	mv: distinguish copy and rename operations with --verbose
	* src/copy.c (copy_internal): In x->move_mode distinguish
	whether we're copying, creating directory, or renaming.
	* tests/mv/backup-dir.sh: Adjust to new output.
	* tests/mv/mv-n.sh: Likewise.
	* tests/mv/mv-special-1.sh: Likewise.
	* NEWS: Mention the improvement.
	Fixes http://bugs.gnu.org/26971

2017-05-11  Prateek saxena  <prateeksaxena2@gmail.com>

	uptime: remove inconsistent AM/PM from current time
	* src/uptime.c (main): 00-23 was always used for the hour component
	of the current time, so remove the AM/PM output (which was only
	present in some locales anyway).  Also add seconds to the time
	to be more consistent with the usual procps-ng uptime implementation
	on GNU/Linux.
	* NEWS: Mention the fix.
	Fixes http://bugs.gnu.org/26783

2017-05-03  Pádraig Brady  <P@draigBrady.com>

	maint: fix various typos in recent commits
	* NEWS: Grammar fixes.
	* HACKING: Likewise.

2017-05-03  Jaak Ristioja  <jaak.ristioja@cyber.ee>

	doc: Fixed typo in timeout man page
	* man/timeout.x: Correct spelling of "currently".
	Fixes http://bugs.gnu.org/26762

2017-04-29  Pádraig Brady  <P@draigBrady.com>

	doc: update the instructions for generating a coverage report
	* HACKING: Change from explicit instructions to using gnulib
	provided coverage testing targets.  Also include instructions
	for adding root only tests to the report.
	Fixes http://bugs.gnu.org/26709

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

	dd: simplify translator’s jobs
	* src/dd.c (print_xfer_stats): Format the SI units directly,
	without translating them, to simplify the translators’ jobs.
	See Bug#26621.

2017-04-26  Pádraig Brady  <P@draigBrady.com>

	date,touch: test and document large TZ security issue
	Add a test for CVE-2017-7476 which was fixed in gnulib at:
	http://git.sv.gnu.org/gitweb/?p=gnulib.git;a=commitdiff;h=94e01571

	* tests/misc/date-tz.sh: Add a new test which overwrites enough
	of the heap to trigger a segfault, even without ASAN enabled.
	* tests/local.mk: Reference the new test.
	* NEWS: Mention the bug fix.

2017-04-26  Pádraig Brady  <P@draigBrady.com>

	build: update gnulib submodule to latest
	* .gitignore: Add new entry as indicated by `make syntax-check`.

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

	dd: status=progress outputs "6 s", not "6.00001 s"
	Problem reported by Benno Schulenberg (Bug#26621).
	* NEWS: Document this.
	* src/dd.c (print_xfer_stats): With status=progress,
	format times with %.0f rather than %g.  Improve
	translator comments.

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

	build: update gnulib submodule to latest

	maint: remove unused functions and constants
	These were found by clang.
	* gl/lib/rand-isaac.c (min):
	* gl/lib/randint.c (shift_right):
	* src/md5sum.c (algorithm):
	Remove; unused.

	date: adjust to gnulib parse-datetime changes
	* doc/coreutils.texi (Options for date): Capitalize a sentence.
	* tests/misc/date-debug.sh: Adjust --debug output to match
	recent changes to Gnulib’s parse-datetime module.

	build: update gnulib submodule to latest
	* gl/modules/tempname.diff: Update to match current Gnulib.

2017-04-17  Bogdan Drozdowski  <bogdandr@op.pl>

	shred: fix invalid pattern generation for certain sizes
	* src/shred.c (fillpattern): Fix the "off by one" issue when
	testing whether we have enough space to copy the already
	written portion of the buffer to the remainder of the buffer.
	Specifically for buffer sizes that are (3*(2^x))+1, i.e. 7,13,...
	we both use an uninitialized byte and invoke undefined
	behavior in memcpy() operation on overlapping memory regions.
	* tests/misc/shred-passes.sh: Add an invocation that will
	trigger either valgrind UMR, or ASAN like:
	  ERROR: AddressSanitizer: memcpy-param-overlap: memory ranges
	  #1 0x403065 in fillpattern src/shred.c:293
	A direct test is awkward due to the random writes surrounding
	the problematic pattern writes.
	Fixes http://bugs.gnu.org/26545

2017-04-16  Bo Rydberg  <bolry@hotmail.com>

	doc: fix awk example for getting penultimate field
	* doc/coreutils.texi (cut invocation): Add required brackets.
	Fixes http://bugs.gnu.org/26519

2017-04-05  Sebastian Kisela  <skisela@redhat.com>

	tail: revert to polling if a followed directory is replaced
	* src/tail.c (tail_forever_inotify): Add the IN_DELETE_SELF flag when
	creating watch for the parent directory.  After the parent directory
	is removed, an event is caught and then we switch from inotify to
	polling mode.  Till now, inotify has always frozen because it waited for
	an event from a watched dir, which has been already deleted and was not
	added again.
	* tests/tail-2/inotify-dir-recreate.sh: Add a test case.
	* tests/local.mk: Reference the new test.
	* NEWS: Mention the bug fix.
	Fixes http://bugs.gnu.org/26363
	Reported at https://bugzilla.redhat.com/1283760

2017-04-05  Pádraig Brady  <P@draigBrady.com>

	maint: fix syntax-check issues in previous tty commit
	* src/tty.c: Avoid EXIT_FAILURE to be more descriptive
	and to placate sc_some_programs_must_avoid_exit_failure.

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

	tty: handle misconfigured namespaces
	On some platforms, isatty succeeds but ttyname fails.
	POSIX does not seem to allow this, but there it is.
	Problem reported by Christian Brauner (Bug#26371).
	While we’re at it, check for errors more carefully and return a
	new exit status 4 if stdin is closed or a similar error occurs.
	* doc/coreutils.texi (tty invocation): Document new behavior.
	* init.cfg (stderr_fileno_):
	Don't assume have_input_tty is not in the environment.
	* src/tty.c (TTY_STDIN_ERROR): New constant.
	(main): Exit with nonzero status if there is a usage error,
	like other coreutils programs.
	Check for error in getting stdin type.
	* tests/misc/tty.sh: New file.
	* tests/local.mk (all_tests): Add it.

2017-04-02  Pádraig Brady  <P@draigBrady.com>

	doc: refactor and update expand and unexpand --help
	* src/expand-common.c (emit_tab_list_info): A new function to
	output the extended info on --tab=LIST, including the new
	'+' and '/' prefixes.
	* src/expand-common.h: Declare the above.
	* src/expand.c (usage:): Call emit_tab_list_info and
	match alignment with that used in unexpand --help.
	* src/unexpand.c (usage): Likewise.

2017-04-02  Jacob Keller  <jacob.e.keller@intel.com>

	expand,unexpand: add support for incremental tab stops
	Support --tabs="1,+8" which is equivalent to --tabs="1,9,17,..."
	useful for viewing unified diff output with its 1 character
	gutter for example.

	* doc/coreutils.texi ({expand,unexpand} invocation): Document,
	using diff processing as the example.
	* src/expand-common.c (set_increment_size): Update the new
	increment_size global.
	(parse_tab_stops): Handle the new '+' prefix.
	(finalize_tab_stops): Verify both '+' and '/' prefixes
	are not used together.
	* tests/misc/expand.pl: Add test cases.
	* NEWS: Mention the new feature.

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

	sort: update comment
	* src/sort.c: Update identifiers in comment.

2017-03-29  Chris Davies  <chris@roaima.co.uk>

	doc: clarify in dd man page that bs= overrides [io]bs=
	* src/dd.c (usage): Add the extra info.
	Reported in https://bugs.debian.org/859021

2017-03-27  Ludovic Courtès  <ludo@gnu.org>

	tests: avoid false ulimit failure on some systems
	* tests/misc/cut-huge-range.sh: On some systems returns_ may
	use more memory, so incorporate that in the determination
	of the ulimit value to use.  Noticed on ARMv7 with bash-4.4.12,
	and x86_64 with bash-4.2.37.
	Fixes http://bugs.gnu.org/26253

2017-03-27  Pádraig Brady  <P@draigBrady.com>

	maint: avoid syntax check failure with wrapped returns_
	* cfg.mk (sc_prohibit_env_returns): Allow wrapped calls to
	return_ of the form: `wrapper_ returns_ ...` which is needed
	with the following commit.

2017-03-27  Michael Heimpold  <mhei@heimpold.de>

	split: add new --hex-suffixes option
	* doc/coreutils.texi (split invocation): Document the new option.
	* src/split.c (usage): Likewise.
	(main): Process the new option much like --numeric-suffixes,
	but with an adjusted alphabet.
	* tests/split/numeric.sh: Refactor to support --hex mode.
	* NEWS: Mention the new feature.

2017-03-27  Pádraig Brady  <P@draigBrady.com>

	md5sum,b2sum,sha*sum: don't erroneously trigger BSD reversed mode
	* src/md5sum.c (split_3): Verify hex digits internally before
	triggering the global bsd_reversed mode flag.
	(bsd_split_3): Likewise.
	* tests/misc/md5sum-bsd.sh: Add a test case.
	* NEWS: Mention the bug fix.
	Fixes http://bugs.gnu.org/26263

2017-03-26  Philipp Thomas  <pth@suse.de>

	df: avoid querying excluded file systems
	* src/df.c (filter_mount_list): Avoid stat() on
	explicitly excluded file systems, which is especially
	significant in cases like `-x nfs` which may hang.
	* NEWS: Mention the bug fix.

2017-03-26  Pádraig Brady  <P@draigBrady.com>

	maint: avoid a static analysis warning in expand-common
	* src/expand-common.c (next_file): We're dependent on calling
	this function with NULL to initialize things appropriately.
	So enforce this with assert(), which avoids a warning from
	clang-anaylzer.

	split: process more efficiently when filters exit early
	* src/split.c (bytes_split): Don't write to an existing filter
	if it has exited.  When filters exit early, skip input data if
	possible.  Refactor out 2 redundant variables.
	* tests/split/filter.sh: Improve test coverage given the
	new more efficient processing.  Also use a 10TB file to
	expand the file systems tested on.

2017-03-26  Pádraig Brady  <P@draigBrady.com>

	split: ensure input is processed when filters exit early
	commit v8.25-4-g62e7af0 introduced the issue as it
	broke out of the processing loop irrespective of
	the value of new_file_flag which was used to indicate
	a finite number of filters or not.

	For example, this ran forever (as it should):
	  $ yes | split --filter="head -c1 >/dev/null" -b 1000
	However this exited immediately due to EPIPE being propagated
	back through cwrite and the loop not considering new filters:
	  $ yes | split --filter="head -c1 >/dev/null" -b 100000

	Similarly processing would exit early for a bounded number of
	output files, resulting in empty data sent to all but the first:
	  $ truncate -s10T big.in
	  $ split --filter='head -c1 >$FILE' -n 2 big.in
	  $ echo $(stat -c%s x??)
	  1 0

	I was alerted to this code by clang-analyzer,
	which indicated dead assigments, which is often
	an indication of code that hasn't considered all cases.

	* src/split.c (bytes_split): Change the last condition in
	the processing loop to also consider the number of files
	before breaking out of the processing loop.
	* tests/split/filter.sh: Add a test case.
	* NEWS: Mention the bug fix.

2017-03-11  Pádraig Brady  <P@draigBrady.com>

	tests: avoid a false failure on OS X 10.5.8
	* tests/misc/sort-debug-keys.sh: Disparate LC_CTYPE and LC_MESSAGES
