]> git.ipfire.org Git - thirdparty/coreutils.git/log
thirdparty/coreutils.git
8 years agoshred: avoid rename race
Paul Eggert [Mon, 31 Jul 2017 00:11:24 +0000 (17:11 -0700)] 
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.

8 years agobuild: update gnulib submodule to latest
Paul Eggert [Mon, 31 Jul 2017 00:11:24 +0000 (17:11 -0700)] 
build: update gnulib submodule to latest

8 years agomaint: fix grammar in a shred.c comment
Jim Meyering [Sun, 23 Jul 2017 18:04:15 +0000 (20:04 +0200)] 
maint: fix grammar in a shred.c comment

* src/shred.c: Remove spurious "to" in an old comment.

8 years agomaint: fix recent syntax-check failures
Pádraig Brady [Sun, 23 Jul 2017 19:30:49 +0000 (12:30 -0700)] 
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.

8 years agoshred: remove redundant zeroing of freed memory
Pádraig Brady [Sun, 23 Jul 2017 08:06:33 +0000 (01:06 -0700)] 
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.

8 years agomaint: resync with blake2 upstream
Pádraig Brady [Sun, 23 Jul 2017 08:50:37 +0000 (01:50 -0700)] 
maint: resync with blake2 upstream

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

8 years agotests: avoid a false failure on AIX
Pádraig Brady [Sun, 23 Jul 2017 08:54:03 +0000 (01:54 -0700)] 
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.

8 years agoshred: use explicit_bzero
Paul Eggert [Thu, 20 Jul 2017 21:01:14 +0000 (14:01 -0700)] 
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.

8 years agobuild: update gnulib submodule to latest
Paul Eggert [Thu, 20 Jul 2017 20:49:06 +0000 (13:49 -0700)] 
build: update gnulib submodule to latest

8 years agonproc: fix indentation of usage output
Andreas Schwab [Sun, 9 Jul 2017 07:17:13 +0000 (09:17 +0200)] 
nproc: fix indentation of usage output

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

8 years agogroups: do not exit early
Jim Meyering [Sat, 8 Jul 2017 11:01:55 +0000 (13:01 +0200)] 
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.

8 years agotests: groups-dash.sh: avoid false failure
Jim Meyering [Sat, 8 Jul 2017 10:01:34 +0000 (12:01 +0200)] 
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.

8 years agodoc: tweak wording
Jim Meyering [Sat, 3 Jun 2017 04:50:04 +0000 (21:50 -0700)] 
doc: tweak wording

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

8 years agoexpr: add multibyte support
Assaf Gordon [Wed, 28 Jun 2017 01:23:52 +0000 (01:23 +0000)] 
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.

8 years agomaint: avoid spurious "make distcheck" failure
Jim Meyering [Tue, 20 Jun 2017 14:53:17 +0000 (07:53 -0700)] 
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.

8 years agomaint: use C99 for loop initial declarations where possible
Pádraig Brady [Sat, 17 Jun 2017 21:54:23 +0000 (14:54 -0700)] 
maint: use C99 for loop initial declarations where possible

This results in a net reduction of about 120 lines.

8 years agotail: only use inotify with regular files
Pádraig Brady [Sat, 17 Jun 2017 06:50:47 +0000 (23:50 -0700)] 
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

8 years agotail: with -f don't warn if doing a blocking read of a tty
Pádraig Brady [Thu, 15 Jun 2017 09:41:14 +0000 (02:41 -0700)] 
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

8 years agotail: exit promptly when output no longer writable
Pádraig Brady [Wed, 7 Jun 2017 08:00:28 +0000 (01:00 -0700)] 
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.

8 years agomaint: update to work with GCC7's -Werror=implicit-fallthrough=5
Jim Meyering [Sat, 10 Jun 2017 17:02:31 +0000 (10:02 -0700)] 
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.

8 years agotail: with --pid, ensure all inotify events are processed
Pádraig Brady [Wed, 7 Jun 2017 07:17:57 +0000 (00:17 -0700)] 
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.

8 years agotests: fix issues with recently added tail test
Pádraig Brady [Wed, 7 Jun 2017 07:02:23 +0000 (00:02 -0700)] 
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.

8 years agocopy: don't fail when unable to chown symlinks
Pádraig Brady [Sat, 3 Jun 2017 04:50:04 +0000 (21:50 -0700)] 
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.

8 years agodoc: mention `setpriv --no-new-privs` feature in runcon info
Sebastian Kisela [Mon, 29 May 2017 12:17:07 +0000 (14:17 +0200)] 
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

8 years agomv: distinguish copy and rename operations with --verbose
Pádraig Brady [Thu, 18 May 2017 01:05:27 +0000 (02:05 +0100)] 
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

8 years agouptime: remove inconsistent AM/PM from current time
Prateek saxena [Thu, 11 May 2017 11:46:02 +0000 (12:46 +0100)] 
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

8 years agomaint: fix various typos in recent commits
Pádraig Brady [Thu, 4 May 2017 01:22:41 +0000 (18:22 -0700)] 
maint: fix various typos in recent commits

* NEWS: Grammar fixes.
* HACKING: Likewise.

8 years agodoc: Fixed typo in timeout man page
Jaak Ristioja [Wed, 3 May 2017 11:37:56 +0000 (14:37 +0300)] 
doc: Fixed typo in timeout man page

* man/timeout.x: Correct spelling of "currently".
Fixes http://bugs.gnu.org/26762

8 years agodoc: update the instructions for generating a coverage report
Pádraig Brady [Sun, 30 Apr 2017 03:53:16 +0000 (20:53 -0700)] 
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

8 years agodd: simplify translator’s jobs
Paul Eggert [Thu, 27 Apr 2017 21:49:00 +0000 (14:49 -0700)] 
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.

8 years agodate,touch: test and document large TZ security issue
Pádraig Brady [Thu, 27 Apr 2017 03:51:39 +0000 (20:51 -0700)] 
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.

8 years agobuild: update gnulib submodule to latest
Pádraig Brady [Thu, 27 Apr 2017 03:42:37 +0000 (20:42 -0700)] 
build: update gnulib submodule to latest

* .gitignore: Add new entry as indicated by `make syntax-check`.

8 years agodd: status=progress outputs "6 s", not "6.00001 s"
Paul Eggert [Mon, 24 Apr 2017 07:06:00 +0000 (00:06 -0700)] 
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.

8 years agobuild: update gnulib submodule to latest
Paul Eggert [Sat, 22 Apr 2017 22:15:18 +0000 (15:15 -0700)] 
build: update gnulib submodule to latest

8 years agomaint: remove unused functions and constants
Paul Eggert [Sat, 22 Apr 2017 09:46:46 +0000 (02:46 -0700)] 
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.

8 years agodate: adjust to gnulib parse-datetime changes
Paul Eggert [Sat, 22 Apr 2017 09:44:03 +0000 (02:44 -0700)] 
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.

8 years agobuild: update gnulib submodule to latest
Paul Eggert [Sat, 22 Apr 2017 09:31:32 +0000 (02:31 -0700)] 
build: update gnulib submodule to latest

* gl/modules/tempname.diff: Update to match current Gnulib.

8 years agoshred: fix invalid pattern generation for certain sizes
Bogdan Drozdowski [Tue, 18 Apr 2017 02:04:01 +0000 (19:04 -0700)] 
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

8 years agodoc: fix awk example for getting penultimate field
Bo Rydberg [Mon, 17 Apr 2017 02:07:49 +0000 (19:07 -0700)] 
doc: fix awk example for getting penultimate field

* doc/coreutils.texi (cut invocation): Add required brackets.
Fixes http://bugs.gnu.org/26519

8 years agotail: revert to polling if a followed directory is replaced
Sebastian Kisela [Wed, 5 Apr 2017 07:40:41 +0000 (09:40 +0200)] 
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

8 years agomaint: fix syntax-check issues in previous tty commit
Pádraig Brady [Wed, 5 Apr 2017 23:18:11 +0000 (16:18 -0700)] 
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.

8 years agotty: handle misconfigured namespaces
Paul Eggert [Wed, 5 Apr 2017 18:34:42 +0000 (11:34 -0700)] 
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.

8 years agodoc: refactor and update expand and unexpand --help
Pádraig Brady [Sun, 2 Apr 2017 23:52:34 +0000 (16:52 -0700)] 
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.

8 years agoexpand,unexpand: add support for incremental tab stops
Jacob Keller [Tue, 28 Mar 2017 22:49:50 +0000 (15:49 -0700)] 
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.

8 years agosort: update comment
Paul Eggert [Thu, 30 Mar 2017 15:29:00 +0000 (08:29 -0700)] 
sort: update comment

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

8 years agodoc: clarify in dd man page that bs= overrides [io]bs=
Chris Davies [Thu, 30 Mar 2017 02:03:23 +0000 (19:03 -0700)] 
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

8 years agotests: avoid false ulimit failure on some systems
Ludovic Courtès [Tue, 28 Mar 2017 03:34:39 +0000 (20:34 -0700)] 
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

8 years agomaint: avoid syntax check failure with wrapped returns_
Pádraig Brady [Tue, 28 Mar 2017 04:21:21 +0000 (21:21 -0700)] 
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.

8 years agosplit: add new --hex-suffixes option
Michael Heimpold [Fri, 24 Mar 2017 20:36:39 +0000 (21:36 +0100)] 
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.

8 years agomd5sum,b2sum,sha*sum: don't erroneously trigger BSD reversed mode
Pádraig Brady [Mon, 27 Mar 2017 00:04:36 +0000 (17:04 -0700)] 
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

8 years agodf: avoid querying excluded file systems
Philipp Thomas [Mon, 27 Mar 2017 05:34:00 +0000 (22:34 -0700)] 
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.

8 years agomaint: avoid a static analysis warning in expand-common
Pádraig Brady [Mon, 20 Mar 2017 06:00:05 +0000 (23:00 -0700)] 
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.

8 years agosplit: process more efficiently when filters exit early
Pádraig Brady [Mon, 20 Mar 2017 00:22:34 +0000 (17:22 -0700)] 
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.

8 years agosplit: ensure input is processed when filters exit early
Pádraig Brady [Mon, 20 Mar 2017 05:36:23 +0000 (22:36 -0700)] 
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.

8 years agotests: avoid a false failure on OS X 10.5.8
Pádraig Brady [Sat, 11 Mar 2017 18:44:46 +0000 (10:44 -0800)] 
tests: avoid a false failure on OS X 10.5.8

* tests/misc/sort-debug-keys.sh: Disparate LC_CTYPE and LC_MESSAGES
are not supported, with the result LC_MESSAGES=C is used throughout.
Therefore just set LC_ALL in the test, and normalize the message
variants with sed.
Reported and tested by J Rogowsky.

8 years agobuild: fix missing renameat() on OS X 10.5.8
Pádraig Brady [Fri, 10 Mar 2017 07:01:03 +0000 (23:01 -0800)] 
build: fix missing renameat() on OS X 10.5.8

* bootstrap.conf: Depend on renameat.
Reported and tested by J Rogowsky.
Fixes http://bugs.gnu.org/26044

8 years agotests: port to tzdb-2017a
Paul Eggert [Fri, 10 Mar 2017 07:59:05 +0000 (23:59 -0800)] 
tests: port to tzdb-2017a

Problem reported by Bernhard Voelker in:
http://lists.gnu.org/archive/html/coreutils/2017-03/msg00026.html
* tests/misc/date-debug.sh: Port test to tzdb 2017a,
and future-proof the America/Belize test.

8 years agobuild: for factor use C in more cases for arm64 and ppc64
Pádraig Brady [Thu, 9 Mar 2017 02:08:43 +0000 (18:08 -0800)] 
build: for factor use C in more cases for arm64 and ppc64

* src/longlong.h: Sync from gmp repo incorporating:
Use asm-free umul_ppmm() on arm64 and ppc64.

8 years agodoc: rearrange a recent bug entry to an improvement in NEWS
Pádraig Brady [Thu, 9 Mar 2017 06:59:42 +0000 (22:59 -0800)] 
doc: rearrange a recent bug entry to an improvement in NEWS

* NEWS: The stat,tail change was an improvement, not a bug fix.
* cfg.mk [old_NEWS_hash]: update with `make update-NEWS-hash`.

8 years agomaint: post-release administrivia
Pádraig Brady [Thu, 9 Mar 2017 05:25:35 +0000 (21:25 -0800)] 
maint: post-release administrivia

* NEWS: Add header line for next release.
* .prev-version: Record previous version.
* cfg.mk (old_NEWS_hash): Auto-update.

8 years agoversion 8.27 v8.27
Pádraig Brady [Thu, 9 Mar 2017 05:00:00 +0000 (21:00 -0800)] 
version 8.27

* NEWS: Record release date.

8 years agobuild: update gnulib submodule to latest
Pádraig Brady [Thu, 9 Mar 2017 04:18:58 +0000 (20:18 -0800)] 
build: update gnulib submodule to latest

Removes extraneous parse-datetime.c generated during build

8 years agostat,tail: support "RDT" Linux kernel control file system
Pádraig Brady [Thu, 9 Mar 2017 01:48:15 +0000 (17:48 -0800)] 
stat,tail: support "RDT" Linux kernel control file system

* src/stat.c (human_fstype): This file system is the user interface
for resource allocation in Intel's Resource Director Technology.

8 years agodoc: spelling fix for recent doc addition
Pádraig Brady [Thu, 9 Mar 2017 01:25:58 +0000 (17:25 -0800)] 
doc: spelling fix for recent doc addition

* doc/coreutils.texi (join invocation): s/preceeding/preceding/.

8 years agobuild: avoid redundant build of tr with --enable-single-binary
Bernhard Voelker [Wed, 8 Mar 2017 05:29:00 +0000 (21:29 -0800)] 
build: avoid redundant build of tr with --enable-single-binary

* src/local.mk [check-duplicate-no-install]: Depend on the
single-binary tr, or the system tr, as the edge case
where these are not available only result in the sanity
check being effectively ignored.

8 years agobuild: fix 'install-html' target
Assaf Gordon [Wed, 8 Mar 2017 00:54:31 +0000 (00:54 +0000)] 
build: fix 'install-html' target

Switching to non-recursive makefiles broke the 'install-html' target:
The gettext plumbing requires an 'install-html' target in po/Makefile.
This was fixed in gettext v0.19.8.1-41-ge5a008a, but packages using
older gettext need to manually patch po/Makefile.in.in.
Reported (for 'sed') and suggested fix by Eric Blake in
https://bugs.gnu.org/25690 .

* bootstrap.conf (bootstrap_epilogue): Add 'install-{html,pdf,dvi,ps}'
  targets to po/Makefile.in.in (if needed).

8 years agomaint: bump makeinfo --version requirement to 6.1
Pádraig Brady [Sat, 4 Mar 2017 22:10:57 +0000 (14:10 -0800)] 
maint: bump makeinfo --version requirement to 6.1

* bootstrap.conf: s/4.13/6.1/ as versions previous to that
generated invalid html with interspersed <span> tags that
were visible to the user.  Version 6.1 is available for a
year now, and is available in most distros.

8 years agodoc: avoid makeinfo warning
Bernhard Voelker [Sat, 4 Mar 2017 18:26:12 +0000 (19:26 +0100)] 
doc: avoid makeinfo warning

makeinfo issues the following:

  doc/coreutils.texi:6568: warning: @sc argument all uppercase,\
    thus no effect.

* doc/coreutils.texi (join invocation): Remove the @sc macro around
the all uppercase "GNU".

8 years agobuild: update gnulib submodule to latest
Pádraig Brady [Fri, 3 Mar 2017 17:02:52 +0000 (09:02 -0800)] 
build: update gnulib submodule to latest

Fixes a test-lock failure on MacOS

8 years agotimeout: handle multiple children on solaris
Pádraig Brady [Fri, 3 Mar 2017 08:30:20 +0000 (00:30 -0800)] 
timeout: handle multiple children on solaris

* src/timeout.c (install_sigchld): A new function to
install the SIGCHLD handler using sigaction() rather
than signal(), because with the latter on solaris
the signal handler is reset to default and thus
sigsuspend() only returns for the first finished child.
Reported by Assaf Gordon.

8 years agotests: avoid a spurious failure on older debian
Pádraig Brady [Fri, 3 Mar 2017 08:25:54 +0000 (00:25 -0800)] 
tests: avoid a spurious failure on older debian

* tests/misc/cut-huge-range.sh: Bump up the ulimit,
to avoid a false failure due hitting the previously
detected ulimit.
Reported by Assaf Gordon.

8 years agobuild: fix libstdbuf build on AIX 7
Pádraig Brady [Fri, 3 Mar 2017 08:23:56 +0000 (00:23 -0800)] 
build: fix libstdbuf build on AIX 7

* src/libstdbuf.c: undef malloc so as libstdbuf is
not linked with gnulib, and anyway the replacement is
never needed since we never malloc(0).
Reported by Assaf Gordon.

8 years agodoc: expand 'join' info section
Assaf Gordon [Mon, 27 Feb 2017 07:25:31 +0000 (02:25 -0500)] 
doc: expand 'join' info section

* doc/coreutils.texi (join invocation): Expand section to
add examples and more details.
Suggested by Dan Jacobson in https://bugs.gnu.org/25870

8 years agodoc: give a stronger security warning in md5/sha1 man pages
Pádraig Brady [Wed, 1 Mar 2017 17:33:29 +0000 (09:33 -0800)] 
doc: give a stronger security warning in md5/sha1 man pages

* man/md5sum.x: Give a more direct warning againt the use
of this hash algorithm for security purposes.
* man/sha1sum.x: Likewise.
Suggested by Jim Meyering.

8 years agoexpand: avoid an extraneous warning on 32 bit
Pádraig Brady [Wed, 1 Mar 2017 17:24:57 +0000 (09:24 -0800)] 
expand: avoid an extraneous warning on 32 bit

* src/expand-common (parse-tab-stops): Exit earlier upon overflow
so another warning isn't issued (on 32 bit) in add_tab_stop().
Flagged in https://hydra.nixos.org/build/49499970

8 years agodoc: indicate sha1 has the same limitations as md5
Pádraig Brady [Wed, 1 Mar 2017 04:14:58 +0000 (20:14 -0800)] 
doc: indicate sha1 has the same limitations as md5

* doc/coreutils.texi (sha1sum invocation): Given that a SHA-1
preimage attack has occurred as documented at http://shattered.io/,
document sha1sum as having the same limitations as md5sum.
(md5sum): Parameterize the warning for use in both cases.
* man/md5sum.x: Mention b2sum(1) as a more secure alternative.
* man/sha1sum.x: Give the same warning as done for md5sum(1).

8 years agomaint: avoid a -Werror=null-dereference with GCC-6.3.1
Pádraig Brady [Mon, 27 Feb 2017 08:47:30 +0000 (00:47 -0800)] 
maint: avoid a -Werror=null-dereference with GCC-6.3.1

* src/stty.c (sane_mode): Assert to inform the compiler
we know the pointer will be valid.

8 years agoexpand,unexpand: support specifying a trailing tab size
Pádraig Brady [Sun, 26 Feb 2017 22:40:19 +0000 (14:40 -0800)] 
expand,unexpand: support specifying a trailing tab size

* doc/coreutils.texi (expand invocation): Document the feature.
(unexpand invocation): Likewise.
* src/expand-common.c (extend_size): A new global to use
when the last tab stop is prefixed by '/'.
(set_extend_size): A new function to validate and set
the new extend_size global.
(parse_tab_stops): Call set_extend_size() for '/' prefixes.
(finalize_tab_stops): Ensure a single specified '/' is
treated like a standard tabsize, but also ensure that
when '/' is specified with a single other entry that
we process as a list rather than a tab size.
(get_next_tab_stop): Use the tab size if set,
for items after the user specified tab position list.
* tests/misc/expand.pl: Add test cases
* NEWS: Mention the new feature.
Fixes http://bugs.gnu.org/25540

8 years agonproc: support OMP_THREAD_LIMIT to set a max value
Pádraig Brady [Sun, 26 Feb 2017 16:05:25 +0000 (08:05 -0800)] 
nproc: support OMP_THREAD_LIMIT to set a max value

This comes from the latest gnulib.
Also handling of OMP_NUM_THREADS has been adjusted
to support comma separated values indicating a nesting level,
in which case the first value is taken.  Also OMP_NUM_THREADS=0
is now ignored instead of being treated as 1, to match
the behavior of libgomp.

* NEWS: Mention the OMP_THREAD_LIMIT improvement,
and OMP_NUM_THREADS now handling nested values.
* doc/coreutils.texi (nproc invocation): Describe OMP_THREAD_LIMIT
as a way to set the max value, with OMP_THREAD_LIMIT setting the min.
* tests/misc/nproc-override.sh: A new test to exercise the
updated gnulib code with all combinations of these OMP variables.
* tests/local.mk: Reference the new test.

8 years agobuild: update gnulib submodule to latest
Pádraig Brady [Sun, 26 Feb 2017 11:44:14 +0000 (03:44 -0800)] 
build: update gnulib submodule to latest

8 years agodoc: add NEWS for an improvement to dd in the last release
Pádraig Brady [Thu, 23 Feb 2017 04:48:54 +0000 (20:48 -0800)] 
doc: add NEWS for an improvement to dd in the last release

* NEWS: Mention the avoidance of the gotcha with specifying
a hex constant like count=0x1000 etc. as that previously
was silently interpreted as 0.

8 years agocp: set SELinux context for --parents directories
Pádraig Brady [Tue, 21 Feb 2017 02:46:49 +0000 (18:46 -0800)] 
cp: set SELinux context for --parents directories

* src/copy.c (set_process_security_ctx, set_file_security_ctx):
Export for use in cp.c.
* src/copy.h: Likewise.
* src/cp.c (make_dir_parents_private): Call the exported functions
to set the security context for new and updated directories.
* tests/cp/cp-a-selinux.sh: Add a test case.

Fixes http://bugs.gnu.org/25378

8 years agomaint: tweaks so syntax tests pass for previous commit
Pádraig Brady [Sat, 18 Feb 2017 03:32:27 +0000 (19:32 -0800)] 
maint: tweaks so syntax tests pass for previous commit

* .gitignore: placate sc_gitignore_redundant.
* po/POTFILES.in: placate sc_po_check.

8 years agodoc: avoid makeinfo warning
Bernhard Voelker [Thu, 16 Feb 2017 00:22:47 +0000 (01:22 +0100)] 
doc: avoid makeinfo warning

Commit v8.26-38-g99deaff introduced this warning:

    MAKEINFO doc/coreutils.info
  ./doc/coreutils.texi:10268: \
    warning: `.' or `,' must follow @xref, not `@'.

* doc/coreutils.texi (readlink invocation): Add '.' after @xref macro.

8 years agomaint: xsetmode renamed to xbinary-io
Paul Eggert [Thu, 16 Feb 2017 08:40:02 +0000 (00:40 -0800)] 
maint: xsetmode renamed to xbinary-io

* bootstrap.conf, src/base64.c, src/cat.c, src/cksum.c:
* src/head.c, src/md5sum.c, src/od.c, src/split.c, src/sum.c:
* src/tac.c, src/tail.c, src/tee.c, src/tr.c, src/wc.c:
Adjust to renaming of the xsetmode module to xbinary-io,
and of the xsetmode function to xset_binary_mode.

8 years agobuild: update gnulib submodule to latest
Paul Eggert [Thu, 16 Feb 2017 08:20:30 +0000 (00:20 -0800)] 
build: update gnulib submodule to latest

8 years agomaint: use xsetmode, not xfreopen
Paul Eggert [Wed, 15 Feb 2017 23:58:08 +0000 (15:58 -0800)] 
maint: use xsetmode, not xfreopen

This fixes a bug noted by Eric Blake.  Code was using xfreopen to
change files to binary mode, but this fails for stdout when in
append mode.  Such code should use xsetmode instead.  This affects
only the port on platforms like MS-Windows which distiguish text
from binary I/O.
* bootstrap.conf (gnulib_modules):
Remove xfreopen and add xsetmode.  Sort.
* src/base64.c (main):
* src/cat.c (main):
* src/cksum.c (cksum):
* src/head.c (head_file, main):
* src/md5sum.c (digest_file):
* src/od.c (open_next_file):
* src/split.c (main):
* src/sum.c (bsd_sum_file, sysv_sum_file):
* src/tac.c (tac_file, main):
* src/tail.c (tail_file):
* src/tee.c (tee_files):
* src/tr.c (main):
* src/wc.c (wc_file): Use xsetmode, not xfreopen.

8 years agobuild: update gnulib submodule to latest
Paul Eggert [Wed, 15 Feb 2017 23:35:25 +0000 (15:35 -0800)] 
build: update gnulib submodule to latest

8 years agomaint: tweaks so syntax tests pass for previous commit
Pádraig Brady [Mon, 13 Feb 2017 02:05:37 +0000 (18:05 -0800)] 
maint: tweaks so syntax tests pass for previous commit

* src/force-link.h: Don't include headers already included by system.h
* src/force-link.c: Likewise.  Also include system.h and
explicitly mark extern functions as such.

8 years agoln: replace destination links more atomically
Paul Eggert [Sun, 12 Feb 2017 07:12:31 +0000 (23:12 -0800)] 
ln: replace destination links more atomically

If the file B already exists, commands like 'ln -f A B' and
'cp -fl A B' no longer remove B before creating the new link.
Instead, they arrange for the new link to replace B atomically.
This should fix a race condition reported by Mike Crowe (Bug#25680).
* NEWS, doc/coreutils.texi (cp invocation, ln invocation):
Document this.
* bootstrap.conf (gnulib_modules): Add symlinkat.
* src/copy.c, src/ln.c: Include force-link.h.
* src/copy.c (same_file_ok): It's also OK to remove a destination
symlink when creating symbolic links, or when the source and
destination are on the same file system and when creating hard links.
* src/copy.c (create_hard_link, copy_internal):
* src/ln.c (do_link):
Rewrite using force_linkat and force_symlinkat, to close a window
where the destination temporarily does not exist.
* src/cp.c (main): Do not set x.unlink_dest_before_opening
merely because we are in link-creation mode.
* src/force-link.c, src/force-link.h: New files.
* src/local.mk (copy_sources, src_ln_SOURCES): Add them.
* tests/cp/same-file.sh: Adjust test case to match fixed behavior.

8 years agotimeout: fix race possibly terminating wrong process
Tobias Stoeckmann [Sun, 5 Feb 2017 12:23:22 +0000 (13:23 +0100)] 
timeout: fix race possibly terminating wrong process

The race is unlikely, as timeout(1) needs to receive a signal
in the few operations between waitpid() returning and exit().
Also the system needs to have reallocated the just released pid
in this time window.

Previously we never disabled the signal handler that sent
the termination signal to the "child" pid.  However once waitpid()
has reaped the child, the system is free to allocate that pid,
so we must ensure we don't process any further signals.

* build-aux/gen-lists-of-programs.sh: Build timeout(1) optionally...
* configure.ac: ...predicated on sigsuspend() being available.
* src/timeout.c (block_cleanup): A new function to ensure the
cleanup() handler is disabled after waitpid has returned.
(main): Use sigsuspend() to wait with cleanup() enabled but
disabled once it returns, and thus disabled for the waitpid() call.
(monitored_pid): Change to the more accurate pid_t.
* NEWS: Mention the fix.

Fixes http://bugs.gnu.org/25624

8 years agodoc: note the relationship between realpath and readlink
Pádraig Brady [Thu, 9 Feb 2017 04:45:32 +0000 (20:45 -0800)] 
doc: note the relationship between realpath and readlink

* doc/coreutils.texi (realpath invocation): Mention that realpath
is the preferred command for canonicalization.
(readlink invocation): Likewise.
* man/readlink.x: Likewise.

8 years agotail: fix output of redundant headers when resuming
Janne Snabb [Tue, 7 Feb 2017 07:15:42 +0000 (23:15 -0800)] 
tail: fix output of redundant headers when resuming

* src/tail.c (check_fspec): Only enable printing of the file header
if we've actually read some data and this is a new file.  Also
move printing of the file header to...
(dump_remainder): ...here, to allow printing only when data read.
* tests/tail-2/overlay-headers.sh: A new test for suspension
and resumption of tail.
* tests/local.mk: Reference the new test.
* NEWS: Mention the fix.
Fixes http://bugs.gnu.org/23539

8 years agotests: fix tail test race causing false failure
Pádraig Brady [Wed, 1 Feb 2017 05:27:41 +0000 (21:27 -0800)] 
tests: fix tail test race causing false failure

* tests/tail-2/retry.sh: The replacement of the "missing" directory
is not atomic, and therefore tail(1) can take a different path,
especially if there is a delay between the rmdir(2) and creat(2).
This is noticeable for example with `make coverage` because in
that case the coverage files written by rmdir(1) on exit,
induce a significant delay thus triggering the issue.

8 years agotail: fix erroneous status about 'giving up' on file
Pádraig Brady [Wed, 1 Feb 2017 04:10:02 +0000 (20:10 -0800)] 
tail: fix erroneous status about 'giving up' on file

* src/tail.c (recheck): Set f->ignore before we
use it to show the appropriate error.
* tests/tail-2/retry.sh: Ensure the "giving up" message
is not presented.

8 years agodoc: only distribute 5 years of ChangeLogs
Pádraig Brady [Wed, 1 Feb 2017 05:55:22 +0000 (21:55 -0800)] 
doc: only distribute 5 years of ChangeLogs

Remove old log files that have corresponding entries
in the source code repository.
This saves about 2.5MB uncompressed, 0.5M compressed.

* Makefile.am (gen-ChangeLog): Adjust to taking all
logs since a particular version (8.15 in this case).
Also mention in the truncated log where to get older entries.
(changelog_etc): Remove the no longer distributed files.
* build-aux/git-log-fix: Remove now unused entries.
* ChangeLog-200[5-8]: Delete.
* doc/ChangeLog-2007: Likewise.
* po/ChangeLog-2007: Likewise.
* old/*: Likewise.

8 years agomaint: fix HACKING instructions to run a single test
Maxime de Roucy [Tue, 7 Feb 2017 01:10:55 +0000 (02:10 +0100)] 
maint: fix HACKING instructions to run a single test

* HACKING: s/make TEST=/make check TEST=/
The 'check' target was missing there since v8.20-57-geac397e.

8 years agobuild: fix issue with HAVE_FALLOCATE on centos5
Pádraig Brady [Wed, 25 Jan 2017 11:09:03 +0000 (11:09 +0000)] 
build: fix issue with HAVE_FALLOCATE on centos5

* src/copy.c (punch_hole): Work around an empty definition
of HAVE_FALLOCATE which leads to a build error of:
"error: #if with no expression"
That was triggered by the inclusion of <linux/fs.h> in
commit v8.25-68-g89e1fef with kernel-headers-2.6.18.
Reported by Nelson H. F. Beebe

8 years agobuild: Properly expand cu_install_program when cross-compiling
Manolis Ragkousis [Wed, 25 Jan 2017 16:33:29 +0000 (18:33 +0200)] 
build: Properly expand cu_install_program when cross-compiling

* src/local.mk (cu_install_program): Replace @INSTALL_PROGRAM@
with @INSTALL@ when cross-compiling; missed in commit 477a1e8e.
Message-Id: <20170125163329.5690-1-manolis837@gmail.com>
Copyright-paperwork-exempt: Yes

8 years agodircolors: highlight windows archive format
Mike Swanson [Sun, 15 Jan 2017 18:48:12 +0000 (10:48 -0800)] 
dircolors: highlight windows archive format

* src/dircolors.hin: Match *.{wim,swm,dwn,esd}