diff options
Diffstat (limited to '')
-rw-r--r-- | ChangeLog | 10834 |
1 files changed, 10834 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog new file mode 100644 index 0000000..98cfffd --- /dev/null +++ b/ChangeLog @@ -0,0 +1,10834 @@ +2020-03-05 Pádraig Brady <P@draigBrady.com> + + version 8.32 + * NEWS: Record release date. + +2020-03-04 Pádraig Brady <P@draigBrady.com> + + tests: don't rely on system env(1) being present + * tests/misc/env-S.pl: `env -i env` will call the system env + due to the path being cleared, so pass the absolute path + of our env binary under test to avoid that. This was seen + to be an issue on Guix where /usr/bin/env was not available. + + basenc: avoid undefined behaviour in z85 processing + * src/basenc.c (z85_decode_ctx_init): Ensure we're working + with unsigned, as otherwise ubsan triggers with: + src/basenc.c:767:18: runtime error: signed integer overflow: + 43 * 52200625 cannot be represented in type 'int' + (z85_encode): Likewise to avoid the usban error: + src/basenc.c:630:26: runtime error: + left shift of 134 by 24 places cannot be represented in type 'int' + +2020-03-01 Pádraig Brady <P@draigBrady.com> + + tests: avoid a false failure on OpenIndiana 11 + * tests/misc/timeout-parameters.sh: Split the large timeout + handling to ... + * tests/misc/timeout-large-parameters.sh: ... here, so that + the 3 second delay is contained in its own test, and if + the test is skipped due invalid handling within timeout(1), + it will be more apparent. + Also adjust the check so we skip whenever the kernel timer + fires immediately, to handle the buggy OpenIndiana 11 kernel also. + Reported by Bruno Haible. + + tests: avoid a hang on GNU/Hurd from 2019 + * tests/du/8gb.sh: Add a timeout around: + `dd bs=1 seek=8G of=big < /dev/null` + + tests: use bash in some scripts to avoid false failures + * init.cfg (require_bash_as_SHELL_): A new function to replace + SHELL for the current test, with bash if available. + This is useful on OpenIndiana 11 where /bin/sh was seen + to have races in handling of SIGPIPE. + * tests/misc/seq-epipe.sh: Use the new function to enforce bash. + * tests/misc/env-signal-handler.sh: Likewise. + Reported by Bruno Haible + + tests: improve test coverage for ls stat checks + * tests/ls/stat-free-color.sh: Check for the availability + of various stat calls individually, and add statx() and fstatat64() + to the list to check. Fix the stat counting logic to + ignore lines like "+++ exited with 0 +++". + * tests/ls/stat-free-symlinks.sh: Check syscalls other than stat(). + +2020-03-01 Bruno Haible <bruno@clisp.org> + + tests: enable 4 more tests to be executed on FreeBSD + * init.cfg (gcc_shared_libs_): New variable. + (gcc_shared_): Use it, instead of hardcoding -ldl. + (require_gcc_shared_): Determine the suitable value + for gcc_shared_libs_. + +2020-02-29 Pádraig Brady <P@draigBrady.com> + + tests: fix incorrect `|| fail` pattern in tests + * tests/ls/stat-free-symlinks.sh: s/|| fail/|| fail=1/. + * tests/misc/tee.sh: Likewise. + * tests/touch/relative.sh: Likewise. + * cfg.mk (sc_prohibit_or_fail): A new syntax-check to avoid this. + +2020-02-29 Pádraig Brady <P@draigBrady.com> + + tests: avoid false failures on darwin 19.2.0 + With these adjustments, all tests pass on macOS Catalina. + + * tests/dd/sparse.sh: Adjust so that systems like apfs that + don't create holes < 16 MiB do not fail erroneously. + * tests/touch/trailing-slash.sh: Darwin was seen to dereference + symlinks to files when given a trailing slash, so avoid + that particular case. + +2020-02-29 Bruno Haible <bruno@clisp.org> + + tests: fix test failure on FreeBSD 12 + * tests/misc/csplit-io-err.sh: Limit the effect of the fwrite + override to streams != stderr, as fwrite is in the error() path there. + +2020-02-27 Jan Nieuwenhuizen <janneke@gnu.org> + + build: once again distribute .tar.gz files + * configure.ac: Reenable distribution of gzip-compressed + tarballs, for Guix bootstrapping reasons as discussed at: + https://lists.gnu.org/r/coreutils/2020-02/msg00042.html + * THANKS.in: Remove me, as now a committer. + * NEWS (Build-related): Mention this. + +2020-02-27 Pádraig Brady <P@draigBrady.com> + + maint: ensure .deps/ in the project root is ignored by git + * .gitignore: s|*/.deps/|.deps| + + doc: remove older ChangeLog items + * Makefile.am: Update the oldest documented version + to 8.23 which is now about 5 years old. + +2020-02-27 Colin Watson <cjwatson@debian.org> + + ls: issue error message on removed directory + If the current directory has been removed, then "ls" confusingly + produced no output and no error message, indistinguishable from + running on an empty directory. + + * src/ls.c (print_dir): Report ENOENT on GNU/Linux if readdir + finds no directory entries at all, not even "." or "..", + and a recheck with the getdents syscall returns ENOENT. + We recheck with getdents() as POSIX states that + "The directory entries for dot and dot-dot are optional". + * tests/ls/removed-directory.sh: New file. + * tests/local.mk (all_tests): Add new test. + * NEWS: Mention the change in behavior. + Reported by Owen Thomas. + +2020-02-25 Pádraig Brady <P@draigBrady.com> + + build: update to latest gnulib + * bootstrap.conf: Adjust for changes to fchmodat and fchownat, + which are now separated from chmodat and chownat respectively. + + b2sum: sync better with upstream + * src/blake2/blake2-impl.h: Sync load16() implementation, + which doesn't change code generation. + Also leverage (builtin) memcpy to more efficiently + move data on little endian systems, + giving a 2% win with GCC 9.2.1 on an i3-2310M. + + factor: sync longlong.h adjustments from upstream + * src/longlong.h: Sync changes from: + https://gmplib.org/repo/gmp/log/tip/longlong.h + mips64: Provide r6 asm code as default expression yields. + arm32: Define sub_ddmmss separately for non-thumb (no rsc instruction). + powerpc: Add "CLOBBER" descriptions for some registers. + x86: Fix criterion for when to use mulx in umul_ppmm. + + stat,tail: sync file system constants from the linux kernel + * src/stat.c: Add magic constants for "binderfs", "dma-buf-fs", + "erofs", "ppc-cmm-fs", and "z3fold". + * NEWS: Mention the improvement. + +2020-02-24 Pádraig Brady <P@draigBrady.com> + + uniq: avoid strcoll() to improve performance and consistency + strcoll() is only significant to uniq(1) if it returns 0, + and it generally only does so with buggy locales or mismatched + locales and data. Some systems may have strcoll() + return 0 for equivalent normalized unicode forms, + but for consistency across platforms strcoll() is avoided. + The various cases are defined in the new test. + This is consistent with newer POSIX standards as discussed at: + https://www.austingroupbugs.net/view.php?id=963 + + * src/uniq.c: s/xstrcoll/memcmp/. + * tests/local.mk: Reference the new test. + * tests/misc/uniq-collate.sh: Add a new test. + * NEWS: Mention the change in behavior. + Fixes https://bugs.gnu.org/38627 + +2020-02-15 Pádraig Brady <P@draigBrady.com> + + doc: clarify that '%a' stat format outputs mode bits + * src/stat.c (usage): Mention permission bits rather than + "access" so there is no confusion with ACLs etc. + Also indicate we output the file type with '%A'. + * doc/coreutils.texi (stat invocation): Likewise. + Also indicate '%A' is similar to `ls -ld` output. + Addresses https://bugs.gnu.org/39613 + +2020-02-10 Pádraig Brady <P@draigBrady.com> + + tests: fix test for symlink + * tests/cp/preserve-gid.sh: s/-l/-L/. + Reported by Kamil Dudka + +2020-02-09 Kamil Dudka <kdudka@redhat.com> + + tests: ensure tests/cp/preserve-gid.sh works with single binary + * tests/cp/preserve-gid.sh: If configured with --enable-single-binary + copy the coreutils single binary, instead of the cp one-line launcher. + + Discussed at https://bugzilla.redhat.com/1800597 + Fixes https://bugs.gnu.org/39485 + +2020-02-09 Pádraig Brady <P@draigBrady.com> + + maint: avoid syntax-check failure in previous commit + * configure.ac: Restrict lines to 80 chars. + +2020-02-09 Jim Meyering <meyering@fb.com> + + build: suppress new FP warning from gcc-10.0.1 + * configure.ac (GNULIB_WARN_CFLAGS): Add -Wno-return-local-addr + to avoid FP warning about careadlinkat.c. Discussed starting in + https://lists.gnu.org/r/coreutils/2020-02/msg00006.html + +2020-02-04 Pádraig Brady <P@draigBrady.com> + + build: update to latest gnulib + Pick up recent build fixes to avoid sysctl.h inclusion on glibc systems, + restrict the max file size supported by read-file to PTRDIFF_MAX, + and to avoid a -Werror=unused failure in test-canonicalize. + + tests: avoid false failure due to varying /proc/kallsyms + * tests/cp/proc-short-read.sh: Switch to using /proc/cpuinfo, + rather than /proc/kallsyms which was seen to vary in some cases. + Fixes https://bugs.gnu.org/39357 + +2020-02-04 Pádraig Brady <P@draigBrady.com> + + rmdir: fix --ignore-fail-on-non-empty with permissions errors + Since v6.10-21-ged5c4e7 `rmdir --ignore-fail-on-non-empty` + had reversed the failure status for directories that failed + to be removed for permissions reasons. I.E. it would have + returned a failure status for such non empty dirs, and vice versa. + + * src/rmdir.c (errno_may_be_non_empty): Rename from the + more confusing errno_may_be_empty(), and remove the EEXIST + case (specific to Solaris), which is moot here since + handled in errno_rmdir_non_empty(). + (ignorable_failure): Fix the logic error so that + _non_ empty dirs are deemed to have ignorable failures. + (main): Fix clobbering of errno by is_empty_dir(). + (remove_parents): Likewise. + * tests/rmdir/ignore.sh: Add a test case. + * THANKS.in: Add reporter who fixed the errno handling. + * NEWS: Mention the bug fix. + Fixes https://bugs.gnu.org/39364 + +2020-02-03 Pádraig Brady <P@draigBrady.com> + + build: avoid vector performance warnings in randperm + * configure.ac: Add -Wno-vector-operation-performance to suppress the + following gcc-9.2 error in gl/lib/randperm.c: + error: vector operation will be expanded piecewise + + build: avoid including sysctl.h on glibc + * src/uname.c: Avoid unneeded header with GLIBC, + which has been deprecated since glibc-2.30. + * src/uptime.c: Likewise. + + ls: support --time=creation to show/sort birth time + * src/ls.c (usage): Reorganize help for --time, + and add description for --time=birth. + (do_statx): Store btime in mtime if available. + (get_stat_btime): A new function to read the creation time + from the appropriate stat structure member. + (cmp_btime): A new function to compare birth time. + (print_long_format): Output '?' when birth time unavailable. + * doc/coreutils.texi: Document --time={birth,creation}. + * tests/local.mk: Reference the new test. + * tests/ls/birthtime.sh: Add a new test. + * NEWS: Mention the new feature. + +2020-01-30 Chris Meyering <christophe.meyering@gmail.com> + + build: rearrange yes(1) code to prevent GCC 10 warning + * src/yes.c (main): Convert for loop to do-while in order to indicate + that the loop will be run at least once. + This avoids the following warning after the second loop: + src/yes.c:110:20: error: writing 1 byte into a region of size 0 + +2020-01-01 Emil Engler <me@emilengler.com> + + maint: add lib/iconv_open-zos.h to .gitignore + * .gitignore: Add file newly generated by gnulib commit 49e78fc + +2020-01-01 Pádraig Brady <P@draigBrady.com> + + build: auto enable use of openssl with >= version 3 + * configure.ac: Set --with-openssl=auto-gpl-compat as the default, + so that openssl is used for md5sum etc., with openssl >= 3, + which is newly licensed under ASL v2. + * gnulib: Update to include "auto-gpl-compat" support. + + maint: adjust to split out xstrtol-error gnulib module + * bootstrap.conf: Depend on the new module split from xstrtol. + * src/df.c: Include "xstrtol-error.h" for xstrtol_fatal. + * src/du.c: Likewise. + * src/ls.c: Likewise. + * src/od.c: Likewise. + * src/pr.c: Likewise. + * src/sort.c: Likewise. + +2020-01-01 Pádraig Brady <P@draigBrady.com> + + maint: update all copyright year number ranges + Run "make update-copyright" and then... + + * gnulib: Update to latest with copyright year adjusted. + * tests/init.sh: Sync with gnulib to pick up copyright year. + * bootstrap: Likewise. + * tests/sample-test: Adjust to use the single most recent year. + +2019-12-08 Bernhard Voelker <mail@bernhard-voelker.de> + + doc: add example to demonstrate sub-second sleep times + * doc/coreutils.texi (sleep invocation): Add an example to demonstrate + how to use the floating-point and the scientific notation to sleep + for sub-second times, e.g. milli-, micro- and nanoseconds. + + Inspired by Stephane Chazelas in: + https://lists.gnu.org/r/coreutils/2019-12/msg00005.html + +2019-12-02 Pádraig Brady <P@draigBrady.com> + + maint: fix syntax-check failure from recent adjustment + * cfg.mk (old_NEWS_hash): Regenerate after commit v8.31-56-gc1e1965. + +2019-12-02 Kamil Dudka <kdudka@redhat.com> + + chcon: do not validate security context if SELinux is disabled + * src/chcon.c (main): Skip call of security_check_context() + in case SELinux is disabled to avoid unnecessary failure. + + Bug: https://bugzilla.redhat.com/1777831 + +2019-11-12 Paul Eggert <eggert@cs.ucla.edu> + + doc: remove colon from node name + * doc/sort-version.texi (Minus/Hyphen and Colon characters): + Rename from “Minus/Hyphen @samp{-} and Colon @samp{:} characters”, + as texi2any 6.6 complains about colons in node names. + + shred: modernize documentation + * doc/coreutils.texi (shred invocation): + Modernize discussion to today’s technology (Bug#38168). + * src/shred.c (usage): Omit lengthy duplication of the manual’s + discussion of file systems and storage devices, as that became out + of sync with the manual. Instead, just cite the manual. + +2019-10-22 Paul Eggert <eggert@cs.ucla.edu> + + all: improve parsing of numeric arguments + This addresses a longstanding "update all callers" FIXME in + lib/xstrtol.c, by having programs check that numbers do not + have unknown suffixes. The problem was also reported for + 'shuf' by my student Maggie Huang while reimplementing a shuf + subset in Python as an exercise in UCLA Computer Science 35L: + https://web.cs.ucla.edu/classes/fall19/cs35L/assign/assign3.html + This patch also improves the portability of the code to unusual + platforms where ULONG_MAX < SIZE_MAX. + * NEWS: Mention user-visible changes. + * src/chgrp.c (parse_group): + * src/chroot.c (parse_additional_groups): + * src/du.c (main): + * src/install.c (get_ids): + * src/join.c (string_to_join_field): + * src/ls.c (decode_switches): + * src/md5sum.c (split_3): + * src/shuf.c (main): + * src/sort.c (specify_nthreads): + * src/uniq.c (size_opt, main): + Use uintmax_t instead of unsigned long, for portability + to oddball platforms where unsigned long is not wide enough. + * src/du.c (main): + * src/expr.c (mpz_init_set_str) [!HAVE_GMP]: + * src/install.c (get_ids): + * src/ls.c (decode_switches): + * src/mknod.c (main): + * src/ptx.c (main): + * src/shuf.c (main): + * src/sort.c (specify_nmerge, specify_nthreads): + Reject numbers with suffixes. + * src/md5sum.c (split_3): Simplify. + + stdbuf: improve size checking + * bootstrap.conf (gnulib_modules): Add minmax. + * src/libstdbuf.c: Include stdint.h, minmax.h. + (apply_mode): Don’t assume SIZE_MAX <= ULONG_MAX. + Improve checking for invalid sizes. + + shuf: improve randperm overflow checking + * gl/lib/randperm.c: Include randperm.h first, since it’s the API. + Include stdint.h, count-leading-zeros.h, verify.h. + (floor_lg): Rename from ceil_log (which was not actually + implementing the ceiling!) and implement the floor using + count_leading_zeros. + (randperm_bound): Use floor_lg, not ceil_log. Use uintmax_t + instead of size_t in case the size gets large on a 32-bit host. + * gl/modules/randperm (Depends-on): Add count-leading-zeros, stdint. + + build: don’t worry about logical-op checking + * configure.ac: Remove code tailoring --enable-gcc-warnings + to GCC 4.7 and earlier, as developers no longer need to worry + about GCCs that old. + + build: re-enable type-limits checking + * configure.ac: When --enable-gcc-warnings is used, omit + -Wno-type-limits. The need for -Wno-type-limits has passed, now + that intprops.h uses builtin primitives for GCC 5 and later, given + that recent GCCs issue type-limits warnings only for non-constant + expressions. --enable-gcc-warnings is not intended for use with + old compilers, so we can drop -Wno-type-limits now. + +2019-10-21 Paul Eggert <eggert@cs.ucla.edu> + + shuf: fix bug with ‘-r -n 0’ + ‘shuf -r -n 0 file’ would mistakenly read from standard input. + Problem reported by my student Jingnong Qu while reimplementing a + shuf subset in Python as an exercise in UCLA Computer Science 35L: + https://web.cs.ucla.edu/classes/fall19/cs35L/assign/assign3.html + * NEWS: Mention the fix. Also, ASCIIfy a previous item. + * src/shuf.c (main): Fix bug. + * tests/misc/shuf.sh: Add a test case for the bug. + +2019-10-09 Jeff Layton <jlayton@kernel.org> + + ls: use statx instead of stat when available + statx allows ls to indicate interest in only certain inode metadata. + This is potentially a win on networked/clustered/distributed + file systems. In cases where we'd have to do a full, heavyweight stat() + call we can now do a much lighter statx() call. + + As a real-world example, consider a file system like CephFS where one + client is actively writing to a file and another client does an + ls --color in the same directory. --color means that we need to fetch + the mode of the file. + + Doing that with a stat() call means that we have to fetch the size and + mtime in addition to the mode. The MDS in that situation will have to + revoke caps in order to ensure that it has up-to-date values to report, + which disrupts the writer. + + This has a measurable affect on performance. I ran a fio sequential + write test on one cephfs client and had a second client do "ls --color" + in a tight loop on the directory that held the file: + + Baseline -- no activity on the second client: + + WRITE: bw=76.7MiB/s (80.4MB/s), 76.7MiB/s-76.7MiB/s (80.4MB/s-80.4MB/s), + io=4600MiB (4824MB), run=60016-60016msec + + Without this patch series, we see a noticable performance hit: + + WRITE: bw=70.4MiB/s (73.9MB/s), 70.4MiB/s-70.4MiB/s (73.9MB/s-73.9MB/s), + io=4228MiB (4433MB), run=60012-60012msec + + With this patch series, we gain most of that ground back: + + WRITE: bw=75.9MiB/s (79.6MB/s), 75.9MiB/s-75.9MiB/s (79.6MB/s-79.6MB/s), + io=4555MiB (4776MB), run=60019-60019msec + + * src/stat.c: move statx to stat struct conversion to new header... + * src/statx.h: ...here. + * src/ls.c: Add wrapper functions for stat/lstat/fstat calls, + and add variants for when we are only interested in specific info. + Add statx-enabled functions and set the request mask based on the + output format and what values are needed. + * NEWS: Mention the Improvement. + +2019-10-03 Paul Eggert <eggert@cs.ucla.edu> + + truncate: avoid integer-overflow assumptions + * src/truncate.c (do_ftruncate): Simplify overflow checking, + and don’t rely on theoretically-nonportable assumptions + like assuming that OFF_MAX < UINTMAX_MAX. + + numfmt: avoid unlikely integer overflow + * src/numfmt.c (parse_format_string): Report overflow if + pad < -LONG_MAX, since that can’t be negated. + + nl: fix integer-overflow bug + Problem reported by Roland Illig (Bug#37585) + * src/nl.c (print_lineno): Don’t rely on undefined behavior when + checking for integer overflow. + + cp: simplify integer overflow checking + * src/copy.c (sparse_copy): Use INT_ADD_WRAPV instead + of doing overflow checking by hand. + +2019-09-08 Pádraig Brady <pbrady@fb.com> + + seq: use faster processing for integer steps from 2 to 200 + * src/seq.c: (seq_fast): Accept STEP as a parameter and use that + to skip the output of generated numbers. + (main): Relax to using seq_fast for integer steps between 1 and 200. + For larger steps the throughput was faster using the standard + incrementing procedure. + (cmp): Use the equivalent but faster memcmp for equal len strings. + * tests/misc/seq.pl: Update fast path cases. + Addresses https://bugs.gnu.org/37241 + +2019-09-08 Pádraig Brady <P@draigBrady.com> + + maint: use consistent header ordering and spacing in NEWS + * NEWS: Move "Changes in behavior" before "New features", + and ensure there is only a single blank line between sections. + +2019-08-15 Paul Eggert <eggert@cs.ucla.edu> + + build: update gnulib submodule to latest + +2019-08-15 Assaf Gordon <assafgordon@gmail.com> + + scripts: document how to build older versions on newer systems + Based on https://lists.gnu.org/r/coreutils/2019-08/msg00011.html . + + * scripts/build-older-versions/README.older-versions: Documentation + * scripts/build-older-versions/build-older-versions.sh: Helper script. + * scripts/build-older-versions/.gitignore: Ignore build directory. + * scripts/build-older-versions/coreutils-5.0-on-glibc-2.28.diff, + scripts/build-older-versions/coreutils-5.97-on-glibc-2.28.diff, + scripts/build-older-versions/coreutils-6.10-on-glibc-2.28.diff, + scripts/build-older-versions/coreutils-6.11-on-glibc-2.28.diff, + scripts/build-older-versions/coreutils-6.12-on-glibc-2.28.diff, + scripts/build-older-versions/coreutils-7.2-on-glibc-2.28.diff, + scripts/build-older-versions/coreutils-8.13-on-glibc-2.28.diff, + scripts/build-older-versions/coreutils-8.17-on-glibc-2.28.diff, + scripts/build-older-versions/coreutils-8.18-on-glibc-2.28.diff, + scripts/build-older-versions/coreutils-8.24-on-glibc-2.28.diff, + scripts/build-older-versions/coreutils-8.4-on-glibc-2.28.diff: Patches. + +2019-08-12 Bruno Haible <bruno@clisp.org> + + build: adjust for recent gnulib pthread changes + Discussed in https://lists.gnu.org/r/coreutils/2019-08/msg00030.html . + + * bootstrap.conf (gnulib_modules): Replace 'pthread' with + pthread-* modules. + * src/sort.c: Remove GNULIB_defined_pthread_functions conditional. + +2019-08-11 Assaf Gordon <assafgordon@gmail.com> + + date: mention military timezone changes from gnulib + Gnulib commits f1f10d47be8762e4ca17c8957a0520b08d28abfb and + 0673d8ab42c9bb0cf618a21b537cdd8fb976fb73 negated the meaning of + military timezones parsed in gnu date. + See https://lists.gnu.org/r/bug-gnulib/2019-08/msg00005.html and + https://lists.gnu.org/r/coreutils/2019-08/msg00021.html + + * NEWS: Mention this user-visible change. + * tests/misc/date.pl: Add tests for the new behavior. + +2019-08-11 Bernhard Voelker <mail@bernhard-voelker.de> + + maint: add lib/argmatch.h to po/POTFILES.in + * po/POTFILES.in (lib/argmatch.h): Add to avoid sc_po_check error: + "maint.mk: you have changed the set of files with translatable \ + diagnostics;" + +2019-08-11 Assaf Gordon <assafgordon@gmail.com> + + gnulib: update to latest + +2019-08-08 Pádraig Brady <P@draigBrady.com> + + doc: clarify that truncate creates sparse files + * src/truncate.c (usage): Explicitly mention "sparse". + * doc/coreutils.texi (truncate invocation): Likewise. + Addresses https://bugs.gnu.org/36963 + +2019-08-07 Mike Swanson <mikeonthecomputer@gmail.com> + + dircolors: recognize the WebP image format + * src/dircolors.hin: Add .webp for the WebP image format. + Fixes https://bugs.gnu.org/36899 + +2019-08-07 Bernhard Voelker <mail@bernhard-voelker.de> + + maint: fix error in syntax-check checking + The previous commit introduced a bug into the following syntax-check, + and thus effectively turned it off: + + $ make sc_prohibit_test_calls_print_ver_with_irrelevant_argument; \ + echo $? + prohibit_test_calls_print_ver_with_irrelevant_argument + fatal: cannot change to 'grep': No such file or directory + 0 + + * cfg.mk (sc_prohibit_test_calls_print_ver_with_irrelevant_argument): + Remove changing directory, and pass $(srcdir) as argument to 'git -C'. + +2019-08-04 Akim Demaille <akim.demaille@gmail.com> + + maint: fix issues in syntax-check + * cfg.mk (sc_prohibit_colon_redirection): Don't expect `|` to denote + the pipe character in git grep. + (sc_tests_executable) + (sc_case_insensitive_file_names) + (sc_some_programs_must_avoid_exit_failure) + (sc_prohibit_test_background_without_cleanup_) + (sc_prohibit_test_calls_print_ver_with_irrelevant_argument) + (sc_prohibit_test_ulimit_without_require_) + (sc_prohibit_test_background_without_cleanup_) + (sc_THANKS_in_duplicates) + *sc_prohibit_test_calls_print_ver_with_irrelevant_argument): + Don't expect builddir to be a descendant of srcdir. + (sc_strftime_check): Don't check file size against 0 when "N\nq\n" was + already put in the file. + * THANKS.in: Remove me. + +2019-08-03 Assaf Gordon <assafgordon@gmail.com> + + seq: fix superfluous output line + Under certain circumstances seq prints an extra line when the output + format has custom format with characters following the printed numbers: + + $ seq -f "%g " 1000000 1000000 + 1e+06 + 1e+06 + + This is due to the "print_extra_number" logic using strings to determine + whether a 'extra number' is needed, but only one string was trimmed + when using a custom printf format. + + Prompted by https://lists.gnu.org/r/coreutils/2019-08/msg00001.html + + * NEWS: Mention fix. + * src/seq.c (print_numbers): Trim the 'x0_str' string before comparing + it to the previous 'x_str' string. + * tests/misc/seq-extra-number.sh: Add this scenario. + * tests/local.mk (all_tests): Add new test. + +2019-07-22 Bernhard Voelker <mail@bernhard-voelker.de> + + doc: improve new version sort chapter + * doc/sort-version.texi: Fix some typos, avoid overly long lines in + the generated PDF, enclose some sample strings in @samp{...} for better + readability, etc. This also avoids an sc-avoid-builtin error: + s/builtin/built-in/ + +2019-07-15 Assaf Gordon <assafgordon@gmail.com> + + doc: add "version sort ordering" chapter + * doc/sort-version.texi: New file. + * doc/local.mk (doc_coreutils_TEXINFOS): Add new file. + * doc/coreutils.texi: @include new file, replace previous "Details about + version sort" section. + +2019-07-12 Andreas Dilger <adilger@whamcloud.com> + + stat: don't explicitly request file size for filenames + When calling 'stat -c %N' to print the filename, don't explicitly + request the size of the file via statx(), as it may add overhead on + some filesystems. The size is only needed to optimize an allocation + for the relatively rare case of reading a symlink name, and the worst + effect is a somewhat-too-large temporary buffer may be allocated for + areadlink_with_size(), or internal retries if buffer is too small. + + The file size will be returned by statx() on most filesystems, even + if not requested, unless the filesystem considers this to be too + expensive for that file, in which case the tradeoff is worthwhile. + + * src/stat.c: Don't explicitly request STATX_SIZE for filenames. + +2019-06-20 Paul Eggert <eggert@cs.ucla.edu> + + od: use fseek on non-regular files + Problem reported by Szőts Ákos (Bug#36291). + * NEWS: Mention this. + * src/od.c (skip): Try fseek even on files that do not have usable + sizes, falling back on fread if fseek fails. + +2019-06-18 Paul Eggert <eggert@cs.ucla.edu> + + doc: mention ls -l user/group justification + * doc/coreutils.texi (What information is listed): + Document justification of user and group columns in ls -l output + (Bug#36220). + +2019-06-14 Jeff Layton <jlayton@kernel.org> + + stat: fix enabling of statx logic + * src/stat.c: STATX_INO isn't defined until stat.h is included. + Move the test down so it works properly. + +2019-06-13 Assaf Gordon <assafgordon@gmail.com> + + tests: avoid false-positive in date-debug test + When debugging an invalid date due to DST switching, the intermediate + 'normalized time' should not be checked - its value can differ between + systems (e.g. glibc vs musl). + + Reported by Niklas Hambüchen in + https://lists.gnu.org/r/coreutils/2019-05/msg00031.html + Analyzed by Rich Felker in + https://lists.gnu.org/r/coreutils/2019-05/msg00039.html + + * tests/misc/date-debug.sh: Replace the exact normalized time + with 'XX:XX:XX' so different values would not trigger test failure. + +2019-06-10 Jeff Layton <jlayton@kernel.org> + + stat: Use statx where available and support --cached + * src/stat.c: Drop statbuf argument from out_epoch_sec(). + Use statx() rather than [lf]stat() where available, + so a separate call is not required to get birth time. + Set STATX_* mask bits only for things we want to print, + which can be more efficient on some file systems. + Add a new --cache= command-line option that sets the appropriate hint + flags in the statx call. These are primarily used with network + file systems to indicate what level of cache coherency is desired. + The new option is available unconditionally for better portability, + and ignored where not implemented. + * doc/coreutils.texi: Add documention for --cached. + * man/stat.x (SEE ALSO): Mention statx(). + * NEWS: Mention the new feature. + +2019-06-09 Pádraig Brady <P@draigBrady.com> + + doc: fix description of tail -f on truncated files + * doc/coreutils.texi (tail invocation): Update to match + the new behavior following commit v8.23-189-gb28ff6a + +2019-06-08 Pádraig Brady <P@draigBrady.com> + + split: fix failure for certain number of specified files + * src/split.c (set_suffix_length): Use a more standard + zero based logN calculation for the number of units. + * tests/split/suffix-auto-length.sh: Add a test case. + * THANKS.in: Mention the reporter. + * NEWS: Mention the fix. + Fixes https://bugs.gnu.org/35291 + +2019-05-30 Paul Eggert <eggert@cs.ucla.edu> + + dd: be more careful about signal handling + Problem reported by Hans Henrik Bergan (Bug#36007). + * NEWS: Mention this. + * src/dd.c (iclose, ifdatasync, ifstat, ifsync): + New functions, which are more careful about SIGINT. + (cleanup): Use iclose instead of close. + (finish_up): Process signals first. + (skip, dd_copy, main): Use ifstat instead of fstat. + (dd_copy): Use ifdatasync and ifsync instead of fdatasync and fsync. + + maint: fix version number in NEWS + +2019-05-28 Paul Eggert <eggert@cs.ucla.edu> + + cp: fix /dev/stdin problem on Solaris + Problem reported by Jakub Kulik (Bug#35713). + * NEWS: Mention this. + * configure.ac (DEV_FD_MIGHT_BE_CHR): New macro. + * src/copy.c (DEV_FD_MIGHT_BE_CHR): Default to false. + (follow_fstatat): New function. + (copy_internal): Use it. + * src/copy.h (XSTAT): Remove; no longer used. + +2019-05-26 Kevin Locke <kevin@kevinlocke.name> + + doc: clarify dd sparse detection is by *output* block + The wording of the dd --help text suggests that output will be skipped + for sparse *input* blocks (i.e. that NUL-checking is done on input + blocks) while the code actually checks/skips all-NUL *output* blocks.[1] + + * src/dd.c (usage): Update the --help text to clarify the above. + * tests/dd/sparse.sh: Ensure sparseness is controlled with obs. + + [1]: https://superuser.com/a/1136358 + +2019-05-22 Martin Castillo <castilma@uni-bremen.de> + + doc: fix typo in sort set operations example + * doc/coreutils.texi (sort invocation): Add a missing -u + option to uniq. + Addresses https://bugs.gnu.org/35849 + +2019-05-17 Paul Eggert <eggert@cs.ucla.edu> + + b2sum: port blake2b-ref.c to HP-UX aCC + Continue the fix for Bug#35650. + * src/blake2/blake2b-ref.c [HAVE_CONFIG_H]: Include <config.h>. + +2019-05-15 Paul Eggert <eggert@cs.ucla.edu> + + b2sum: sync better with upstream + * src/blake2/b2sum.c: Reorder source code to minimize diffs from: + https://github.com/BLAKE2/BLAKE2/blob/master/b2sum/b2sum.c + + b2sum: port to HP-UX aCC + Its support for the -include option is flaky. Problem reported by + Michael Osipov (Bug#35650). Plus, we could run into other + compilers that don’t support any option like -include. Change the + code so that -include is not needed. Although this causes us to + depart from the upstream version, we’re already doing that for + other reasons. + * configure.ac (USE_XLC_INCLUDE): Remove, as there’s no + guarantee a compiler will support something like -include. + * src/blake2/b2sum.c [HAVE_CONFIG_H]: Include <config.h>. + * src/local.mk (src_b2sum_CPPFLAGS): Add -DHAVE_CONFIG_H. + Do not use -include or a substitute. + +2019-05-14 Paul Eggert <eggert@cs.ucla.edu> + + stdbuf: port configure-time checking to HP-UX aCC + Problem reported by Michael Osipov (Bug#35650). + * configure.ac: Use AC_LANG_WERROR to pay attention to compiler + and linker warnings when testing whether stdbuf will work. + +2019-05-11 Paul Eggert <eggert@cs.ucla.edu> + + b2sum: port to HP-UX C + * src/blake2/blake2.h (BLAKE2_PACKED): + Don’t assume __attribute__ ((packed)) works on non-Microsoft + compilers. Instead, assume it works only if we have good + reason to assume so, and fall back on Microsoft (or not packing) + otherwise. In practice, not packing is good enough and the + BLAKE2_PACKED macro is mostly just for documentation. + + cp: port fiemap.h to C99 + * src/extent-scan.c (extent_scan_read): Adjust to change in + struct fiemap. + * src/fiemap.h (struct fiemap): Use FLEXIBLE_ARRAY_MEMBER + to port to C99. + + basenc: port to C99 + * src/basenc.c: Various minor style cleanups. + (struct base_decode_context): Do not use anonymous unions, as + they’re not in C99. Use a named union instead. All uses changed. + + maint: adjust to recent verify_true removal + * src/system.h (X2NREALLOC, X2REALLOC, DECIMAL_DIGIT_ACCUMULATE): + Use verify_expr instead of verify_true, which has been removed. + (DECIMAL_DIGIT_ACCUMULATE): Remove unnecessary size check. + + build: update gnulib submodule to latest + +2019-04-19 Bernhard Voelker <mail@bernhard-voelker.de> + + gnulib: update to the latest + * gnulib: Update to latest, mainly for: + > mountlist: make parsing /proc/self/mountinfo more robust + * NEWS: Mention the fix. + + Fixes https://bugs.gnu.org/33468 + +2019-03-31 Shugo Maeda <shugo@ruby-lang.org> + + factor: output immediately if stdout is a tty but stdin is not + * src/factor.c (lbuf_putc): Use line buffered mode if the standard + output is a terminal in the same way as the stdio library. + User programs might use pty only for the standard out + like the example of Ruby's PTY module: + https://docs.ruby-lang.org/en/2.6.0/PTY.html#module-PTY-label-Example + * NEWS: Mention the fix. + Fixes https://bugs.gnu.orv/35046 + +2019-03-30 Pádraig Brady <P@draigBrady.com> + + maint: fix syntax check failure + * src/ln.c: Remove leading TAB. + +2019-03-30 Martin Castillo <castilma@uni-bremen.de> + + maint: tee: use STDIN_FILENO rather than 0 + * src/tee.c (tee_files): Use the name rather than the value. + Addresses https://bugs.gnu.org/35041 + +2019-03-20 Paul Eggert <eggert@cs.ucla.edu> + + dd: improve doc of stderr output + * doc/coreutils.texi (dd invocation): + Document stderr output more carefully. + Say that conv=block can lose input data. + +2019-03-18 Kamil Dudka <kdudka@redhat.com> + + md5sum,b2sum,sha*sum: --help: add note about binary/text mode + * src/md5sum.c (usage): Make it clear that there is no difference + between binary mode and text mode on GNU systems. + + Bug: https://bugzilla.redhat.com/406981 + Bug: https://bugzilla.redhat.com/1688740 + +2019-03-17 Paul Eggert <eggert@cs.ucla.edu> + + doc: add NEWS item for Solaris symlink fix + + ln: port to symlink ("x", ".") failing with EINVAL + Problem reported by John Marino (Bug#34894). + * src/ln.c (main): Port ln -s to Solaris symlink function, + where symlink ("x", ".") fails with errno == EINVAL. + +2019-03-16 Pádraig Brady <P@draigBrady.com> + + doc: add a NEWS entry for the ln O_DIRECTORY fix + * NEWS: Mention the bugfix. + +2019-03-16 Paul Eggert <eggert@cs.ucla.edu> + + ln: port to platforms lacking O_DIRECTORY + * src/ln.c (main): Port to older platforms lacking + support for POSIX.1-2008’s O_DIRECTORY flag (Bug#34876). + +2019-03-15 Kamil Dudka <kdudka@redhat.com> + + doc: improve wording of the --kibibytes option description + Bug: https://bugzilla.redhat.com/1527391 , https://bugs.gnu.org/33646 + + * doc/coreutils.texi (General output formatting): Improve wording of + '--kibibytes' option. + +2019-03-11 Bernhard Voelker <mail@bernhard-voelker.de> + + maint: sync extra files from gnulib + Some files are physically copied from gnulib, and should get sync'ed + after each update to latest gnulib. This was forgotten during recent + updates. + + * COPYING: Merge from gnulib/doc/COPYINGv3. + * tests/init.sh: Merge from gnulib/tests/init.sh. + +2019-03-11 Pádraig Brady <P@draigBrady.com> + + maint: post-release administrivia + * NEWS: Add header line for next release. + * .prev-version: Record previous version. + * cfg.mk (old_NEWS_hash): Auto-update. + +2019-03-10 Pádraig Brady <P@draigBrady.com> + + version 8.31 + * NEWS: Record release date. + + tests: test-N: include subsecond values in gating check + * tests/misc/test-N.sh: The subsecond values for atime and mtime + were potentially seen to differ on newlyl created files. + So we include the subsecond portion when comparing stat values. + + tests: wc-nbsp: fix false failures on various systems + * tests/misc/wc-nbsp.sh: Add gating checks for all characters, + as there are disparate classifications on various systems: + SunOS 5.10 treats \u202F, \u2060 as !iswprint() + SunOS 5.10 treats \u00A0, \u2007 as iswspace() + AIX 7.2, Darwin 17.4.0, NetBSD 7.1 treat \u2060 as !iswprint() + +2019-03-07 Pádraig Brady <P@draigBrady.com> + + tests: tail-2/pipe-f: avoid false failure closing stdout + * tests/tail-2/pipe-f.sh: Check closing stdout with >&- + is effective, which avoids a false failure on NetBSD 7.1 + Reported by Assaf Gordon + + tests: tac-2-nonseekable: ensure we don't block indefinitely + * tests/misc/tac-2-nonseekable.sh: Add a timeout to both + protect and check whether we can close stdin correctly. + + tests: id/zero: avoid false failure due to sed differences + * tests/id/zero.sh: sed on OSX will output a \n even + if the input doesn't have a \n on the last "line". + So ensure we always have a trailing '\n' to avoid the disparity. + +2019-03-07 Pádraig Brady <P@draigBrady.com> + + tests: test-N: fix false positives on some systems + Testing by Assaf Gordon on OSX showed the atime wasn't + being updated when explicitly set back in time. + Also Debian 8.11 / mips64 was seen to not update the + mtime when truncating an empty file. + + * tests/misc/test-N.sh: Isolate from different timestamping + behaviors of various (file) systems, by correlating + the timestamps with stat(1) before using `test -N`. + +2019-03-07 Assaf Gordon <assafgordon@gmail.com> + + doc: replace @hashchar{} with actual hash character + Very old makeinfo-4.13 fails with: + ./doc/coreutils.texi:2286: Unknown command `hashchar'. + ./doc/coreutils.texi:2286: Misplaced {. + ./doc/coreutils.texi:2286: Misplaced }. + + Reported Bernhard Voelker in + https://lists.gnu.org/r/coreutils/2019-03/msg00016.html . + + * doc/coreutils.texi (basenc invocation): Replace @hashchar{} with + actual hash character. The special syntax is only required + when referring to #line directives. + +2019-03-06 Pádraig Brady <P@draigBrady.com> + + build: avoid statx related build failure on AIX + * src/stat.c (get_birthtime): Check also for STATX_BTIME define, + as a different statx is available on AIX 7.2. + + tests: wc-nbsp.sh: avoid failure on FreeBSD + * tests/misc/wc-nbsp.sh: FreeBSD and OS X don't + treat non breaking space as printable characters. + So use wc -L to determine printability before + testing non breaking space functionality. + + build: fix env build where SIGNUM_BOUND is not constant + * src/env.c (initialize_signals): A new function to initialize + the signals array on the heap, to avoid a build failure on + opensolaris, where SIGNUM_BOUND is not a constant. + +2019-03-04 Pádraig Brady <P@draigBrady.com> + + doc: remove older ChangeLog items + * Makefile.am: Update the oldest documented version + to 8.22 which is now about 5 years old. + + build: revert recent change with distributed man page handling + * man/local.mk: commit f114495e added an extra check to ensure + a binary was working before using it to generate the man page. + However this was not working for the false(1) command, + and also one can generally specify that one should not + be using generated commands on the current system by passing + 'cross_compiling=yes' to the configure invocation. + + env: add --list-signal-handling to output non default handling + * src/env.c (main): Output blocked or ignored signals + before a command is executed. + * doc/coreutils.texi (env invocation): Add the option. + * tests/misc/env-signal-handler.sh: Add a test case. + * NEWS: Mention the new feature. + +2019-03-04 Assaf Gordon <assafgordon@gmail.com> + + env: new options --{default,ignore,block}-signal[=SIG] + New options to set signal handlers for the command being executed. + --block-signal suggested by Paul Eggert in http://bugs.gnu.org/34488#71 + --default-signal is useful to overcome the POSIX limitation that shell + must not override inherited signal state, e.g. the second 'trap' here is + a no-op: + + trap '' PIPE && sh -c 'trap - PIPE ; seq inf | head -n1' + + Instead use: + + trap '' PIPE && sh -c 'env --default-signal=PIPE seq inf | head -n1' + + Similarly, the following will prevent CTRL-C from terminating the + program: + + env --ignore-signal=INT seq inf > /dev/null + + See https://bugs.gnu.org/34488#8 + + * NEWS: Mention new options. + * doc/coreutils.texi (env invocation): Document new options. + * man/env.x: Add example of --default-signal=SIG usage. + (SEE ALSO): Mention sigprocmask. + * src/env.c (signals): New global variable. + (longopts): Add new options. + (usage): Print new options. + (parse_signal_params): Parse comma-separated list of signals, store in + signals variable. + (reset_signal_handlers): Set each signal to SIG_DFL/SIG_IGN. + (parse_block_signal_params): Parse command-line options. + (set_signal_proc_mask): Call sigprocmask to block/unblock signals. + (main): Process new options. + * src/local.mk (src_env_SOURCES): Add operand2sig.c. + * tests/misc/env-signal-handler.sh: New test. + * tests/local.mk (all_tests): Add new test. + +2019-03-04 Martin Bukatovic <martin.bukatovic@gmail.com> + + stat: print birth time on systems supporting statx + * configure.ac: Check for statx(), available on glibc >= 2.28. + * src/stat.c (get_birthtime): Call statx() when available. + * NEWS: Mention the improvement. + +2019-03-04 Pádraig Brady <P@draigBrady.com> + + df: support different file system encodings when not using tty + * src/df.c (replace_problematic_chars): A new wrapper to be + more conservative in our replacement when not connected to a tty. + * tests/df/problematic-chars.sh: Add a test case. + + maint: tidy up recent additions to NEWS + * NEWS: Move date change to improvements and fix nohup grammar. + +2019-02-27 Bernhard Voelker <mail@bernhard-voelker.de> + + doc: further clarify 'yes' alternative in seq invocation + * doc/coreutils.texi (node seq invocation): Clarify to use the tool + 'yes'; otherwise the reader may interpret the sentence as if one + could pass 'yes' as the INCREMENT value. + +2019-02-26 Pádraig Brady <P@draigBrady.com> + + wc: treat non breaking space as a word separator + * src/wc.c (iswnbspace): A new function to match + characters in this class. + (isnbspace): Likewise for single byte charsets. + (main): Initialize posixly_correct from the environment, + to allow disabling honoring NBSP in non C locales. + (wc): Call is[w]nbspace() along with is[w]space. + * bootstrap.conf: Ensure btowc is available. + * tests/misc/wc-nbsp.sh: A new test. + * tests/local.mk: Reference the new test. + * NEWS: Mention the change in behavior. + +2019-02-25 Paul Eggert <eggert@cs.ucla.edu> + + doc: more date +%F clarifications + * doc/coreutils.texi (Date conversion specifiers): + Plain %F is actually like %+4Y-%m-%d. + (Padding and other flags): Mention POSIX restrictions. + * src/date.c (usage): Document recent changes. + + doc: give date +%+F example + * doc/coreutils.texi (Padding and other flags): + Give example for + conversion specification. + + doc: fix typo in previous patch + + date: ‘+’ conversion specification flag + The recent Gnulib update fixed Bug#34608; document and test this. + * NEWS: Mention the change. + * doc/coreutils.texi (Padding and other flags): + Update doc to cover new flag and other POSIX.1-2017 changes. + * tests/misc/date.pl (date-century-plus): New test. + + build: update gnulib submodule to latest + +2019-02-24 Bernhard Voelker <mail@bernhard-voelker.de> + + all: detect --help and --version more consistently + For select programs which accept only --help and --version options + (in addition to non-option arguments), process these options before + any other options. + + Before: + + $ dd bs=1 --help + dd: unrecognized option '--help' + Try 'dd --help' for more information. + + $ yes me --help + me --help + me --help + ... + + After: + Any occurrence of '--help' in the arguments (prior to '--') will + show the help screen. + + Discussed in https://bugs.gnu.org/33468 . + + * NEWS: Mention change. + * src/cksum.c, src/dd.c, src/hostid.c, src/hostname.c, src/link.c, + src/logname.c, src/nohup.c, src/sleep.c, src/tsort.c, src/unlink.c, + src/uptime.c, src/users.c, src/whoami.c, src/yes.c (main): Replace + parse_long_options() + getopt_long() calls with + parse_gnu_standard_options_only(); Remove <getopt.h> inclusion; + Remove empty 'struct long_options' variable; + * tests/misc/help-version-getopt.sh: Add test. + * tests/local.mk (all_tests): Reference it. + +2019-02-24 Pádraig Brady <P@draigBrady.com> + + gnulib: update to the latest + update to a version with parse_gnu_standard_options_only() + +2019-02-20 Martin Castillo <castilma@uni-bremen.de> + + doc: fix join examples in texinfo + * doc/coreutils.texi (join invocation): Fix various errors. + Fixes https://bugs.gnu.org/34583 + Fixes https://bugs.gnu.org/34584 + +2019-02-19 Daming Yang <lion@aosc.io> + + ls: better align month abbreviations containing digits + * src/ls.c (abmon_init): Align numeric abbreviations right. + * NEWS: Mention the improvement. + +2019-02-18 Pádraig Brady <P@draigBrady.com> + + sort: clarify in --debug; only text comparisons affected + * src/sort.c (main): Adjust the debug info regarding locales, + to clarify that only textual comparisons are affected. + * tests/misc/sort-debug-warn.sh: Adjust accordingly. + Fixes https://bugs.gnu.org/34490 + +2019-02-12 Pádraig Brady <P@draigBrady.com> + + comm,join: ensure warnings are apparent upon exit + * src/comm.c (main): Output a warning right before exit, + in case previous errors have scrolled from view. + * src/join.c (main): Likewise. + * tests/misc/comm.pl: Addjust accordingly. + * tests/misc/join.pl: Likewise. + Fixes https://bugs.gnu.org/34347 + +2019-02-12 Filipp Gunbin <fgunbin@fastmail.fm> + + doc: fix typo referencing RFC 2822 + * doc/coreutils.texi (date invocation): s/822/2822/. + Fixes https://bugs.gnu.org/34438 + +2019-02-11 Pádraig Brady <P@draigBrady.com> + + gnulib: update to use new strtold module + * gnulib: Update to make the new strtold module available. + * bootstrap.conf: strtod is now a dependency of c-strtod, + which in turn is a dependency of cl-strtod. This treats + strtold and strtod similarly. + * gl/lib/cl-strtod.c: Adjust to assume strtold is available. + * tests/misc/sort-float.sh: Likewise. + * src/sort.c: Likewise. + (nan_compare): Adjust comment to indicate + we still have to init padding bits as per + https://sourceware.org/bugzilla/show_bug.cgi?id=13246 + +2019-02-04 Pádraig Brady <P@draigBrady.com> + + seq: output decimal points consistently with invalid locales + * src/seq.c (print_numbers): Only reset the locale if it + was successfully set originally. + * tests/misc/seq-locale.sh: Add a new test. + * tests/local.mk: Reference the new test. + * NEWS: Mention the fix. + + build: ensure sys/select.h is included + bootstrap.conf: Explicitly depend on select, rather than transitively. + * src/tail.c: Unconditionally include select.h as we use select() + outside inotify contexts now. + + stat,tail: fix android build and support inotify + * src/extract-magic: Treat android like linux, + which fixes the build by ensuring the constants are defined. + * src/stat.c: Support all constants on android, including + the android specific "sdcardfs". + * src/tail.c: Fix inclusion of statfs headers to be independent + of inotify availability, as fremote() is used on linux even + if inotify has been disabled. Also enable fremote() on android. + * NEWS: Mention the improvment. + Fixes https://bugs.gnu.org/34239 + +2019-01-31 Pádraig Brady <P@draigBrady.com> + + tests: add test for locale decimal processing + * tests/misc/sleep.sh: Check locale processing of printf, sleep, + and timeout, when the french locale data is available. + +2019-01-31 Pádraig Brady <P@draigBrady.com> + + build: fix recent build failure on systems without strtold + Recently introduced in commit v8.30-50-geb73e23 + + * gl/lib/cl-strtod.c: Fall back to strtod() on systems + without strtold() (like we already do in sort). + +2019-01-28 Pádraig Brady <P@draigBrady.com> + + maint: fix new syntax-check failure from recent change + * cfg.mk: Exclude cl-strtold.c wrapper from requiring config.h + +2019-01-27 Paul Eggert <eggert@cs.ucla.edu> + + printf,seq: remove c-strtod dependency + * gl/modules/cl-strtold (Files): Add lib/cl-strtod.c, lib/cl-strtod.h. + (Depends-on): Remove cl-strtod. + (configure.ac): Redquire AC_C_RESTRICT. + + printf,seq: improve long double accuracy + This fixes a thinko in the previous patch. + * gl/lib/cl-strtod.c (STRTOD): New macro. + (CL_STRTOD): Use it. + + printf,seq,sleep,tail,timeout: accept current-locale floats + These commands now accept floating-point numbers in the + current locale, as well as in the C locale. + Compatibility problem reported by Robert Elz. + * NEWS: Document this. + * bootstrap.conf (gnulib_modules): Add cl-strtod, cl-strtold. + Remove c-strtold. + * doc/coreutils.texi (Floating point, tail invocation) + (printf invocation, timeout invocation, sleep invocation) + (seq invocation): Document this. + * gl/lib/cl-strtod.c, gl/lib/cl-strtod.h, gl/lib/cl-strtold.c: + * gl/modules/cl-strtod, gl/modules/cl-strtold: New files. + * src/printf.c, src/seq.c, src/sleep.c, src/tail.c, src/timeout.c: + Include cl-strtod.h instead of c-strtod. + * src/printf.c (vstrtold): + * src/seq.c (scan_arg, print_numbers): + * src/sleep.c (main): + * src/tail.c (parse_options): + * src/timeout.c (parse_duration): + Use cl_strtold instead of c_strtold. + +2019-01-25 Paul Eggert <eggert@cs.ucla.edu> + + doc: update Goldberg URL + * doc/coreutils.texi (Floating point): Update URL. + + sleep: improve doc + Problem reported by Robert Elz. + * doc/coreutils.texi (sleep invocation): + Say that arguments must be non-negative, which means they cannot + be arbitrary floating-point numbers. Mention POSIX, not + “historical implementations” that are no longer of practical + interest. List the extensions to POSIX. + * src/sleep.c (usage): Omit needless words, removing dubious + commentary about “most implementations” and incorrect commentary + about “arbitrary”. Details about exactly which numbers are + allowed can be found in the documentation. + +2019-01-20 Pádraig Brady <P@draigBrady.com> + + tail: fix handling of broken pipes with SIGPIPE ignored + * init.cfg (trap_sigpipe_or_skip_): A new function refactored from... + * tests/misc/printf-surprise.sh: ...here. + * tests/misc/seq-epipe.sh. Likewise. + * src/tail.c (die_pipe): Ensure we exit upon sending SIGPIPE. + * tests/tail-2/pipe-f.sh: Ensure we exit even if SIGPIPE is ignored. + * NEWS: Mention the bug fix. + +2019-01-20 Ayappan <ayappap2@in.ibm.com> + + tail: fix recent ineffective AIX change + * src/tail.c: Fix commit v8.30-40-gd5ab4cb which was ineffective. + Fixes http://bugs.gnu.org/33946 + +2019-01-20 Pádraig Brady <P@draigBrady.com> + + build: ensure VLAs are not used + Fail developer builds if VLAs are used, + as there are portability concerns to consider with them. + + * configure.ac: Enable -Wvla which is implicit in the full list added. + * m4/jm-macros.m4: Define GNULIB_NO_VLA which disables use of + VLAs within gnulib code. + +2019-01-20 Pádraig Brady <P@draigBrady.com> + + gnulib: update to the latest + * gnulib: Update to a version supporting GNULIB_NO_VLA + * bootstrap: Sync with latest + +2019-01-16 Bernhard Voelker <mail@bernhard-voelker.de> + + build: use distributed man pages when running with --help fails + When building against an incompatible GLIBC version compared to that + on the build host, then running the just-built binary might fail + although it is the same platform - thus CROSS_COMPILING is false. + As a result, generating the man pages fails. + + * man/local.mk (.x.1): Add a check to verify that running the utility + with --help succeeds, otherwise falling back to using 'dummy-man'. + +2019-01-13 Pádraig Brady <P@draigBrady.com> + + ls: with --group-directories-first, also group symlinked dirs + * src/ls.c (is_linked_directory): A new function to + also consider symlinked directories. + (main): Rename check_symlink_color to check_symlink_mode, + and enable that with --group-directories-first. + (DIRFIRST_CHECK): Adjust to use is_linked_directory, + rather than just is_directory. + (gobble_file): Simplify to always update f->linkmode + if the stat() succeeds. + * tests/ls/group-dirs.sh: A new test. + * tests/local.mk: Reference the new test. + * NEWS: Mention the change in behavior. + Suggested by Amin Bandali in + https://lists.gnu.org/r/coreutils/2018-12/msg00017.html + + tail: don't exit immediately with filters on AIX + * src/tail.c: Fix the check_output_available check on AIX. + Note we don't use poll for all systems as the overhead + of adding the gnulib poll module wouldn't be worth it + just for this single use. + * tests/tail-2/pipe-f.sh: Fix the test which always passed + due to only the exit code of sleep being checked. + * NEWS: Mention the bug fix and rearrange alphabetically. + Fixes http://bugs.gnu.org/33946 + +2019-01-06 Assaf Gordon <assafgordon@gmail.com> + + basenc: allocate buffers on heap + Allocate the encoding/decoding buffers dynamically on the heap instead + of using variable-length-array (VLA) on the stack. + Discussed in https://lists.gnu.org/r/coreutils/2019-01/msg00004.html . + + * src/basenc.c (do_encode,do_decode): Allocate inbuf/outbuf using + xmalloc, and free if using LINT. + +2019-01-04 Pádraig Brady <P@draigBrady.com> + + doc: adjust URLs in help to avoid wrapping + * src/system.h: Adjust lines containing URLs so that + they don't wrap on 80 column terminals. One could also + use .UR macros, but these aren't universally available. + Note the adjustments here need to be compatible with + the pattern matching done in help2man. + Addresses https://bugs.gnu.org/33914 + +2019-01-01 Assaf Gordon <assafgordon@gmail.com> + + maint: update all copyright year number ranges + Run "make update-copyright" and then... + + * gnulib: Update to latest with copyright year adjusted. + * tests/init.sh: Sync with gnulib to pick up copyright year. + * bootstrap: Likewise. + * tests/sample-test: Adjust to use the single most recent year. + +2019-01-01 Bernhard Voelker <mail@bernhard-voelker.de> + + maint: mention base32 in the title line of common basenc.c + * src/basenc.c: Do the above, and remove a redundant comment. + +2019-01-01 Assaf Gordon <assafgordon@gmail.com> + + base64,base32: fix 'extra operand' error message + In the following invocation, 'a' is the input file, and 'b' is the extra + operand: + + $ base64 a b + + Report 'b' in the error message instead of 'a': + + $ base64 a b + base64: extra operand 'b' + + Discussed in https://lists.gnu.org/r/coreutils/2018-12/msg00008.html . + + * src/basenc.c (main): If there is more than one non-option operand, + report the second one (assuming the first is a the input file name). + * tests/misc/base64.pl: Add tests. + * tests/misc/basenc.pl: Adjust expectedc error message in tests. + * NEWS: Mention bugfix. + +2018-12-31 Pádraig Brady <P@draigBrady.com> + + doc: mention that more than 8 colors are supported by ls + * src/dircolors.hin: Mention any codes supported by the terminal + are allowed. + Addresses https://bugs.gnu.org/33915 + +2018-12-28 Assaf Gordon <assafgordon@gmail.com> + + basenc: A new program complementary to base64/base32 + Encodes/decodes data in various common formats: + base64,base64url,base32,base32,base16,base2,z85. + + Discussed here: + https://lists.gnu.org/r/coreutils/2018-11/msg00014.html + https://lists.gnu.org/r/coreutils/2018-12/msg00019.html + + * AUTHORS: Add basenc. + * README: Reference the new program. + * NEWS: Mention the new program. + * build-aux/gen-lists-of-programs.sh: Add basenc. + * doc/coreutils.texi: (basenc invocation): Document the new command. + * man/.gitignore: Ignore the generated man page. + * man/basenc.x: A new template, with few examples. + * man/local.mk: Reference the new man page. + * scripts/git-hooks/commit-msg: Allow basenc as program prefix. + * src/.gitignore: Ignore the new binary. + * src/basenc.c: + (usage): Mention new options. + (main): Handle new options. + (isbase*, base*_length, base*_encode, base*_decode_ctx): Implement new + encoding/decoding formats. + * src/local.mk: Add new program. + * tests/local.mk: Add new test. + * tests/misc/basenc.pl: New tests. + * tests/misc/help-version.sh (basenc_setup): use '--version' for default + invocation (basenc errors with no parameters). + +2018-12-21 Assaf Gordon <assafgordon@gmail.com> + + maint: rename base64.c to basenc.c + In preparation for adding 'basenc' program. + Suggested in https://lists.gnu.org/r/coreutils/2018-11/msg00019.html . + + * src/base64.c: Rename to src/basenc.c. + * src/local.mk: Update base*_SOURCES definitions. + * po/POTFILEs.in: Rename base64 to basenc. + +2018-12-15 Paul Eggert <eggert@cs.ucla.edu> + + shred,sort,split: add NEWS item + + shred,sort,split: fix ftruncate error reporting + Problem reported for split by Scott Worley (Bug#33761): + * src/shred.c (do_wipefd): + Also report an error if ftruncate fails on a shared memory object. + * src/sort.c (get_outstatus): New function. + (stream_open, avoid_trashing_input): Use it. + * src/sort.c (stream_open): + * src/split.c (create): + If ftruncate fails, do not report an error + unless it is a regular file or a shared memory object. + +2018-11-07 Bernhard Voelker <mail@bernhard-voelker.de> + + sync: add NEWS and test for the fix in the previous commit + * NEWS (Bug fixes): Mention the fix in commit 94d364f157f0. + While at it, remove duplicate "Changes in behavior" heading. + * tests/misc/sync.sh: Add a test with a write-only file for the fix. + +2018-11-06 Paul Eggert <eggert@cs.ucla.edu> + + sync: fix open fallback bug + Problem caught by Coverity Analysis + and reported by Kamil Dudka (Bug#33287). + * src/sync.c (sync_arg): Fix typo in fallback code. + +2018-10-28 Paul Eggert <eggert@cs.ucla.edu> + + ln: use linkat and symlinkat + Open a target directory and use its file descriptor in linkat, + symlinkat, etc. syscalls, instead of constructing long file names + by concatenating the target directory name to a basename. + This avoids O(N²) behavior with ‘ln F1 F2 ... Fn DIR’ when DIR is + a long file name with many slashes. It also avoids some races if + DIR is renamed while ln is running. + * bootstrap.conf (gnulib_modules): Add openat-safer. + * src/ln.c: Include fcntl-safer.h. + (O_PATHSEARCH): New constant. + (errno_nonexisting, target_directory_operand): Remove; no longer used. + (atomic_link, do_link): New arg DESTDIR_FD. All uses changed. + (do_link): New arg DEST_BASE. All uses changed. + (main): Open target directory and use its file descriptor + as DESTDIR_FD. + + build: update gnulib submodule to latest + * src/copy.c (copy_internal): + * src/cp.c (do_copy): + * src/ln.c (do_link): + Adjust to Gnulib API change. + +2018-10-27 Bernhard Voelker <mail@bernhard-voelker.de> + + tests: provide 100% coverage for echo + * src/echo.c (usage): Assert that STATUS is always EXIT_SUCCESS. + * tests/misc/echo.sh: Add further tests for all hex and escape and + escape characters. + + To get coverage statistics, run: + make coverage -j 4 TESTS=tests/misc/echo.sh SUBDIRS=. + xdg-open doc/coverage/src/echo.c.gcov.frameset.html + +2018-10-27 Pádraig Brady <P@draigBrady.com> + + echo: always process escapes when POSIXLY_CORRECT is set + * src/echo.c (main): Always enable backslash processing if + POSIXLY_CORRECT is set. + * tests/misc/echo.sh: Add (the first) test for the echo command. + * tests/local.mk: Reference the new test. + * tests/misc/printf.sh: Update a stale comment. + * doc/coreutils.texi (echo invocation). Mention that POSIXLY_CORRECT + now always enables backslash processing. + * NEWS: Mention the change in behavior. + Fixes https://bugs.gnu.org/32703 + Issue identified by Eric Blake. + +2018-10-26 Bernhard Voelker <mail@bernhard-voelker.de> + + test: add -N unary operator + Bash knows 'test -N FILE'. Add it to GNU 'test' as well. + + * src/test.c (unary_operator): Add a case for 'N'. + (usage): Document it. + * doc/coreutils.texi (node File characteristic tests): Likewise. + * NEWS (New features): Likewise. + * tests/misc/test-N.sh: Add a test. + * tests/local.mk (all_tests): Reference it. + +2018-10-26 Bernhard Voelker <mail@bernhard-voelker.de> + + test: simplify redundant code + Remove the function 'test_unop', as the cases therein are redundant to + those handled by 'unary_operator'; exception: the cases 'o' and 'N': + they had been present in test_unop and handling the commands + test -N STR + test -o STR + and + test x = x -a -N STR + test x = x -a -o STR + which ran into an error later on anyway. + With this commit, the error diagnostic will change from ... + $ /usr/bin/test -N STR + /usr/bin/test: extra argument '-N' + $ /usr/bin/test -o STR + /usr/bin/test: extra argument '-o' + ... to ... + $ src/test -N STR + src/test: '-N': unary operator expected + $ src/test -o STR + src/test: '-o': unary operator expected + + * src/test.c (test_unop): Remove. + (unary_operator): Fail with test_syntax_error in the default case. + (term): Directly call unary_operator. + (two_arguments): Likewise. + * tests/misc/test-diag.pl: Adjust error diagnostic. + +2018-10-26 Bernhard Voelker <mail@bernhard-voelker.de> + + test: remove support for the ambigous -a unary operator + * src/test.c (unary_operator): Remove case 'a'. + (test_unop): Likewise. + * NEWS (Changes in behavior): Document the change. + + Discussed at https://bugs.gnu.org/33097 + +2018-10-21 Bernhard Voelker <mail@bernhard-voelker.de> + + test: avoid FP in chroot-credentials.sh for different group list order + On my openSUSE:Tumbleweed system, I get a false positive test failure + in the above 'check-root' test because the group lists inside and + outside the chroot have a different order: + + ++ chroot --userspec=berny / id -G + ++ id -G berny + + test '100 454 457 480 492' = '100 480 492 457 454' + + fail=1 + + * tests/misc/chroot-credentials.sh (num_sort): Add function to sort + group lists, and use it in the test cases which test multiple groups. + +2018-10-20 Paul Eggert <eggert@cs.ucla.edu> + + doc: tidy up setuid commentary + * doc/perm.texi (Mode Structure): Improve wording. + (Numeric Modes): Don’t say “on execution” (Bug#9594). + +2018-10-19 Paul Eggert <eggert@cs.ucla.edu> + + ln: avoid directory hard-link races + Previously, 'ln A B' did 'stat("B"), lstat("A"), link("A","B")' + where the stat and lstat were necessary to avoid hard-linking + directories on systems that can hard-link directories. + Now, in situations that prohibit hard links to directories, + 'ln A B' merely does 'link("A","B")'. The new behavior + avoids some races and should be more efficient. + This patch was inspired by Bug#10020, which was about 'ln'. + * bootstrap.conf (gnulib_modules): Add unlinkdir. + * src/force-link.c (force_linkat, force_symlinkat): New arg for + error number of previous try. Return error number, 0, or -1 if + error, success, or success after removal. All callers changed. + * src/ln.c: Include priv-set.h, unlinkdir.h. + (beware_hard_dir_link): New static var. + (errnoize, atomic_link): New functions. + (target_directory_operand): Use errnoize for simplicity. + (do_link): New arg for error number of previous try. All callers + changed. Do each link atomically if possible. + (main): Do -r check earlier. Remove linkdir privileges so we can + use a single linkat/symlinkat instead of a racy substitute for the + common case of 'ln A B' and 'ln -s A B'. Set beware_hard_dir_link + to disable this optimization. + + cp: 'cp -il A B' no longer fails if user OKs it + * NEWS: Mention the change. + * src/copy.c (copy_internal): Replace the link if the + user has okayed it. + + build: update gnulib submodule to latest + * gl/modules/tempname.diff: Update to match Gnulib. + +2018-10-17 Paul Eggert <eggert@cs.ucla.edu> + + doc: add chmod examples + Discussed in https://bugs.gnu.org/11043 . + + * doc/coreutils.texi (chmod invocation): Add examples. + +2018-10-02 Bjarni Ingi Gislason <bjarniig@rhi.hi.is> + + doc: fix minor mistakes in "env.x" + * man/env.x (OPTIONS): Fix a spelling mistake. Protect a period at the + beginning of a line. + +2018-09-30 Achilles Gaikwad <agaikwad@redhat.com> + + id: support multiple specified users + $ id root nobody + uid=0(root) gid=0(root) groups=0(root) + uid=99(nobody) gid=99(nobody) groups=99(nobody) + + * src/id.c (main): Make variables opt_zero, just_group_list, + just_group, use_real, just_user global to be used in a new + function. + (print_stuff): New function that will print user and group + information for the specified USER. + When using -G option delimit each record with two NULs. + Restructure the code in the file to have global variables + followed by functions. + * tests/id/zero.sh: Add test cases to check the usage + of -z option with multiple users. + * tests/id/uid.sh: Add a test case to ensure all users + are queried in the presence of errors. + * doc/coreutils.texi: Document the interface changes. + * NEWS: Mention the new feature. + +2018-09-25 Stéphane Campinas <stephane.campinas@gmail.com> + + doc: csplit: clarify handling of regexps with negative offsets + * doc/coreutils.texi (csplit invocation): Detail the behavior + with regexp patterns and negative offsets, which differs from + line number patterns, to avoid looping on the input. For example: + $ seq 50 | csplit -s - /15/-5 /12/ + csplit: ‘/12/’: match not found + +2018-09-24 Pádraig Brady <P@draigBrady.com> + + doc: csplit: clarify input may not be reproducible from output + * doc/coreutils.texi (csplit invocation): Clarify that + portions of the input may be skipped and thus the input + may not be reproducible by just concatenating the output files. + Fixes https://bugs.gnu.org/32317 + +2018-07-27 Paul Eggert <eggert@cs.ucla.edu> + + df: omit redundant comparison + Trivial inefficiency reported by Bruno Haible in: + http://lists.gnu.org/r/bug-gnulib/2018-07/msg00109.html + * src/df.c (hide_problematic_chars): Omit redundant test. + + df: tune slightly + * src/df.c (get_header, get_dev): + Avoid calling mbswidth twice when once will do. + + df: avoid multibyte character corruption on macOS + This improves on the earlier fix for the problem reported by + Chih-Hsuan Yen (Bug#32236), by also looking for other control + characters and for encoding errors. + * src/df.c: Include wchar.h and wctype.h instead of c-ctype.h. + (hide_problematic_chars): Process the string as multibyte. + Use iswcntrl, not c_iscntrl. + +2018-07-26 Chih-Hsuan Yen <yan12125@gmail.com> + + df: avoid multibyte character corruption on macOS + * src/df.c (hide_problematic_chars): Use c_iscntrl() as + passing 8 bit characters to iscntrl() is not supported on macOS. + * NEWS: Mention the bug fix. + Fixes https://bugs.gnu.org/32236 + +2018-07-22 Wodry <coreutils3422@runbox.com> (tiny change) + + doc: improve documentation of binary prefixes + * doc/coreutils.texi (Common options): + * src/dd.c, src/head.c, src/od.c, src/stdbuf.c, src/tail.c (usage): + * src/system.h (emit_size_note): + Mention binary prefixes (Bug#32242). + +2018-07-21 Pádraig Brady <P@draigBrady.com> + + tests: avoid false failure on sparc 32 bit + * tests/rm/rm-readdir-fail.sh: Skip the test entirely on 32 bit, + so we avoid conflating the 32bit and 64 bit types, as that + triggers alignment issues (SIGBUS) on Gentoo sparc. + Fixes https://bugs.gnu.org/29886 + +2018-07-05 Paul Eggert <eggert@cs.ucla.edu> + + build: update gnulib submodule to latest + * bootstrap.conf, src/copy.c, src/mv.c, src/shred.c: + Adjust to renaming of renameat2 to renameatu. + +2018-07-05 Pádraig Brady <P@draigBrady.com> + + tests: fix skipping in some tests + * tests/cp/cp-a-selinux.sh: Use 'skip_' rather than the probably + undefined 'skip'. + * tests/du/2g.sh: Likewise. + * tests/install/install-Z-selinux.sh: Likewise. + * tests/misc/chcon.sh: Likewise. + * tests/misc/selinux.sh: Likewise. + * tests/mkdir/restorecon.sh: Likewise. + * cfg.mk (sc_prohibit-skip): A new syntax check to catch the issue. + +2018-07-02 Jim Meyering <meyering@fb.com> + + maint: init.cfg: fix a minor test-related quoting bug + * init.cfg (require_membership_in_two_groups_): This fixes a bug + introduced by me in v8.15-8-gdd0e4c562. Luckily, the consequence + of low-probability triggering the bug was the mere added backslash + in the diagnostic: "...but running id -G\ either...". It would be + triggered in a test failure for one who is a member of only one or + fewer groups. + +2018-07-02 Pádraig Brady <P@draigBrady.com> + + maint: post-release administrivia + * NEWS: Add header line for next release. + * .prev-version: Record previous version. + * cfg.mk (old_NEWS_hash): Auto-update. + + version 8.30 + * NEWS: Record release date. + +2018-07-01 Pádraig Brady <P@draigBrady.com> + + tests: standardize perl usage in tests + * tests/cp/fiemap-FMR.sh: Ensure perl is parameterized to $PERL, + and ensure require_perl_ is used, so tests are skipped appropriately. + * tests/cp/preserve-gid.sh: Likewise. + * tests/du/long-from-unreadable.sh: Likewise. + * tests/misc/env-S-script.sh: Likewise. + * tests/misc/sort-benchmark-random.sh: Likewise. + * tests/rm/deep-2.sh: Likewise. + + maint: copy: avoid new static analyzer warnings + * src/copy.c (copy_internal): Use the lint protected src_mode, + rather than accessing the src_sb again. Also unconditionally + populate src_sb when !x->move_mode and in lint mode. + Reported by Kamil Dudka with coverity and clang analyzer. + + maint: fix recent stale comments and spelling mistakes + * doc/coreutils.texi: s/seperator/separator/. + * tests/misc/env-S.pl: Likewise. + * src/env.c: Fix stale comment. + +2018-06-27 Pádraig Brady <P@draigBrady.com> + + maint: disable overly agressive sc_gitignore_redundant + * cfg.mk (sc_gitignore_redundant): Disabled for now as too + aggressive flagging entries like /lib/arg-nonnull.h in + a newly checked out repo. + + env: adjust diagnostics provided for shebang usage + * src/env.c (main): Don't process '-' specially since + that causes an issue on the openbsd getopt implementation + where a lone '-' is now processed as an option, and anyway + it doesn't particuarly help diagnosing common shebang + usage issues. Also don't restrict the extra diagnostics + for shebang usage to the case with 3 arguments, as + further arguments can be passed to a script. + * tests/misc/env-S.pl: Adjust accordingly. + +2018-06-27 Assaf Gordon <assafgordon@gmail.com> + + tests: accept getopt errors without single-quotes + On OpenBSD 6.2, invalid single options produce error messages + without single quotes: + + $ ./src/chroot -/ + chroot: unknown option -- / + + As opposed to other systems: + + ./src/chroot: invalid option -- '/' + + Modify the grep search to accept this. + + * tests/misc/usage_vs_getopt.sh (checkprg): Change the grep pattern + to accomodate no-single-quotes cases. + +2018-06-27 Pádraig Brady <P@draigBrady.com> + + tests: fix false failures when perl not available + * tests/local.mk: Reference the stub that skips perl tests, + with the correct path. + + tests: fix false failure with limited shebang lines + * tests/misc/env-S-script.sh: Provide a wrapper to + emulate shebang processing, but without length limits, + which are 127 on Linux for example. + + maint: update gnulib to latest + * gnulib: Update to latest, which incorporates + a thread linking fix from Bruno Haible, + which was seen on newer Ubuntu systems. + +2018-06-27 Assaf Gordon <assafgordon@gmail.com> + + tests: remove unused Data::Dumper perl module + The module is not needed anymore (was used during development). + Despite being a Perl core module, platforms like CentOS don't install + it by default. Reported by Bruno Haible at + https://lists.gnu.org/r/coreutils/2018-06/msg00093.html. + + * tests/misc/csplit-suppress-matched.pl: Remove Data::Dumper. + +2018-06-25 Carlos Santos <casantos@datacom.com.br> + + maint: fix -Werror=suggest-attribute=malloc in expr.c + Add attribute 'malloc' to mpz_get_str to prevent + the following on GCC 8.1.1 + + src/expr.c:117:1: error: function might be candidate for attribute + 'malloc' if it is known to return normally + [-Werror=suggest-attribute=malloc] + mpz_get_str (char const *str, int base, mpz_t z) + ^~~~~~~~~~~ + cc1: all warnings being treated as errors + + * src/expr.c (mpz_get_str): Add _GL_ATTRIBUTE_MALLOC. + +2018-06-25 Pádraig Brady <P@draigBrady.com> + + maint: update gnulib to latest + * gnulib: Update to latest. + * .gitignore: Add new entries. + * bootstrap.conf: Enable wchar-single, which will enable more + efficient replacements of wcwidth and mbrtowc, as we indicate + that the charset will no change between invocations of these functions. + + maint: sync longlong.h from gmp repo + * src/longlong.h: Sync changes. No functional change. + + maint: avoid false positive in src/fs-magic-compare + * src/local.mk (fs_normalize_perl_subst): `make src/fs-magic-compare` + was reporting incorrectly that AFS was not being handled. + Add a mapping to our KAFS identifier. + * .gitignore: Add intermediate files from `make src/fs-magic-compare` + +2018-06-23 Bernhard Voelker <mail@bernhard-voelker.de> + + tests: initialize fail=0 to avoid "unary operator expected" errors + With an uninitialized variable 'fail', the unquoted use like + test $fail = 1 + lead to the shell error + "unary operator expected". + + The uninitialized 'fail' variable was a side effect of + https://git.sv.gnu.org/cgit/gnulib.git/commit/?id=e91c0d4f9 + which was pulled into coreutils-v8.26 with + https://git.sv.gnu.org/cgit/coreutils.git/commit/?id=ef9650170 + Coreutils test code relied and relies on 'fail' to be initialized, + so initialize that variable here. + + * tests/local.mk (TESTS_ENVIRONMENT): Initialize fail=0. + +2018-06-21 Jim Meyering <meyering@fb.com> + + maint: do not depend directly on gnulib's now-unused ftello module + * bootstrap.conf (gnulib_modules): Remove ftello, since it is + no longer used directly, since v8.9-11-geab97b307. + +2018-06-21 Pádraig Brady <P@draigBrady.com> + + tests: provide an option to relax the need for gdb + * tests/rm/r-root.sh: gdb provides extra protection, + but is not strictly necessary. So provide an option + for maintainers to relax the requirements. + + rm: add --preserve-root=all to protect mounts + * src/remove.c (rm_fts): With the --preserve-root=all extension, + reject command line arguments that are mount points. + * src/remove.h (rm_options): Add preserve_all_root to store config. + * src/mv.c (rm_option_init): Init preserve_all_root to false. + * src/rm.c (main): Init preserve_all_root as per option. + (usage): Describe the new option. + * src/remove.c (rm_fts): Lookup the parent device id, + and reject the cli argument if a separate file system. + * tests/rm/one-file-system.sh: Add a test case. + * NEWS: Mention the new feature. + +2018-06-21 Adam Borowski <kilobyte@angband.pl> + + cp: add --reflink=never to force standard copy mode + This mode is currently the default, but most if not all users of + reflink-capable filesystems want --reflink=auto, which is often + encapsulated into an alias. Adding --reflink=never allows overriding + such an alias. + + * doc/coreutils.texi (cp invocation): Describe the new option. + * src/cp.c: Support --reflink=never. + * tests/cp/reflink-auto.sh: Add a test case. + * NEWS: Mention the new feature. + +2018-06-21 Assaf Gordon <assafgordon@gmail.com> + + env: add -S/--split-string option + Adopted from FreeBSD's env(1), useful for specifing multiple + parameters on a shebang (#!) script line, e.g: + + #!/usr/bin/env -S perl -w -T + + Discussed in https://lists.gnu.org/r/coreutils/2018-04/msg00011.html + + * src/env.c (valid_escape_sequence,escape_char,scan_varname, + extract_varname,validate_split_str,build_argv, + parse_split_string): New functions. + (main): Process new option and call parse_split_string. + (usage): Mention new option. + * tests/misc/env-S.pl: Test new option from the command line. + * tests/misc/env-S-script.sh: Test new option from shebang scripts. + * tests/local.mk (all_tests): Add new tests. + * man/env.x (OPTIONS): Show a brief example of -S usage and point to + the full documentation for more information. + * doc/coreutils.texi (env invocation): Detail usage of -S/--split-string + option. + * NEWS: Mention new option. + +2018-06-21 Assaf Gordon <assafgordon@gmail.com> + + env: add -v/--debug option + Prints verbose information about each step: + + $ env -v -uFOO -C /tmp BAR=BAZ date -u + env: unset: FOO + env: setenv: BAR=BAZ + env: chdir: '/tmp' + env: executing: date + env: arg[0]= ‘date’ + env: arg[1]= ‘-u’ + Sun Apr 22 08:52:30 UTC 2018 + + Inspired by FreeBSD's env(1). + + * src/env.c (usage): Mention new option. + (main): Print debug information if requested. + * NEWS: Mention new option. + * doc/coreutils.texi (env invocation): Mention -v/--debug. + +2018-06-21 Assaf Gordon <assafgordon@gmail.com> + + maint: refactor unsetenv call in env + Keep unset envvars (-uFOO) in an array for later deletion, + instead of reiterating over argv. Done in preparation for + '-S string' feature. Related to '-u' discussion in + https://lists.gnu.org/r/coreutils/2018-04/msg00013.html + + * src/env.c (append_unset_var,unset_envvars): New functions. + (main): Use new functions. + +2018-06-21 Kaxandra Labat <kaxandra.labat@gmail.com> + + ls: ignore case when coloring file extensions + * src/ls.c (get_color_indicator): s/STREQ_LEN/c_strncasecmp/ + * src/dircolors.hin: Remove a now redundant entry. + * tests/ls/color-ext.sh: Add a new test. + * tests/local.mk: Reference the new test. + * NEWS: Mention the change in behavior. + +2018-06-21 Pádraig Brady <P@draigBrady.com> + + md5sum,b2sum,sha*sum: support -z,--zero option + * doc/coreutils.texi (md5sum invocation): Describe the new option, + and how it's not supported by --check, and how it disables escaping. + * src/md5sum.c (delim): A new global to parmeterize the out delimiter. + (main): Don't enable file name escaping with -z, and output '\0'. + * tests/misc/md5sum-newline.pl: Add a test case. + * NEWS: Mention the new feature. + +2018-06-21 Pádraig Brady <P@draigBrady.com> + + wc: optimize processing of ASCII in multi byte locales + ===== Benchmark setup (on GNU/Linux) ==== + $ yes áááááááááááááááááááá | head -n100000 > mbc.txt + $ yes 12345678901234567890 | head -n100000 > num.txt + + ===== Before ==== + $ time src/wc -Lm < mbc.txt + real 0m0.186s + $ time src/wc -m < mbc.txt + real 0m0.186s + $ time src/wc -Lm < num.txt + real 0m0.055s + $ time src/wc -m < num.txt + real 0m0.056s + + ==== After ==== + $ time src/wc -Lm < mbc.txt + real 0m0.196s + $ time src/wc -m < mbc.txt + real 0m0.173s + $ time src/wc -Lm < num.txt + real 0m0.031s + $ time src/wc -m < num.txt + real 0m0.028s + + * src/wc.c (wc): Only call wide variant functions like + iswprint() and wcwidth() for non is_basic() characters. + I.E. non ISO C "basic character set" characters. + This is especially significant on OSX where wcwidth() + is very expensive (about 10x in tests). + * NEWS: Mention the improvement. + Suggested by Eric Fischer. + +2018-06-14 Paul Eggert <eggert@cs.ucla.edu> + + doc: port test.1 to doclifter + * man/test.x: Use \& instead of quoting (Bug#31803). + + doc: port man pages to doclifter + Problem reported by Eric S. Raymond (Bug#31803). + * man/test.x: Add SYNOPSIS section, since help2man + understandably gets confused by the square brackets. + * src/ln.c (usage): Omit parenthetical "(Nth form)" in usage, + as it confuses doclifter. + +2018-06-04 Pádraig Brady <P@draigBrady.com> + + cp: preserve existing permissions with --no-preserve=mode + This issue was introduced in commit v8.19-145-g24ebca6 + + * src/copy.c (copy_internal): With --no-preserve=mode, + only reset permissions for newly created files. + (copy_reg): Likewise. + * NEWS: Mention the fix. + * tests/cp/preserve-mode.sh: Add a test case. + Fixes https://bugs.gnu.org/31675 + +2018-05-29 Pádraig Brady <P@draigBrady.com> + + tests: fix periodic false failure in month alignment + * tests/ls/abmon-align.sh: Base relative month adjustment + from the middle of the month, to avoid failures due + to months being repeated. + Fixes https://bugs.gnu.org/31644 + +2018-05-26 Bjarni Ingi Gislason <bjarniig@rhi.hi.is> + + doc: formatting fixes in "du.x" and "rm.x" + Avoid warnings from: groff -b -e -mandoc -T utf8 -rF0 -t -w w -z + + * man/du.x: Change ".BR" to ".B" if there is only one argument. + Protect an end-of-sentence indicator (.?!) with '\&' + if it does not mean an end of a sentence. + Change '--' to '\-\-' if it indicates an option. + * man/rm.x: Change '\=' to '='. + +2018-05-18 Pádraig Brady <P@draigBrady.com> + + cp: with --force; replace self referential symlinks + * src/copy.c (copy_internal): Don't fail immediately upon + getting ELOOP when running stat() on the destination, + rather proceeding if -f specified, allowing the link + to be removed. If the loop is not in the final component + of the destination path, we still fail but at the + subsequent unlink() stage. + * doc/coreutils.texi (cp invocation): Adjust wording to say + that --force doesn't work with dangling links, rather than + all links that can't be traversed. + * tests/cp/thru-dangling.sh: Add a test case. + * NEWS: Mention the change in behavior. + Discussed in https://bugs.gnu.org/31335 + +2018-05-15 Pádraig Brady <P@draigBrady.com> + + cp: fix symlink checks when overwriting files + Ensure this _does_ recreate the symlink + Given "path1" and "path2" are on different devices. + $ touch "path1/file" + $ cd path2/; ln -s path1/file + $ cp -dsf path1/file . + + Ensure this does _not_ overwrite file + $ touch file + $ ln -s file l1 + $ cp -sf l1 file + + * src/copy.c (same_file_ok): Remove device ids from consideration, + instead deferring to future EXDEV with --link or allowing + the first case above to work. + Also ensure that we do not exist this function too early, + when the destination file is not a symlink, which protects + against the second case. + * tests/cp/cross-dev-symlink.sh: Add a test for the first case. + * tests/cp/same-file.sh: Add a test for the second case above. + * NEWS: Mention the bug fixes. + * THANKS.in: Mention the reporters who also analyzed the code. + Fixes https://bugs.gnu.org/31364 + +2018-05-15 Pádraig Brady <P@draigBrady.com> + + cp: ensure --remove-destination doesn't traverse symlinks + * src/cp.c (target_directory_operand): Allow through inaccessible + arguments with -f or --remove. + * doc/coreutils.texi (cp invocation): Clarify that -f doesn't directly + impact the removal of non-traversable symlinks. + * tests/cp/dir-rm-dest.sh: Test the new behavior. + * tests/cp/thru-dangling.sh: Enforce -f behavior wrt symlinks. + * NEWS: Mention the bug fix. + Fixes https://bugs.gnu.org/31335 + + maint: make chmod/chgrp/chown leak free under valgrind + * src/chmod.c: Deallocate the mode change array in dev mode. + * src/chown.c: Make chopt_free() actually deallocate, but + only call in dev mode. + * src/chgrp.c: Likewise. + + doc: improve formatting of nl --help + * src/nl.c (usage): Better delineate the information. + +2018-05-14 Paul Eggert <eggert@cs.ucla.edu> + + who: simplify port to GCC 8 + * src/who.c (make_id_equals_comment): Use simpler workaround + for GCC bug 85602. Suggested by Martin Sebor in: + https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85602#c3 + +2018-05-04 Pádraig Brady <P@draigBrady.com> + + build: make GCC 8 adjustments more portable + * src/chown-core.h (chopt_free): Just define away this noop. + * src/chown-core.c (chopt_free): Remove the empty implementation. + +2018-05-04 Paul Eggert <eggert@cs.ucla.edu> + + build: update gnulib submodule to latest + +2018-05-03 Paul Eggert <eggert@cs.ucla.edu> + + maint: port to GCC 8 + * src/chown-core.h (chopt_free, gid_to_name, uid_to_name): + No longer const. + * src/make-prime-list.c (xalloc): Add malloc attribute. + * src/who.c (make_id_equals_comment): Work around GCC bug 85602 + by using mempcpy rather than strncat. Although the old code + was correct, strncat raises so many hackles that it’s not + worth maintaining its use here. + + maint: remove strpbrk module + * bootstrap.conf (gnulib_modules): Remove obsolete module strpbrk. + + build: update gnulib submodule to latest + +2018-04-21 Pádraig Brady <P@draigBrady.com> + + doc: retroactively adjust info about tail and closed output + * NEWS: Expand on the 8.28 description of how tail more + responsively reacts to closed output, and move from "Improvements" + to "Changed behavior". + * cfg.mk (old_NEWS_hash): Regenerate. + Fixes https://bugs.gnu.org/31225 + +2018-04-19 Pádraig Brady <P@draigBrady.com> + + doc: timeout --help: mention 0 DURATION disables timeout + * src/timeout.c (usage): Mention that a duration of 0 disables + the associated timeout, which is both concise info and useful + functionality as timeouts are frequently configured. + +2018-04-06 Eric Blake <eblake@redhat.com> + + doc: retroactively document -e/-u addition in NEWS + Prompted by https://bugs.gnu.org/31045 + + * NEWS: Update 8.8 blurb to mention other split additions. + * cfg.mk (old_NEWS_hash): Regenerate. + +2018-04-03 Paul Eggert <eggert@cs.ucla.edu> + + doc: Clarify octal bits in permissions + * doc/perm.texi (Numeric Modes): Briefly explain octal. + Reorder description to make it more intuitive (Bug#29069). + +2018-03-28 Tobias Stoeckmann <tobias@stoeckmann.org> + + cut: improve large file support on 32 bit + Increase max range from SIZE_MAX to UINTMAX_MAX, which will + allow cut to support line lengths up to the max file size + on all systems. The inherent SIZE_MAX limitation in cut was + removed with the enhancements in https://bugs.gnu.org/13127. + Also numfmt gets similarly increased --field ranges due to + shared code. + + * src/cut.c: s/size_t/uintmax_t/. + * src/numfmt.c: Likewise. + * src/set-fields.c: Likewise. + * src/set-fields.h: Likewise. + * tests/misc/cut-huge-range.sh: Adjust accordingly. + * tests/misc/numfmt.pl: Likewise. + * NEWS: Mention the improvement. + +2018-03-28 Pádraig Brady <P@draigBrady.com> + + tests: avoid a recent syntax-check failure + * tests/ls/a-option.sh: s/framework_failure/&_/. + +2018-03-27 Paul Eggert <eggert@cs.ucla.edu> + + ls: -A now overrides -a + Problem reported by Karl Berry (Bug#30963). + * NEWS: Mention this. + * src/ls.c (decode_switches): Implement this. + * tests/ls/a-option.sh: New file. + * tests/local.mk (all_tests): Add it. + +2018-03-24 Roland Hieber <rohieb@rohieb.name> + + doc: fix two typos in github templates + * .github/ISSUE_TEMPLATE.txt: Fix typo "coreitils" in the URL to the bug + tracker. + * .github/PULL_REQUEST_TEMPLATE.txt: Likewise. + +2018-03-16 Pádraig Brady <P@draigBrady.com> + + ls: increase the allowed abmon width from 5 to 12 + This will impact relatively few languages, + and will make Arabic or Catalan etc. + output unambiguous abbreviated month names. + + * src/ls.c (MAX_MON_WIDTH): Increase from 5 to 12. + * NEWS: Mention the bug fix. + * tests/ls/abmon-align.sh: Augment to check for ambiguous output. + Fixes https://bugs.gnu.org/30814 + +2018-03-14 Brent Petit <brent.petit@hpe.com> + + stat,tail: add support for the EXFS file system + Enhanced XFS (EXFS) is a version of XFS maintained by HPE. + EXFS uses a unique magic number to allow the use of community + XFS, and EXFS filesystems at the same time. + + * src/stat.c (human_fstype): Add file system ID definition, + and use "exfs" as the name. + * NEWS: Mention the Improvement. + +2018-03-06 Paul Eggert <eggert@cs.ucla.edu> + + build: update gnulib submodule to latest + +2018-03-05 Paul Eggert <eggert@cs.ucla.edu> + + stat: work around IBM xlC bug + Problem reported by John Wiersba (Bug#30718) + * src/stat.c (human_time): Avoid giving an integer constant + expression a name, as it runs afoul of a bug in IBM XL C/C++ for + AIX 12.01.0000.0002. + +2018-03-04 Bernhard Voelker <mail@bernhard-voelker.de> + + maint: adjust email address of Keith Thompson in THANKS.in + * THANKS.in (Keith Thompson): Update email address as requested by + himself at https://lists.gnu.org/r/coreutils/2018-03/msg00004.html + +2018-02-25 Pádraig Brady <P@draigBrady.com> + + cp: set appropriate default permissions for special files + This issue was introduced in commit v8.19-145-g24ebca6 + + * src/copy.c (copy_internal): When setting default permissions + to use with --no-preserve=mode, only set executable bits for + directories or sockets. + * NEWS: Mention the fix. + * tests/cp/preserve-mode.sh: Add a test case. + Fixes https://bugs.gnu.org/30534 + +2018-01-21 Pádraig Brady <P@draigBrady.com> + + doc: use consistent example format in manual + * doc/coreutils.texi: Use @example consistently + as we don't need the smaller or fixed width representation. + This is especially true for the synopsis of commands. + @smallexample is rendered left aligned for HTML + which is awkward to read with the center aligned main content. + +2018-01-10 Paul Eggert <eggert@cs.ucla.edu> + + mv: clarify ‘mv -n A A’ change + + mv: fewer syscalls for ‘mv a b’ + This builds on a previous patch for mv atomicity (Bug#29961). + It merely improves performance; it does not fix bugs. + * src/copy.h (struct cp_options): New members last_file, rename_errno. + * src/copy.c (copy_internal): Support new rename_errno member + for the copy options. Avoid calling stat when new members + suggest it’s not needed. + (cp_options_default): Initialize new members. + * src/mv.c: Include renameat2.h. + (main): With two arguments, first call ‘renamat2 (AT_FDCWD, "a", + AT_FDCWD, "b", RENAME_NOREPLACE)’. Use its results to skip + remaining processing if possible; for example, if it succeeds + there is no need to stat either "a" or "b". Also, set + x.last_file when it is the last file to rename. + + mv: improve -n atomicity + Problem reported by Kamil Dudka (Bug#29961). + * NEWS: Mention this. + * src/copy.c: Include renameat2.h. + (copy_internal): If mv, try renameat2 first thing, with + RENAME_NOREPLACE. If this works, skip most of the remaining code. + Also, fail quickly if it fails with EEXIST, and we are using -n. + +2018-01-10 Michael Orlitzky <michael@orlitzky.com> + + doc: warn about following symlinks recursively in chown/chgrp + In both chown and chgrp (which shares its code with chown), operating + on symlinks recursively has a window of vulnerability where the + destination user or group can change the target of the operation. + Warn about combining the --dereference, --recursive, and -L flags. + + * doc/coreutils.texi (warnOptDerefWithRec): Add macro. + (node chown invocation): Add it to --dereference and -L. + (node chgrp invocation): Likewise. + + See also: CVE-2017-18018 + +2018-01-06 Paul Eggert <eggert@cs.ucla.edu> + + cp: remove ASSIGN_BASENAME_STRDUPA + * src/cp.c (do_copy): Just use ASSIGN_STRDUPA, as this simplifies + the code and uses less memory. + +2018-01-04 Paul Eggert <eggert@cs.ucla.edu> + + mv: -n overrides -u + * NEWS: Mention these fixes. + * doc/coreutils.texi (cp invocation, mv invocation): + Mention that -n is silent, and that it overrides -u. + * src/cp.c, src/mv.c (main): -n overrides -u. + +2018-01-03 Paul Eggert <eggert@cs.ucla.edu> + + tr: add -A, for compatibility with AIX tr + Problem reported by Michael (Bug#29946). + * src/tr.c (main): Add undocumented -A option. + +2018-01-03 Michael Orlitzky <michael@orlitzky.com> + + doc: clarify chown/chgrp --dereference defaults + * doc/coreutils.texi: the documentation for the --dereference + flag of chown/chgrp states that it is the default mode of + operation. Document that this is only the case when operating + non-recursively. + +2018-01-02 Pádraig Brady <P@draigBrady.com> + + tests: avoid false failure with xargs on AIX + * tests/misc/shred-remove.sh: AIX xargs defaults to using + '_' to indicate end of input, thus ignoring it. + Rather than specifying -E to avoid this behavior, simplify + by removing sed and xargs usage. + +2018-01-01 Pádraig Brady <P@draigBrady.com> + + maint: update all copyright year number ranges + Run "make update-copyright" and then... + + * gnulib: Update to latest with copyright year adjusted. + * tests/init.sh: Sync with gnulib to pick up copyright year. + * bootstrap: Likewise. + * tests/sample-test: Adjust to use the single most recent year. + +2017-12-27 Pádraig Brady <P@draigBrady.com> + + maint: post-release administrivia + * NEWS: Add header line for next release. + * .prev-version: Record previous version. + * cfg.mk (old_NEWS_hash): Auto-update. + + version 8.29 + * NEWS: Record release date. + +2017-12-23 Pádraig Brady <P@draigBrady.com> + + tests: avoid false failure on AIX 7.2 + * tests/tail-2/pipe-f.sh: Close stdout in a subshell + to ensure the current shell isn't impacted. Subsequent + piped commands like `echo foo | blah` were seen to fail + due to the previous closing of stdout. + Reported by Assaf Gordon. + + doc: describe recent build checks for 32 bit time_t + * README: Document the new handling of 32 bit time_t, + with examples of how to build in 64 bit mode on AIX. + Also mention that GNU make is desired on AIX + due to its mishandling of the "[" target. + Suggested by Assaf Gordon. + +2017-12-21 Pádraig Brady <P@draigBrady.com> + + tests: fix recent portability issues on solaris 10 + * tests/misc/ptx.pl: Escape the '^' character which is + otherwise considered as a line continuation character. + * tests/misc/shred-remove.sh: sed doesn't support \n. + + maint: remove reference to excluded changelog item + * build-aux/git-log-fix: Remove old entry. + +2017-12-20 Pádraig Brady <P@draigBrady.com> + + maint: add doc/coverage to .gitignore + * .gitignore: Ignore the generated coverage report. + + doc: remove older ChangeLog items + * Makefile.am: Update the oldest documented version + to 8.20 which is now about 5 years old. + +2017-12-18 Bernhard Voelker <mail@bernhard-voelker.de> + + doc: mention which privileges are needed to chmod + POSIX specification for chmod(1): + https://pubs.opengroup.org/onlinepubs/9699919799/utilities/chmod.html + + * doc/coreutils.texi (chmod invocation): Add a sentence about who can + change the file mode bits of a file - (almost) a copy from what POSIX + requires. + + Fixes https://bugs.gnu.org/29207. + +2017-12-16 Pádraig Brady <P@draigBrady.com> + + tests: fix recent regressions with dash + * tests/misc/timeout.sh: dash outputs the "Killed" + message to stderr rather than the terminal. + * tests/misc/usage_vs_getopt.sh: dash doesn't yet + support the POSIX proposed $'...' shell quoting syntax. + + build: avoid a signed overflow warning in ptx + * src/ptx.c (fix_output_parameters): GCC 6.3.1 with + ./configure --enable-single-binary would give: + error: assuming signed overflow does not occur + when simplifying conditional to constant [-Werror=strict-overflow] + if (file_index > 0) + So change the type of file_index to signed (size_t). + +2017-12-11 Bernhard Voelker <mail@bernhard-voelker.de> + + maint: adjust for the renamed nstrfime gnulib module + * bootstrap.conf: s/strftime/nstrfrime/. + +2017-12-11 Pádraig Brady <P@draigBrady.com> + + build: update gnulib submodule to latest + * gnulib: Update with various build/test fixes. + + tests: fix false failure in new dd/nocache_eof test + * test/dd/nocache_eof.sh: Also handle fadvise64_64 which is + used on 32 bit x86. Note strace internally maps fadvise64_64 + to {arm,xtensa}_fadvise64_64. + + tail: fix tailing non seekable files on certain systems + * src/tail.c (tail_bytes): On systems were blksize_t is unsigned + and the same size or wider than off_t (android for example), + our initialized (off_t) -1 would be promoted to unsigned before + comparison, and thus fail to follow the appropriate path. + * tests/tail-2/tail-c.sh: Add a test case. + * NEWS: Mention the fix. + This issue was introduced in commit v8.23-47-g2662702 + Reported at https://github.com/termux/termux-app/issues/233 + + build: avoid build failure without sys/mtio.h + * m4/jm-macros.m4: Check for the header. + * src/dd.c: Avoid the workaround where the header + is not available (on non glibc systems). + * src/shred.c: Likewise. + + doc: reorganize ls -k and --time-style help + * src/ls.c (usage): Clarify -k only applies to -s usage + and directory 'total' lines. Move the description + of TIME_STYLE out of the option section as it was awkward + to read and write there within 80 columns. + +2017-12-10 Pádraig Brady <P@draigBrady.com> + + doc: clarify numeric setuid handling in chmod man page + * man/chmod.x: Update the information to state one can + clear the setuid and setgid bits for directories numerically + using an additional leading '0' or a leading '='. + That has been supported since v8.15-64-g8931cdb. + Fixes https://bugs.gnu.org/29390 + + doc: shred: change 'truncate' to the more descriptive 'deallocate' + * doc/coreutils.texi (shred invocation): s/truncate/deallocate/. + * src/shred.c (usage): Likewise. + Fixes https://bugs.gnu.org/29317 + + doc: clarify that cp --force may recreate files + * doc/coreutils.texi (cp invocation): The language used + to describe recreating the file was a little confusing + as it mentioned opening a removed file. + Fixes https://bugs.gnu.org/29315 + +2017-12-04 Kamil Dudka <kdudka@redhat.com> + + doc: fix default QUOTING_STYLE for %N format of stat(1) + * doc/coreutils.texi (stat invocation): The default value + of QUOTING_STYLE for the %N format of 'stat --printf' is + 'shell-escape-always'. + Fixes https://bugs.gnu.org/29563 + Reported by Christian Groessler at + https://bugzilla.redhat.com/1520399#c3 + +2017-12-02 Jean Delvare <jdelvare@suse.de> + + tests: make ls/block-size more readable + * tests/ls/block-size.sh: The output of the test was hard to read. Add + comments saying what we are testing to make it easier to understand. + +2017-11-29 Bernhard Voelker <mail@bernhard-voelker.de> + Pádraig Brady <P@draigBrady.com> + + tests: verify usage vs. getopt + Verify that all options mentioned in usage are actually recognized + by the program. + + * tests/misc/usage_vs_getopt.sh: Add test. + * tests/local.mk (all_tests): Reference it. + +2017-11-29 Pádraig Brady <P@draigBrady.com> + + readlink: remove superfluous comma from usage output + * src/readlink.c (usage): Remove ',' after --quiet option. + +2017-11-29 Bernhard Voelker <mail@bernhard-voelker.de> + + all: use consistent diagnostics for unknown long options + Previously, e.g. cksum failed to output the offending unknown long + option: + $ cksum --unknown-opt + cksum: invalid option -- '-' + Try 'cksum --help' for more information. + i.e., it tried to diagnose '-' as short option. + Instead, it should diagnose the unknown long option: + $ cksum --unknown-opt + cksum: unrecognized option '--unknown-opt' + Try 'cksum --help' for more information. + + * src/cksum.c (long_options): Add struct with null entry only. + (main): Use it in the getopt_long call. + * src/dd.c: Likewise. + * src/hostid.c: Likewise. + * src/hostname.c: Likewise. + * src/link.c: Likewise. + * src/logname.c: Likewise. + * src/nohup.c: Likewise. + * src/sleep.c: Likewise. + * src/tsort.c: Likewise. + * src/unlink.c: Likewise. + * src/uptime.c: Likewise. + * src/users.c: Likewise. + * src/whoami.c: Likewise. + * src/yes.c: Likewise. + * NEWS (Improvements): Mention the fix. + +2017-11-29 Pádraig Brady <P@draigBrady.com> + + test: fix issues with tests/cp/preserve-mode.sh + * tests/cp/preserve-mode.sh: This was the only use of awk, + which may not be available on the system resulting + in an ineffective test. Also the permissions bits for + directories were not being checked at all. + + build: update gnulib submodule to latest + * gnulib: Update with various build/test fixes. + +2017-11-28 Pádraig Brady <P@draigBrady.com> + + build: update gnulib submodule to latest + * gnulib: Update including various build fixes. + +2017-11-27 Bernhard Voelker <mail@bernhard-voelker.de> + + timeout: also support short -v option + * src/timeout.c (main): Add short option character 'v' to getopt_long + call. + * tests/misc/timeout.sh: Run the test both for the long and the short + option. + +2017-11-25 Pádraig Brady <P@draigBrady.com> + + dd: support iflag=direct with arbitrary sized files + * src/dd.c (iread): Handle read error with a non-aligned + file offset in the O_DIRECT case. This is not an issue + on XFS at least, but on EXT4 the final read will return + EINVAL rather than the expected 0 to indicate EOF. + * tests/dd/direct.sh: Test the iflag=direct case also. + * NEWS: Mention the improvement. + +2017-11-24 Pádraig Brady <P@draigBrady.com> + + timeout: add --verbose to diagnose timeouts + This is useful as handling in shell is complicated + with the varying exit status in the --kill-after case. + + * src/timeout.c (main): Handle '-v' and store + COMMAND for the diagnostic. + (cleanup): Diagnose the signal name before sending. + (usage): Document -v, --verbose. + * doc/coreutils.texi (timeout invocation): Likewise. + * tests/misc/timeout.sh: Add a test case. + * NEWS: Mention the new feature + Fixes https://bugs.gnu.org/21760 + +2017-11-19 Pádraig Brady <P@draigBrady.com> + + tail: seek to the end of block devices + * src/tail.c (tail_bytes): Try lseek(..., SEEK_END) when + we can't determine the file size. + * tests/tail-2/end-of-device.sh: Add a new root only test. + * tests/local.mk: Reference the new test. + * NEWS: Mention the improvement. + Paul Eggert suggested using lseek() (rather than ioctl(BLKGETSIZE64)). + Fixes https://bugs.gnu.org/29259 + +2017-11-14 Bernhard Voelker <mail@bernhard-voelker.de> + + maint: include the module year2038 from gnulib + * bootstrap.conf (gnulib_modules): Add 'year2038' to ensure that time_t + is 64-bit (and thus works after 2038). + + Suggested by Bruno Haible in + https://lists.gnu.org/r/bug-gnulib/2017-11/msg00022.html + +2017-11-14 Bernhard Voelker <mail@bernhard-voelker.de> + + maint: update gnulib to latest + * gnulib: Update - mainly for the recent year2038 changes. + * tests/init.sh: Update from gnulib/tests/init.sh. + +2017-11-09 Assaf Gordon <assafgordon@gmail.com> + + doc: add github issue/pull-request templates + These templates instruct contributors not to use github, and instead + use the upstream GNU development resources. Discussed in + http://lists.gnu.org/archive/html/coreutils/2017-11/msg00007.html . + + * .github/ISSUE_TEMPLATE.txt, + .github/PULL_REQUEST_TEMPLATE.txt: New files. + +2017-11-08 Jim Meyering <meyering@fb.com> + + maint: make hook script reject "/archive/html" in lists.gnu.org URLS + * scripts/git-hooks/commit-msg: Require the abbreviated "/r/" + form in any log message URL. + + maint: shorten https://lists.gnu.org/archive/html/... links + Each /archive/html/ part can be replace with /r/. + Run this to induce the change: + git grep -l archive/html|xargs perl -pi -e 's,/archive/html/,/r/,g' + * TODO: Perform that substitution. + * bootstrap: Likewise. + * src/sort.c (sequential_sort): Likewise. + * src/tail.c (tail_file): Likewise. + * tests/misc/sort-merge-fdlimit.sh: Likewise. + * tests/misc/stty-row-col.sh: Likewise. + * tests/misc/unexpand.pl: Likewise. + * tests/rm/readdir-bug.sh: Likewise. + * tests/tail-2/inotify-rotate.sh: Likewise. + +2017-11-07 Thomas Deutschmann <whissi@gentoo.org> + + tests: avoid false failure with inaccessible mount points + * tests/ls/readdir-mountpoint-inode.sh: Skip the test + if any mount points are inaccessible by the current user. + Fixes https://bugs.gnu.org/29167 + Reported at: https://bugs.gentoo.org/353164 + +2017-11-06 Bernhard Voelker <mail@bernhard-voelker.de> + + doc: fix "Up" field of realpath usage examples + Older versions of 'makeinfo' choke on a missing reference: + + ./doc/coreutils.texi:14177: `Realpath usage examples' has no Up field\ + (perhaps incorrect sectioning?). + makeinfo: Removing output file `doc/coreutils.info' due to errors; \ + use --force to preserve. + + * doc/coreutils.texi (realpath invocation): Add a menu referencing + the usage examples - introduced in v8.27-91-g7449f0d. + +2017-11-06 Pádraig Brady <P@draigBrady.com> + + maint: ensure https:// URLs are used in --help and man pages + * configure.ac(AC_INIT): Specify the URL explicitly, so we're + not dependent on unreleased autoconf. + +2017-10-31 Assaf Gordon <assafgordon@gmail.com> + + stat: output default formats for --terse in usage + Suggested by L A Walsh in https://bugs.gnu.org/28763 . + + * src/stat.c (fmt_terse_fs): Define format for --terse -f here. + (fmt_terse_regular): Define format for --terse here. + (fmt_terse_selinux): Likewise for when SELinux is enabled. + (default_format): Use the above constants. + (usage): Output the formats for the terse modes. + +2017-10-30 Pádraig Brady <P@draigBrady.com> + + df: fix hang with fifo argument + * src/df.c (main): stat() before open(), and avoid + the optional open when given a fifo argument. + * tests/df/unreadable.sh: Add a test case. + * NEWS: Mention the fix. + Fixes https://bugs.gnu.org/29038 + +2017-10-28 Jim Meyering <meyering@fb.com> + + build: ls.c: apply _GL_ATTRIBUTE_PURE to more functions + * src/ls.c (DEFINE_SORT_FUNCTIONS): Apply _GL_ATTRIBUTE_PURE + to each strcmp-derived function definition, since GCC8 with + -Wsuggest-attribute=pure now warns it is needed. + +2017-10-26 Vincent Lefevre <vincent@vinc17.net> + + doc: reference statfs(2) in the stat(1) man page + * man/stat.x (SEE ALSO): Mention statfs(2) in addition to stat(2). + Note statfs() is generally used rather than statvfs(), + so we'll defer that reference to the SEE ALSO section of statfs(2). + Fixes https://bugs.gnu.org/28989 + +2017-10-25 Pádraig Brady <P@draigBrady.com> + + tests: avoid false failure when O_DIRECT isn't supported + * tests/dd/nocache_eof.sh: Only run the O_DIRECT tests + when 512 byte alignment is supported. Otherwise with older + XFS on systems with > 1MiB pages, or on file systems not + supporting O_DIRECT, there would have been false failures. + * tests/dd/direct.sh: Clarify the skip message. + +2017-10-25 Pádraig Brady <P@draigBrady.com> + + dd: fix nocache regions passed to posix_fadvise() + Previously with oflag=direct the call to invalidate_cache() + was not passed to the kernel, as it was less than a page size, + and a subsequent call was not made to invalidate the pending space. + Similarly with oflag=nocache the pending space at EOF was + not invalidated. Even though these amount to only a single page + in the page cache it can be significant. For example on + XFS before kernel patch v4.9-rc1-4-g0ee7a3f, O_DIRECT files + would have been read inefficiently if any pages were cached, + even if they were already synced to storage. + + * src/dd.c (i_nocache_eof, o_nocache_eof): New bools used + to control when we want invalidate_cache(,0) to clear to EOF. + (cache_round): Use IO_BUFSIZE (currently 132KiB) to minimize + calls to the relatively expensive advise function, rather + than page_size. This also makes it clear that while the + kernel function operates on pages, this size is chosen for + performance reasons. + (invalidate_cache): Refactor to share more code between + input and output paths. Use i_nocache_eof and o_nocache_eof + rather than proxying off max_records. Ensure we + invalidate full pages when clearing to EOF as the kernel + will ignore any non complete pages. Fix the offset used + for the output path. + (dd_copy): Invalidate the cache of the input after the + offset is updated, for consistency and so we don't try to + invalidate before the start of the file. When we read + EOF on input, set flags so that we invalidate to EOF. + (main): Invalidate to EOF in more cases, by depending + on the i_nocache_eof and o_nocache_eof flags. + * doc/coreutils.texi (dd invocation): Clarify the alignment + and persisted caveats on the example applying "nocache" + to part of a file. + * tests/dd/nocache_eof.sh: A new test. + * tests/local.mk: Reference the new test. + * NEWS: Mention the bug fix. + Issue reported by Eric Bergen. + +2017-10-24 Michael Stone <mstone@debian.org> + + doc: mention QUOTING_STYLE env var in ls man page + * src/ls.c (usage): Mention QUOTING_STYLE with the --quoting-style + option, and indicate it has lower precedence than that option. + +2017-10-24 Pádraig Brady <P@draigBrady.com> + + maint: apply suggested cleanup to recent stty.c change + This should have been part of commit v8.28-17-gf926f7c + * src/stty.c (check_argument): Align line continuation chars, + and ensure the function macro is immune to usage with if/else. + Suggested by Jim Meyering and Paul Eggert. + + b2sum: fix crash with --check and truncated input + * src/md5sum.c (split_3): Ensure we don't walk off + the end of the string. + * tests/misc/b2sum.sh: Add test cases. + Fixes https://bugs.gnu.org/28860 + +2017-10-24 Pádraig Brady <P@draigBrady.com> + + stty: fix processing of options when -F is specified + This was a latent issue that became significant with + the addition of the -F option in FILEUTILS-3_16n-56-ge46a424 + + * src/stty.c (apply_settings): Refactor argument checking + to a function macro. Augment the argument check to ignore + NULLed out arguments (already processed -F). + * NEWS: Mention the fix. + * tests/misc/stty-invalid.sh: Add a test case. + Fixes https://bugs.gnu.org/28859 + +2017-10-24 Pádraig Brady <P@draigBrady.com> + + timeout: fix a small race that would ignore command exit + This fixes a regression from commit v8.26-39-g2f69dba + + * src/timeout.c (block_cleanup_and_chld): Rename from block_cleanup + to indicate we also block SIGCHLD to avoid the race where SIGCHLD + fires between waitpid() polling and sigsuspend() waiting for a signal. + * NEWS: Mention the fix. + +2017-10-24 Thomas Jarosch <thomas.jarosch@intra2net.com> + + timeout: fix regression when invoked with blocked SIGCHLD + We inherit the signal mask from our parent process, + therefore ensure SIGCHLD is not blocked. + + If SIGCHLD is blocked, sigsuspend() won't be interrupted + when the child process exits and we hang until the timeout (SIGALRM). + + This fixes a regression from commit v8.26-39-g2f69dba + + * src/timeout.c (install_sigchld): Ensure SIGCHLD is unblocked. + * NEWS: Mention the issue. + +2017-10-02 Pádraig Brady <P@draigBrady.com> + + build: reinstate distribution of man pages + man pages change little between systems, + so falling back to distributed pages make sense + when cross compiling or lacking perl. + + * man/local.mk: Add all man pages to EXTRA_DIST + so that they're distributed in the generated tarball. + Use the dummy-man page generator if cross compiling. + Set TZ to avoid a distcheck failure where man pages + used a diffent month than those rebuilt (with a .timestamp). + * man/dummy-man: Only fall back to generating a stub + if copying an existing man page fails. + * man/help2man: Sync portable TZ=UTC0 specification + from upstream help2man. + * NEWS: Mention the build-related change. + Fixes https://bugs.gnu.org/28574 + +2017-10-02 Pádraig Brady <P@draigBrady.com> + + maint: remove a duplicate entry from THANKS + * .mailmap: Prefer Colin Watson's last used email address. + +2017-09-25 Paul Eggert <eggert@cs.ucla.edu> + + copy: revert recent patch for vulnerable dirs + I plan to propose a better patch to catch vulnerable parent + directories. + * NEWS, doc/coreutils.texi (Target directory): Document this. + * src/cp.c, src/install.c, src/ln.c, src/mv.c: + Do not include targetdir.h. + (target_directory_operand): Remove test for vulnerable parents. + * src/cp.c (stat_target_operand): Remove. All uses removed. + * src/local.mk (noinst_HEADERS): Remove src/targetdir.h. + (src_ginstall_SOURCES, src_cp_SOURCES, src_ln_SOURCES) + (src_mv_SOURCES): Remove src/targetdir.c. + * src/targetdir.c, src/targetdir.h: Remove. + * tests/mv/vulnerable-target.sh: Remove. + * tests/local.mk (all_root_tests): Remove it. + +2017-09-24 Pádraig Brady <P@draigBrady.com> + + tests: fix test hang on case insenitive file systems + * tests/split/filter.sh: Due to an invalid 'FILE = zero.in' + construct trying to initialize a FILE variable, it would + instead try to run the FILE command which is present on + macOS 10.13 with APFS. + We also remove a redundant duplicate test clause introduced + during a rebase, and simplify the piped timeout command, + to avoid requiring a subshell and associated quoting. + * THANKS.in: Add the reporter Jack Howarth. + Fixes https://bugs.gnu.org/28506 + +2017-09-21 Pádraig Brady <P@draigBrady.com> + + tests: avoid a false failure in expr test with UTF8 + * tests/misc/expr.pl: Skip the quote varying tests in + the multi-byte locales as these tests aren't that interesting + in those locales. Also ERR_SUBST is already defined for + some tests so awkward to redefine to munge UTF8 quotes to ASCII. + +2017-09-20 Assaf Gordon <assafgordon@gmail.com> + + expr: add detailed syntax error messages + Show offending argument instead of a generic 'syntax error' message. + Suggested by Bernhard Voelker in https://bugs.gnu.org/28461#13 . + + * src/expr.c (syntax_error): Remove. + (required_more_args): New function. + (eval7, main): Replace syntax_error call with detailed die message. + * tests/misc/expr.pl: Add tests for new messages. + +2017-09-20 Pádraig Brady <P@draigBrady.com> + + maint: fix new syntax-check failures from HTTPS adjustments + * cfg.mk [old_NEWS_hash]: update with `make update-NEWS-hash`. + [sc_long_lines]: Avoid flagging (long) URLs in NEWS. + * src/sort.c: Tweak to a shorter line. + * src/tail.c: Likewise. + Introduced in v8.28-4-gbe87d61 + + maint: fix new syntax check failures from copy restrictions + * doc/coreutils.texi: Remove doubled word. + * src/targetdir.c: Explicitly mark exported function. + * tests/local.mk: This is not a root only test. + * tests/mv/vulnerable-target.sh: Use returns_. + Introduced in v8.28-3-g44ccd1c + + shred: reinstate --remove file name length obfuscation + This was unintentionally removed in v8.27-60-g2ae1460 + * src/shred.c (wipename): Interate through all name lengths. + * tests/misc/shred-remove.sh: Add test cases. + * NEWS: Mention the bug fix. + Fixes https://bugs.gnu.org/28507 + +2017-09-19 Paul Eggert <eggert@cs.ucla.edu> + + maint: copy bootstrap from Gnulib + + all: prefer HTTPS in URLs + + copy: check for vulnerable target dirs + * NEWS, doc/coreutils.texi (Target directory): Document this. + * src/cp.c, src/install.c, src/ln.c, src/mv.c: Include targetdir.h. + (target_directory_operand): Use the new targetdir_operand_type + function to check for vulnerable target directories. + * src/cp.c (stat_target_operand): New function. + (target_directory_operand, do_copy): Use it. + * src/local.mk (noinst_HEADERS): Add src/targetdir.h. + (src_ginstall_SOURCES, src_cp_SOURCES, src_ln_SOURCES) + (src_mv_SOURCES): Add src/targetdir.c. + * src/targetdir.c, src/targetdir.h: New files. + * tests/mv/vulnerable-target.sh: New test. + * tests/local.mk (all_root_tests): Add it. + +2017-09-14 Bernhard Voelker <mail@bernhard-voelker.de> + + ptx: avoid infloop due to zero-length matches with -S regex + * src/ptx.c (find_occurs_in_text): Die with an appropriate error + diagnostic when the given regular expression returns a match of + length 0. + * tests/misc/ptx.pl (S-infloop): Add a test. + * NEWS (Bug fixes): Mention the fix. + + Fixes https://bugs.gnu.org/28417 which was detected using + Symbolic Execution techniques developed in the course of the + SYMBIOSYS research project at COMSYS, RWTH Aachen University. + +2017-09-02 Pádraig Brady <P@draigBrady.com> + + maint: post-release administrivia + * NEWS: Add header line for next release. + * .prev-version: Record previous version. + * cfg.mk (old_NEWS_hash): Auto-update. + + version 8.28 + * NEWS: Record release date. + +2017-09-01 Pádraig Brady <P@draigBrady.com> + + 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. + + maint: avoid a syntax-check failure + * .gitignore: Remove lines indicated by sc_gitignore_redundant + in a freshly checked out repo. + +2017-08-31 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-31 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-30 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-29 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-29 Assaf Gordon <assafgordon@gmail.com> + + doc: add 'realpath usage examples' section + * doc/coreutils.texi (Realpath usage examples): New section. + +2017-08-29 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-29 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-25 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-25 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-14 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. + + 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-09 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-04 Paul Eggert <eggert@cs.ucla.edu> + + build: update gnulib submodule to latest + +2017-08-03 Paul Eggert <eggert@cs.ucla.edu> + + 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-03 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-31 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-25 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-28 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-21 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-11 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-03 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-18 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-04 Pádraig Brady <P@draigBrady.com> + + maint: fix various typos in recent commits + * NEWS: Grammar fixes. + * HACKING: Likewise. + +2017-05-04 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-30 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-27 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-27 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-18 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-17 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-06 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-06 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-03 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-03 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-30 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-28 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-28 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-28 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-28 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-27 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 + 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. + + 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 + +2017-03-10 Paul Eggert <eggert@cs.ucla.edu> + + 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. + +2017-03-09 Pádraig Brady <P@draigBrady.com> + + 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. + + 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`. + + maint: post-release administrivia + * NEWS: Add header line for next release. + * .prev-version: Record previous version. + * cfg.mk (old_NEWS_hash): Auto-update. + + version 8.27 + * NEWS: Record release date. + + build: update gnulib submodule to latest + Removes extraneous parse-datetime.c generated during build + + 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. + + doc: spelling fix for recent doc addition + * doc/coreutils.texi (join invocation): s/preceeding/preceding/. + +2017-03-08 Bernhard Voelker <mail@bernhard-voelker.de> + + 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. + +2017-03-08 Assaf Gordon <assafgordon@gmail.com> + + 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). + +2017-03-04 Pádraig Brady <P@draigBrady.com> + + 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. + +2017-03-04 Bernhard Voelker <mail@bernhard-voelker.de> + + 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". + +2017-03-03 Pádraig Brady <P@draigBrady.com> + + build: update gnulib submodule to latest + Fixes a test-lock failure on MacOS + + 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. + + 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. + + 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. + +2017-03-02 Assaf Gordon <assafgordon@gmail.com> + + 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 + +2017-03-01 Pádraig Brady <P@draigBrady.com> + + 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. + + 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 + + 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). + + 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. + + 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 + +2017-02-26 Pádraig Brady <P@draigBrady.com> + + 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. + +2017-02-26 Pádraig Brady <P@draigBrady.com> + + build: update gnulib submodule to latest + +2017-02-23 Pádraig Brady <P@draigBrady.com> + + 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. + +2017-02-23 Pádraig Brady <P@draigBrady.com> + + 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 + +2017-02-18 Pádraig Brady <P@draigBrady.com> + + maint: tweaks so syntax tests pass for previous commit + * .gitignore: placate sc_gitignore_redundant. + * po/POTFILES.in: placate sc_po_check. + +2017-02-16 Bernhard Voelker <mail@bernhard-voelker.de> + + 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. + +2017-02-16 Paul Eggert <eggert@cs.ucla.edu> + + 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. + + build: update gnulib submodule to latest + +2017-02-15 Paul Eggert <eggert@cs.ucla.edu> + + 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. + + build: update gnulib submodule to latest + +2017-02-13 Pádraig Brady <P@draigBrady.com> + + 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. + +2017-02-12 Paul Eggert <eggert@cs.ucla.edu> + + 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. + +2017-02-10 Tobias Stoeckmann <tobias@stoeckmann.org> + + 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 + +2017-02-10 Pádraig Brady <P@draigBrady.com> + + 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. + +2017-02-08 Janne Snabb <snabb@epipe.com> + + 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 + +2017-02-08 Pádraig Brady <P@draigBrady.com> + + 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. + + 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. + +2017-02-08 Pádraig Brady <P@draigBrady.com> + + 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. + +2017-02-07 Maxime de Roucy <maxime.deroucy@gmail.com> + + 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. + +2017-01-25 Pádraig Brady <P@draigBrady.com> + + 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 + +2017-01-25 Manolis Ragkousis <manolis837@gmail.com> (tiny change) + + 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> + +2017-01-21 Mike Swanson <mikeonthecomputer@gmail.com> + + dircolors: highlight windows archive format + * src/dircolors.hin: Match *.{wim,swm,dwn,esd} + +2017-01-21 Pádraig Brady <P@draigBrady.com> + + maint: mention the recent date time zone bug fix + * NEWS: Add the bug fix from commit v8.26-27-gb14be50 + +2017-01-21 Assaf Gordon <assafgordon@gmail.com> + + maint: appease syntax-check failures due to recent updates + * bootstrap: s/time stamp/timestamp/. + * old/fileutils/NEWS: Likewise. + * src/tail.c: Avoided a long line. + +2017-01-21 Paul Eggert <eggert@cs.ucla.edu> + + date: fix TZ= regression + Problem reported by Paul Wise for Debian, in: + https://bugs.debian.org/851934 + This is fallout from the fix for GNU Bug#23035. + * src/date.c (batch_convert): New args TZ and TZSTRING. + All uses changed. + (batch_convert, main): Adjust to parse_datetime2 API change. + (main): Allocate time zone object. + * tests/misc/date-debug.sh: Fix incorrect test case, + caught by the fix. + * tests/misc/date.pl: Test the fix. + + build: update gnulib submodule to latest + +2017-01-15 Jim Meyering <meyering@fb.com> + + maint: update README-hacking, now that vc-dwim accepts --init + * README-hacking: I've just released vc-dwim-1.8, so we can improve + the documentation to reference its --initialize option here. + +2017-01-15 Paul Eggert <eggert@cs.ucla.edu> + + date: output "-00" for indeterminate time zone + * NEWS: Document this behavior, which comes with recent Gnulib. + * doc/coreutils.texi (Formatting file timestamps, du invocation) + (Time conversion specifiers, Setting the time, Options for date): + Mention when -00 is output for numeric time zones. + Be more careful about Internet RFC numbers, ISO 8601, etc. + + date: new option spelling --rfc-email + * NEWS: + * doc/coreutils.texi (Time conversion specifiers) + (Options for date, Examples of date): Document this. + * src/date.c (rfc_email_format): Rename from rfc_2822_format. + All uses changed. + (usage, long_options): Support --rfc-email. + + maint: modernize URLs + A lot of this is converting http: to https:. + Also, gmane went away, so remove URLs that no longer work and + are not easy to figure out what they were. + Some of this stuff is so old that it no longer matters anyway. + + build: update gnulib submodule to latest + +2017-01-10 Bernhard Voelker <mail@bernhard-voelker.de> + + doc: move "File timestamps" to a separate chapter + The above new section looked a bit odd as the only general documentation + in between the utility chapters. + + * doc/coreutils.texi (File timestamps): Move to a separate chapter. + +2017-01-10 Eric Blake <eblake@redhat.com> + + maint: fix recent syntax check failures + Commit 4f650aad was incomplete; it changed NEWS but not the hash, + and introduced a grammar error. + + * cfg.mk (old_NEWS_hash): Update via 'make update-NEWS-hash'. + * doc/coreutils.texi (File timestamps): Fix doubled word. + +2017-01-09 Paul Eggert <eggert@cs.ucla.edu> + + doc: cover file timestamps better + Prompted by a bug report from Scott Deerwester (Bug#25407). + * doc/coreutils.texi (File timestamps): New section. + Revamp other sections to use this new section, and + use more-consistent terminology. + + maint: standardize on "timestamp" as per POSIX + +2017-01-09 Pádraig Brady <P@draigBrady.com> + + stty: ensure no side effects from invalid options + * src/stty.c (apply_settings): A new function refactored + from main() that is used to both check and apply options. + (main): Call apply_settings before we open the device, + so all validation is done before interacting with a device. + * NEWS: Mention the improvement. + * tests/misc/stty.sh: Add a test case. + +2017-01-06 Assaf Gordon <assafgordon@gmail.com> + + tests: improve 'date --debug' tests + Update tests following improvements to gnulib's parse-datetime.y module. + See https://lists.gnu.org/archive/html/bug-gnulib/2017-01/msg00002.html + + * tests/misc/date-debug.sh: Add tests for each of the gnulib changes. + +2017-01-06 Assaf Gordon <assafgordon@gmail.com> + + build: update gnulib submodule to latest + +2017-01-01 Pádraig Brady <P@draigBrady.com> + + maint: update all copyright year number ranges + Run "make update-copyright" and then... + + * gnulib: Update to latest with copyright year adjusted. + * tests/init.sh: Sync with gnulib to pick up copyright year. + * bootstrap: Likewise. + * tests/sample-test: Adjust to use the single most recent year. + +2016-12-28 Zooko <zookog@gmail.com> + + doc: recommend b2sum as well as SHA2 + b2sum is faster, easier to use safely, and more future-proof + +2016-12-28 Pádraig Brady <P@draigBrady.com> + + tests: avoid false fails on NFS due to EPERM + * tests/chgrp/basic.sh: On some NFS setups a user is + not allowed to set a group on a file even if a member + of that group. Therefore skip this test on remote file systems. + * tests/chgrp/default-no-deref.sh: Likewise. + * tests/chgrp/no-x.sh: Likewise. + * tests/chgrp/posix-H.sh: Likewise. + * tests/chgrp/recurse.sh: Likewise. + * tests/tail-2/inotify-rotate-resources.sh: Change to skipping + on remote file systems in the standard way. + +2016-12-27 Paul Eggert <eggert@cs.ucla.edu> + + doc: Update POSIX part of README (Bug#25259) + +2016-12-26 Pádraig Brady <P@draigBrady.com> + + wc: with only --bytes, determine size more efficiently + * src/wc.c (wc): Avoid reading the end of the file + when the size is not a multiple of PAGE_SIZE, + as the special case handling for files in /proc and /sys + is only required when st_size is 0 or a multiple of PAGE_SIZE. + * tests/misc/wc-proc.sh: Add a test case. + +2016-12-20 Pádraig Brady <P@draigBrady.com> + + maint: correct the version for the previous bug fix + While st_size would have been incorrect for subsequent + files since v7.1, it was only used since v8.24. + + * tests/misc/wc-files0.sh: s/7.1/8.24/ + * NEWS: Likewise. + + Reported by Bernhard Voelker + +2016-12-19 William R. Fraser <wfraser@codewise.org> + + wc: fix wrong byte counts when using --files-from0 + * src/wc.c (main): Reset fstatus[0].failed between files when reusing + the fstatus[0] entry in --files-from0 mode. This ensures a stat() is + done for each file, avoiding incorrect counts and redundant reading. + * NEWS: Mention the bug fix. + * tests/misc/wc-files0.sh: Add a test case. + Fixes http://bugs.gnu.org/23073 + +2016-12-18 Pádraig Brady <P@draigBrady.com> + + tests: fix typos in previous commit + * init.cfg (skip_if_mcstransd_is_running_): Fix typos + _introduced my me_ in the previous commit. + +2016-12-18 Nicolas Iooss <nicolas.iooss@m4x.org> + + tests: support non-MLS enabled SELinux systems + When running "make check" on a Linux system running SELinux with a + non-MLS policy, tests/mkdir/restorecon.sh test fails with: + + chcon: invalid context: root:object_r:tmp_t:s0: Invalid argument + + Indeed in such a configuration, contexts cannot have ":s0" suffix. + + * init.cfg (get_selinux_type): Refactor this function to here + from various tests. Update to work with a non-MLS policy. + (mls_enabled_): A new function to detect if MLS is enabled. + (skip_if_mcstransd_is_running_): Update to not skip when + MLS is not enabled. + * tests/mkdir/restorecon.sh: Use a valid non-MLS context when needed. + * tests/install/install-Z-selinux.sh: Likewise. + * tests/cp/cp-a-selinux.sh: Likewise. + * tests/misc/selinux.sh: Likewise. + * tests/misc/chcon.sh: Skip if non-MLS as --range used throughout. + Fixes http://bugs.gnu.org/22631 + +2016-12-08 Torbjörn Granlund <tg@gmplib.org> + + factor: retry properly if Pollard rho gives a trivial factorization + * src/factor.c (factor_using_pollard_rho): Handle trivial factor g = n. + (factor_using_pollard_rho2): Handle trivial factor g1 = n1, g0 = n0. + * tests/misc/factor.pl: Add a test case. + Fixes http://bugs.gnu.org/25135 + +2016-12-08 Niels Möller <nisse@lysator.liu.se> + + factor: fix infinite loop in gcd2_odd + * src/factor.c (gcd2_odd): Fix the case a1 == 0, a0 == 0. + * NEWS: Mention the bug fix. + Fixes http://bugs.gnu.org/25135 + +2016-12-02 Pádraig Brady <P@draigBrady.com> + + doc: fix --help for: od -t f[SIZE] + * src/od.c (usage): SIZE is that of float, not integer. + +2016-11-30 Pádraig Brady <P@draigBrady.com> + + maint: post-release administrivia + * NEWS: Add header line for next release. + * .prev-version: Record previous version. + * cfg.mk (old_NEWS_hash): Auto-update. + + version 8.26 + * NEWS: Record release date. + + tests: fix false failure with spaces in $PWD + * tests/misc/ptx-overrun.sh: Quote appropriately to avoid this + recently added issue, noticed by `make taint-distcheck`. + + maint: avoid "make distcheck" failure without excess .deps directories + * Makefile.am (my-distcheck): Add the -r option to xargs so that + rmdir doesn't return an error when there are no extraneous .deps dirs. + +2016-11-29 Pádraig Brady <P@draigBrady.com> + + tests: fix ERRORs and false FAILs on some platforms + * tests/misc/ls-time.sh: Skip the test rather than ERROR + when `touch -m -d ...` fails (Hurd). + * tests/tail-2/follow-stdin.sh: Avoid false FAILs by ignoring + the variances in sterror output. + * tests/rm/rm-readdir-fail.sh: Likewise. Also avoid ERRORs + on systems that don't define _D_EXACT_NAMELEN. + +2016-11-28 Pádraig Brady <P@draigBrady.com> + + head: fix processing of non-seekable input as seekable + * src/head.c (elide_tail_bytes_file): Ensure we don't use + st_size unless we've previously used seek() to determine + the CURRENT_POS in the seekable file. + This was seen to cause issue on FreeBSD 11 when the pipe + buffer was filled with `yes | head --lines=-0`, in which + case st_size was 64KiB while ST_BLKSIZE() was 4KiB. + Reported by Assaf Gordon. + +2016-11-28 Kamil Dudka <kdudka@redhat.com> + + install,mkdir: fix handling of -DZ and -pZ, respectively + ... in the case where two or more directories nested in each other are + created and each of them defaults to a different SELinux context. + + * src/install.c (make_ancestor): When calling defaultcon(), give it the + same path that is given to mkdir(). The other path is not always valid + wrt. current working directory. + * src/mkdir.c (make_ancestor): Likewise. + * NEWS: Mention the bug fix. + + Reported at https://bugzilla.redhat.com/1398913 + +2016-11-28 Pádraig Brady <P@draigBrady.com> + + tac: fix mem corruption when failing to read non seekable inputs + This was detected with ASAN, but can also be seen without ASAN with: + $ tac - - <&- + tac: standard input: read error: Bad file descriptor + *** Error in `tac': malloc(): memory corruption: 0x... + + * src/tac.c (copy_to_temp): Don't close our output stream on + (possibly transient) output error, or on input error. + (temp_stream): clearerr() on the stream about to be reused, + to ensure future stream use is not impacted by transient errors. + * tests/misc/tac-2-nonseekable.sh: Add a test case. + * NEWS: Mention the bug fix. + Fixes http://bugs.gnu.org/25041 + +2016-11-27 Pádraig Brady <P@draigBrady.com> + + tail: fix uninitialized memory read when failing to read file + Reproduced under UBSAN with `tail -f <&-` giving: + tail.c:2220:18: runtime error: load of value 190, + which is not a valid value for type ‘_Bool' + + * src/tail.c (tail_file): Ensure f->ignore is initialized + in all cases where we can't tail the specified file. + * tests/tail-2/follow-stdin.sh: Add a test case which + checks stderr has no UBSAN warnings. + Fixes http://bugs.gnu.org/25041 + +2016-11-27 Pádraig Brady <P@draigBrady.com> + + doc: add NEWS entries for recent changes + * NEWS: Mention in improvements about the workaround for + the glibc issue with closed stdin, and the new supported file systems. + * tests/misc/b2sum.sh: Spelling fix. + +2016-11-27 Pádraig Brady <P@draigBrady.com> + + stat,tail: sync with latest Linux file systems + Update with the results from: + + kgit='https://git.kernel.org/cgit/linux/kernel/git' + wget -q $kgit/torvalds/linux.git/plain/include/uapi/linux/magic.h \ + -O src/fs-latest-magic.h + make src/fs-magic-compare + + * src/stat.c (human_fstype): Add entries for: + BALLOON_KVM, CGROUP2, DAXFS, ZSMALLOC. + +2016-11-27 Pádraig Brady <P@draigBrady.com> + + build: fix potential factor build failure on arm and risc + * src/longlong.h: Sync from gmp repo incorporating: + Protect umul_ppmm with do ... while (0) + Replace obsolete ARC asm 'J' constraints with 'Cal' + Provide umul_ppmm for riscv64 + +2016-11-27 Pádraig Brady <P@draigBrady.com> + + shred,sort: ensure faster unaligned access to rand module + glibc has changed the public define + from _STRING_ARCH_unaligned to _STRING_INLINE_unaligned as per + https://sourceware.org/bugzilla/show_bug.cgi?id=19462 + + * gl/lib/rand-isaac.c: Cater for both defines. + * gl/lib/randread.c: Likewise. + * src/system.h: Update commented out code. + +2016-11-26 Paul Eggert <eggert@cs.ucla.edu> + + shuf: test input-closed bug + Problem reported by Alex Ryan (Bug#25029). + * tests/misc/shuf.sh: Test for shuffling with stdin closed. + + build: update gnulib submodule to latest + + numfmt: pacify Sun C 5.14 + * src/numfmt.c (main): Don't implicitly coerce pointer in bool + initializer. Although it's portable C99 code, it's confusing. + +2016-11-25 Pádraig Brady <P@draigBrady.com> + + tests: fix false failure on new ls test + * tests/ls/quote-align.sh: Remove "total" line + which can vary per file system depending on allocation. + Reported by Assaf Gordon on OpenSolaris (5.11/5.10). + +2016-11-25 Pádraig Brady <P@draigBrady.com> + + pr: fix read from invalid memory with tabs in separator + This was detected with: + echo a > a; pr "-S$(printf "\t\t\t")" a -m a > /dev/null + Resulting in ASAN triggering: + ==================================================== + ERROR: AddressSanitizer: global-buffer-overflow + READ of size 1 at 0x00000041b622 thread T0 + #0 0x40506a in print_sep_string ../src/pr.c:2241 + #1 0x407ec4 in read_line ../src/pr.c:2493 + #2 0x40985c in print_page ../src/pr.c:1802 + #3 0x40985c in print_files ../src/pr.c:1618 + #4 0x4036e0 in main ../src/pr.c:1136 + + * src/pr.c (init_parameters): Ensure we only override the + specified separator when it's a single tab, thus matching + the calculated separator length. + * tests/pr/pr-tests.pl: Add a test case. + * NEWS: Mention the fix. + +2016-11-24 Pádraig Brady <P@draigBrady.com> + + ptx: fix an invalid heap reference with short --width + * src/ptx.c (fix_output_parameters): Ensure line_width doesn't + go negative, which can happen when the --width is less + than the --gap-size. + * tests/misc/ptx-overrun.sh: Add a test case that triggers + with ASAN. (Note the longer filename is needed to trigger). + Fixes http://bugs.gnu.org/25011 + +2016-11-24 Bernhard Voelker <mail@bernhard-voelker.de> + + doc: clarify that readlink's --quiet option is on by default + * src/readlink.c (usage): Mark the --quiet/--silent option as active + by default. + * doc/coreutils.texi (readlink invocation): Likewise. + +2016-11-24 Pádraig Brady <P@draigBrady.com> + + tests: fix false failure with ASAN in rm-readdir-fail + * tests/rm/rm-readdir-fail.sh: ASAN correctly indicated + that fts was writing to freed memory. This was because + we reused a single dirent in our readdir() test wrapper. + Since fts was deallocating those dirents, we now get + a new dirent for each call to our readdir wrapper. + +2016-11-24 Pádraig Brady <P@draigBrady.com> + + split: fix memory corruption during chunk extraction + ASAN reported this error for: split -n2/3 /dev/null + ERROR: AddressSanitizer: negative-size-param: (size=-1) + #0 0x7f0d4c36951d in __asan_memmove (/lib64/libasan.so.2+0x8d51d) + #1 0x404e06 in memmove /usr/include/bits/string3.h:59 + #2 0x404e06 in bytes_chunk_extract src/split.c:988 + #3 0x404e06 in main src/split.c:1626 + + Specifically there would be invalid memory access + and subsequent processing if the chunk to be extracted + was beyond the initial amount read from file (which is + currently capped at 128KiB). This issue is not in a + released version, only being introduced in commit v8.25-4-g62e7af0 + + * src/split.c (bytes_chunk_extract): The initial_read != SIZE_MAX + should have been combined with && rather than ||, but also this + condition is always true in this function so remove entirely. + * tests/split/b-chunk.sh: Add a test case. + + Fixes http://bugs.gnu.org/25003 + +2016-11-24 Pádraig Brady <P@draigBrady.com> + + tail: fix checking of remoteness when not using inotify + In recent commit v8.25-93-g7fc7206 we used the f->remote flag + which wasn't set in all cases. This was detected with + ASAN giving this error when reading f->remote; + runtime error: load of value 190, + which is not a valid value for type '_Bool' + + * src/tail.c (fremote): Query the system even without inotify. + (recheck): Always set f->fremote for valid files. + +2016-11-23 Jim Meyering <meyering@fb.com> + + build: avoid racy failure of "make -jN install" + Installing with -j2 or greater could result in a failure like + /bin/sh: line 29: /P/bin/install: Permission denied + when /P/bin/install specifies your PATH-selected install program. + This would arise because we're using "install" to install all + man/*.1 files, and that command would run concurrently with the one + that installs "/P/bin/install" itself. We would run this command: + "src/ginstall src/ginstall /P/bin/install", and it would result + in intervals during which the destination file does not exist, + is empty or incomplete and not executable. We addressed this + problem long ago for installation of actual binaries by telling the + installation rules to use our just-built bin/ginstall (only when not + cross-compiling) rather than the PATH-resolved "install" program. + This change is to do the same for those .1 files. + * src/local.mk (INSTALL): Override automake's default of something + like "INSTALL = /P/bin/install -c". + (INSTALL_PROGRAM): Now that we set INSTALL, there is no longer any + need to set this derived variable. Its default definition, + "INSTALL_PROGRAM = ${INSTALL}" does what we require. + Improved by Eric Blake. + +2016-11-23 Bernhard Voelker <mail@bernhard-voelker.de> + + maint: fix 'syntax-check' targets for VPATH builds + * cfg.mk (sc_gitignore_missing): Add $(srcdir) to .gitignore filename. + (sc_gitignore_redundant): Likewise. + + maint: add build-aux/ar-lib to .gitignore + * .gitignore: Add entry for the above file which is created + by './bootstrap'. + +2016-11-23 Paul Eggert <eggert@cs.ucla.edu> + + pr: fix integer overflow in buffer size calcs + Problem reported by Marcel Böhme (Bug#24996). + * configure.ac (WERROR_CFLAGS): Avoid -Wtype-limits. + * src/pr.c (col_sep_string): Now a const pointer. All uses changed. + (integer_overflow): New function. + (separator_string, main, init_parameters, init_store_cols): + Check for integer overflow. + (align_column, read_line, print_stored): Avoid integer overflow. + +2016-11-22 Bernhard Voelker <mail@bernhard-voelker.de> + + comm: add --total option + * src/comm.c (total_option): Add bool variable for the new option. + (TOTAL_OPTION): Add enum value. + (long_options): Add array element for the new option. + (usage): Document the new option here. + (compare_files): Count the lines in total[3], and output the summary at + the end. + (main): Accept the new option. + * doc/coreutils.texi (comm invocation): Document it. + * tests/misc/comm.pl: Test it. While at it, improve the test data + to have 1 unique line in the first file, 2 unique lines in the second + file, and 3 common lines. + * NEWS (New Features): Mention the new option. + + Fixes http://bugs.gnu.org/24929 + +2016-11-22 Pádraig Brady <P@draigBrady.com> + + all: update gnulib submodule to latest + Also sync these copies with gnulib: + * bootstrap: Sync missed part of AIX support. + * tests/init.sh: Support compare_ on AIX. + + tests: fix false failure with FreeBSD 11 multibyte quoting + * tests/misc/printf-quote.sh: FreeBSD 11 was seen to treat + \u0378 as a printable character. Therefore change to + using the \u0081 C1 control character. We use the UTF-8 + representation because our printf implementation explicitly + disallows \u0081 as input. + Reported by Assaf Gordon + +2016-11-22 Pádraig Brady <P@draigBrady.com> + + tests: fix false fails due to passing env vars to returns_ + On BSD /bin/sh it was seen that unexported env vars passed to + returns_() would not be propagated to the wrapped command. + + * cfg.mk (sc_prohibit_env_returns): Add a syntax check to disallow. + * tests/misc/csplit-io-err.sh: Rearrange to export vars in a subshell. + * tests/rm/rm-readdir-fail.sh: Likewise. + * tests/misc/nohup.sh: Export and unset vars around returns_. + * tests/misc/printenv.sh: Likewise. + Reported by Assaf Gordon + +2016-11-22 Pádraig Brady <P@draigBrady.com> + + tests: fix recent tail-2 test regressions + * tests/tail-2/pipe-f.sh: Avoid issue with readable + directories on BSD systems. + * tests/tail-2/retry.sh: Likewise. + Reported by Assaf Gordon + +2016-11-22 Pádraig Brady <P@draigBrady.com> + + ls: improve alignment of quoted names + This provides better alignment when some names are quoted, + which also provides better indication that quotes are not + part of the name. + + * src/ls.c (align_variable_outer_quotes): A new variable + set when ls is aligning columns (not using -m, non-zero -w), + and has a variable quoting style (shell, shell-escape, c-maybe). + (quote_name_buf): Writes to buffer rather than FILE, + taking care to avoid data copying if possible. Refactored from... + (quote_name): ...here. This now manages the buffer passed + to quote_name_buf() and outputs the padding, colors and name + in the appropriate order, while managing the --dired offsets. + (get_color_indicator): A new function to return the color sequence, + refactored from... + (print_color_indicator): ...here. This now simply outputs. + (print_dir): Refactor common parts to quote_name(). + (clear_files): Reset the flag indicating at least one + file is quoted in the current directory. + (needs_quoting): A new function to indicate at the scan stage + whether a name needs quoting. Called from... + (gobble_file): ...here, until we find the first quoted file. + (print_name_with_quoting): Mostly refactored to quote_name(). + * tests/ls/quote-align.sh: A new test for various output formats. + * tests/local.mk: Reference the new test. + * NEWS: Mention the improvement. + +2016-11-22 Pádraig Brady <P@draigBrady.com> + + b2sum: a new checksum utility with md5sum like interface + Note we don't support the --algorithm option of the + b2sum command in the external BLAKE2 project, as that + was deemed too confusing for users. + "BLAKE2b" was chosen as the default algorithm to use, + which is single threaded but performs well on 64 bit. + + * src/blake2: CC0 source copied from external project. + * cfg.mk[VC_LIST_ALWAYS_EXCLUDE_REGEX]: Exclude blake2/ + from syntax checks, make update-copyright, etc. + * src/local.mk: Reference the sources for b2sum, + and set the compilation flags. + * doc/coreutils.texi (b2sum invocation): Reference the + md5sum invocation node, and add descriptions of -l. + * tests/misc/b2sum.sh: Add new test. + * tests/local.mk: Reference new test. + * AUTHORS: Add new binary. + * README: Likewise. + * build-aux/gen-lists-of-programs.sh: Likewise. + * man/.gitignore: Likewise. + * scripts/git-hooks/commit-msg: Likewise. + * man/b2sum.x: New man page template. + * man/local.mk: Reference new template. + * src/.gitignore: Ignore new binaries. + * src/blake2/.gitignore: Ignore new build atrifacts. + * src/md5sum.c (usage): Describe the new -l option. + * NEWS: Mention the new program. + +2016-11-22 Jim Meyering <meyering@fb.com> + + maint: avoid "make distcheck" failure due to excess .deps directories + * Makefile.am (my-distcheck): Remove all .deps directories before the + recursive diff that searches for left-behind files. Otherwise, with + automake master (some time after v1.15), "make distcheck" would fail + due to those directories being left behind after "make distclean". + +2016-11-19 Pádraig Brady <P@draigBrady.com> + + cp: improve status message when omitting directories + * src/copy.h (cp_options): Add a new flag for install(1). + * src/copy.c (copy_internal): For cp, also output remediation + advice which also indicates why directories aren't copied by default. + The message is unchanged for install(1). + * src/cp.c (cp_option_init): Init install_mode to false. + * src/mv.c (cp_option_init): Likewise. + * src/install.c (cp_option_init): Init install_mode to true. + * tests/install/basic-1.sh: Add a test case. + * tests/cp/link-deref.sh: Adjust test case. + Fixes http://bugs.gnu.org/24958 + +2016-11-16 Pádraig Brady <P@draigBrady.com> + + tests: fix non portable date in recent test + * tests/misc/date.pl: Years < 1900 fail on solaris at least. + Reported by Assaf Gordon + +2016-11-15 Pádraig Brady <P@draigBrady.com> + + tests: fix false failure on OS X + * tests/misc/sort-h-thousands-sep.sh: The sv_SE locale + may be available while sv_SE.utf8 is not. Therefore + test and use the same locale, now definfed in a variable. + Reported by Jim Meyering. + +2016-11-15 Antonio Ospite <ao2@ao2.it> + + dircolors: highlight Motion JPEG multimedia files + * src/dircolors.hin: Add .mjpg and .mjpeg multimedia files. + This resolves http://bugs.gnu.org/24436. + +2016-11-14 Jim Meyering <meyering@fb.com> + + tests: use "returns_" rather than explicit comparison with "$?" + The previous "returns_"-using change failed to convert many + uses of "$?". Convert all but two of the remaining ones. + * tests/ls/stat-vs-dirent.sh: Likewise. + * tests/misc/head-write-error.sh: Likewise. + * tests/misc/nice.sh: Likewise. + * tests/misc/nohup.sh: Likewise. + * tests/misc/stdbuf.sh: Likewise. + * tests/misc/sync.sh: Likewise. + * tests/tail-2/pid.sh: Likewise. + * tests/tail-2/wait.sh: Likewise. + Thanks to Bernhard Volker for spotting this. + +2016-11-14 Pádraig Brady <P@draigBrady.com> + + all: reduce usage of proper_name_utf8() + This reduces a standard coreutils install size by about 160K. + + * src/cat.c: Change to proper_name() which removes about 18K text. + * src/cp.c: Likewise. + * src/df.c: Likewise. + * src/du.c: Likewise. + * src/getlimits.c: Likewise. + * src/realpath.c: Likewise. + * src/split.c: Likewise. + * src/stdbuf.c: Likewise. + * src/timeout.c: Likewise. + * src/truncate.c: Likewise. + * src/local.mk: Remove -llibiconv from the above programs. + * cfg.mk (sc_check-AUTHORS): Adjust to use factor(1). + * AUTHORS: Adjust to use ASCII to satisfy sc_check-AUTHORS. + +2016-11-13 Bernhard Voelker <mail@bernhard-voelker.de> + + maint: add 'returns_' to exclude list in sc_prohibit_and_fail_1 + The previous commit v8.25-96-g22063c8 lets 'make syntax-check' fail, + because the above check falsely detects a case where 'returns_' is + already in use. + + * cfg.mk (sc_prohibit_and_fail_1): Add 'returns_' to exclude list. + +2016-11-13 Jim Meyering <meyering@fb.com> + + tests: use "returns_" rather than explicit comparison with "$?" + * tests/chmod/no-x.sh: Likewise. + * tests/cp/no-deref-link1.sh: Likewise. + * tests/cp/no-deref-link2.sh: Likewise. + * tests/cp/no-deref-link3.sh: Likewise. + * tests/du/move-dir-while-traversing.sh: Likewise. + * tests/ls/infloop.sh: Likewise. + * tests/ls/stat-failed.sh: Likewise. + * tests/ls/time-style-diag.sh: Likewise. + * tests/misc/chroot-fail.sh: Likewise. + * tests/misc/env-null.sh: Likewise. + * tests/misc/env.sh: Likewise. + * tests/misc/nice-fail.sh: Likewise. + * tests/misc/printenv.sh: Likewise. + * tests/misc/timeout.sh: Likewise. + * tests/tail-2/follow-name.sh: Likewise. + +2016-11-10 Pádraig Brady <P@draigBrady.com> + + tail: only retry file open if --retry specifed + * src/tail.c (tail_file): On failure to open a file, + set ignore=true when --retry is not specified. + * tests/tail-2/assert-2.sh: Adjust to the new behavior. + * tests/tail-2/retry.sh: Add a test case. Also change + from `tail ... && fail=1` to the more robust `returns_ 1 ...` + construct which detects segfaults etc. + * NEWS: Document the fix. + +2016-11-09 Pádraig Brady <P@draigBrady.com> + + tail: ensure -f --retry 'missing' handles truncation + * src/tail.c (tail_forever): The BLOCKING optimization is only + enabled for non regular files (which can't be truncated), so ensure + we don't enable that unless we've a valid file descriptor. + * tests/tail-2/retry.sh: Add a test case. + * NEWS: Mention the bug fix. + + tail: avoid outputting repeated data with remote files + * src/tail.c (tail_forever): Only read up to st_size on network + file systems to avoid the issue with a stale attribute cache + returning a smaller st_size than we have already read(). + The was seen with glusterfs at least and caused the complete + file to be repeatedly output due to assuming the file was + truncated in this case. + * NEWS: Mention the fix. + +2016-11-08 Pádraig Brady <P@draigBrady.com> + + tail: terminate when following pipes and untailable non pipes + * src/tail.c (ignore_pipe_or_fifo): Mark the descriptor as -1 + for pipes so that any_live_files() detects correctly that + the entry is no longer live. + * tests/tail-2/pipe-f.sh: Add a test case. + * NEWS: Mention the fix. + Fixes http://bugs.gnu.org/24903 which was detected + using Symbolic Execution techniques developed in + the course of the SYMBIOSYS research project at + COMSYS, RWTH Aachen University. + +2016-11-07 Pádraig Brady <P@draigBrady.com> + + maint: misc tweaks to recent changes + * doc/coreutils.texi(cut invocation): Give a more accurate description + of cut field handling limitations. + * tests/misc/stat-fmt.sh: Fix the test header to be more general. + * tests/tail-2/retry.sh: Spellings. + + maint: refactor printing of backup suffix --help + * src/system.h (emit_backup_suffix_note): A new function to + output the backup suffix info. The strings are unchanged, + so translations are not impacted. + * src/cp.c (usage): Use the new function. + * src/ln.c (usage): Likewise. + * src/mv.c (usage): Likewise. + * src/install.c (usage): Likewise. + +2016-11-07 Rishabh Dave <rishabhddave@gmail.com> + + maint: simplify handling of backup --suffix in various tools + * src/cp.c (main): Avoid the getenv("SIMPLE_BACKUP_SUFFIX") call, + which is now done if needed in the gnulib backupfile module. + Also avoid the redundant strdup, as we don't modify this suffix. + * src/install.c (main): Likewise. + * src/ln.c (main): Likewise. + * src/mv.c (main): Likewise. + Fixes http://bugs.gnu.org/23153 + +2016-11-07 Pádraig Brady <P@draigBrady.com> + + date: add %q to output the quarter of the year + * doc/coreutils.texi (date invocation): Document %q. + * src/date.c (usage): Likewise. + * tests/misc/date.pl: Add a test case. + * cfg.mk (sc_strftime_check): Adjust to allow %q. + * NEWS: Mention the new feature. + +2016-11-07 Pádraig Brady <P@draigBrady.com> + + all: update gnulib submodule to latest + Incorporating these coreutils specific changes: + backupfile: initialize default suffix within the implementation + strftime,strptime: support %q to represent the quarter + + Also sync these copies with gnulib: + * bootstrap: Now supports AIX. + * gnulib: Update to the latest. + * tests/init.sh: dash(1) is now disabled. + +2016-11-05 Pádraig Brady <P@draigBrady.com> + + doc: clarify in texinfo that cut doesn't reorder fields + * doc/coreutils.texi (cut invocation): Clarify the more + sophisticated field processing supported by awk(1). + Fixes http://bugs.gnu.org/24881 + + stat: make --format=%N honor the QUOTING_STYLE env var + * doc/coreutils.texi (stat invocation): Describe the + QUOTING_STYLE values now supported. + * src/stat.c (getenv_quoting_style): A new function called + from main, that sets the default quoting style for quotearg. + (main): Call getenv_quoting_style() when %N specified. + * tests/misc/stat-fmt.sh: Add a test case. + * NEWS: Mention the improvement. + Fixes http://bugs.gnu.org/23422 + + doc: improve the --help description of ls -N + * src/ls.c (usage): The existing description was inaccurate + as -N does not directly impact whether control characters + are displayed or not. + +2016-11-04 Pádraig Brady <P@draigBrady.com> + + dd: warn about counts specified with confusing 0x prefix + * src/dd.c (parse_integer): Suggest to use "00x" instead of "0x", + which is significant for the "count", "seek", and "skip" operands. + * tests/dd/misc.sh: Add a test case. + Fixes http://bugs.gnu.org/24874 + +2016-10-26 Pádraig Brady <P@draigBrady.com> + + md5sum,sha*sum: fix --ignore-missing with checksums starting with 00 + * NEWS: Mention the fix. + * src/md5sum.c (digest_file): Add a new MISSING parameter to + return whether the file was missing, separately from the digest. + * tests/misc/md5sum.pl: Add a test case. + Fixes http://bugs.gnu.org/24795 + +2016-10-22 Bishop Bettini <bishop.bettini@gmail.com> + + doc: fix typo in stdbuf man page + * man/stdbuf.x: Correct spelling of immediately. + Fixes http://bugs.gnu.org/24763 + +2016-10-16 Jim Meyering <meyering@fb.com> + + maint: we use die; remove now-unnecessary uses of abort + * src/expr.c (integer_overflow): Remove an abort-after-die. + * src/paste.c (write_error): Likewise. + * src/sort.c (badfieldspec): Likewise. + * src/tr.c (string2_extend): Likewise. Also remove a few + break statements, each after an abort. + +2016-10-16 Pádraig Brady <P@draigBrady.com> + + all: use die() rather than error(EXIT_FAILURE) + die() has the advantage of being apparent to the compiler + that it doesn't return, which will avoid warnings in some cases, + and possibly generate better code. + * cfg.mk (sc_die_EXIT_FAILURE): A new syntax check rule to + catch any new uses of error (CONSTANT, ...); + +2016-10-16 Jim Meyering <meyering@fb.com> + + build: also distribute new file, src/die.h + * src/local.mk (noinst_HEADERS): Add die.h. + +2016-10-15 Jim Meyering <meyering@fb.com> + + build: add die.h; avoid new warnings from GCC 7 + * src/die.h (die): New file/function from grep. + Note: we expect this file to migrate to gnulib. + * src/csplit.c: Include die.h. + (check_format_conv_type): Use die in place of error-nonzero;break; + * src/install.c (strip): Likewise. + * src/nl.c (proc_text): Likewise. This also suppresses a new warning + from GCC 7's -Werror=strict-overflow. + * src/tail.c (parse_options): Likewise. + * src/basename.c (main): Adjust "fall through" comment + so that GCC 7's -Wimplicit-fallthrough honors it. + * src/cp.c (main): Add a "fall through" comment. + * src/ls.c (gobble_file): Likewise. + (get_funky_string): Adjust a "fall through" comment so it is + recognized. + * cfg.mk (exclude_file_name_regexp--sc_system_h_headers): Add die.h + to this list of exempt src/*.h files. + + maint: pr: avoid new GCC 7 warning + * src/pr.c (main): Avoid this warning from GCC 7: + src/pr.c:1119:6: error: assuming signed overflow does not occur when \ + simplifying conditional to constant [-Werror=strict-overflow] + if (n_files == 0) + + gnulib: update to latest and adapt printf-quote.sh test + * .gitignore: Add /lib/limits.h. + * tests/misc/printf-quote.sh: Reflect that a single quote is now + rendered as "'", rather than as ''\'''. + +2016-10-04 Pádraig Brady <P@draigBrady.com> + + rm: disallow --n alias for --no-preserve-root + * src/rm.c (main): Ensure the full --no-preserve-root + option is specified, rather than allowing --n etc. + * tests/rm/r-root.sh: Add a test case. + * NEWS: Mention the change in behavior. + + Improved by Jim Meyering. + Fixes http://bugs.gnu.org/24604 + +2016-09-28 Pádraig Brady <P@draigBrady.com> + + tail: -F now always processes initially untailable files + which was not the case when inotify was not available. + + * src/tail.c (any_live_files): Simplify, since the IGNORE + flag is now only set when a file should be ignored indefinitely. + (recheck): Only output the "giving up on name" message + when that's actually the case. Only set the IGNORE flag + when ignoring a file indefinitely. + (tail_file): Likewise. + * tests/tail-2/retry.sh: Add a test case. Also run + all existing test cases with and without inotify. + NEWS: Mention the fix. + THANKS.in: Add the reporter. + Fixes http://bugs.gnu.org/24495 which was detected + using Symbolic Execution techniques developed in + the course of the SYMBIOSYS research project at + COMSYS, RWTH Aachen University. + +2016-09-22 Jim Meyering <meyering@fb.com> + + who: avoid new warning from upcoming gcc-7 + * src/who.c (idle_string): This function would fail to compile + with -Werror and today's built-from-git gcc due to this warning: + src/who.c: In function 'print_user': + src/who.c:201:36: error: may write format character ':' at offset 4 \ + past the end of the destination [-Werror=format-length=] + sprintf (idle_hhmm, "%02d:%02d", + ^~~~~ + The fix is to use an assertion to inform gcc of the existing + invariant that guarantees the number of hours is less than 24. + +2016-09-19 Paul Eggert <eggert@cs.ucla.edu> + + ls: fix %%b format and precompute more + The old code mishandled --time-spec='+%%b', as it misinterpreted + the '%b' as being the month abbreviation. Also, it mishandled + the extremely unlikely case of a month abbreviation containing '%'. + The performance part of this patch sped up 'ls' by about 1% on my + little benchmark of 'ls -lR' on the source directory in the + en_US.UTF-8 locale (Fedora 24 x86-64). + * NEWS: Document the bug fix. + * src/ls.c (first_percent_b, abformat_init): New static functions. + (ABFORMAT_SIZE): New constant. + (use_abformat): New static var. + (abmon, required_mon_width): Remove these static vars. + (abmon_init): Now accepts a pointer to abmon, and returns a boolean. + All callers changed. Reject month abbrs containing '%', as these + would mess up strftime. Simplify mbsalign result checking, + since (size_t) -1 exceeds ABFORMAT_SIZE. + (abformat_init, align_nstrftime): Precompute all 24 formats at + startup, rather than computing a format for each time stamp. + (decode_switches): Call abformat_init instead of abmon_init. + (align_nstrftime): Accept recentness bool instead of format. + All callers changed. + * tests/misc/time-style.sh: Test for format with '%%b'. + +2016-09-11 George Burgess IV <gbiv@chromium.org> + + pinky,who: remove redeclarations of ttyname + Given that `ttyname` is already conditionally declared in src/system.h, + other declarations are redundant and problematic for example in ChromeOS + which has a new FORTIFY implementation that, as an artifact of how it's + implemented, causes the compiler to complain if certain standard library + functions are redeclared without special compiler-specific attributes. + + * src/pinky.c: Remove declaration (which was unused anyway). + * src/who.c: Remove declaration. + * src/system.h (getlogin, getuid, geteuid, getgrgid, getpwuid, ttyname): + Add the parameter type to the declarations to avoid warnings when these + backup declarations are used. + +2016-09-10 Jim Meyering <meyering@fb.com> + + gnulib: update to latest, for getprogname fixes + Compiling in gnulib-tests/ would fail on some platforms + due to a missing lib/assert.h. Reported by Assaf Gordon in + https://lists.gnu.org/archive/html/coreutils/2016-09/msg00016.html + +2016-09-09 Paul Eggert <eggert@cs.ucla.edu> + + cp: use FICLONE instead of BTRFS_IOC_CLONE + This doesn't affect the generated code on my system; it's merely + a cleaner way to use the recently-introduced Linux-specific API. + * m4/jm-macros.m4 (gl_CHECK_ALL_HEADERS): Check for linux/fs.h. + * src/copy.c: Include <linux.fs.h> if available. + (FICLONE) [__linux__]: Define if not already defined. + (clone_file): Use FICLONE instead of the older BTRFS_IOC_CLONE, + as this ioctl is no longer btrfs-specific. + +2016-09-08 Assaf Gordon <assafgordon@gmail.com> + + date: add '--debug' option + Usage example: + date --debug -d 'now + 3 days' + + Print parsing and debugging information to stderr when using date's + -d/--date option. + See: http://lists.gnu.org/archive/html/coreutils/2016-01/msg00076.html + + * src/date.c (main): Add '--debug' option, enable debugging + in gnulib's parse-datetime.y module. + * tests/misc/date.pl: Repeat tests with '--debug' enable, ensure + no regression. + * tests/misc/date-debug.sh: Test output of '--debug' option. + * tests/local.mk: Add above test. + * NEWS: Mention new option. + * doc/coreutils.texi: Likewise. + +2016-09-08 Paul Eggert <eggert@cs.ucla.edu> + + sort: port to strict C + valgrind + * bootstrap.conf (gnulib_modules): Add flexmember. + * src/sort.c: Include flexmember.h. + (struct tempnode): Make the last member flexible. + (create_temp_file): Port to strict C11/C99 rules for + allocation alignment with flexible array members. + + build: update gnulib submodule to latest + +2016-09-07 Pádraig Brady <P@draigBrady.com> + + factor: reinstate immediate output with interactive use + * src/factor.c (lbuf_putc): Only buffer more than a line + when not using the tool interactively. + * NEWS: Mention the bug fix. + Fixes http://pad.lv/1620139 + +2016-09-07 Kamil Dudka <kdudka@redhat.com> + + ls: allow interruption when reading slow directories + Postpone installation of signal handlers until they're needed. + That is right before the first escape sequence is printed. + + * src/ls.c (signal_setup): A new function refactored from main() + to set and restore signal handlers. + (main): Move signal handler setup to put_indicator() + so that the default signal handling is untouched as long as possible. + Adjusted condition for restoring signal handlers to reflect the change. + (put_indicator): Install signal handlers if called for the very first + time. It uses the same code that was in main() prior to this commit. + * NEWS: Mention the improvement. + + See https://bugzilla.redhat.com/1365933 + Fixes http://bugs.gnu.org/24232 + +2016-09-01 Pádraig Brady <P@draigBrady.com> + + doc: fix typo in date example + * doc/coreutils.texi (date invocation): Add a missing quotation mark. + Fixes http://bugs.gnu.org/24349 + +2016-08-31 Jim Meyering <meyering@fb.com> + + dircolors: recognize .zst and .tzst suffixes + * src/dircolors.hin: Add .zst and .tzst suffixes for the + Zstandard/zstd compression tools. See http://zStd.net and + https://code.facebook.com/posts/1658392934479273/ + +2016-08-30 Jim Meyering <meyering@fb.com> + + maint: tr: tweak/make-consistent a pair of loop indices + * src/tr.c (unquote): Use indices of type "unsigned int", rather + than a mix or "size_t" and "int", presuming that no command-line- + specified string will have length longer than UINT_MAX. + + tr: move decls "down" + +2016-08-29 Jim Meyering <meyering@fb.com> + + ptx: avoid new warning/error from upcoming gcc-7.x + * src/ptx.c (fix_output_parameters): Switch to an unsigned type that + matches the OCCURS.file_index type. This avoids the following error + from gcc-7.0.0 20160829 (experimental): + src/ptx.c:1220:14: error: assuming signed overflow does not occur \ + when simplifying conditional to constant [-Werror=strict-overflow] + if (file_index > 0) + +2016-08-18 Pádraig Brady <P@draigBrady.com> + + cp: with --parents --no-preserve=mode don't copy dir perms + * src/cp.c (make_dir_parents_private): Use default permissions for + created directories when --no-preserve=mode is specified. + * tests/cp/cp-parents.sh: Add a test case. + * NEWS: Mention the fix. + Fixes http://bugs.gnu.org/24251 + + doc: fix ambiguous multiplier info in dd man page + * src/dd.c (usage): Add a comma which is significant for + the rewrapping done in man pages. + +2016-08-09 Assaf Gordon <assafgordon@gmail.com> + + maint: refactor common expand(1) and unexpand(1) code + * src/expand.c, src/unexpand.c: Move global variables from here... + * src/expand-common.h, src/expand-common.c: ... to here. + * src/expand.c, src/unexpand.c: (parse_tab_stops, validate_tab_stops, + next_file): Move identical functions to new module. + (add_tab_stop): Move to new module, including additional code from + 'unexpand' (keeping max_column_width) which will have no effect in when + used in 'expand'. Refactor common next-column calculation code + into a new function 'get_next_tab_column'. + * src/local.mk: (src_expand_SOURCES, src_unexpand_SOURCES): Add + 'expand-common.c'; (noinst_HEADERS): Add 'expand-common.h'. + * po/POTFILES.in: Add 'expand-common.c'. + * tests/misc/expand.pl: Add more tests. + * tests/misc/unexpand.pl: Likewise. + * TODO: Move conclusions to above test after investigation. + +2016-08-03 Philipp Thomas <pth@suse.de> + + df: improve performance with many mount points + Use hash table for seaching in filter_mount_list() and get_dev() + + This improves performance for 20K mount entries from: + real 0m1.731s + user 0m0.532s + sys 0m1.188s + to: + real 0m1.066s + user 0m0.028s + sys 0m1.032s + + * src/df.c (devlist_table): Define hash table. + (devlist_hash): Add hash function. + (devlist_compare): Add hash comparison function. + (devlist_for_dev): Add lookup function. + (devlist_free): Add cleanup function. + (filter_mount_list): Use the above hash table. + While at it, rename the variable 'devlist' to 'seen_dev' for + better readability. + (me_for_dev): Use the above lookup function. + NEWS: Mention the improvement. + THANKS.in: Remove the committer; add original submitter Josef Cejka. + +2016-07-28 Pádraig Brady <P@draigBrady.com> + + doc: revert recent date(1) synopsis change + * src/date.c (usage): This was thought to introduce other ambiguities, + and was inconsistent with the format presented in the touch(1) docs. + * doc/coreutils.texi (date invocation): Likewise. + See http://bugs.gnu.org/24077 + +2016-07-27 Bernhard Voelker <mail@bernhard-voelker.de> + + maint: pacify GCC 6 with -Wnull-dereference + src/id.c:249:29: error: potential null pointer dereference \ + [-Werror=null-dereference] + pw_name = xstrdup (pwd->pw_name); + ~~~^~~~~~~~~ + src/whoami.c:89:11: error: potential null pointer dereference \ + [-Werror=null-dereference] + puts (pw->pw_name); + ~~^~~~~~~~~ + + * src/id.c (main): Explicitly exit with EXIT_FAILURE after an eror to + help gcc-6 to detect that the dereferenced pointer is valid. + * src/whoami.c (main): Likewise. + +2016-07-27 Bernhard Voelker <mail@bernhard-voelker.de> + + build: update gnulib submodule to latest + Mainly for + * 77d36b5 obstack: pacify GCC 6 with -Wnull-dereference + +2016-07-27 Jim Meyering <meyering@fb.com> + + maint: skip a check when en_US.UTF-8 collation rules are broken + * cfg.mk (sc_THANKS_in_sorted): This check would fail on systems + for which "." is not ignored. Add a quick sort-based check for + that error, and skip the check on any broken system. + +2016-07-27 Pádraig Brady <P@draigBrady.com> + + doc: make date(1) synopsis consistent with output +FORMAT + * src/date.c (usage): Make the characters used to summarize + the input format, match the output +FORMAT characters. + * doc/coreutils.texi (date invocation): Likewise. + Fixes http://bugs.gnu.org/24077 + +2016-07-27 Bernhard Voelker <mail@bernhard-voelker.de> + + maint: fix dependency of man/arch.1 + The following is a reproducer for the wrong dependency: + + $ ./configure --enable-install-program=arch + $ make + $ rm -f src/arch man/arch.1 + $ make man/arch.1 + GEN man/arch.1 + help2man: can't get `--help' info from man/arch.td/arch + Try `--no-discard-stderr' if option outputs to stderr + Makefile:14378: recipe for target 'man/arch.1' failed + make: *** [man/arch.1] Error 127 + + * man/local.mk (man/arch.1): Change to depend on src/arch rather than + src/uname: while the arch binary depends on uname.c and uname-arch.c, + its man page depends on the arch binary. + + Reported downstream by Rodrigues Goldwyn <rgoldwyn@suse.com> in + https://build.opensuse.org/request/show/415172 + +2016-07-18 Kamil Dudka <kdudka@redhat.com> + + sort: with -h, disallow thousands separator between number and unit + * src/sort.c (traverse_raw_number): Accept thousands separator only + if it is immediately followed by a digit. + * tests/misc/sort-h-thousands-sep.sh: Cover the fix for this bug. + + Suggested by Pádraig Brady in http://bugs.gnu.org/24015 + +2016-07-18 Kamil Dudka <kdudka@redhat.com> + + sort: make -h work with -k and blank used as thousands separator + * src/sort.c (traverse_raw_number): Allow to skip only one occurrence + of thousands_sep to avoid finding the unit in the next column in case + thousands_sep matches as blank and is used as column delimiter. + * tests/misc/sort-h-thousands-sep.sh: Add regression test for this bug. + * tests/local.mk: Reference the test. + * NEWS: Mention the bug fix. + Reported at https://bugzilla.redhat.com/1355780 + Fixes http://bugs.gnu.org/24015 + + maint: sort.c: deduplicate code for traversing numbers + * src/sort.c (traverse_raw_number): New function for traversing numbers. + (find_unit_order): Use traverse_raw_number() instead of open-coding it. + (debug_key): Likewise. + +2016-07-08 Kamil Dudka <kdudka@redhat.com> + + install: with -Z, set default SELinux context for created directories + * doc/coreutils.texi (install invocation): Update -Z documentation. + * src/install.c (make_ancestor): Set default security context before + calling mkdir() if the -Z option is given. + (process_dir): Call restorecon() on the destination directory if the + -Z option is given. + (usage): Update -Z documentation. + * tests/install/install-Z-selinux.sh: A new test for 'install -Z -D' + and 'install -Z -d' based on tests/mkdir/restorecon.sh. + * tests/local.mk: Reference the test. + * NEWS: Mention the improvement. + Reported at https://bugzilla.redhat.com/1339135 + Fixes http://bugs.gnu.org/23868 + +2016-07-06 Pádraig Brady <P@draigBrady.com> + + tests: avoid false failure on 32 bit in readdir() test + * tests/rm/rm-readdir-fail.sh: Since we use the returned dirent + from the readdir wrapper it must be the correct type and not + just cast. Therefore setup so that we only have to define a + wrapper for readdir(), which works appropriately on 32 and 64 bit. + Issue reported by Bernhard Voelker, where rm was seen to invoke + rmdir() on invalid file names. + +2016-07-02 Assaf Gordon <assafgordon@gmail.com> + + tests: improve recent seq EPIPE test + Follow-up to commit c92585b1: improve epipe test script, with + suggestions from Bernhard Voelker and Pádraig Brady. + see: http://lists.gnu.org/archive/html/coreutils/2016-04/msg00067.html . + + * tests/misc/seq-epipe.sh: Avoid too many subshells, + stricter validation of errors and output from seq, + skip if trapping SIGPIPE is not supported. + +2016-06-29 Pádraig Brady <P@draigBrady.com> + + stty: fix sane setting of susp to ^z on Solaris + * src/stty.c: Disable setting of "swtch" to ^z as that + conflicts with and disables using ^z as "susp". + * NEWS: Mention the bug fix. + Reported and tested by Rich Burridge at: + http://bugs.gnu.org/23866 + +2016-06-26 Peter Benie <pjb1008@cam.ac.uk> + + tests: verify that fts diagnoses readdir() failures + * tests/rm/rm-readdir-fail.sh: A new test to simulate readdir() + failing immediately or after returning a few entries, and verifying + that rm does the appropriate thing. + This was initially reported at: + http://bugzilla.opensuse.org/show_bug.cgi?id=984910 + where it was mentioned that readdir() may fail + when an NFS server has a poor readdir cookie implementation. + +2016-06-26 Pádraig Brady <P@draigBrady.com> + + all: update gnulib submodule and tests/init.sh to latest + * gnulib: Update to latest. + * NEWS: Specifically mention the fts readdir() fix + and reindent to standard indentation. + * tests/init.sh: Update from gnulib. + +2016-06-25 Paul Eggert <eggert@cs.ucla.edu> + + maint: simplify partial writes etc. in 'yes' + * src/yes.c: Include full-write.h. + (main): Use full_write, not write, to simplify handling of partial + writes. Don't bother using stdio to output data; just use + full_write with a buffer as large as needed. Reuse operand + strings if possible, and if the buffer would otherwise be large. + +2016-06-24 Pádraig Brady <P@draigBrady.com> + + yes: handle short writes + * src/yes.c (main): Loop over the write buffer to + handle the case where write may write less than requested. + * NEWS: Mention the bug fix. + Reported by Paul Eggert. + + yes: fix copy and paste issue with previous commit + * src/yes.c (main): Output 'y' not '-'. + * tests/misc/yes.sh: Add a test for default output. + +2016-06-23 Paul Eggert <eggert@cs.ucla.edu> + + maint: work even if argc == INT_MAX + GCC 7 warned about undefined behavior in this unlikely case. + Problem reported by Jim Meyering in: http://bugs.gnu.org/23825 + * src/md5sum.c (main): + * src/paste.c (main): + * src/yes.c (main): + Avoid undefined behavior when argc == INT_MAX. + +2016-06-01 Pádraig Brady <P@draigBrady.com> + + doc: clarify sort --key handling of default field separators + * doc/coreutils.texi (sort invocation): Mention in the summary + dicussion that --key is used to specify fields. Give a summary + in the --key description, of the most common use case of specifying + a field, and that by default those fields include the blank separators + at the start of each field in the comparisons. + +2016-06-01 Assaf Gordon <assafgordon@gmail.com> + + sort: modify 'leading spaces' debug warning scenarios + Print warning regardless of locale, avoid warning if key is zero width. + Problem reported by Karl Berry in http://bugs.gnu.org/23665 . + + * src/sort.c: (key_warnings): change conditions for 'leading spaces' + warning. + * tests/misc/sort-debug-warn.sh: adjust tests accordingly. + +2016-06-01 Assaf Gordon <assafgordon@gmail.com> + + tests: sort-debug-warn: add progress information lines + Easier troubleshooting of individual 'sort --debug' messages. + Discussed in http://bugs.gnu.org/23665 . + + * tests/misc/sort-debug-warn.sh: add progress number before each sort + invocation. + +2016-05-15 Pádraig Brady <P@draigBrady.com> + + dircolors: output colors for any $TERM matching *color* + * src/dircolors.hin: Reduce the list by replacing all specific + mentions of "color" with the pattern "*color*". This will also + cater for other entries like "konsole-256color". + Fixes http://bugs.gnu.org/23542 + +2016-05-14 KOBAYASHI Takashi <a1415tk@aiit.ac.jp> + + nl: reset numbering for each section + * NEWS: Mention the bug fix. + * src/nl.c (proc_body, proc_footer): Reset numbering here too. + * doc/coreutils.texi (nl invocation): Adjust for behavior change. + * tests/misc/nl.sh: Add a test case. + +2016-05-12 Pádraig Brady <P@draigBrady.com> + + stat,tail: add support for the SMB2 remote file system + * stc/stat.c (human_fstype): Add file system ID definition, + and use "smb2" as the name. + * NEWS (Improvements): Mention the change. + Fixes http://bugs.gnu.org/23516 + +2016-05-04 Jim Meyering <meyering@fb.com> + + maint: avoid new warning from gcc (GCC) 7.0.0 20160503 (experimental) + * src/id.c (main): When configured with --enable-gcc-warnings and using + the very latest gcc built from git, building would fail with this: + src/id.c:200:8: error: assuming signed overflow does not occur when \ + simplifying conditional to constant [-Werror=strict-overflow] + bool default_format = (just_user + just_group + just_group_list + ^~~~~~~~~~~~~~ + Rewrite to use bool-appropriate operators. + +2016-04-26 Pádraig Brady <P@draigBrady.com> + + tests: avoid false failure when df lists no root file system + * tests/df/skip-duplicates.sh: Skip the test when there is no + '/' entry listed by df, which was seen in certain chroot setups. + +2016-04-24 Assaf Gordon <assafgordon@gmail.com> + + seq: detect and report I/O errors immediately + Ensure I/O errors are detected (and terminate seq), preventing seq + from infloop (or running for long time with a large + range) upon write errors or ignored SIGPIPE. Examples: + + seq 1 inf > /dev/full (seq_fast) + seq 1.1 0.1 inf >/dev/full (print_numbers) + + * src/seq.c (io_error): A new function to diagnose appropriate + stdio errors and exit the program with failure status. + (seq_fast, print_numbers): Explicitly check for write errors + and terminate the program with diagnostic. + * tests/misc/seq-io-errors.sh: Test error detection with /dev/full. + * tests/misc/seq-epipe.sh: Test error detection with broken pipes. + * tests/local.mk: Add new tests. + * NEWS: Mention the fix. + +2016-04-22 Pádraig Brady <P@draigBrady.com> + + stat,tail: add support for Windows Subsystem for Linux + * src/stat.c (human_fstype): Add file system ID definition, + and use "wslfs" as the name. + * NEWS (Improvements): Mention the change. + Fixes http://bugs.gnu.org/23273 + +2016-04-21 Pádraig Brady <P@draigBrady.com> + + yes: avoid redundant diagnostics on write error + * src/yes.c (main): For large inputs only write a single + diagnostic for write errors. + * tests/misc/yes.sh: Test when /dev/full is available. + + sleep,timeout: support overflowing floating point values + * src/sleep.c (main): Allow ERANGE since we allow "inf" values. + * src/timeout.c (parse_duration): Likewise. + * tests/misc/sleep.sh: New file. Tests for sleep(1). + * tests/misc/timeout-parameters.sh: Add case for newly allowed + $LDBL_MAX. Also use returns_ throughout the file. Also avoid + small timeout values which might give false failures under load. + + tests: avoid potential overflows with `expr` + * cfg.mk (sc_prohibit_expr_unsigned): expr uses intmax_t internally + when GMP is not available, so flag any uses of unsigned limits. + * tests/misc/timeout-parameters.sh: Remove the overflow related + to UINT_MAX as it's handled by the following case. Change the + following case from 99... to $TIME_T_OFLOW to be more expressive + in what it's actually testing. Directly check that commands succeed, + rather than inspecting $? afterwards. + * tests/dd/skip-seek-past-dev.sh: Guard against large device sizes. + * tests/id/setgid.sh: Protect: Guard against large group IDs. + * tests/misc/cut-huge-range.sh: Tweak comment to avoid syntax check. + It's tempting to simplify to just skip the test if expr fails, + but SIZE_MAX > INTMAX_MAX is the common case. + +2016-04-20 Pádraig Brady <P@draigBrady.com> + + tests: fix recent false failure due to a race + * tests/cp/parent-perm-race.sh: This new race introduced in + commit v8.25-5-g632eda5 is quite hard to hit, but is due to + `ls > fifo` doing write()/close()/exit() once `cp` has + open() the source fifo. Then the subsequent comparison of the + destination file may fail due to the file being missing or empty. + Previously `ls` generated output that was independent of `cp`. + Now we must wait for `cp` to finish before inspecting the + destination file that it wrote. + +2016-04-18 Bernhard Voelker <mail@bernhard-voelker.de> + + tests: let mkdir/p-v.sh fail when compare fails + * tests/mkdir/p-v.sh: Set fail=1 when compare fails: the latter only + sets a non-Zero return code; evaluating that is up to the caller. + +2016-04-14 Bernhard Voelker <mail@bernhard-voelker.de> + + seq: do not allow NaN arguments + * src/seq.c (isnan): Define macro. + (scan_arg): Add check if the given argument is NaN, and exit with + a proper error diagnostic in such a case. + (usage): Document it. + * tests/misc/seq.pl: Add tests. + * doc/coreutils.texi (seq invocation): Document the change. + * NEWS (Changes in behavior): Mention the change. + + seq: do not allow 0 as increment value + * src/seq.c (main): Exit with an error diagnostic when the given + step value is Zero. + (usage): Document it. + * doc/coreutils.texi (seq invocation): Likewise. + * tests/misc/seq.pl: Add tests. + * NEWS (Changes in behavior): Mention the change. + Reported by Маренков Евгений in: + http://bugs.gnu.org/23110 + +2016-04-14 Yigal Korman <yigal@plexistor.com> + + stat,tail: add support for M1FS + * src/stat.c (human_fstype): Add file system ID definition. + * NEWS (Improvements): Mention the change, moving the previously added + "prl_fs" change note from "Changes in behavior" to here. + Fixes http://bugs.gnu.org/23283 + +2016-03-31 Pádraig Brady <P@draigBrady.com> + + stat: report type for "prl_fs" file systems + * src/stat.c (human_fstype): Identify the parallels file system. + Also tag as remote so that tail(1) doesn't use inotify, which + fails to detect changes made outside a VM. + Fixes http://bugs.gnu.org/23143 + +2016-03-17 Paul Eggert <eggert@cs.ucla.edu> + + date ls pr: fix time zone abbrs on SysV platforms + The problematic code computed a struct tm in one time zone, and + then printed it or converted it to a string in another. To be + portable the same time zone needs to be used for both operations. + On GNU platforms this is not an issue, but incorrect output can be + generated on System V style platforms like AIX where time zone + abbreviations are available only in the 'tzname' global variable. + Problem reported by Assaf Gordon in: http://bugs.gnu.org/23035 + * NEWS: Document the bug. + * src/date.c (show_date): + * src/ls.c (long_time_expected_width, print_long_format): + * src/pr.c (init_header): + * src/stat.c (human_time): Use localtime_rz instead of localtime, + so that the time zone information is consistent for both localtime + and time-formatting functions like fprintftime and nstrftime. For + 'stat' this change is mostly just a code cleanup but it also + causes stat to also print nanoseconds when printing time stamps + that are out of localtime range, as this is more consistent with + what other programs do. For programs other than 'stat' this fixes + bugs with time zone formats that use %Z. + * src/du.c, src/pr.c (localtz): New static var. + (main): Initialize it. + * src/du.c (show_date): New time zone argument, so that localtime + and fprintftime use the same time zone information. All callers + changed. + * tests/misc/time-style.sh: New file. + * tests/local.mk (all_tests): Add it. + * tests/misc/date.pl: Test alphabetic time zone abbreviations. + +2016-03-15 Jim Meyering <meyering@fb.com> + + maint: remove gl/lib/reg*.c.diff; no longer needed + * gl/lib/regcomp.c.diff: Remove file, now that gnulib's + regcomp.c compiles regex.c with -Wno-unused-parameter. + * gl/lib/regex_internal.h.diff: Likewise. + * gl/lib/regex_internal.c.diff: This file induced a change to ensure + that the "Idx" type was unsigned and to remove a few "VAR < 0" + comparisons. These days, it is probably fine to stay in sync with + gnulib/glibc's copies + of these files, so remove these patches, too. + * gl/lib/regexec.c.diff: Likewise. + Prompted by a report by Assaf Gordon and a suggestion from Paul Eggert. + +2016-03-09 Eric Blake <eblake@redhat.com> + + build: update gnulib submodule to latest + Mainly for: + *bdb72bc6 set-permissions: fix compilation on Cygwin + + * bootstrap: Sync with gnulib. + * gl/lib/regcomp.c.diff: Regenerate against latest gnulib. + +2016-03-07 Jim Meyering <meyering@fb.com> + + tests: avoid false-failure of split/filter.sh on XFS + * tests/split/filter.sh: Use OFF_T_MAX-1 rather than OFF_T_MAX + as the size of a test file, to avoid false failure on an XFS file + system (or any file system permitting a file of size OFF_T_MAX). + Reported as http://bugs.gnu.org/22931 + +2016-03-04 Eric Blake <eblake@redhat.com> + + test: Document that -a and -o are undesirable + POSIX recommends avoiding -a and -o, for good reason. + src/test.c (usage): Mention that inherent ambiguities exist with + binary -a and -o. + Problem reported by Martin Gebert in: http://bugs.gnu.org/22909 + +2016-02-23 Paul Eggert <eggert@cs.ucla.edu> + + all: be less strict about usage if POSIX 2008 + sort, tail, and uniq now support traditional usage like 'sort +2' + and 'tail +10' on systems conforming to POSIX 1003.1-2008 and later. + * NEWS: Document this. + * doc/coreutils.texi (Standards conformance, tail invocation) + (sort invocation, uniq invocation, touch invocation): + Document new behavior, or behavior's dependence on POSIX 1003.1-2001. + * src/sort.c (struct keyfield.traditional_used): + Rename from obsolete_used, since implementations are now allowed + to support it. All uses changed. + (main): Allow traditional usage if _POSIX2_VERSION is 200809. + * src/tail.c (parse_obsolete_option): Distinguish between + traditional usage (which POSIX 2008 and later allows) and obsolete + (which it still does not). + * src/uniq.c (strict_posix2): New function. + (main): Allow traditional usage if _POSIX2_VERSION is 200809. + * tests/misc/tail.pl: Test for new behavior. + + doc: document sort -o F F danger + Problem reported by Yanyan Jiang 蒋炎岩 in: http://bugs.gnu.org/22769 + * doc/coreutils.texi (sort invocation): + Mention possibility of 'sort -o F F' data loss during crashes. + +2016-02-16 Daniel Lockyer <thisisdaniellockyer@gmail.com> + + date: free timezone variable to avoid valgrind warning + * src/date.c (main): Free TZ variable to pacify valgrind, guarded + by IF_LINT. + +2016-02-16 Pádraig Brady <P@draigBrady.com> + + split: adjust recent --number changes + * src/split.c (lines_rr): Reinstate the conditional + setting of the WROTE boolean, as otherwise split -n r/1 would + consume all input when all --filter commands are stopped. + There was a test in place to check for this, but + it was incorrect as detailed below. + (input_file_size): Immediately disallow --number with + non seekable inputs, as such an invocation is not currently + generally supported and will fail as the data overflows + the internal buffer. + * tests/split/l-chunk.sh: Adjust to again disallow -n /dev/zero. + Also change all '&& fail=1' checks to use the 'returns_ 1' form. + * tests/split/filter.sh: Change the no longer supported /dev/zero + case to a regular $OFF_T_MAX file (supported on XFS for example). + Also fix the timeout(1) commands so they're not subject to + pipefail issues. + +2016-02-15 Göran Uddeborg <goeran@uddeborg.se> + + stty: fix translated --help so the gettext header is not printed + * src/stty.c (usage): Remove an erroneous call to translate an + empty string, added in commit v8.23-112-g564f84a, which results + in the gettext header being printed for translated languages. + * THANKS.in: Remove the now committer. + * NEWS: Mention the bug fix. + +2016-02-12 Paul Eggert <eggert@cs.ucla.edu> + + tests: don't wait forever on GNU/Hurd + * tests/cp/parent-perm-race.sh: Add timeouts so that the test does + not wait forever on GNU/Hurd. This does not fix the underlying + bug but at least lets the tests make progress. + Problem reported by Nelson H.F. Beebe in: http://bugs.gnu.org/22624 + Also, check that 'cp' actually copies the data; this is a better + test anyway, and simplifies the test code. + Also, avoid unlikely race if 'pid' is set in the environment. + + split: fix problems with /dev/zero + Problem reported by Nelson H.F. Beebe in: http://bugs.gnu.org/22624 + Other problems also fixed: basically, the code got confused because + GNU/Linux reports that /dev/zero has size zero. + * src/split.c (input_file_size): Now takes struct stat *, not just + size. Always store the first buffer. All callers changed. Treat + /dev/zero as an infinitely-large file, both on GNU/Linux where + fstat and lseek say its size is zero, and on GNU/Hurd where they + say the size is OFF_T_MAX. + (cwrite): Return true on success. + (bytes_split): Don't try to read past EOF, and stop if a write fails. + (lines_rr): Omit stray check for ignorable errno. + (main): Get file size only when n_units > 1, since that's the only + time it is needed. Defer most of the work to input_file_size. + * tests/split/l-chunk.sh: Adjust tests to match new behavior + on oddball inputs. + +2016-01-30 Vincent Lefevre <vincent@vinc17.net> + + doc: fix the --iso-8601 example in date --help + * src/date.c (usage): The colon is used in the timezone offset + since commit v8.24-64-g17bbf6c. + * THANKS.in: Remove committer. + Fixes http://bugs.gnu.org/22491 + +2016-01-25 Pádraig Brady <P@draigBrady.com> + + build: avoid dynamic linking issue on Solaris sparc + Solaris Studio 12 on sparc (not x86) will not remove + unused functions, thus leaving a reference to an + undefined program_name symbol from emit_try_help(). + + * src/system.h (emit_try_help): Change from an inline function + to a macro, so that the inline function is not actually + defined in libstdbuf.c. + Fixes http://bugs.gnu.org/22430 + +2016-01-20 Pádraig Brady <P@draigBrady.com> + + maint: post-release administrivia + * NEWS: Add header line for next release. + * .prev-version: Record previous version. + * cfg.mk (old_NEWS_hash): Auto-update. + + version 8.25 + * NEWS: Record release date. + +2016-01-19 Pádraig Brady <P@draigBrady.com> + + tests: avoid false failure in tail inotify test + * tests/tail-2/wait.sh: Restrict inotify specific test portion + to local file systems and also not with ---disable-inotify specified. + Failure noticed on NFS. + + tests: avoid false failure due to remove() ignoring u-w on NFS + * tests/rm/rm1.sh: Also remove the group write bit which + was required on one NFS setup at least. Note u-w was + enough to deny file creation, g-w was also required to + deny file removal. + * tests/rm/cycle.sh: Likewise. + * tests/mv/perm-1.sh: Likewise. + + tests: avoid false failure in preserve-slink-time.sh on GPFS + * tests/cp/preserve-slink-time.sh: Add a delay between the + ln and the cp so that there is enough difference between + the timestamps so GPFS won't discard the update. + Reported by Assaf Gordon. + + tests: avoid false failure in shred-passes.sh + * tests/misc/shred-passes.sh: Specify an exact amount to shred, + to avoid running out of simulated random data on file systems + with a large st_blksize like GPFS for example. + Reported by Assaf Gordon. + +2016-01-19 Pádraig Brady <P@draigBrady.com> + + tail: disable inotify with only non existent files + tests/tail-2/F-headers.sh and test/tail-2/retry.sh fail on + on remote file systems due to tail going into inotify mode + due to not being able to determine the remoteness of the + non existent files. + + * src/tail.c (any_non_remote_file): A new function used + to disable inotify when there are no open files, as + we can't determine remoteness in that case. + * NEWS: Mention the bug fix. + +2016-01-18 Pádraig Brady <P@draigBrady.com> + + all: don't unconditionally use leaf optimization for NFS + * gnulib: Update to latest where the only change is to + not unconditionally enable leaf optimization for fts on NFS, + as it was seen to abort() with some NFS servers as per: + https://bugzilla.redhat.com/1299169 + This affects utilities that traverse directories like + cp, rm, chmod etc. + * NEWS: Adjust the improvement message to leave only XFS. + +2016-01-18 Assaf Gordon <assafgordon@gmail.com> + + tests: adjust memory limits in head-c.sh + * tests/misc/head-c.sh: Further increase the limit to 8MB over + the base test command. 5.1MB was seen as minimum extra needed + on FreeBSD 9.3 x86_64. + +2016-01-18 Pádraig Brady <P@draigBrady.com> + + tests: adjust delays to avoid false positives + * tests/rm/dangling-symlink.sh: The effective delay was only + 1.5s. So delay before the operation, and increase the iteration + count by 1 to increase the delay to 6.3s. This failure was + noticed once on a FreeBSD 10.2 x86_64 virtual machine. + * tests/dd/stats.sh: Remove quotes on sleep argument + to ensure arguments are accumulated appropriately. + * tests/du/move-dir-while-traversing.sh: sleep before operation, + to increase the effective delay from 1.6s to 3.2s. + * tests/tail-2/flush-initial.sh: Likewise. + * tests/tail-2/pipe-f2.sh: Sleep first so that the effective delay + matches the commented value. + + test: skip test rather than fail with Solaris 10 sed + * tests/rm/r-root.sh: This test was seen to ERROR due to + sed input not having a terminating '\n'. Therefore just skip + with diagnostics upon failure to adjust the error output with sed. + Reported by Assaf Gordon. + +2016-01-16 Pádraig Brady <P@draigBrady.com> + + tests: fix false failure with spaces in absolute $PWD + * tests/install/create-leading.sh: Ensure $PWD is quoted. + Reported by `make dist-check`. + +2016-01-16 Pádraig Brady <P@draigBrady.com> + + build: update gnulib submodule to latest + Mainly for: + + * dce117a sig2str: list all signals on FreeBSD >= 7 + * cff4b38 acl-permissions: port to USE_ACL==0 platforms + +2016-01-16 Pádraig Brady <P@draigBrady.com> + + tests: show mount list on failure for df tests + * init.cfg (dump_mount_list_): A new function to output the + system mount list. + * tests/df/df-symlink.sh: Call dump_mount_list_ upon failure. + * tests/df/over-mount-device.sh: Likewise. + * tests/df/problematic-chars.sh: Likewise. + * tests/df/skip-rootfs.sh: Likewise. + * tests/df/total-verify.sh: Likewise. + * tests/df/unreadable.sh: Likewise. + + tests: avoid false failure with BTRFS subvolumes + * tests/df/df-symlink.sh: Only check the symmetry of + the source <-> target lookup, when the source is only mounted once, + which isn't the case if '.' is a BTRFS subvolume for example. + Reported by Assaf Gordon on a default OpenSUSE 42.1 install. + + mv: consistently warn about multiply specified source dirs + * src/copy.c (copy internal): Remember directories irrespective + of their link count, because on some file systems like BTRFS, + directories always have a link count of 1. + +2016-01-15 Pádraig Brady <P@draigBrady.com> + + tests: remove a non portable localtime test + * tests/misc/date.pl: This test was dependent on perl + unconditionally calling the system localtime() as date(1) does. + However perl has its own configure checks in place to avoid buggy + localtime implementations. Therefore comment out this test + as a FIXME for now. This test was seen to fail on FreeBSD 10 + where localtime() returns nonsense values instead of failing + for arguments >= 2^56. + + tests: adjust memory limits in head-c.sh + * tests/misc/head-c.sh: Further increase the limit, to account + for the fact that head(1) needs at least 1.576MB over the base test + command on FreeBSD 10. 4MB should be enough headroom while + still providing over allocation protection. + Reported by Assaf Gordon. + + tests: simplify invalid signal determination for kill -l + * src/operand2sig.c (operand2sig): Add a detailed comment explaining + why we validate even very large shell exit status values. + * tests/misc/kill.sh: Add a test case for the ksh scheme. + Simplify the INVALID signal number determination which also avoids + a false failure on systems like FreeBSD 10 with incomplete + signal list (caused by inaccurate NSIG). + + tests: support older fallocate number formats + * tests/cp/fiemap-extents.sh: Support RHEL6 fallocate + which doesn't support IEC suffixes like "MiB" on numbers. + Also add some extra framework_failure_ protections. + Reported by Assaf Gordon. + + tests: avoid coredumps when determining memory limits + * init.cfg (get_min_ulimit_v_): Refactor ulimit call to... + (ulimit_supported_): ...here, and add calls to avoid coredumps. + +2016-01-14 Pádraig Brady <P@draigBrady.com> + + sort: with --debug, flag setlocale() failures on OpenBSD + Locale categories are not equivalent on OpenBSD, + and LC_COLLATE only supports "C" for example. + Now LC_ALL is supported to set multiple other categories + on OpenBSD, so setlocale(LC_ALL, "") returns a string + indicating which categories were updated and which ignored. + Therefore... + + * src/sort.c (main): ...Call setlocale(LC_COLLATE, "") + to explicitly check whether a specified LC_ALL or + LC_COLLATE environment variable value is supported + for the LC_COLLATE category. Also use !! to explicitly + convert to bool to support c89 systems where bool is an int, + and thus would get values > 1. + Reported by Assaf Gordon. + +2016-01-13 Pádraig Brady <P@draigBrady.com> + + maint: remove temporary doc/constants.texi-t during build + * doc/local.mk (constants.texi): Remove temp file. + + maint: fix old spelling mistakes in NEWS + * NEWS: s/descendent/descendant/; s/indiscriminite/indiscriminate/. + * cfg.mk (old_NEWS_hash): Update via `make update-NEWS-hash`. + + doc: suggest dd "sync" flag to maximize "nocache" effectiveness + doc/coreutils.texi (dd invocation): Add oflag=sync to the streaming + example. Also reference the "direct" flag. Mention this is only + a request to the system. + * src/dd.c (usage): Mention the "sync" flag along with "nocache". + Also mention that it's only a request to drop the cache. + * THANKS.in: Add reporter Francois Rigault. + + doc: mention the '0#' printf flags with stat %a + * src/stat.c (usage): Mention the '#' and '0' flags are useful with %a. + * doc/coreutils.texi (stat invocation): Likewise. Also give an example + printing unambiguous octal output. + Reported at http://bugs.debian.org/810539 + +2016-01-13 Pádraig Brady <P@draigBrady.com> + + mv: fix data loss with repeated source dir and same destination + commit v8.23-31-g90aa291 failed to consider this case, + where the previous rename has failed, thus causing the + following to remove the specified directory: + + mv dir dir dir + + * src/copy.c (copy_internal): Assume this rename attempt has + succeeded, as a previous failure will already have been handled, + and we don't want to remove the source directory in this case. + * tests/cp/duplicate-sources.sh: Consolidate this test file to... + * tests/mv/dup-source.sh: ...here. Add test cases for same + source and dest. + * tests/local.mk: Remove the consolidated test. + * NEWS: Mention the bug fix. + + Reported at https://bugzilla.redhat.com/1297464 + +2016-01-13 Pádraig Brady <P@draigBrady.com> + + tests: include part of wc-files0.sh skipped by mistake + * tests/misc/wc-files0.sh: $fail is always set to 0, + so correct the test to include that part of the test case. + + wc: avoid ambiguous output with '\n' in file names + * src/wc.c (write_counts): Shell escape the file name + if it contains '\n' so only a single line per file is output. + * tests/misc/wc-files0.sh: Add a test case. + * NEWS: Mention the improvement. + +2016-01-13 Assaf Gordon <assafgordon@gmail.com> + + numfmt: add the -z,--zero-terminated option + * doc/coreutils.texi (numfmt invocation): Reference the description. + * src/numfmt.c: Parameterize '\n' references. + * tests/misc/numfmt.pl: Add tests for character and field processing. + * NEWS: Mention the new feature. + +2016-01-13 Pádraig Brady <P@draigBrady.com> + + paste: add the -z,--zero-terminated option + * doc/coreutils.texi (paste invocation): Reference -z description. + * src/paste.c (main): Parameterize the use of '\n'. + * tests/misc/paste.pl: Add test cases. + * NEWS: Mention the new feature. + + comm: support NUL --output-delimiter for consistency + * src/comm.c (main): Track the output delimiter length, + so that it can be adjusted to 1 for the NUL delimiter. + Also rename the global variable from "delimiter" to + "col_sep" so its use is more obvious, and to distinguish + from the recently added "delim" global variable. + * tests/misc/comm.pl: Adjust accordingly. + + comm: add the -z,--zero-terminated option + * doc/coreutils.texi (comm invocation): Reference option description. + * src/comm.c (main): Use readlinebuffer_delim() to support + a parameterized delimiter. + * tests/misc/comm.pl: Add test cases. + * NEWS: Mention the new feature. + + tac: support an empty (NUL) --separator + * doc/coreutils.texi (tac invocation): Mention the + NUL delineation with an empty --separator. + * src/tac.c (main): Allow an empty separator when -r not specified. + * tests/misc/tac.pl: Add test cases. + * NEWS: Mention the new feature. + Fixes http://bugs.gnu.org/8103 + + cut: add the -z,--zero-terminated option + * doc/coreutils.texi (cut invocation): Reference the description. + * src/cut.c: Parameterize '\n' references. + * tests/misc/cut.pl: Add tests for character and field processing. + * NEWS: Mention the new feature. + +2016-01-13 Richard Russon <rich@flatcap.org> + + head,tail: add the -z,--zero-terminated option + * doc/coreutils.texi: Reference the option description. + * src/head.c: Parameterize the delimiter character. + * src/tail.c: Likewise. + * tests/misc/head.pl: Add test case. + * tests/misc/tail.pl: Likewise. + * NEWS: Mention the new feature. + +2016-01-13 Pádraig Brady <P@draigBrady.com> + + join,sort,uniq: with -z, treat '\n' as a field separator + * NEWS: Mention the change in behavior. + * doc/coreutils.texi (newlineFieldSeparator): A new description, + referenced from ({join,sort,uniq} invocation). + * src/system.h (field_sep): A new inline function to determine + if a character is a field separator. + * src/join.c (usage): s/whitespace/blank/ to be more accurate + wrt which characters are field separators. + (xfields): s/isblank/field_sep/. + * src/sort.c (inittables): Likewise. + * src/uniq.c (find_field): Likewise. + * tests/misc/join.pl: Adjust -z test, and add a test/example + for processing the whole record with field processing. + * tests/misc/sort.pl: Add -z test cases, including case with '\n'. + * tests/misc/uniq.pl: Add -z -f test case with \n. + +2016-01-10 Bernhard Voelker <mail@bernhard-voelker.de> + + tests: fix races wrt output files of background processes + At least the false positive in tail-2/follow-stdin.sh could be seen + on a 4-core i5 system with -j8. Fix similar cases. too. + + * tests/tail-2/follow-stdin.sh: Empty the 'out' file in each iteration. + Otherwise, under heavy system load, 'check_tail_output' would see the + expected output from the previous round before tail would have the + chance to come up in the background. + While at it, move the creation of the 'exp' file out of the loop. + * tests/dd/stats.sh: Empty the output file of the background process + here, too. + * tests/misc/cat-buf.sh: Likewise. + * tests/misc/stdbuf.sh: Likewise. + * tests/tail-2/wait.sh: Likewise. + +2016-01-06 Pádraig Brady <P@draigBrady.com> + + stty: support "flusho" local setting + This is used to discard terminal output on FreeBSD based systems. + + * src/stty.c (mode_info): Add FLUSHO where supported. + (usage): Document for "local" and "combination" settings. + * doc/coreutils.texi (local stty settings): Document, + mentioning that this option is supported but ignored on GNU/Linux. + +2016-01-06 Pádraig Brady <P@draigBrady.com> + + stty: support [-]drain setting to control waiting for pending Tx + Instead of commit v8.24-132-g5171bef which only provides + control to disable this behavior (with -I), provide + the symmetrical "[-]drain" special setting. + + * src/stty.c (main): Parse the [-]drain setting instead of -I, + and treat like a global option. + (usage): Adjust accordingly. + * tests/misc/stty.sh: Test "drain" with and without options. + * NEWS: Mention the new feature. + +2016-01-04 Pádraig Brady <P@draigBrady.com> + + stty: support -I, --immediate to not wait for pending transmission + In some cases an initial drain may block indefinitely as discussed at: + http://lists.gnu.org/archive/html/coreutils/2016-01/msg00007.html + + * src/stty.c (main): Use TCSANOW rather than TCSADRAIN if -I specified. + (usage): Document the new option. + * doc/coreutils.texi (stty invocation): Likewise. + * tests/misc/stty.sh: Ensure -I is supported. + * NEWS: Mention the new feature. + +2016-01-03 Pádraig Brady <P@draigBrady.com> + + doc: avoid unwanted display of the 'coreutils' command info + * doc/coreutils.texi (coreutils): Remove this direntry + so that `info coreutils` will display the table of contents, + rather than the unlikely intended coreutils Multi-call invocation. + This also supports lookups like `info coreutils readlink`, + but note that only works with the standard info viewer, + and not with pinfo for example. + + doc: mention in more places that -D will create --target-directory + * src/install.c (usage): Mention this commonly required functionality + in the -D option description. + * doc/coreutils.texi (install invocation): Likewise for the + --target-directory description. + + install: only attempt to create a target dir once + * src/install.c (main): As an optimization, when calling + install_file_in_dir() for each file, only attempt to create + the target directory once, as this is invariant over the loop. + + install: fix relative copies to absolute directory with -D + * src/install.c (mkancesdirs_safe_wd): Unconditionally + restore the current working directory when possibly called + multiple times (from install_file_in_dir()). + * tests/install/create-leading.sh: Add a test case. + * NEWS: Mention the fix. + Fixes http://bugs.gnu.org/21497 + +2016-01-02 Bernhard Voelker <mail@bernhard-voelker.de> + + maint: fix sc_long_lines to warn about 100+ maximum line length again + Since commit v8.23-60-g414a8cf, the above check failed to find sources + where the length of the longest line is a 3 or more digit number. + + * cfg.mk (sc_long_lines): Remove the '\' escape character before '{' + and '}', because this would mean literal '{' and '}' characters in + an extended regular expression in sed(1). + +2016-01-01 Pádraig Brady <P@draigBrady.com> + + maint: avoid a sc_long_lines failure in recent commit + * src/dd.c (alloc_ibuf): Shorten line length. + +2016-01-01 Pádraig Brady <P@draigBrady.com> + + maint: update all copyright year number ranges + Run "make update-copyright" and then... + + * gnulib: Update to latest with copyright year adjusted. + * tests/init.sh: Sync with gnulib to pick up copyright year. + * bootstrap: Likewise. + * tests/sample-test: Adjust to use the single most recent year. + +2015-12-31 Paul Eggert <eggert@cs.ucla.edu> + + build: update gnulib submodule to latest + + dd: append spaces to shorter status=progress line + Problem noted by Pádraig Brady in: http://bugs.gnu.org/22277#8 + Also, make the output a bit more precise while we're at it. + * NEWS: Document this. + * src/dd.c (previous_time): Remove, replacing with ... + (next_time): New var. All uses changed. + This avoids some rounding errors, and should be a bit faster. + (newline_pending): Remove, replacing with ... + (progress_len): New var. All uses changed. + This lets us keep track of how many trailing spaces to append. + (print_xfer_stats): Get the time first thing, so that it's + closer to being correct. Count the bytes output, and append + trailing spaces if needed. Add remarks to translators about + translation lengths. + + dd: summarize in --human-readable format too + Problem reported by Linda Walsh in: http://bugs.gnu.org/17505 + * NEWS: Document this. + * doc/coreutils.texi (dd invocation): Use a simpler script. + Adjust output example to match new behavior. + * src/dd.c (human_size): Remove. + All uses changed to use human_readable and ... + (human_opts): ... this new constant. + (abbreviation_lacks_prefix): New function. + (print_xfer_stats): Use it. Output both --si and --human-readable + summaries, but only if they have prefixes. + * tests/dd/reblock.sh, tests/dd/stats.sh: Test new behavior. + +2015-12-23 Pádraig Brady <P@draigBrady.com> + + build: update to latest gnulib + Mainly for these changes: + - freadptr: fix to work with ungetc on all uClibc configs + - fts: enable leaf optimization for XFS + - fts: ensure leaf optimization used for NFS + - strftime-tests: avoid false failure on OS X + - intprops-tests: avoid warnings (causing CI failures) + + * NEWS: Update with items from above that are + significant from the previous coreutils release. + +2015-12-22 Pádraig Brady <P@draigBrady.com> + + doc: describe test operator precedence and associativity + * doc/coreutils.texi (Connectives for test): Add notes + on precedence and associativity. Also mention the + portability caveats with these operators. + * cfg.mk: Avoid sc_prohibit_test_minus_ao for coreutils.texi. + Fixes http://bugs.gnu.org/22216 + +2015-12-17 Pádraig Brady <P@draigBrady.com> + + tests: avoid root test false failure without libxattr + * tests/cp/cp-mv-enotsup-xattr.sh: Exclude xattr copy verification + when libxattr is not available. + +2015-12-17 Bernhard Voelker <mail@bernhard-voelker.de> + + build: rely on umask for setting permissions in tarball + Commit v8.24-116-g896006b changed the file permissions for the tarball + using ug+rw. Better to let the umask decide whether the file should + be group-writeable or not. + + * Makefile.am (dist-hook): Change chmod call from 'ug+rw' to '+rw'. + +2015-12-17 Pádraig Brady <P@draigBrady.com> + + tests: avoid intermittent ulimit -v failures + * init.cfg (get_min_ulimit_v_): Increase the determined + virtual memory limit for the command by a page size + to avoid alignment issues causing false failures for + subsequent runs. + * tests/misc/cut-huge-range.sh: Be defensive and match + the cut invocations under test, more closely with the + form used to determine the VM memory limit. + + This was noticed on i686 linux at: + http://hydra.nixos.org/build/28990456 + +2015-12-17 Pádraig Brady <P@draigBrady.com> + + build: ensure all files are writable in the tarball + * Makefile.am (dist-hook): Ensure all files are writable + so that extracted tarballs are easy to remove, without + getting prompts about removing read-only files. + Reported by Benno Schulenberg. + +2015-12-15 Pádraig Brady <P@draigBrady.com> + + maint: ensure emit_mandatory_arg_note() used if needed + * cfg.mk (sc_emit_mandatory_arg_note): Add new syntax check. + + maint: include 'env' commands in returns_ syntax check + * cfg.mk (sc_prohibit_and_fail_1): Remove 'env' from + the exclusion list. + * tests/misc/env.sh: Adjust accordingly. + * tests/misc/help-version.sh: Likewise. + + tests: improve kill tests + * tests/misc/kill.sh: + - verify kill -[lt] support multiple parameters. + - verify kill -[lt] fail with (some) invalid parameters. + - Use returns_1 ... || fail=1, rather than ... && fail=1. + +2015-12-14 Pádraig Brady <P@draigBrady.com> + + sort: fix --debug marking for -b -k1.x + We were erroneously skipping blanks in the marked comparison + _after_ the key start offset was applied. + * src/sort.c (debug_keys): Don't skip starting blanks + if already handled by begfield(). + * tests/misc/sort-debug-keys.sh: Add a test case. + * NEWS: Mention the bug fix. + Fixes http://bugs.gnu.org/22155 + + stat: report file system type for "overlayfs" + * src/stat.c (human_fstype): Add "overlayfs", and tag it as "remote" + to ensure that tail continues to use the more conservative polling mode. + * README-release: Remove a stale comment about updating fremote() + in tail.c. Also give a link to *_SUPER_MAGIC definitions + not in the standard linux/magic.h location. + * NEWS: Mention that this file system is recognized. + +2015-12-14 Pádraig Brady <P@draigBrady.com> + + kill: add undocumented -L for compatibility + procps, bash >= 4.4, and util-linux >= 2.23 + all have the -L option to output a table. + + * src/kill.c (main): Have -L synonymous with -t. + Luckily there is no signal that begins with 'L'. + * tests/misc/kill.sh: Update the test. + +2015-12-14 Pádraig Brady <P@draigBrady.com> + + tests: add tests for the kill command + * tests/misc/kill.sh: Add first tests for kill. + * tests/local.mk: Reference the new test. + + maint: fix incorrect spellings etc + * NEWS: Use a standard version specification. + * doc/coreutils.texi: Fix incorrect grammar. + * src/df.c: Update a stale comment. + * src/copy.c: Fix incorrect spellings. + * src/factor.c: Likewise. + * src/ls.c: Likewise. + * src/pr.c: Likewise. + * src/relpath.c: Likewise. + * src/shred.c: Likewise. + * src/sort.c: Likewise. + * src/split.c: Likewise. + * src/stdbuf.c: Likewise. + * tests/misc/seq-precision.sh: Likewise. + +2015-12-14 Pádraig Brady <P@draigBrady.com> + + maint: remove form feed characters from sources + These are no longer useful and can impact viewing + patches in some mail programs for example. + + * src/cksum.c: Remove ^L characters. + * src/comm.c: Likewise. + * src/kill.c Likewise. + * src/ln.c Likewise. + * src/nl.c Likewise. + * src/pr.c Likewise. + * src/ptx.c Likewise. + * src/split.c Likewise. + * src/tr.c Likewise. + * src/tsort.c Likewise. + * src/uniq.c Likewise. + * src/wc.c Likewise. + * cfg.mk (sc_prohibit-form-feed): A new syntax check. + +2015-12-07 Eric Blake <eblake@redhat.com> + + sort: promote '--debug' + * src/sort.c (usage): Mention --debug in KEYDEF paragraph. + +2015-12-07 Paul Eggert <eggert@cs.ucla.edu> + + doc: promote 'sort --debug' + * README, doc/coreutils.texi (Introduction, sort invocation): + Suggest 'sort --debug' more prominently. + +2015-12-04 Pádraig Brady <P@draigBrady.com> + + doc: improve the description of sort --random-sort + * src/sort.c (usage): Avoid mentioning the implementation, + rather focusing on the result of the operation. + +2015-12-03 Paul Eggert <eggert@cs.ucla.edu> + + build: port to Studio C on Solaris 12 + Reported by Rich Burridge in: http://bugs.gnu.org/22087 + * configure.ac (HAVE_UT_HOST, HAVE_C_LINE, stdbuf): + Pacify picky compilers that complain about unreachable statements. + +2015-12-01 Bernhard Voelker <mail@bernhard-voelker.de> + + doc: clarify behaviour of mv for existing target directories + * doc/coreutils.texi (mv invocation): Add a sentence to clarify that + mv(1) will only replace empty directories in the target, and fail with + a diagnostic otherwise. Discussed at: + http://lists.gnu.org/archive/html/coreutils/2015-12/msg00000.html + +2015-11-30 Bernhard Voelker <mail@bernhard-voelker.de> + + doc: avoid confusing K argument in the man pages of head and tail + The character 'K' representing numeric user input can be confusing, + especially in the context where it can be suffixed by the multipliers + K, M, G, etc. + Use NUM instead. + + * doc/coreutils.texi (head invocation): Replace @var{k} by @var{num}. + Also change @var{count} in the paragraph about the obsolete option + syntax. + (tail invocation): Likewise. Furthermore, adjust the option order to + alphabetical sorting. + * src/head.c (usage): s/K/NUM/ in as placeholder in the -c and -n + options. Furthermore, print the actual DEFAULT_NUMBER instead of the + hard-coded 10. + * src/tail.c (usage): s/K/NUM/ in as placeholder in the -c and -n + options. Add "[+]" to clarify that NUM may optionally be preceded by + this sign. Remove the redundant explanation of the optional '+' prefix + for NUM, as that is now clear from the option description above. + + Suggested by Dan Jacobson in http://bugs.gnu.org/22042 + +2015-11-28 Bernhard Voelker <mail@bernhard-voelker.de> + + doc: reference each other in the man pages of head and tail + * man/head.x: Add "SEE ALSO" section referencing tail(1). + * man/tail.x: Add "SEE ALSO" section referencing head(1). + + Suggested by Dan Jacobson in http://bugs.gnu.org/22041 + +2015-11-28 Pádraig Brady <P@draigBrady.com> + + build: support reproducible builds with consistent man pages + Use a consistent date in the generated man pages + even if SOURCE_DATE_EPOCH is not set. + + * Makefile.am: Generate .timestamp in the tarball. + * man/local.mk: Pass .timestamp if available to help2man. + * man/dummy-man: Don't bother with the year in the stub. + + Reported in http://bugs.debian.org/806321 + +2015-11-27 Pádraig Brady <P@draigBrady.com> + + doc: update to latest help2man + Sync with version 1.47.3 which provides these significant changes: + + - support for reproducible builds by using $SOURCE_DATE_EPOCH. + - Adjust spacing of italic text at roman/italic boundaries. + +2015-11-25 Pádraig Brady <P@draigBrady.com> + + tests: for compare_(), use cmp -s where available + * tests/init.sh (compare_): Only fall back to cmp without + the POSIX defined -s option, where this is not available. + + build: avoid makeinfo unless required + * doc/local.mk (constants.texi): Avoid calling makeinfo unless + the constants derived from tail and shred have changed. + This avoids a dependence on makeinfo from patched sources, + and avoids an expensive makeinfo call for developers. + + doc: clarify descriptions for tr --squeeze-repeats + * doc/coreutils.texi (uniq invocation): Fix the description of + problematic input to say "blank lines" rather than "two or more + blank lines". + (tr invocation): Clarify that -s only works with SET1 when + not translating (when SET2 not specified). Also explicitly + state in examples where blank lines are deleted. + Also add "deleting" to the menu item. + * src/tr.c (usage): Improve the -s summary to say it always + operates on the last specified SET. + + doc: provide an example for prefixing all tail output lines + * doc/coreutils.texi (tail invocation): Provide an example using awk + to convert tail ==> file <== headers to file: prefixes on each line. + Suggested by Stephen Shirley. + +2015-11-24 Dmitry Monakhov <dmonakhov@openvz.org> + + copy: fix copying of extents beyond the apparent file size + fallocate can allocate extents beyond EOF via FALLOC_FL_KEEP_SIZE. + Where there is a gap (hole) between the extents, and EOF is within + that gap, the final hole wasn't reproduced, resulting in silent + data corruption in the copied file (size too small). + + * src/copy.c (extent_copy): Ensure we don't process extents + beyond the apparent file size, since processing and allocating + those is not currently supported. + * tests/cp/fiemap-extents.sh: Renamed from tests/cp/fiemap-empty.sh + and re-enable parts checking the extents at and beyond EOF. + * tests/local.mk: Reference the renamed test. + * NEWS: Mention the bug fix. + Fixes http://bugs.gnu.org/21790 + +2015-11-23 Pádraig Brady <P@draigBrady.com> + + md5sum,sha*sum: ensure --ignore-missing fails when no file verified + * src/md5sum.c (digest_check): Update a matched_checksums bool upon + matched checksum, and fail (loudly unless --status is specified) + if there were no matches. Also change properly_formatted_lines + to a bool while at it since we don't need to track the plurality. + * tests/misc/md5sum.pl: Add a test case. + Suggested by Jim Meyering. + +2015-11-23 Luther Thompson <lutheroto@gmail.com> + + md5sum,sha*sum: add --ignore-missing for checking a subset of files + * doc/coreutils.texi (md5sum invocation): Document the new option. + * src/md5sum.c (digest_file): Return an empty digest to indicate + a missing file. + (digest_check): Don't fail or output status given an empty checksum. + (usage): Document the new option. + (main): Process and validate the new option. + * tests/misc/md5sum.pl: Add new test cases. + * NEWS: Mention the new feature. + Fixes http://bugs.gnu.org/15604 + +2015-11-23 Pádraig Brady <P@draigBrady.com> + + maint: allow 'sha*sum:' tag in commit summaries + To support "md5sum,sha*sum:" + Suggested by Bernhard Voelker. + +2015-11-21 Pádraig Brady <P@draigBrady.com> + + doc: give a tee example for combining process substitution outputs + This can be useful if you want to further process data + from process substitutions. For example: + datagen | tee >(md5sum --tag) > >(sha256sum --tag) | sort + + * doc/coreutils.texi (tee invocation): Mention that -p is + useful with pipes that may not consume all data. + Add an example, similar to the one above. + * THANKS.in: Add Jirka Hladky. + +2015-11-21 Pádraig Brady <P@draigBrady.com> + + tests: avoid false failure on older NFS implementations + * tests/ls/stat-failed.sh: Skip the test if 'd' is returned as the type, + and document where this was seen. Also flag failure to write small + temp files during the test as an error rather than a failure. + Fixes http://bugs.gnu.org/21130 + +2015-11-19 Pádraig Brady <P@draigBrady.com> + + build: fix VPATH build with --disable-dependency-tracking + * src/local.mk: Run `mkdir -p src` in all our explicit rules, + as in a VPATH build the src/ dir is only created at configure time + as a side effect of dependency tracking generation. + +2015-11-17 Jim Meyering <meyering@fb.com> + + scripts: update versions of gettext and libtool + + maint: remove unmaintained file, c99-to-c89.diff + * src/c99-to-c89.diff: Remove file. + * src/local.mk (EXTRA_DIST): Remove it from this list. + * README (Pre-C99 build failure): Update section. + +2015-11-12 Assaf Gordon <assafgordon@gmail.com> + + csplit: check and report fwrite errors with errno + discussed in: + http://lists.gnu.org/archive/html/coreutils/2015-10/msg00091.html + + * src/csplit.c: (save_line_to_file): check fwrite failures, report + and exit immediately instead of deferring to 'close_output'. + * tests/misc/csplit-io-err.sh: test fwrite failure using LD_PRELOAD. + * tests/local.mk: add new test. + +2015-11-11 Pádraig Brady <P@draigBrady.com> + + stat: improve support for new Linux pseudo FS and ACFS + * src/stat.c (human_fstype): Add new file system ID definitions. + * NEWS: Mention the improvement. + +2015-11-10 Pádraig Brady <P@draigBrady.com> + + tests: ensure programs are built before testing + programs may not be built due to missing system dependencies, + or any program can be excluded at configure time with + --enable-no-install-program. So ensure we're not testing the + system versions in these cases. + + * init.cfg (print_ver_): Call require_built_ first. + * tests/misc/tty-eof.pl: Skip programs not built. + * tests/Coreutils.pm (run_tests): Likewise. + * tests/misc/ls-misc.pl: Use 'env test' rather than abs path. + * tests/misc/test-diag.pl: Likewise. + * tests/local.mk: Adjust include order for dependencies. + * tests/misc/arch.sh: Remove redundant calls to require_built_. + * tests/misc/chroot-fail.sh: Likewise. + * tests/misc/groups-dash.sh: Likewise. + * tests/misc/groups-version.sh: Likewise. + * tests/misc/stdbuf.sh: Likewise. + * tests/cp/acl.sh: Remove problematic call to print_ver_ [gs]etfacl. + * tests/mv/acl.sh: Likewise. + * cfg.mk (sc_env_test_dependencies): A new syntax check to enforce + specifying dependencies with print_ver_ for programs + specified through the env command. + * du/bigtime.sh: Add new print_ver_ dependencies. + * du/max-depth.sh: Likewise. + * dd/ascii.sh: Likewise. + * tests/ls/capability.sh: Likewise. + * tests/ls/root-rel-symlink-color.sh: Likewise. + * tests/misc/chroot-fail.sh: Likewise. + * tests/misc/readlink-fp-loop.sh: Likewise. + * tests/misc/sort-debug-keys.sh: Likewise. + * tests/readlink/can-e.sh: Likewise. + * tests/readlink/can-f.sh: Likewise. + * tests/readlink/can-m.sh: Likewise. + * tests/tail-2/inotify-race.sh: Likewise. + * tests/tail-2/inotify-race2.sh: Likewise. + * tests/touch/no-create-missing.sh: Likewise. + * tests/touch/no-dereference.sh: Likewise. + * tests/misc/printenv.sh: Tweak to avoid syntax check trigger. + * tests/misc/help-version.sh: Likewise. + * tests/misc/yes.sh: Likewise. + * tests/misc/printf-quote.sh: Use previously unused $prog. + * configure.ac (EXTRA_MANS): Add $gl_no_install_prog to the list + so that check-x-vs-1 syntax check is satisfied. + +2015-11-10 Pádraig Brady <P@draigBrady.com> + + maint: use standard spacing in shebang line in tests + It's better to be consistent even though spacing is insignificant: + http://www.in-ulm.de/~mascheck/various/shebang/#blankrequired + +2015-11-10 Pádraig Brady <P@draigBrady.com> + + tests: cleanup trapping of signal names + A side effect of this cleanup is we no longer + depend on our own kill command being built. + + * init.cfg (require_trap_signame_): A new function to verify + that the shell supports specifying traps by signal name. + (require_kill_group_): A new function to ensure the shell + supports sending a signal to a group. + * tests/du/move-dir-while-traversing.sh: Ensure trap supports + signal names. + * tests/misc/stty-invalid.sh: Likewise. + * tests/misc/stty-pairs.sh: Likewise. + * tests/misc/stty-row-col.sh: Likewise. + * tests/misc/stty.sh: Likewise. + * tests/misc/sort-compress.sh: Likewise. Also simplify trap call. + * tests/install/trap.sh: Likewise. + * tests/misc/timeout.sh: Likewise. + * tests/dd/stats.sh: Likewise. Also use default kill command. + * tests/misc/timeout-group.sh: Likewise. + +2015-11-06 Pádraig Brady <P@draigBrady.com> + + tests: fix dirent d_type support verification + * init.cfg (require_dirent_d_type_): Don't use df -x + to exclude XFS, since this depends on a correct mtab + which is brittle and often not correct within chroots. + * tests/d_type-check: Check also the d_type of files, + which excludes XFS appropriately. Specify all argument + and return types to avoid truncated pointers being passed, + which skipped the test due to crashes on x86_64 at least. + Simplify the C library lookup by reusing the interpreter's. + + chroot issue reported at https://bugzilla.redhat.com/1263341 + +2015-11-04 Pádraig Brady <P@draigBrady.com> + + maint: add a syntax check to avoid unstyled quoting + * src/paste.c (main): Use our styled wrapper for quotearg_colon(). + * cfg.mk (sc_prohibit-quotearg): A new syntax check to avoid + future uses of unstyled quotearg to one of the internal slots, + and thus destined for diagnostic output. + + paste: avoid confusing backslash quoting in diagnostic + * src/paste.c (main): Setting the quoting style to "escape" + went against the intent of the comment about presenting + doubled backslashes to the user. Instead use "c-maybe" + which is the only mode which avoids doubled backslashes, + and provides protection against arbitrary control characters. + * tests/misc/paste.pl: Adjust accordingly. + + ls: default to --quoting=shell-escape for output to terminal + * src/ls.c (decode_switches): Set "shell-escape" if isatty(). + * doc/coreutils.texi (ls invocation): Update the defaults description. + * NEWS: Mention the change in behavior. It should not have + backwards compat issues, but mentioning here just in case. + + printf: support the %q format to quote for shell + * src/printf.c (usage): Mention the new format. + (print_formatted): Handle the quoting by calling + out to the quotearg module with "shell-escape" mode. + * doc/coreutils.texi (printf invocation): Document %q. + * tests/misc/printf-quote.sh: New test. + * tests/local.mk: Reference new test. + * NEWS: Mention the new feature. + +2015-11-04 Pádraig Brady <P@draigBrady.com> + + ls: avoid redundant processing when already escaping + This is mainly noticeable when the multi-byte code + within ls.c is triggered by multi-byte quotes. + + $ seq 200000 | xargs touch + $ time ls-old -U --quoting=locale --hide-control-chars >/dev/null + real 0m0.483s + $ time ls-new -U --quoting=locale --hide-control-chars >/dev/null + real 0m0.430s + + * src/ls.c (quote_name): Avoid rescanning the output looking for + unprintable chars when we know the quoting mode already escapes them. + * tests/misc/ls-misc.pl: Add tests for all quoting modes, with and + without -q, to verify this assumption. + +2015-11-04 Pádraig Brady <P@draigBrady.com> + + ls: document and test new shell-escape quoting + * doc/coreutils.texi (ls invocation): Describe the new + 'shell-escape' and 'shell-escape-always' quoting options. + * src/ls.c (usage): Mention the new quoting options. + * tests/misc/ls-misc.pl: Add a test for 'shell-escape' + + test: use consistent quoting + * src/test.c (test_syntax_error): Reuse verror() rather than + open coding the error output format. + (term): Don't hardcode '' quoting. + (main): Likewise. + +2015-11-04 Pádraig Brady <P@draigBrady.com> + + all: avoid quoting file names when possible + Quote file names using the "shell-escape" or "shell-escape-always" + methods, which quote as appropriate for most shells, + and better support copy and paste of presented names. + The "always" variant is used when the file name is + embedded in an error message with surrounding spaces. + + * cfg.mk (sc_error_shell_quotes): A new syntax check rule + to suggest quotef() where appropriate. + (sc_error_shell_always_quotes): Likewise for quoteaf(). + * src/system.h (quotef): A new define to apply shell quoting + when needed. I.E. when shell character or ':' is present. + (quoteaf): Likewise, but always quote. + * src/*.c: Use quotef() and quoteaf() rather than quote() + where appropriate. + * tests/: Adjust accordingly. + +2015-11-04 Pádraig Brady <P@draigBrady.com> + + build: update gnulib submodule to latest + Includes support for "shell-escape" from quotearg + + md5sum: ensure a single status line per file + * src/md5sum.c: Use the same file name escaping method used + when generating and checking checksums. I.E. ensure a single line + per file by starting the line with '\' for any file name containing '\n' + and replacing those with "\\n". + * NEWS: Move the item from changes in behavior to improvements, + since this is no longer a backwards incompat change when + processing stdout status messages. + * tests/misc/md5sum.pl: Remove quotes from expected status output. + * tests/misc/sha1sum.pl: Likewise. + +2015-11-04 Pádraig Brady <P@draigBrady.com> + + all: replace most uses of quotearg_colon() with quote() + Related to commit v8.24-61-g6796698 this provides + more consistent quoting, as quotearg_colon() defaults + to "literal" quoting by default, while quote() + provides appropriate quoting for diagnostics by default. + + * gl/modules/randread: Depend on quote module rather than quotearg. + * gl/lib/randread.c: Used quote() not quotearg_colon(). + * src/: Likewise. + * src/shred.c: Likewise. Also avoid unnecessary quoting + introducing overhead when wiping names. + * cfg.mk: Relax the matching expression to allow + "qname" variables as used in shred.c to satisfy the check. + * tests/: Adjust accordingly. + +2015-11-02 Pádraig Brady <P@draigBrady.com> + + doc: fix texinfo for short options taking a parameter + * doc/coreutils.texi: (tail invocation): Add missing -s, + along with the existing --sleep-interval description. + (csplit invocation): s/--suffix/--suffix-format/. + (head invocation): Use same variable (COUNT) for -n and --head-count. + (seq invocation): Add opindex items for all options. + (ptx invocation): Likewise. + Fix typo s/--flac-truncation/--flag-truncation/. + (touch invocation): State explicitly that -d takes a parameter, + which also indicates that an '=' is not to be used + for the short option syntax. + (ls invocation): Likewise for the -w option. + Fixes http://bugs.gnu.org/21809 + +2015-10-29 Pádraig Brady <P@draigBrady.com> + + maint: allow 'all:' tag in commit summaries + To tag changes that are user visible + and affect all (or many) commands. + +2015-10-28 Pádraig Brady <P@draigBrady.com> + + doc: clarify iso-8601 formats used by ls and du + * doc/coreutils.texi (du invocation): Remove 'like' from + mentions of ISO-8601 as the components are individually conformant. + (ls invocation): Likewise, except for --time-style=iso for recent + files, where the MM-DD component is not a valid ISO-8601 timestamp. + +2015-10-27 Pádraig Brady <P@draigBrady.com> + + date: use extended format timezone for --iso-8601 + * src/date.c (main): Use %:z rather than %z with --iso-8601 + as the standard states to consistently use extended format. + Note either format can be parsed by date. + * tests/misc/date.pl: Adjust accordingly. + * doc/coreutils.texi (du invocation): Clarify that "iso" + time styles are only similar to ISO-8601. + (ls invocation): Likewise. + (date invocation): Adjust the comment stating + that only --rfc-3339 output can be parsed by date(1). + * NEWS: Mention the change in behavior. + Reported at http://bugs.debian.org/799479 + + doc: reference related commands from users(1) and groups(1) + * man/users.x: See also getent, who + * man/groups.x: See also getent + Addresses http://bugs.gnu.org/21735 + + copy,dd: simplify and optimize NUL bytes detection + * src/factor.c: Move LIKELY() definition to... + * src/system.h: ...here. + (is_nul): Reimplement with a version that doesn't + require a sentinel after the buffer, and which calls + down to (the system optimized) memcmp. + Performance analyzed at http://rusty.ozlabs.org/?p=560 + * src/dd.c (alloc_obuf): Simplify the is_nul() call by + not needing to write the sentinel. + * src/copy.c (sparse_copy): Likewise. + (copy_reg): Simplify the buffer allocation by avoiding + consideration of the sentinel in the buffer size calculation. + +2015-10-27 Pádraig Brady <P@draigBrady.com> + + all: quote string arguments in error messages + These strings are often file names or other user specified + parameters, which can give confusing errors in + the presence of unexpected characters for example. + + * cfg.mk (sc_error_quotes): A new syntax check rule. + * src/*.c: Wrap error() string arguments with quote(). + * tests/: Adjust accordingly. + * NEWS: Mention the improvement. + +2015-10-27 Pádraig Brady <P@draigBrady.com> + + md5sum: quote all printed file names + This is especially significant when using --check + with files generated on a windows system, where the \r + characters produce corrupted and confusing error messages. + This also ensures status messages are output on a single line. + + * src/md5sum.c: Use quote() for printed file names. + * tests/misc/md5sum.pl: Adjust accordingly. + * NEWS: Mention the change in behavior. + Fixes http://bugs.gnu.org/21757 + +2015-10-21 Pádraig Brady <P@draigBrady.com> + + ls: fix off by one error when determining max display columns + * src/ls.c (main): Account for the first column not including + a separator when calculating max_idx. + * tests/ls/w-option.sh: Add a test case. + * NEWS: Mention the bug fix. + + ls: allow -w0 to mean no limit on line length + * src/ls.c (print_with_separator): Renamed from print_with_commas, + and parameterized to accept the separator to print. + Also fix an edge case where '\n' not printed when + the POS variable overflows SIZE_MAX. + (print_current_files): Degenerate -x and -C to using the + cheaper print_with_separator() in the -w0 case. + * doc/coreutils.texi (ls invocation): Document the new feature. + * tests/ls/w-option.sh: A new test. + * tests/local.mk: Reference the new test. + * NEWS: Mention the improvement. + Fixes http://bugs.gnu.org/21325 + +2015-10-19 Pádraig Brady <P@draigBrady.com> + + ls: detect terminal color support using glob patterns + * src/ls.c (know_term_type): Corresponding to commit v8.24-48-gc249a5a, + use fnmatch to inspect the dircolors database. Noticed due to + failing tests/ls/color-{dtype-dir,term}.sh tests. + + tests: adjust recent change to csplit VM limit + * tests/misc/csplit-heap.sh: A little more memory is required + for the full run case. Noticed with --enable-single-binary. + +2015-10-19 Pádraig Brady <P@draigBrady.com> + + maint: fixes to support improved sc_tight_scope + The gnulib provided sc_tight_scope target was ineffective, + as it was checking against an invalid blank regular expression, + and thus ignoring any extern function issues. This is now + fixed up in gnulib, and so we need to fix our scoping issues + before the next gnulib update. + + * cfg.mk: Setup and document the tight_scope config variables + appropriately. + * src/selinux.h: Since declared in *_SOURCES, use the two line + form for the extern function declarations. + * src/set-fields.h: Add the extern declarations, and since declared + in noinst_HEADERS use the single line form. + +2015-10-19 Pádraig Brady <P@draigBrady.com> + + tests: avoid failure when auto selecting factor tests + * tests/factor/run.sh: If this template is found through + `grep -El "print_ver_.* factor"` for example, then just skip it. + +2015-10-19 Pádraig Brady <P@draigBrady.com> + + factor: remove unreachable SQUFOF code at compile time + It was a little confusing as to whether the SQUFOF algorithm was + enabled, and in fact there were no options available to enable it. + Therefore clarify the 3 configurable behaviors for the code to + 3 defines at the top of the program, and only include the SQUFOF + code if enabled at compile time. + + $ size src/factor-before + text data bss + 93997 1412 2504 + $ size src/factor-after + text data bss + 87885 1404 2504 + + * src/factor.c: Only include the SQUFOF factor code + when enabled via the USE_SQUFOF define. + * doc/coreutils.texi (factor invocation): Update note about + factor limits, as we can factor 128 bit numbers without GMP. + +2015-10-19 Pádraig Brady <P@draigBrady.com> + + doc: reference shuf(1) from the sort (-R) man page + * man/sort.x: Cross reference with shuf(1). + * src/sort.c (usage): Mention shuf(1) with -R option. + Suggested in http://bugs.debian.org/641166 + +2015-10-18 Bernhard Voelker <mail@bernhard-voelker.de> + + maint: avoid duplicate test runs + * tests/local.mk (all_tests): Remove the tests 'tests/id/setgid.sh' and + 'tests/mkdir/smack-root.sh' because they are mentioned in the + 'all_root_tests' list; these tests are skipped anyway during a non-root + run because flagged with 'require_root_'. + +2015-10-16 Paul Eggert <eggert@cs.ucla.edu> + + doc: remove obsolete performance comment + sha512sum can be faster than sha256sum. + E.g., ‘dd if=/dev/zero bs=1024k count=1024 | time sha256sum’ + reports 8.16 user CPU seconds on my host, whereas sha512sum + consumes 5.45 seconds (Fedora x86-64 on an AMD Phenom II X4 910e). + Although sha512sum is still considerably slower on x86, a good + chunk of uses are on 64-bit hosts and anyway there’s little point + to scaring people away from sha512sum nowadays. + * doc/coreutils.texi (sha2 utilities): Remove obsolete comment. + +2015-10-16 Jim Meyering <meyering@fb.com> + + maint: avoid uniq.c warning from bleeding-edge gcc's -Wstrict-overflow + * src/uniq.c (main): Make the type of "nfiles" unsigned, + to avoid a brand new warning from a gcc I built from today's + sources (gcc version 6.0.0 20151015 (experimental) (GCC)): + src/uniq.c:523:14: error: assuming signed overflow does not occur \ + when simplifying conditional to constant [-Werror=strict-overflow] + if (nfiles == 2) + ^ + +2015-10-16 Pádraig Brady <P@draigBrady.com> + + dircolors: support globbing of TERM entries + * src/dircolors.c (dc_parse_stream): Support globbing of + TERM entries, to allow entries like "TERM *256color*" for example. + * src/dircolors.hin: Reduce the internal list with globbing. + * tests/misc/dircolors.pl: New test cases. + * NEWS: Mention the improvement. + +2015-10-15 Pádraig Brady <P@draigBrady.com> + + tests: avoid false failure in rm/r-root.sh with gdb warnings + * tests/rm/r-root.sh: Skip the test if there are gdb warnings + that will impact further stderr checks. For example some + buggy gdb versions may report "Got object file from memory + but can't read symbols: File truncated". Also fix an incorrect + stderr check from the previous change. + Reported by Bernhard Voelker. + + tests: avoid false failure in rm/r-root.sh under load + * tests/rm/r-root.sh: Use gdb rather than timeout(1) as the + last resort protection against unlinkat() calls. The timeout + of 2s was susceptible to false positives under load, and + gdb is stronger protection in any case. We remove the + "expensive" tag on this test also since it should be robust. + Reported by Jim Meyering. + + tests: avoid false failure in a tail test under load + * tests/tail-2/follow-stdin.sh: Use the standard tail + testing framework to avoid the race seen under very high load, + and also test the non inotify case. + Reported by Jim Meyering + +2015-10-14 Pádraig Brady <P@draigBrady.com> + + tests: avoid false failures with default ACLs + To reproduce: + setfacl -dm group::rx . + setfacl -dm other::rx . + make check + + * init.cfg (require_no_default_acl_): A new function to skip + when default ACLs are detected, or if the getfacl utility is + not available then skip if any non LSM ACLs detected. + * tests/cp/existing-perm-race.sh: Call require_no_default_acl_. + * tests/mkdir/parents.sh: Likewise. + * tests/mkdir/perm.sh: Likewise. + +2015-10-12 Pádraig Brady <P@draigBrady.com> + + tail: no longer warn about unrecognized file systems + * src/tail.c (fremote): No longer prompt the user to email + with the unrecognized file system constant, since we have + process in place to sync periodically with the latest Linux + constants, and the fall back polling mode is still fully functional. + +2015-10-10 Pádraig Brady <P@draigBrady.com> + + tests: avoid false failure when restorecon is ineffective + * tests/cp/cp-a-selinux.sh: Ensure we skip the portion of the test + depending on restorecon to be effective. I.E. also skip when restorecon + warns, as it doesn't exit with error status when matchpathcon fails to + find a match for a file. This is the case in /tmp on Fedora for + example, in which case the new destination that cp creates will have the + default security context of the process, rather than the explicit + context we set on the source file. + Details at: http://bugzilla.redhat.com/1247641 + + tests: make a long running test responsive to Ctrl-C + * tests/misc/sort-compress-hang.sh: Use --foreground with the + timeout(1) command (noting the caveats), to run the sort command + in the foreground program group, and thus be responsive to Ctrl-C. + This very_expensive_ test takes over a minute on a i3-2310M, + with RAM backed /tmp. + +2015-10-08 Pádraig Brady <P@draigBrady.com> + + tests: adjust recent changes to virtual memory limits + * tests/dd/no-allocate.sh: Account for timeout(1) when + determining the required mem, as timeout has additional shared libs. + This avoids the need for the hardcoded 4M addition to the limit. + * tests/misc/head-c.sh: Increase the base limit, to account for + the fact that head(1) will allocate some additional mem in this case. + * tests/misc/cut-huge-range.sh: Remove mention of specific limits. + * tests/misc/printf-surprise.sh: Likewise. + Reported by Dmitry V. Levin + +2015-10-06 Pádraig Brady <P@draigBrady.com> + + csplit: remove erroneous mention of -m in --help + * src/csplit.c (usage): -m is not accepted, only --suppress-matched. + * tests/misc/csplit-suppress-matched.pl: Spelling fix. + + Reported by Ondrej Oprala + +2015-10-04 Paul Eggert <eggert@cs.ucla.edu> + + tee: simplify argv handling + * src/tee.c (tee_files): Last arg is now char ** instead of char + const **, as that is a bit simpler. All callers changed. Modify + files[-1], not files[nfiles], as that is a bit faster and simpler. + Latter problem pointed out by Rainer Deyke in: + http://bugs.gnu.org/21611 + +2015-10-03 Paul Eggert <eggert@cs.ucla.edu> + + build: update gnulib submodule to latest + + build: Pacify GCC 5 on 32-bit hosts + This pacifies GCC 5 in a better way, without disabling diagnostics. + * src/df.c (main): Tell compiler that optind is positive. + * src/shred.c (known): New function. + (dopass): Go back to off_t for file sizes. + Avoid integer overflow if we run off the end of the file. + Tell compiler that a write cannot write more bytes than requested. + +2015-10-03 Pádraig Brady <P@draigBrady.com> + + tail: handle kernel dentry unlink race + Avoid the intermittent loss of "... has become inaccessible" messages. + That would cause tests/tail-2/assert.sh to fail sometimes, + mainly on uniprocessor systems. + + * src/tail.c (tail_forever_inotify): Also monitor IN_DELETE + events on the directory, to avoid a dentry unlink()..open() race, + where the open() on the deleted file was seen to succeed after an, + unlink() and a subsequent IN_ATTRIB, was sent to tail. Note an + IN_ATTRIB is sent on the monitored file to indicate the change in + number of links, and we can't just use a decrease in the number of + links to determine the file being unlinked, due to the possibility + of the file having multiple links. + + Reported by Assaf Gordon and Ludovic Courtès. + Fixes http://bugs.gnu.org/21460 + +2015-10-03 Pádraig Brady <P@draigBrady.com> + + build: avoid -Wstrict-overflow warnings with GCC 5.1 on 32 bit + * src/shred.c (dopass): With -O2, GCC 5.1 gives "assuming signed + overflow does not occur when simplifying conditional to constant" + warnings, in regard to the signed (off_t) variables. Therefore + use unsigned (uintmax_t) instead, and a separate boolean to cater + for the special meaning of the negative part of the integer range. + Noticed at http://hydra.nixos.org/build/24983447 + + build: update gnulib submodule to latest + Includes a change to xalloc.h to avoid -Wstrict-overflow warnings + with GCC 5.1 on 32 bit with optimization enabled. A subsequent + commit will fix similar issues in shred. + +2015-10-02 Dario Giovannetti <dariogiova@gmail.com> + + dircolors: add xterm-termite entry + * src/dircolors.hin: Add "xterm-termite" as this VTE based terminal + emulator is quite different from xterm, despite the name. + For example "Termite supports italic text and it won't work if TERM + is set to xterm. Even the backspace key won't work properly anymore + for applications relying on terminfo". + Reported also by Lukas Sabota and Sven-Hendrik Haase. + +2015-09-23 Dave Chiluk <chiluk@canonical.com> + + df: prioritize mounts nearer the device root + In the presence of bind mounts of a device, the 4th "mount root" field + from /proc/self/mountinfo is now considered, so as to prefer mount + points closer to the root of the device. Note on older systems with + an /etc/mtab file, the source device was listed as the originating + directory, and so this was not an issue. + Details at http://pad.lv/1432871 + + * src/df.c (filter_mount_list): When deduplicating mount entries, + only prefer sources nearer or at the root of the device, when the + target is nearer the root of the device. + * NEWS: Mention the change in behavior. + +2015-09-23 Pádraig Brady <P@draigBrady.com> + + build: update gnulib submodule to latest + This includes a change to propagate the 4th "mount root" + field from /proc/self/mountinfo from the mountlist module, + which is needed in a subsequent commit in df. + + * gl/lib/regcomp.c.diff: Regenerate against latest gnulib. + * gl/lib/regex_internal.c.diff: Likewise. + * gl/lib/regex_internal.h.diff: Likewise. + * cfg.mk: Exclude diffs from trailing whitespace check, + which is generally correct, and now needed. + +2015-09-22 Bernhard Voelker <mail@bernhard-voelker.de> + + maint: use adaptive approach for `ulimit -v` based tests + When configured with either 'symlinks' or 'shebangs' as value for + the --enable-single-binary option, tests based on `ulimit -v` are + skipped. The reason is that the multicall 'coreutils' binary requires + much more memory due to shared libraries being loaded, and the size of + the 'date' binary (~290KiB) compared to the multicall binary (~5MiB), + of course. Finally, in the case of 'shebangs', the starting shell + requires more memory, too + + Instead of using hard-coded values for the memory limit, use an + adaptive approach: first determine the amount of memory for a similar, + yet more trivial invocation of the command, and then do the real test + run using that limit (plus some buffer in some cases). + + * init.cfg (require_ulimit_v_): Remove function. + (get_min_ulimit_v_): Add function to determine the minimum memory limit + required for a given command in an adaptive way. + * cfg.mk (sc_prohibit_test_ulimit_without_require_): Change the name + of the above function in the syntax-check rule. + * tests/cp/link-heap.sh: Use the above function to determine the + minimum memory required to run a command simpler than in the real test + run. Use that limit plus a buffer there. While at it, change to list + of commands in the subshell to fail also if the beginning `ulimit -v` + fails. + * tests/dd/no-allocate.sh: Likewise. + * tests/misc/csplit-heap.sh: Likewise. + * tests/misc/cut-huge-range.sh: Likewise. + * tests/misc/head-c.sh: Likewise. + * tests/misc/printf-surprise.sh: Likewise. + * tests/split/line-bytes.sh: Likewise. + * tests/rm/many-dir-entries-vs-OOM.sh: Likewise - doing it separately + for each program under test. + +2015-09-22 Pádraig Brady <P@draigBrady.com> + + maint: avoid deprecation warning with <selinux/flask.h> + * src/runcon.c (main): As per the compile time warning from + libselinux-2.4-3, lookup the class with string_to_security_class(), + rather than using defines from flask.h. + + sort,numfmt: with --debug, diagnose failure to set locale + * src/sort.c (main): With --debug, warn upon setlocale() failure, + which can happen due to incorrectly specified environment variables, + or due to memory exhaustion (simulated with ulimit -v), etc. + * tests/misc/sort-debug-warn.sh: Add a test case. + See also http://savannah.gnu.org/bugs/11004 + +2015-09-18 Bernhard Voelker <mail@bernhard-voelker.de> + + du: avoid to stat all mount points if possible + du calls stat for each mount point at startup. This would block or + even make du fail if stat for an unrelated mount point hangs. + The result is not needed in the normal case anyway and therefore + should be avoided. Issue introduced in commit v8.19-2-gcf7e1b5. + + * src/du.c (fill_mount_table): Move function up as it's not used ... + (mount_point_in_fts_cycle): ... here, i.e., the DI_MNT set is + initialized and filled only iff FTS has detected a directory cycle. + (main): Remove the initialization and filling of the DI_MNT set here, + and free the DI_MNT set only if it was used. + +2015-09-17 Paul Eggert <eggert@cs.ucla.edu> + + shred: don’t document -NUMBER option + The -NUMBER option was removed from ‘shred’ in 1999, but the + manual wasn’t updated to match. Problem reported by Nick Rose in: + http://bugs.gnu.org/21502 + * doc/coreutils.texi (shred invocation): + Remove documentation for -NUMBER option. + +2015-09-12 Assaf Gordon <assafgordon@gmail.com> + + numfmt: use new set-fields module to parse --field + numfmt --field=LIST can accept the same options as cut. + + * bootstrap.conf: remove xlist, linked-list + * src/local.mk: link numfmt with set-fields + * src/numfmt.c: use set-fields.c instead of custom field parsing code. + (include_field): adapt to new code. + * tests/misc/numfmt.pl: add new tests, adapt current tests to new + error message wording from set-fields.c + +2015-09-12 Assaf Gordon <assafgordon@gmail.com> + + cut: refactor into set-fields module + Extract the functionality of parsing --field=LIST into a separate + module, to be used by other programs. + + * src/cut.c: move field parsing code from here ... + * src/set-fields.{c,h}: ... to here. + (set_fields): generalize by supporting multiple parsing/reporting + options. + (struct range_pair): rename to field_range_pair. + * src/local.mk: link cut with set-field. + * po/POTFILES.in: add set-field.c + * tests/misc/cut.pl: update wording of error messages + +2015-09-08 Pádraig Brady <P@draigBrady.com> + + maint: fix heap manipulations in previous commit + * src/sort.c (main): Ensure we don't free() and invalid + pointer when reading implicit stdin. Also avoid + "definitely lost" valgrind warnings in the --files0-from case. + +2015-09-04 Pádraig Brady <P@draigBrady.com> + + maint: avoid "definitely lost" valgrind warnings + Since commit v8.23-19-g8defcee, main() will return, + rather than call exit(), this inducing "definitely lost" + warnings in valgrind's leak checker. That precludes using + the following to flag memory leaks: + + valgrind --leak-check=full --error-exitcode=1 \ + --errors-for-leak-kinds=definite + + * src/pr.c (main): In dev builds, explicitly free memory allocated. + * src/sort.c (main): Likewise. + * src/tail.c (main): Likewise. + * src/tsort.c (tsort): Likewise. + +2015-09-03 Pádraig Brady <P@draigBrady.com> + + tests: test numfmt stdin behavior + * tests/misc/tty-eof.pl: Add numfmt to the list of programs + that accept input on stdin. + + ls,ptx: restrict quotearg use to file name output + * src/ls.c (getenv_quoting_style, decode_switches, parse_ls_color): + Use quote() rather than quotearg(), as the latter defaults to + outputting the input unquoted. + * src/ptx.c (main): Likewise. + + base64: no longer support hex or oct --wrap params + * src/base64.c (main): Support decimal numbers with leading zeros, + by disabling the auto detection of octal and hex. It's not + envisaged that base conversion is needed for --wrap parameters, + and in the edge case it is, $((0x0)) shell constructs can be used. + * tests/misc/base64.pl: Adjust accordingly. + * NEWS: Mention the change in behavior. + + base64: use stricter validation on wrap column + * src/base64.c (main): Use the higher level xnumtoumax() + rather than xstrtoumax(), which is simpler and improves + validation of input. Also pass the _empty_ rather than NULL + string as the suffixes parameter so that invalid trailing + characters are not allowed. For example -w08 is now + flagged as an error, rather than being interpreted as 0. + A subsequent commit will further improve verification + of numbers with leading zeros by dropping backwards compatibility + wrt auto parsing oct and hex numbers. + * tests/misc/base64.pl: Add tests for invalid wrap values. + +2015-09-03 Pádraig Brady <P@draigBrady.com> + + base32: A new program similar to base64 + Suggested in https://bugzilla.redhat.com/1250113 + + * AUTHORS: Add base32. + * THANKS.in: Add suggester. + * README: Reference the new program. + * NEWS: Mention the new program. + * src/.gitignore: Ignore the new binary. + * bootstrap.conf: Reference the gnulib base32 module. + * build-aux/gen-lists-of-programs.sh: Add base32. + * man/base32.x: A new template. + * man/.gitignore: Ignore the new man page. + * man/local.mk: Reference the new man page. + * doc/coreutils.texi (base32 invocation): Document the new command. + * src/local.mk: Adjust to build base32 based on base64.c. + * src/base64.c: Parameterize to use the correct headers, + functions and buffer sizes, depending on which binary + is being built. + * tests/misc/base64.pl: Adjust to test both base32 and base64. + * tests/misc/tty-eof.pl: Add base32 as a program that + accepts input on stdin without any options specified. + * scripts/git-hooks/commit-msg: Add base32 to the template. + +2015-09-01 Pádraig Brady <P@draigBrady.com> + + build: update gnulib submodule to latest + This includes a tweak to support building + the gnulib base32 module with -Wsuggest-attribute=const + +2015-08-31 Pádraig Brady <P@draigBrady.com> + + doc: clarify in --help/man where short options take no param + * src/shred.c (usage): For -u, separate the decscription + of the short and long option, to clarify that the short option + takes no parameter. + * src/split.c (usage): Likewise for -d. + * src/tee.c (usage): Likewise for -p. + * src/uniq.c (usage): Likewise for -D. + + Suggested by Stephane Chazelas + +2015-08-30 Bernhard Voelker <mail@bernhard-voelker.de> + + tests: avoid FP of ls/stat-free-color.sh with newer glibc + Since glibc-2.22, specifically commit [0], the opendir() implementation + implicitly makes an additional stat call thus leading to a FP. + Seen on openSUSE:Tumbleweed since snapshot 20150821. + + [0] + https://sourceware.org/git/?p=glibc.git;a=commitdiff;h=46f894d8c60a + + * tests/ls/stat-free-color.sh: Change the test to verify that ls(1) + needs the same number of stat-like calls for a single, empty directory + argument as for one with a few directory entries (sub-directory, + regular file, symlink, etc.). + +2015-08-27 Pádraig Brady <P@draigBrady.com> + + doc: clarify where ambiguous if short options take no param + * doc/coreutils.texi (split invocation): Clarify that -d takes no param. + (uniq invocation): Likewise for -D. + (shred invocation): Likewise for -u. + (tee invocation): Likewise for -p. + +2015-08-23 Paul Eggert <eggert@cs.ucla.edu> + + ls: allow -w18446744073709551616 + Problem reported by Beco in: http://bugs.gnu.org/21325 + * src/ls.c (set_line_length): New function. + (decode_switches): Use it to decode COLUMNS and -w. + +2015-08-18 Bernhard Voelker <mail@bernhard-voelker.de> + + maint: add syntax check to ensure larger man/*.x files have a Copyright + * cfg.mk (sc_man_check_x_copyright): Add rule to ensure that non-trivial + .x files in the 'man/' subdirectory, i.e., files exceeding a line count + of 20 or a byte count of 1000, contain a proper Copyright notice. + +2015-07-24 Paul Eggert <eggert@cs.ucla.edu> + + build: fprintftime/nstrftime API changes + * bootstrap.conf (gnulib_modules): Add time_rz, + since the main source code now uses timezone_t. + * src/date.c (batch_convert, main, show_date): + * src/ls.c (align_nstrftime, long_time_expected_width) + (print_long_format): + * src/stat.c (human_time): + Use timezone_t rather than boolean to specify which time zone + is wanted. + * src/ls.c (localtz): New static var. + (main): Initialize it. + + build: update gnulib submodule to latest + +2015-07-22 Pádraig Brady <P@draigBrady.com> + + doc: discourage use of uname -i and -p options + * src/uname.c (usage): State that the non POSIX -i and -p options + are non-portable. + * doc/coreutils.texi (uname invocation): Mention the discrepancies + even across GNU/Linux distros, and that the results should + be used as informational only, rather than impacting any + logic decisions. + Fixes http://bugs.gnu.org/13001 + +2015-07-15 Pádraig Brady <P@draigBrady.com> + + doc: improve man page for realpath -m + * src/realpath.c (usage): Mention 'directory' in the --help + output, so that ENOTDIR errors may be more easily investigated, + by inspecting the man page. + Reported at http://pad.lv/1474519 + +2015-07-15 Peter Bray <pdb_ml@yahoo.com.au> + + tests: avoid test warning with perl >= 5.22 + * doc/local.mk (sc-lower-case-var): Escape a literal + left curly bracket, needed with perl >= 5.22 + Fixes http://bugs.gnu.org/21060 + + sync: fix build with separate $(LIB_FDATASYNC) + * src/local.mk: Link with $(LIB_FDATASYNC) needed + on some Solaris 10 systems for example. + Fixes http://bugs.gnu.org/21059 + +2015-07-09 Pádraig Brady <P@draigBrady.com> + + dircolors: add tmux entries + * src/dircolors.hin: tmux entries were added to ncurses in: + http://ncurses.scripts.mit.edu/?p=ncurses.git;a=blobdiff;\ + f=misc/terminfo.src;h=ce9bdc3b;hp=7e576ef1;hb=be512fa0;hpb=ee1bcda2 + +2015-07-07 Pádraig Brady <P@draigBrady.com> + + shred: fix pattern selection for certain iteration counts + This was detected in about 25% of runs with gcc -fsanitize=address + + ERROR: AddressSanitizer: global-buffer-overflow on address ... + READ of size 4 at 0x000000416628 thread T0 + #0 0x40479f in genpattern src/shred.c:782 + #1 0x4050d9 in do_wipefd src/shred.c:921 + #2 0x406203 in wipefile src/shred.c:1175 + #3 0x406b84 in main src/shred.c:1316 + #4 0x7f3454a1ef9f in __libc_start_main (/lib64/libc.so.6+0x1ff9f) + #5 0x4025d8 (/tmp/coreutils-8.23/src/shred+0x4025d8) + 0x000000416628 is located 56 bytes to the left of + global variable '*.LC49' from 'src/shred.c' (0x416660) of size 17 + 0x000000416628 is located 12 bytes to the right of + global variable 'patterns' from 'src/shred.c' (0x416540) of size 220 + SUMMARY: AddressSanitizer: global-buffer-overflow src/shred.c:782 + + * src/shred.c (gen_patterns): Restrict pattern selection + to the K available, which regressed due to v5.92-1462-g65533e1. + * tests/misc/shred-passes.sh: Add a deterministic test case. + * NEWS: Mention the bug fix. + Fixes http://bugs.gnu.org/20998 + +2015-07-03 Pádraig Brady <P@draigBrady.com> + + maint: post-release administrivia + * NEWS: Add header line for next release. + * .prev-version: Record previous version. + * cfg.mk (old_NEWS_hash): Auto-update. + + version 8.24 + * NEWS: Record release date. + + maint: fix distclean-check failure due to THANKS + * Makefile.am: Remove our dependence on src/sort which + induces awkward dependencies for `make dist` since + THANKS will be rebuilt once src/sort is newer. + Instead we remove the problematic -f option to sort + which actually doesn't change the order given + our current input. + + maint: avoid false syntax-check failure in distcheck + * cfk.mk (sc_tests_executable): Restrict the check to git files, + so we don't flag any gnulib files added to test/ during + `make distcheck`. + + tests: update gnulib submodule and tests/init.sh to latest + * gnulib: Update to latest, with fixes to tests edge cases. + * tests/init.sh: Update from gnulib. + +2015-07-03 Pádraig Brady <P@draigBrady.com> + + tests: avoid side effects of $SHELL environment variable + Since non interactive shells don't generally set $SHELL, + its value is propagated through the tests and may cause issues; + for example if $SHELL implicitly adjusts $PATH when run. + Instead we set $SHELL to that determined by the posix-shell module, + and use that consistently for all test sub scripts, + including those created thorugh the `split --filter` command. + + * tests/local.mk: Explicitly set $SHELL to $(PREFERABLY_POSIX_SHELL) + which defaults to $CONFIG_SHELL and thus usually /bin/sh. + * tests/envvar-check: Remove bash environment variables with + side effects, in case /bin/bash was selected for $SHELL. + * tests/misc/help-version.sh: Remove redundant initialization of $SHELL. + * tests/install/strip-program.sh: Use $SHELL for sub script. + * tests/misc/sort-compress-hang.sh: Likewise. + * tests/misc/sort-compress-proc.sh: Likewise. + * tests/misc/sort-compress.sh: Likewise. + * tests/misc/timeout-group.sh: Likewise. + * tests/rm/fail-eperm.xpl: Remove redundant elision of bash env vars. + * tests/misc/pwd-long.sh: Likewise. + +2015-07-02 Pádraig Brady <P@draigBrady.com> + + tests: avoid false failures on OpenBSD 5.7 + * tests/du/threshold.sh: Homogenize getopt error messages. + * tests/misc/numfmt.pl: Likewise. + * tests/mv/i-3.sh: Skip on *BSD not just FreeBSD. + +2015-07-02 Pádraig Brady <P@draigBrady.com> + + wc: fix reading of /proc files on aarch64 + tests/misc/wc-proc.sh fails when the page size is 64K + + * src/wc.c (wc): The lseek adjustment should be based on st_blksize, + rather than on the internal buffer size. This is significant on + aarch64 where st_blksize in /proc is the 64K (the page size) and + thus larger than the internal buffer. + * src/split.c (main): Even though the similar processing is done + on the internal buffer size, that's based on st_blksize and + so fine in this regard. Add an assert to enforce this. + Avoid this path for the undocumented ---io-blksize option. + +2015-07-01 Pádraig Brady <P@draigBrady.com> + + build: update gnulib submodule to latest + Mainly with build fixes for FreeBSD and OS X. + + numfmt: increase precision on 32 bit FreeBSD + * m4/jm-macros.m4 (HAVE_FPSETPREC): Define if needed. + * src/numfmt.c (main): Call fpsetprec() if needed. + Fixes large-15 and large-16 test failures on 32 bit FreeBSD. + + tests: avoid false failure on FreeBSD systems + * tests/misc/stty.sh: FreeBSD returns ENOTTY for + the TIOCEXT ioctl, so just avoid this option for now. + +2015-07-01 Pádraig Brady <P@draigBrady.com> + + factor: ensure atomic output through pipes + The new tests/misc/factor-parallel.sh test was + seen to fail on FreeBSD (derived) systems, which was + due to split(1) --filter reading partial lines + through pipes, as factor(1) was writing a little + over PIPE_BUF each time. + + * src/factor.c (lbuf): A new structure to internally buffer lines. + (lbuf_alloc): A new function to allocate enough at program start. + (lbuf_putint): A new function to buffer a uintmax_t. + (lbuf_flush): A new function to write directly to standard output. + (lbuf_putc): A new function to buffer a character and if enough + lines are buffered, then output complete lines <= PIPE_BUF, + and continue to buffer the rest. + (main): Call the internal buffer allocator, and register + the final flush from the internal buffer at program exit. + +2015-07-01 Pádraig Brady <P@draigBrady.com> + + tests: fix false failure on slower systems + * tests/dd/stats.sh: Wait 20s for dd to write 250MB through a fifo, + rather than 10s for 500MB. The failure was seen often on + a lightly loaded SPARC-Enterprise-T5220 running Solaris 10. + +2015-06-29 Jim Meyering <meyering@fb.com> + + maint: stdbuf.c: avoid the OS X putenv function + * bootstrap.conf (gnulib_modules): Add setenv, to make this + module dependency explicit; setenv is also used by split. + * src/stdbuf.c (set_LD_PRELOAD) [__APPLE__]: Use the OS X setenv + function, rather than putenv, per that documentation: + https://developer.apple.com/\ + library/mac/documentation/Darwin/Reference/ManPages/man3/putenv.3.html + +2015-06-29 Jim Meyering <meyering@fb.com> + + build: numfmt.c: avoid a shadowing warning + * src/numfmt.c (parse_field_arg): Rename parameter s/optarg/arg/, + to avoid shadowing getopt's global variable. + Otherwise, building on OS X, with --enable-gcc-warnings, I saw this: + + In file included from src/numfmt.c:19:0: + src/numfmt.c: In function 'parse_field_arg': + ./lib/config.h:3109:25: error: declaration of 'rpl_optarg' shadows\ + a global declaration [-Werror=shadow] + +2015-06-29 Assaf Gordon <assafgordon@gmail.com> + + numfmt: fix printf argument order + * src/numfmt.c (double_to_human): Fix the argument order + passed to snprintf, which happened to work on amd64 with + its separate va_arg storage area for floats¹, + but would fail tests for example on i686. + + ¹ https://blog.nelhage.com/2010/10/amd64-and-va_arg/ + +2015-06-28 Pádraig Brady <P@draigBrady.com> + + maint: clarify df's use of device IDs from /proc/self/mountinfo + * src/df.c (filter_mount_list): Clarify why we still stat even + though devices IDs may already be available. Note using + /proc/self/mountinfo is still an advantage to get filtered items + with accurate device patchs in chroots and with bind mounts. + I.E. on older setups with static /etc/mtab, df will now + bypass that to get the more accuracte and dynamic info. + +2015-06-26 Pádraig Brady <P@draigBrady.com> + + chroot: quote argument in error diagnostic + * src/chroot.c (main): Quote the passed argument, + to avoid confusing error messages. + +2015-06-25 Pádraig Brady <P@draigBrady.com> + + maint: clarify integer operations in recent commit + * src/factor.c (print_uintmaxes): Comment that the + value of n_out doesn't matter on error, and add an + explicit cast to avoid any future warnings. + Suggested by Jim Meyering RE commit v8.23-229-g4d2d6c5 + + tests: avoid false failure when running as root + * tests/misc/sync.sh: Ensure dir is unreadable before + including the permission check. + +2015-06-25 Pádraig Brady <P@draigBrady.com> + + tests: avoid false failures with LD_PRELOAD=libasan.so.2 + The LD_PRELOAD checks by -fsanitize=address are overly strict: + https://groups.google.com/forum/#!topic/address-sanitizer/jEvOJgkDqQk + A workaround is to first export LD_PRELOAD=libasan.so.2 + The tests below are adjusted so that workaround is not discarded. + + * tests/cp/no-ctx.sh: Append to $LD_PRELOAD. + * tests/df/no-mtab-status.sh: Likewise. + * tests/df/skip-duplicates.sh: Likewise. + * tests/ls/getxattr-speedup.sh: Likewise. + * tests/rm/r-root.sh: Likewise. + * tests/cp/nfs-removal-race.sh: Likewise. Also check that + LD_PRELOAD is effective to aid future maintainability + and avoid false failure if libasan.so.2 is not preloaded. + +2015-06-25 Pádraig Brady <P@draigBrady.com> + + build: update to latest gnulib + Mainly for -fsanitize=address and -fsanitize=undefined fixes + + build: allow build to complete with -fsanitize=address + * src/make-prime-list.c (main): When building with + the above option, avoid this build stopping error: + "LeakSanitizer: detected memory leaks" + +2015-06-24 Pádraig Brady <P@draigBrady.com> + + maint: avoid undefined behavior in qsort call + GCC 5.1.1 -fsanitize=undefined with glibc 2.21 is returning: + "runtime error: null pointer passed as argument 1, + which is declared to never be null" + * src/ptx.c (sort_found_occurs): Avoid the call with no entries. + + factor: avoid interspersed lines for parallel runs + * src/factor.c (n_out): A new global variable to track + how much data has been written to stdout. + (print_factors_single): Use n_out to determine whether + to flush the current (and previous) lines. + * tests/misc/factor-parallel.sh: Add a new test. + * tests/local.mk: Reference the new test. + * NEWS: Mention the bug fix. + + seq: handle exponents more consistently + src/seq.c (scan_arg): Set precision and width _after_ exponentiation. + For example, this will make '1.1e1 12' and '11 1.2e1' equivalent. + One can still set the precision by specifying extra precision on + the start value, or more naturally with a precision on a step value. + * tests/misc/seq-precision.sh: Add new cases. + + seq: use consistent output format with hex integers + * src/seq.c (scan_arg): Set precision to 0 for hex constants + (while avoiding hex floats). This will use then use the + fast path for these arguments. Note we also set the precision + of inf to 0 here, which ensures we use consistent precision + on output where possible. + * tests/misc/seq-precision.sh: Add corresponding test cases. + + seq: support inf last item more generally/efficiently + * src/seq.c (main): Call seq_fast for infinite last value. + This implicitly avoids format conversion on the + 999999 -> 1000000 transition. + * src/seq.c (seq_fast): Generalize the buffer handling, + and adjust to handle the "inf" last value specifics. + * tests/misc/seq-precision.sh: A new test. + * tests/local.mk: Reference the new test. + +2015-06-22 Pádraig Brady <P@draigBrady.com> + + doc: list numfmt in the main menu with "Numeric operations" + * doc/coreutils.texi (main menu): Add numfmt. + + numfmt: don't hardcode floating point limits + * src/numfmt.c (MAX_UNSCALED_DIGITS): Set this to LDBL_DIG + rather than hardcoding at 18 for better portability. + * tests/misc/numfmt.pl: Restrict limit tests to supported platforms. + + numfmt: handle leading zeros correctly + * src/numfmt.c (simple_strtod_int): Don't count leading zeros + as significant digits. Also have leading zeros as optional + for floating point numbers. + * tests/misc/numfmt.pl: Add test cases. + * NEWS: Mention the fix. + +2015-06-22 Pádraig Brady <P@draigBrady.com> + + numfmt: avoid integer overflow when rounding + Due to existing limits this is usually triggered + with an increased precision. We also add further + restrictions to the output of increased precision numbers. + + * src/numfmt.c (simple_round): Avoid intmax_t overflow. + (simple_strtod_int): Count digits consistently + for precision loss and overflow detection. + (prepare_padded_number): Include the precision + when excluding numbers to output, since the precision + determines the ultimate values used in the rounding scheme + in double_to_human(). + * tests/misc/numfmt.pl: Add previously failing test cases. + * NEWS: Mention the fix. + +2015-06-21 Pádraig Brady <P@draigBrady.com> + + numfmt: support user specified output precision + * src/numfmt.c (usage): Update the --format description + to indicate precision is allowed. + (parse_format_string): Parse a precision specification + like the standard printf does. + (double_to_human): Honor the precision in --to mode. + * tests/misc/numfmt.pl: New tests. + * doc/coreutils.texi (numfmt invocation): Mention the new feature. + * NEWS: Likewise. + +2015-06-19 Dylan Cali <calid1984@gmail.com> + + numfmt: implement support for field ranges + * src/numfmt.c: Replace field handling code with logic that understands + field range specifiers. Instead of processing a single field and + printing line prefix/suffix around it, process each field in the line + checking whether it has been included for conversion. If so convert and + print, otherwise just print the unaltered field. + (extract_fields): Removed. + (skip_fields): Removed. + (process_line): Gutted and heavily reworked. + (process_suffixed_number): FIELD is now passed as an arg instead of + using a global. + (parse_field_arg): New function that parses field range specifiers. + (next_field): New function that returns pointers to the next field in + a line. + (process_field): New function that wraps the field conversion logic + (include_field): New function that checks whether a field should be + converted + (compare_field): New function used for field value comparisons in a + gl_list. + (free_field): New function used for freeing field values in a gl_list. + Global variable FIELD removed. + New global variable all_fields indicates whether all fields should be + processed. + New global variable all_fields_after stores the first field of a N- + style range. + New global variable all_fields_before stores the last field of a -M + style range. + New global variable field_list stores explicitly specified fields to + process (N N,M or N-M style specifiers). + (usage): Document newly supported field range specifiers. + * bootstrap.conf: Include xlist and linked-list modules. numfmt now + uses the gl_linked_list implementation to store the field ranges. + * tests/misc/numfmt.pl: Add tests for 'cut style' field ranges. + Adjust existing tests as partial output can occur before an error + Remove test for the 'invalid' field -5.. this is now a valid range. + * gnulib: update to avoid compiler warnings in linked-list. + * NEWS: Mention the new feature. + +2015-06-19 Pádraig Brady <P@draigBrady.com> + + doc: use correct units in df | numfmt example + * src/numfmt.c (usage): Don't scale output from df + so that numfmt outputs the correct values. + + numfmt: handle suffixes consistently with --{from,to}-unit + * src/numfmt.c (unit_to_umax): Support SI (power of 10) suffixes + with the --from-unit and --to-unit options. Treat suffixes like + is done with --from=auto, which for example will change the meaning + of --to-unit=G to that of --to-unit=Gi. The suffix support was + previously undocumented and it's better to avoid the traditional + coreutils suffix handling in numfmt by default. + * doc/coreutils.texi: Document the new behavior. Also fix a typo + mentioning {from,to}=units=. + * tests/misc/numfmt.pl: Adjust accordingly. + * NEWS: Mention the change in behavior. + +2015-06-17 Pádraig Brady <P@draigBrady.com> + + maint: remove stale online manual items at release + * gnulib: Update to get the new gnu-web-doc-update with --mirror option. + * README-release: Use the --mirror option in the instructions. + Also clarify and update various release steps. + +2015-06-09 Pádraig Brady <P@draigBrady.com> + + tail: display consistent diagnostics upon file replacement + * src/tail.c (recheck): Display diagnostices for replaced files + even with reused inodes which is a common case. + * tests/tail-2/F-vs-missing.sh: Use correct diagnostic in comment. + * tests/tail-2/F-vs-rename.sh: Likewise. + + tail: display file headers correctly with inotify + * src/tail.c (tail_forever_inotify): Use the fspec pointer to + distinguish previously output files, rather than a descriptor + from the inotify event. That event descriptor was that of + the parent directory when files were created or renamed etc. + (check_fspec): Adjust for the new comparison. Also show the + header when the file is truncated, since we show data + in this case also. + * tests/tail-2/F-headers.sh: A new test case. + * tests/local.mk: Reference the new test. + * NEWS: Mention the bug fix. + +2015-06-07 Pádraig Brady <P@draigBrady.com> + + maint: sync .gitignore items with gnulib entries + * .gitignore: Add entries for potentially generated headers. + Also remove a couple of items already present in lib/.gitignore. + * cfg.mk (sc_gitignore_missing): A new syntax check rule to + identify missing .gitignore entries. + (sc_gitignore_redundant): A new syntax check rule to + identify redundant .gitignore entries. + Reported by Tomas Nordin. + +2015-06-06 Pádraig Brady <P@draigBrady.com> + + tests: fix false failure in recent test adjustment + * configure.ac: Comment on why we link rather than run the test, + and remove the moot __ELF__ check since we never ran it anyway, + and the new CFLAGS and LDFLAGS are a more direct test of support. + * tests/misc/wc-parallel.sh: Fix a syntax error in the previous change. + * tests/misc/md5sum-parallel.sh: Use better error checking, consistent + with that used in wc-parallel.sh. + +2015-06-06 Paul Eggert <eggert@cs.ucla.edu> + + build: port to AIX + Problems reported by Michael Felt, and and part of this fix taken + from code suggested by Pádraig Brady in: + http://bugs.gnu.org/20733#112 + * configure.ac (stdbuf_supported): Check for warnings, and + for -fPIC and -shared, for AIX. + * src/stat.c (STRUCT_STATVFS): Define to struct statvfs64 if + STATFS is statvfs64. + * src/sync.c (sync_arg) [_AIX]: Open in write mode, + since AIX fsync doesn't work on read-only file descriptors. + * tests/misc/wc-parallel.sh: Skip test if xargs -P does not work. + + build: update gnulib submodule to latest + +2015-06-05 Paul Eggert <eggert@cs.ucla.edu> + + build: update gnulib submodule to latest + +2015-06-04 Paul Eggert <eggert@cs.ucla.edu> + + build: port single_binary_prog to POSIX shell + Problem reported privately by Michael Felt. + * Makefile.am (install-exec-hook): + * src/local.mk (src/coreutils_symlinks, src/coreutils_shebangs) + (clean-local): + Port to POSIX shell, which doesn't allow 'for i in ; do ...'. + +2015-06-03 Pádraig Brady <P@draigBrady.com> + + build: add a dependency on the gnulib tempname module + * bootstrap.conf: Add "tempname" which is needed by mktemp(1). + The explicit dependency supports running gnulib-tool with + the --conditional-dependencies option, used to minimize built + modules. Note on a Fedora 22 system, that results in avoiding + redundant builds of: areadlinkat.o asnprintf.o fd-hook.o + fseterr.o printf-args.o printf-parse.o sockets.o vasnprintf.o. + However --conditional-dependencies is not enabled, since it + currently precludes the inclusion of gnulib tests. + +2015-06-02 Pádraig Brady <P@draigBrady.com> + + build: update to latest gnulib + Mainly with build fixes for Mac OS X. + +2015-06-01 Pádraig Brady <P@draigBrady.com> + + tests: fix race in tail test without inotify + * tests/tail-2/wait.sh: Without inotify, skip a portion of the test + that checks that -F never outputs from a tailed descriptor + after the followed name is recreated, because tail_forever() + doesn't guarantee that. + Noticed at http://hydra.nixos.org/build/22766288 + + tests: fix false failure on loaded systems + * tests/misc/uniq-perf.sh: Use our standard 10s timeout, + which is sufficient to trigger the failure and also + avoids a false failure on slow/loaded systems. + Noticed at http://hydra.nixos.org/build/22766288 + +2015-05-30 Pádraig Brady <P@draigBrady.com> + + maint: avoid new coverity warnings + * src/sync.c (sync_arg): Initialise variable to avoid + unitialized access if assert is disabled. + * src/head.c (elide_tail_bytes_file): Support this function + with ---presume-input-pipe and larger files, + which regressed with commit v8.23-47-g2662702. + (elide_tail_lines_file): Likewise. + * src/dd.c (dd_copy): Explicitly don't try to ftruncate() + upon failure to lseek() (the existing check against + st_size was already protecting that). + * src/factor.c (factor_using_squfof): Assert (only when + linting due to performance) to avoid the implication of + divide by zero. + * src/od.c (read_block): Remove dead code. + * src/tac.c (tac_seekable): Likewise. + * src/ls.c (gobble_file): Likewise. + +2015-05-28 Pádraig Brady <P@draigBrady.com> + + build: remove workarounds for unsupported gettext versions + Now that we depend on gettext >= 0.19.2 remove the workaround + for issues in autopoint 0.18.3. Note the scheme currently used in + newer gettext (autopoint) to avoid these issues requires + autoconf >= 2.69, therefore we update this requirement also. + + Note the gettext version dependence from gnulib comes from + gnulib using gettext macros, and coreutils indirectly depends on + the gettext module due to: + http://git.sv.gnu.org/gitweb/?p=gnulib.git;a=commitdiff;h=41dca647 + bootstrap will then update m4/po.m4 and thus require a + supportng gettext version. + + * bootstrap: Remove moot warning (resyncing with gnulib). + * configure.ac (AC_PREREQ): Change to 2.69 (now 3 years old). + +2015-05-28 Pádraig Brady <P@draigBrady.com> + + tests: ln/hard-to-sym FAIL rather than ERROR when ln fails + * tests/ln/hard-to-sym.sh: Only call framework_failure_ when ln + returns success. + + copy: prefer our hardlink to symlink emulation on OS X 10.10 + * src/copy.c (CAN_HARDLINK_SYMLINKS): Don't enable use of linkat() + on Darwin 14, as the gnulib fallback emulation there doesn't + preserve ownership and timestamps etc. This fixes a test failure + in tests/cp/link-symlink.sh + * tests/cp/link-deref.sh: Adjust accordingly. + +2015-05-26 Pádraig Brady <P@draigBrady.com> + + maint: remove sys/types.h include order check + * src/system.h: This was inadvertently ineffective due to + a typo in commit v8.9-10-ge1aaf89 (Jan 2011), but has + not caused any issues, so remove. + +2015-05-23 Pádraig Brady <P@draigBrady.com> + + mkdir: fix -pZ with existing parent directories + When the parent directory exists and has a different + default context to the final directory, the context + was incorrectly left as that of the parent directory. + + * src/mkdir.c (process_dir): Because defaultcon() is called for + existing ancestors (as it must be to avoid races), then we must + unconditionally call restorecon() on the last component due to + the already documented caveat with make_dir_parents(). + Alternatively you could temp disable o->set_security_context + around make_dir_parents(), but that would be subject to races. + * tests (tests/mkdir/restorecon.sh): Add a TODO for improvement. + Reference mknod and mkfifo with print_ver_. + * NEWS: Mention the bug fix. + Fixes http://bugs.gnu.org/20616 + +2015-05-22 Assaf Gordon <assafgordon@gmail.com> + + tests: df-output: accept multiple spaces in header + * tests/df/df-output.sh: Allow for multiple spaces in the header line + of 'df', resulting from alignment with disk sizes >= 10TB. + +2015-05-19 Pádraig Brady <P@draigBrady.com> + + tests: fix non POSIX constructs causing failures with dash + * tests/cp/no-ctx.sh: Scope of `var=val func` is inconsistent + across shells, so avoid that construct with functions. + * tests/df/no-mtab-status.sh: Likewise. + * tests/tail-2/inotify-race.sh: `read` needs an argument. + * tests/tail-2/inotify-race2.sh: Likewise. + +2015-05-17 Pádraig Brady <P@draigBrady.com> + + build: fix 'dist' and 'syntax-check' targets in VPATH build + * cfg.mk: Various syntax-check adjustments so that it's + not assumed the $builddir is the base distribution directory. + * Makefile.am: Likewise for the 'dist' target. + + build: avoid issues with case insensitive file systems + * cfg.mk (sc_case_insensitive_file_names): A new syntax-check rule. + * tests/tail-2/descriptor-vs-rename.sh: Rename from + tests/tail-2/f-vs-rename.sh + * tests/local.mk: Reference the renamed test. + Reported by Jim Meyering. + +2015-05-14 Bernhard Voelker <mail@bernhard-voelker.de> + + tests: fix check for local file system in inotify-rotate-resources.sh + * tests/tail-2/inotify-rotate-resources.sh: s/(is_local_dir)/\1_/ + +2015-05-14 Pádraig Brady <P@draigBrady.com> + + tests: fix async allocation race on BTRFS + * tests/dd/sparse.sh: Sync files before checking allocations, + which may be done asynchronously on NFS and BTRFS at least. + Also mark this test as very expensive on remote file systems. + * tests/du/2g.sh: Likewise, also use fallocate if available + to efficiently allocate the large file, otherwise skip + on remote file systems. + * tests/tail-2/inotify-rotate-resources.sh: Use the more + standard is_local_dir_() to check remoteness. + * tests/cp/fiemap-empty.sh: Comment on the sync issue + for this currerntly unused test. + Fixes http://bugs.gnu.org/20570 + +2015-05-13 Pádraig Brady <P@draigBrady.com> + + timeout: with --foreground don't send SIGCONT + * src/timeout.c (cleanup): Don't send SIGCONT to the monitored program + when --foreground is specified, as it's generally not needed for + foreground programs, and can cause intermittent signal delivery + issues with monitors like GDB for example. + * doc/coreutils.texi (timeout invocation): Mention that SIGCONT + is not sent with --foreground. + * NEWS: Mention the behavior change. + +2015-05-13 Pádraig Brady <P@draigBrady.com> + + split: auto set suffix len for --numeric-suffixes=<N --number=N + Supporting `split --numeric-suffixes=1 -n100` for example. + + * doc/coreutils.texi (split invocation): Mention the two + use cases for the FROM parameter, and the consequences on + the suffix length determination. + * src/split.c (set_suffix_length): Use the --numeric-suffixes + FROM parameter in the suffix width calculation, when it's + less than the number of files specified in --number. + * tests/split/suffix-auto-length.sh: Add test cases. + Fixes http://bugs.gnu.org/20511 + +2015-05-13 Assaf Gordon <assafgordon@gmail.com> + + doc: clarify the operation of wc -L + * src/wc.c (usage): State that it calculates display width. + * doc/coreutils.texi (wc invocation): Detail the distinct + items used to determine the display width. + +2015-05-11 Pádraig Brady <P@draigBrady.com> + + tail: consistently output all data for truncated files + Generally if logs are truncated, they're truncated to 0 length, + so output all existing data when our heuristic determines truncation. + Note with inotify, truncate() and write() are often determined + independently and so all data would be written if that was the case. + + * src/tail.c (check_fspec): Reset file offset to 0 upon truncation. + (tail_forever): Likewise. + (recheck): Add a FIXME for the related issue where tail may lose + data due to tail discounting older log files too early. + * tests/tail-2/truncate.sh: A new test. + * tests/local.mk: Reference the new test. + * NEWS: Mention the fix. + +2015-05-11 Pádraig Brady <P@draigBrady.com> + + tail: fix inotify startup races + The previous fixes to races in the various tail tests, + identified actual races in the tail inotify implementation. + With --follow=descriptor, if the tailed file was replaced before + the inotify watch was added, then any subsequent changes were ignored. + Similarly in --follow=name mode, all changes to a new name were + effectively ignored if that name was created after the original open() + but before the inotify_add_watch(). + + * src/tail.c (tail_forever_inotify): Fix 3 cases. + 1. With -f, don't stop tailing when file removed before watch. + 2. With -f, watch right file when file replaced before watch. + 3. With -F, inspect correct file when replaced before watch. + Existing tests identify these when tail compiled with TAIL_TEST_SLEEP. + * tests/tail-2/inotify-rotate-resources.sh: + This test also identifies the issue with --follow=name + when TAIL_TEST_SLEEP is used. Adjust so the test is immune + to such races, and also fail quicker on remote file systems. + * tests/tail-2/inotify-race2.sh: A new test using GDB, + based on inotify-race.sh, which tests the -F race + without needed recompilation with sleeps. + * tests/local.mk: Reference the new test. + * NEWS: Mention the bug. + +2015-05-11 Pádraig Brady <P@draigBrady.com> + + tests: cleanup background processes upon interruption + Reap background processes so that: + - Stray processes aren't left on the system + - Files aren't held open causing deletion issues on NFS + - Partitions used to run the tests from can be unmounted + + * tests/tail-2/F-vs-missing.sh: Add the `kill && wait` of the + background $pid(s) to cleanup_(). + * tests/tail-2/F-vs-rename.sh: Likewise. + * tests/tail-2/f-vs-rename.sh: Likewise. + * tests/tail-2/append-only.sh: Likewise. + * tests/tail-2/assert-2.sh: Likewise. + * tests/tail-2/assert.sh: Likewise. + * tests/tail-2/flush-initial.sh: Likewise. + * tests/tail-2/inotify-hash-abuse.sh: Likewise. + * tests/tail-2/inotify-hash-abuse2.sh: Likewise. + * tests/tail-2/inotify-race.sh: Likewise. + * tests/tail-2/inotify-rotate-resources.sh: Likewise. + * tests/tail-2/inotify-rotate.sh: Likewise. + * tests/tail-2/pid.sh: Likewise. + * tests/tail-2/pipe-f2.sh: Likewise. + * tests/tail-2/retry.sh: Likewise. + * tests/tail-2/symlink.sh: Likewise. + * tests/tail-2/tail-n0f.sh: Likewise. + * tests/tail-2/wait.sh: Likewise. + * tests/cp/existing-perm-race.sh: Likewise. + * tests/cp/file-perm-race.sh: Likewise. + * tests/cp/parent-perm-race.sh: Likewise. + * tests/cp/sparse-to-pipe.sh: Likewise. + * tests/dd/stats.sh: Likewise. + * tests/du/move-dir-while-traversing.sh: Likewise. + * tests/misc/cat-buf.sh: Likewise. + * tests/misc/help-version.sh: Likewise. + * tests/misc/printf-surprise.sh: Likewise. + * tests/misc/sort-compress-proc.sh: Likewise. + * tests/misc/sort-spinlock-abuse.sh: Likewise. + * tests/misc/stdbuf.sh: Likewise. + * tests/misc/tac-continue.sh: Likewise. + * tests/misc/timeout-group.sh: Likewise. + * tests/mv/i-3.sh: Likewise. + * tests/rm/dangling-symlink.sh: Likewise. + * tests/rm/isatty.sh: Likewise. + * cfg.mk (sc_prohibit_test_background_without_cleanup_): + A new syntax-check to ensure cleanup_() is defined + when background tasks are created in a test. + +2015-05-11 Pádraig Brady <P@draigBrady.com> + + tests: avoid hung processes due to gdb SIGCONT handling + * tests/tail-2/inotify-race.sh: Add a `wait` to ensure that + we reap all background gdb and tail processes. That resulted + in the test hanging intermittently and upon investigation was + due to gdb intermittently failing to terminate the child process + due to receiving a SIGCONT signal. Therefore we avoid using + timeout(1) which sends that signal, and instead rely on tail's + inbuilt --pid monitoring on a background sleep process. + Given this new implementation, the VERY_EXPENSIVE guard was removed. + Related issues with this test hanging were previously discussed at: + https://lists.gnu.org/archive/html/bug-coreutils/2009-12/msg00025.html + + tests: fix races in and standardize the tail tests + * tests/tail-2/F-vs-missing.sh: Use standard "fastpoll" options + (-s.1 --max-unchanged-stats=1) to speedup the non-inotify case. + Add the non-inotify case to the test. `wait` on the background + tail process to terminate which should avoid the need for the + non standard `retry_delay_ cleanup ...` on NFS. + * tests/tail-2/F-vs-rename.sh: Remove 'out' at the start of the loop, + to avoid a race in checking its contents. Also ensure 'a' & 'b' + files are present before the tail process starts. Use the standard + "fastpoll" options as above. + * tests/tail-2/f-vs-rename.sh: Likewise. + * tests/tail-2/append-only.sh: Use more standard variable names. + * tests/tail-2/flush-initial.sh: Use "fastpoll" options for + non-inotify platforms. Also `wait` on the background tail to avoid + stray processes and file cleanup issues on NFS. + * tests/tail-2/inotify-hash-abuse.sh: Always run non-inotify case. + Use "fastpoll" options. Use a more standard retry_delay_ instead + of a hardcoded sleep loop. Add a `wait` on the background tail. + * tests/tail-2/inotify-hash-abuse2.sh: Likewise. + * tests/tail-2/inotify-rotate-resources.sh: Wait just on the + specific tail $pid needed. + * tests/tail-2/inotify-rotate.sh: Use "fastpoll" options. + * tests/tail-2/pid.sh: Use standard variable names. + Add a `wait` on the background tails. + * tests/tail-2/pipe-f2.sh: Likewise. + * tests/tail-2/tail-n0f.sh: Likewise. + * tests/tail-2/retry.sh: Use "fastpoll" options. + * tests/tail-2/symlink.sh: Likewise. + * tests/tail-2/wait.sh: Likewise. Speedup by using sub second + parameters to timeout(1). Improve the part ensuring that + -F never follows a renamed file. + * tests/tail-2/infloop-1.sh: Remove invalid test. tail(1) was not + being passed the --pid=$yes_pid option, retry_delay_ wasn't used + to avoid races, and yes could write huge files before being killed. + * tests/local.mk: Remove the invalid test reference. + * tests/tail-2/assert-2.sh: Rewrite using retry_delay_(). Since + no longer hardcoding large delays, remove the VERY_EXPENSIVE tag. + * tests/tail-2/assert.sh: Likewise. + +2015-05-10 Paul Eggert <eggert@cs.ucla.edu> + + build: rewrite is_ENOTSUP without an #if directive + * src/system.h (is_ENOTSUP): Avoid in-function #if directive. + +2015-05-10 Jim Meyering <meyering@fb.com> + + build: avoid a warning form gcc's new -Wlogical-op + Without this change, very recent gcc (e.g., version 6.0.0 20150509) + would print the following when configured with --enable-gcc-warnings: + + src/copy.c:165:30: error: logical 'or' of equal expressions \ + [-Werror=logical-op] + && (errno == EOPNOTSUPP || errno == ENOTSUP || errno == ENOSYS)) + ^ + * src/system.h (is_ENOTSUP): New function. + * src/copy.c (punch_hole): Use it. + * src/ls.c (errno_unsupported, gobble_file): Use it. + +2015-04-30 Pádraig Brady <P@draigBrady.com> + + doc: standardize messages about the '-' stdin FILE + * src/system.h (emit_stdin_note): A new function, refactoring + the usage note about the '-' FILE implying stdin. + * src/base64.c (usage): Use the new function to emit the + note in a standard location and with standard separation. + * src/cat.c (usage): Likewise. + * src/csplit.c (usage): Likewise. + * src/cut.c (usage): Likewise. + * src/expand.c (usage): Likewise. + * src/fmt.c (usage): Likewise. + * src/head.c (usage): Likewise. + * src/md5sum.c (usage): Likewise. + * src/nl.c (usage): Likewise. + * src/od.c (usage): Likewise. + * src/paste.c (usage): Likewise. + * src/pr.c (usage): Likewise. + * src/ptx.c (usage): Likewise. + * src/shred.c (usage): Likewise. + * src/shuf.c (usage): Likewise. + * src/sort.c (usage): Likewise. + * src/sum.c (usage): Likewise. + * src/tac.c (usage): Likewise. + * src/tail.c (usage): Likewise. + * src/tsort.c (usage): Likewise. + * src/unexpand.c (usage): Likewise. + * src/wc.c (usage): Likewise. + * src/join.c (usage): Adjust the separation used for + the message referring to FILE1 or FILE2 as stdin. + * src/comm.c (usage): Add a message using the same + wording (translation) as used in join. + * src/split.c (usage): Reword to using FILE rather than + INPUT, allowing use of emit_stdin_note(). Also remove + the mention of "fixed-size" pieces as this isn't now + always the case. + Fixes http://pad.lv/1450179 + + tests: don't skip df tests with /proc/self/mountinfo + * tests/df/no-mtab-status.sh: getmntent is no longer called + when /proc/self/mountinfo is present, thus causing the test + to be skipped. Therefore wrap fopen() to ignore mountinfo, + and use the test genmntent table instead. + * tests/df/skip-duplicates.sh: Likewise. + +2015-04-28 Yunlian Jiang <yunlian@chromium.org> + + build: fix SINGLE_BINARY build when printf is a macro + * src/coreutils.c (usage): include coreutils.h outside + the printf call, because if it's a macro you will get the error: + embedding a #include directive within macro arguments is not supported + +2015-04-28 Pádraig Brady <P@draigBrady.com> + + maint: avoid a new -Werror=return-type warning in yes.c + * src/yes.c (main): Simplify the logic so that the + compiler can see this function always returns a value. + This was seen with GCC 5.0 in SINGLE_BINARY mode. + + tests: run ls capability coloring test irrespective of $LS_COLORS + * tests/ls/no-cap.sh: Ensure the test isn't skipped even if + capability coloring is disabled in the current $LS_COLORS. + Also just enable/disable capability coloring to avoid the + dircolors(1) overhead. + +2015-04-27 Pádraig Brady <P@draigBrady.com> + + maint: use gnulib styling with the online manual + The equivalent styling added in v8.23-155-g3b98ee7, + is now applied to gnulib using projects by default. + + build: rely on gnulib to determine printf routines are safe + gnulib now only checks that the printf routines never crash, + which is all coreutils currrently requires, and so we revert + commit v8.23-81-gf57bfbb to let gnulib decide whether to replace + the system printf routines. + + maint: fix printf format for signed integers + With GCC 5 and the newly added warnings from gnulib, ensure the + correct signed integer is passed for the printf format, + to avoid -Werror=format= failures. + + build: update gnulib submodule to latest + Fix file-has-acl build failure on RHEL/Centos 6. + Fix GCC 5 warnings with printf and in fts.c. + + build: reduce gettext dependency to 0.19.2 + * bootstrap.conf: 0.19.2 is available on openSUSE-13.2, + Debian-8.0, and Ubuntu-14.10. Given there were issues + with earlier 0.19 gettext releases, set this as the new minimum. + * configure.ac (AM_GNU_GETTEXT_VERSION): Likewise. + Reported by Bernhard Voelker + +2015-04-27 Paul Eggert <eggert@cs.ucla.edu> + + ls: on GNU/Linux, remove dependency on libacl + * src/local.mk (src_ls_LDADD): Change from LIB_ACL to LIB_HAS_ACL. + + build: update gnulib submodule to latest + * bootstrap.conf (gnulib_modules): Add file-has-acl. + (buildreq): Bump autopoint and gettext to 0.19.4. + * configure.ac (AM_GNU_GETTEXT_VERSION): + Bump to 0.19.4. + * gl/lib/tempname.c.diff, gl/lib/tempname.h.diff: + Merge recent gnulib changes. + +2015-04-23 Michael Witten <mfwitten@gmail.com> + + doc: fix grammar issue in truncate info + * doc/coreutils.texi (truncate invocation): The word 'their' is + incorrect; 'each file' is the antecedent, and is singular, + so 'its' is the correct pronoun. + +2015-04-22 Pádraig Brady <P@draigBrady.com> + + build: fix potential factor build failure on arm and mips + * src/longlong.h: Sync with the latest longlong.h from libgmp to: + - Use __builtin_c[lt]zl on arm64. + - Fix sparc64 vis3 build failure due to missing __clz_tab. + - Avoid a clang build issue on mips. + - Support thumb2 arm 32 bit system. + * src/cfg.mk (sc_ensure_comma_after_id_est): Exclude longlong.h + to ease merges. + +2015-04-22 Pádraig Brady <P@draigBrady.com> + + maint: avoid -Werror=strict-overflow warnings with GCC 5 + All warnings were of the form: "assuming signed overflow does not occur + when simplifying conditional to constant [-Werror=strict-overflow]" + + * src/dd.c (cache_round): Use an appropriately sized unsigned type, + to avoid possibility of undefined signed overflow. + * src/mknod.c (main): Likewise. + * src/pr.c (pad_down): Likewise. + * src/wc.c (main): Likewise. + * src/tail.c (main): Assert that argc >= 0 thus allowing the + compiler to assume without implication that argc - optind + is positive. + +2015-04-17 Pádraig Brady <P@draigBrady.com> + + dircolors: add 'MISSING' to the default database + * src/dircolors.hin: Add the MISSING entry, to indicate + this as a possibility in new templates output from dircolors, + and also to ease comparison with existing databases that + generally do define a MISSING entry. + +2015-04-13 Andreas Gruenbacher <andreas.gruenbacher@gmail.com> + + doc: clarify how cp behaves with default ACLs + * doc/coreutils.texi (cp invocation): Mention that when copying files + without preserving permissions, the umask or a default ACL affect + the mode of new files. + * THANKS.in: Remove committer. + Related to http://bugs.gnu.org/8527 + +2015-04-13 Pádraig Brady <P@draigBrady.com> + + df: fix --local hanging with inaccessible remote mounts + * src/df.c (filter_mount_list): With -l, avoid stating remote mounts. + * init.cfg: Avoid test hangs with inaccessible remote mounts. + * tests/df/no-mtab-status.sh: Skip with inaccessible remote mounts. + * tests/df/skip-rootfs.sh: Likewise. + * tests/df/total-verify.sh: Likewise. + * NEWS: Mention the bug fix. + Reported at http://bugzilla.redhat.com/1199679 + +2015-04-09 Mitchel Humpherys <mitch.special@gmail.com> + + doc: correct pluralization for mkfifo and mknod + * doc/coreutils.texi: `mkfifo' and `mknod' use the optContext macro + which adds a description for the SELinux security context in addition to + the single option already described in each case. The result in both + cases is two options being introduced as `option' (singular). Fix this + by introducing them as `options' (plural). + +2015-04-03 Pádraig Brady <P@draigBrady.com> + + df: fix use of uninitialized variable reported by valgrind + Conditional jump or move depends on uninitialised value(s) + at 0x40380C: get_field_values (df.c:840) + by 0x403E16: get_dev (df.c:994) + by 0x404D65: get_all_entries (df.c:1364) + by 0x405926: main (df.c:1714) + + * src/df.c (get_dev): Initialize the fsu.fsu_bavail_top_bit_set + member, when adding placeholder entries. + (main): Avoid a "definitely lost" memory leak warning from valgrind, + reported by Bernhard Voelker. + +2015-04-01 Pádraig Brady <P@draigBrady.com> + + doc: clarify that ls --sort=time is newest first + * src/ls.c (usage): Add punctuation to avoid ambiguity in the + description of the --time option. Mention that both the -u + and --sort=time default order is newest first. + +2015-03-31 Stephane Chazelas <stephane.chazelas@gmail.com> + + tail: fix -f to follow changes after a rename + * src/tail.c (tail_forever_inotify): Only monitor write()s and + truncate()s to files in --follow=descriptor mode, thus avoiding + the bug where we removed the watch on renamed files. + Also adjust the inotify event processing code that is + now significant only in --follow=name mode. + * tests/tail-2/F-vs-rename.sh: Improve this existing test by running + in both polling and inotify modes. + * tests/tail-2/f-vs-rename.sh: A new test based on the existing one. + * tests/local.mk: Reference the new test. + * NEWS: Mention the bug. + Fixes http://bugs.gnu.org/19760 + +2015-03-29 Pádraig Brady <P@draigBrady.com> + + doc: move numfmt info to the 'Numeric operations' section + * doc/coreutils.texi: Move numfmt info to this section, + as numfmt functionality aligns more with seq and factor, + than fmt and pr etc. + +2015-03-27 Paul Eggert <eggert@cs.ucla.edu> + + nohup: clarify stdin redirection + Problem reported by Isaac Schwabacher in: + http://bugs.gnu.org/20214 + * doc/coreutils.texi (nohup invocation): Clarify that when nohup's + stdin gets redirected, it's unreadable. + * doc/coreutils.texi (nohup invocation): + * src/nohup.c (usage): Don't promise /dev/null. + +2015-03-27 Assaf Gordon <assafgordon@gmail.com> + + tests: fix false test failure with df on Debian/kFreeBSD + * tests/fs/skip-duplicates.sh: On this platform .mnt_opts is significant + so define to empty to avoid a NULL deref in read_file_system_list(). + Fixes http://bugs.gnu.org/20210 + +2015-03-26 Christoph Anton Mitterer <calestyo@scientia.net> + + doc: disambiguate the ls --color description + * src/ls.c (usage): Avoid the implication that the + default ls behavior is to --color=always. + Reported in http://bugs.debian.org/781208 + +2015-03-26 Pádraig Brady <P@draigBrady.com> + + doc: clarify the date standard output formats + * src/date.c (usage): Use FMT rather than TIMESPEC as the parameter, + since it's simpler to understand and can be better aligned. + Give an example for the --iso-8601 output format. + Adjust the example used for the 3 standard formats to be unambiguous + with respect to day/mon ordering and use of leading zeros in the time. + Reorder the options descriptions slightly, so that the + 3 standards options are together. + Indent the multi-line descriptions so that grouping is obvious. + Remove a redundant description of the --rfc-3339 format, + which is obvious in the existing example. + Separate these 3 standards options to their own translatable string + to simplify translation. + Change 'date and time' to 'date/time' in the --iso-8601 description + to be consistent with --rfc-3339 and to help avoid the implication + that the time is always output or even output by default. + Fixes http://bugs.gnu.org/20203 + +2015-03-24 Pádraig Brady <P@draigBrady.com> + + maint: apply basic styling to online manual + * README-release: Reference http://www.gnu.org/s/coreutils/manual.css + to apply basic styling to the online coreutils manual, consistent + with the Emacs documentation. + + doc: clarify the uniq -D man page description + * src/uniq.c (usage): The description was very confusing in the man page + due to the stripped newlines. Add punctuation for clarification. + + wc: use a more adaptive wc -l implementation + * src/wc.c (wc): Allow any block to select the count implementation, + rather than just using the first 10 lines. This also simplifies + the code from 3 loops to 2. + +2015-03-23 Dan Jacobson <jidanni@jidanni.org> + + doc: clarify default order for ls --sort=size + * src/ls.c (usage): Mention that default order is largest first. + Fixes http://bugs.gnu.org/20172 + +2015-03-20 Pádraig Brady <P@draigBrady.com> + + maint: really fix wildcard quoting in sc_tests_executable + * cfg.mk (sc_tests_executable): The previous commit avoided + the globbing, but also passed on the quoted wildcards to find(1). + We could use eval to handle the quoting, though that's a bit + awkward and dangerous, so instead explicitly disable globbing + for the whole make target subshell. Note noglob is not available + on solaris, where we fall back to set -f. Note also that zsh + uses set -F for this, but that's moot here. Also correct the + find(1) expression to include the -o between each wildcard. + + maint: fix wildcard quoting in sc_tests_executable + * cfg.mk (sc_tests_executable): If there are files with + $TEST_EXTENSIONS in the current directory, then the + lack of quoting of the $test_extensions_rx contents + could result in globbing and an inconsequential run. + find(1) produces warnings only with more than one expansion. + +2015-03-20 Kristoffer Brånemyr <ztion1@yahoo.se> + + wc: speedup counting of short lines + Using a test file generated with: + yes | head -n100M > 2x100M.txt + + before> time wc -l 2x100M.txt + real 0.842s + user 0.810s + sys 0.033s + + after> time wc -l 2x100M.txt + real 0.142s + user 0.111s + sys 0.031s + + * src/wc.c (wc): Split the loop that deals with -l into 3. + The first is used at the start of the input to determine if + the average line length is < 15, and if so the second loop is + used to look for '\n' internally to wc. For longer lines, + memchr is used as before to take advantage of system specific + optimizations which any outweigh function call overhead. + Note the first 2 loops could be combined, though in testing, + GCC 4.9.2 at least, wasn't sophisticated enough to separate + the loops based on the "check_len" invariant. + Note also __builtin_memchr() isn't significant here as + GCC currently only applies constant folding with that. + * NEWS: Mention the improvement. + +2015-03-10 Giuseppe Scrivano <gscrivano@gnu.org> + + yes: improve efficiency when all args aren't buffered + * src/yes.c (main): Even when the internal buffer isn't large enough, + output what we've buffered already, and interate over the rest. + This improves the performance in the edge case where there are + many small arguments that overflow the buffer. + * tests/misc/yes.sh: Add a test case for the many small arguments case. + +2015-03-10 Pádraig Brady <P@draigBrady.com> + + yes: output data more efficiently + yes(1) may be used to generate repeating patterns of text + for test inputs etc., so adjust to be more efficient. + + Profiling the case where yes(1) is outputting small items + through stdio (which was the default case), shows the overhead + of continuously processing small items in main() and in stdio: + + $ yes >/dev/null & perf top -p $! + 31.02% yes [.] main + 27.36% libc-2.20.so [.] _IO_file_xsputn@@GLIBC_2.2.5 + 14.51% libc-2.20.so [.] fputs_unlocked + 13.50% libc-2.20.so [.] strlen + 10.66% libc-2.20.so [.] __GI___mempcpy + 1.98% yes [.] fputs_unlocked@plta + + Sending more data per stdio call improves the situation, + but still, there is significant stdio overhead due to memory copies, + and the repeated string length checking: + + $ yes "`echo {1..1000}`" >/dev/null & perf top -p $! + 42.26% libc-2.20.so [.] __GI___mempcpy + 17.38% libc-2.20.so [.] strlen + 5.21% [kernel] [k] __srcu_read_lock + 4.58% [kernel] [k] __srcu_read_unlock + 4.27% libc-2.20.so [.] _IO_file_xsputn@@GLIBC_2.2.5 + 2.50% libc-2.20.so [.] __GI___libc_write + 2.45% [kernel] [k] system_call + 2.40% [kernel] [k] system_call_after_swapgs + 2.27% [kernel] [k] vfs_write + 2.09% libc-2.20.so [.] _IO_do_write@@GLIBC_2.2.5 + 2.01% [kernel] [k] fsnotify + 1.95% libc-2.20.so [.] _IO_file_write@@GLIBC_2.2.5 + 1.44% yes [.] main + + We can avoid all stdio overhead by building up the buffer + _once_ and outputting that, and the profile below shows + the bottleneck moved to the kernel: + + $ src/yes >/dev/null & perf top -p $! + 15.42% [kernel] [k] __srcu_read_lock + 12.98% [kernel] [k] __srcu_read_unlock + 9.41% libc-2.20.so [.] __GI___libc_write + 9.11% [kernel] [k] vfs_write + 8.35% [kernel] [k] fsnotify + 8.02% [kernel] [k] system_call + 5.84% [kernel] [k] system_call_after_swapgs + 4.54% [kernel] [k] __fget_light + 3.98% [kernel] [k] sys_write + 3.65% [kernel] [k] selinux_file_permission + 3.44% [kernel] [k] rw_verify_area + 2.94% [kernel] [k] __fsnotify_parent + 2.76% [kernel] [k] security_file_permission + 2.39% yes [.] main + 2.17% [kernel] [k] __fdget_pos + 2.13% [kernel] [k] sysret_check + 0.81% [kernel] [k] write_null + 0.36% yes [.] write@plt + + Note this change also ensures that yes(1) will only write + complete lines for lines shorter than BUFSIZ. + + * src/yes.c (main): Build up a BUFSIZ buffer of lines, + and output that, rather than having stdio process each item. + * tests/misc/yes.sh: Add a new test for various buffer sizes. + * tests/local.mk: Reference the new test. + Fixes http://bugs.gnu.org/20029 + +2015-03-07 Pádraig Brady <P@draigBrady.com> + + build: fix make dependencies for test.1 + In certain parallel build situations this would give the error: + help2man: can't get `--help' info from man/test.td/[ + Makefile:14189: recipe for target 'man/test.1' failed + + * man/local.mk (test.1): Depend on `[` rather than `test`, + as `test --help` outputs nothing. Also move dir.1 and vdir.1 + back to the main list, as they're no more exceptions than + sha1sum etc. + +2015-03-05 Bernhard Voelker <mail@bernhard-voelker.de> + + maint: be less strict about executable permissions of tests + With "umask 0027" or even "umask 0077", the git clone of coreutils + does not have the executable bit set for 'other' (or 'group). + Therefore, "make syntax-check" would fail. + + * cfg.mk (sc_tests_executable): Change the -perm argument of find(1) + to only print the names of the files which are not executable by the + user, rather than insisting on ugo+x (octal 111). + +2015-03-05 Stéphane Aulery <saulery@free.fr> + + doc: mention persistence caveats in sync man page + * man/sync.x ([BUGS]): Mention the caveats and reference + the system call man pages for more details. + Fixes http://bugs.gnu.org/19995 + + Debian bug #507085 reported by jidanni@jidanni.org + +2015-03-04 Pádraig Brady <P@draigBrady.com> + + tee: generalize the --write-error option to --output-error + Adjust commit v8.23-140-gfdd6ebf to add the --output-error option + instead of --write-error, and treat open() errors like write() errors. + + * doc/coreutils.texi (tee invocation): s/write-error/output-error/. + * src/tee.c (main): Exit on open() error if appropriate. + * tests/misc/tee.sh: Add a case to test open() errors. + * NEWS: Adjust for the more general output error behavior. + + Suggested by Bernhard Voelker. + +2015-03-04 Jarosław Gruca <jgruca1981@gmail.com> + + maint: update stale comment about ls color sequences + * src/ls.c (color_indicator[C_END]): Comment with the correct + sequence, which was used since commit v6.10-61-g483297d + Fixes http://bugs.gnu.org/19992 + +2015-02-27 Shane M Seymour <shane.seymour@hp.com> + + tail,stat: improve support for the IBRIX file system + Note that IBRIX used to have a different magic number 0x013111A7 + instead of the current 0x013111A8. However, the former is no longer + used and the version of IBRIX it was used in is really ancient, so + it's extremely unlikely anyone is still using it. Therefore, just + add the newer magic number. + Mark IBRIX as a 'remote' file system type as inotify support had + never been officially tested with it. + + * src/stat.c (human_fstype): Add file system ID definition. + * NEWS: Mention the improvement. + + Fixes http://bugs.gnu.org/19951 + +2015-02-24 Pádraig Brady <P@draigBrady.com> + + tee: add --write-error to control handling of closed pipes + tee is very often used with pipes and this gives better control + when writing to them. There are 3 classes of file descriptors + that tee can write to: files(1), pipes(2), and early close pipes(3). + Handling write errors to 1 & 2 is supported at present with the caveat + that failure writing to any pipe will terminate tee immediately. + Handling write errors to type 3 is not currently supported. + To improve the supported combinations we add these options: + + --write-error=warn + Warn if error writing any output including pipes. + Allows continued writing to still open files/pipes. + Exit status is failure if any output had error. + --write-error=warn-nopipe, -p + Warn if error writing any output except pipes. + Allows continued writing to still open files/pipes. + Exit status is failure if any non pipe output had error. + --write-error=exit + Exit if error writing any output including pipes. + --write-error=exit-nopipe + Exit if error writing any output except pipes. + + Use the "nopipe" variants when files are of types 1 and 3, otherwise + use the standard variants with types 1 and 2. A caveat with the above + scheme is that a combination of pipe types (2 & 3) is not supported + robustly. I.e. if you use the "nopipe" variants when using both type + 2 and 3 pipes, then any "real" errors on type 2 pipes will not be + diagnosed. + Note also a general issue with type 3 pipes that are not on tee's + stdout, is that shell constructs don't allow to distinguish early + close from real failures. For example `tee >(head -n1) | grep -m1 ..` + can't distinguish between an error or an early close in "head" pipe, + while the fail on the grep part of the pipe is distinguished + independently from the resulting pipe errors. This is a general + issue with the >() construct, rather than with tee itself. + + * NEWS: Mention the new feature. + * doc/coreutils.texi (tee invocation): Describe the new option. + * src/tee.c (usage): Likewise. + (main): With --write-error ignore SIGPIPE, and handle + the various exit, diagnostics combinations. + * tests/misc/tee.sh: Tess all the new options. + Fixes http://bugs.gnu.org/11540 + +2015-02-23 Bernhard Voelker <mail@bernhard-voelker.de> + + tee: close "-" file + This is a cleanup to the previous commit v8.23-138-g7ceaf1d. + + * src/tee.c (tee_files): Do not exempt the "-" file from being closed, + as this is no longer stdout but a normal file. + +2015-02-20 Bernhard Voelker <mail@bernhard-voelker.de> + + tee: treat '-' operand as file name as mandated by POSIX + Since v5.2.1-1247-g8dafbe5, tee(1) treated '-' as stdout while POSIX + explicitly requires to treat this as a file name. Revert this change, + as the interleaved output - due to sending another copy of input to + stdout - is not considered to be useful. Discussed in + http://lists.gnu.org/archive/html/coreutils/2015-02/msg00085.html + + * src/tee.c (tee_files): Remove the special handling for "-" operands. + (usage): Remove the corresponding sentence. + * doc/coreutils.texi (common options): Remove the "tee -" example. + (tee invocation): Document that tee(1) now treats "-" as a file name. + * tests/misc/tee.sh: Add a test case for "tee -". + While at it, re-indent the above multi-argument processing case and + extend that to 13 operands, as POSIX mandates that, too. + * tests/misc/tee-dash.sh: Remove now-obsolete test. + * tests/local.mk (all_tests): Remove the above test. + * NEWS (Changes in behavior): Mention the change. + +2015-02-18 Pádraig Brady <P@draigBrady.com> + + tee: exit early if no more writable outputs + * src/tee.c (main): Don't continue reading if we can't + output anywhere. + * tests/misc/tee.sh: Ensure we exit when no more outputs. + * NEWS: Mention the change in behavior. + + tests: support stderr verification with returns_() + * tests/init.sh (returns_): Disable tracing for this wrapper + function, so that stderr of the wrapped command is unchanged, + allowing for verification of the contents. + +2015-02-17 Bernhard Voelker <mail@bernhard-voelker.de> + + maint: prefer STREQ_LEN and STRPREFIX over strncmp in all cases + * cfg.mk (sc_prohibit_strncmp): Improve the search pattern: use + _sc_search_regexp to find all invocations of strncmp except when + used on a macro definition line; just match the function name with + an opening parenthesis. Before, the expression missed places where + the comparison against 0 was in a subsequent line. + * src/system.h (STRNCMP_LIT): Shorten 'literal' to 'lit' to move + the whole definition of the macro into one line - thus making + sc_prohibit_strncmp pass. + (STRPREFIX): Add space before parenthesis. + * src/du.c (main): Prefer STREQ_LEN over strncmp. + * src/pinky.c (scan_entries): Likewise. + * src/tac.c (tac_seekable): Likewise. + * src/who.c (scan_entries): Likewise. + +2015-02-17 Pádraig Brady <P@draigBrady.com> + + stty: fix setting of 'extproc' on BSD + This setting is unusual on BSD as it's read normally in the local + flags returned by tcgetattr(), but can only be set with an ioctl. + Setting with tcsetattr() is ignored. + + * src/stty.c (NO_SETATTR): A new flag to indicate the setting + is read and displayed like a normal termios flag, but is set + in some other manner. + (main): Skip tcsetattr() for this setting when this flag is set. + Also fixup the exiting 'extproc' processing to handle the + '-extproc' case correctly. + (sane_mode): Skip setting '-extproc' for 'sane' to avoid the error. + This isn't ideal but matches the operation of the BSD native stty. + +2015-02-12 Bernhard Voelker <mail@bernhard-voelker.de> + + maint: enhance '.mailmap' mappings for THANKS generation + * .mailmap (jeff.liu@oracle.com): There are 3 different names in the + 'git log' output for this email address; choose "Jeff Liu" as canonical + form. + (Алексей Шилин): Convert name to latin1 ("Aleksej Shilin") + to improve the sort order of the generated 'THANKS' file. + +2015-02-12 Bernhard Voelker <mail@bernhard-voelker.de> + + maint: sort THANKS using our own gear + At least 'sort' on openSUSE/Fedora have a bug in the case-folding code + of their I18N downstream patch which leads to wrong sort results, + e.g. "Dániel" coming after "Dylan". + + * Makefile.am (THANKS): Sort the final contributor list using our + own sort implementation - as others may result in a different order; + add a FIXME comment to remove this again once common platforms have + a functional 'sort -f'. Add '-k1,1' for a better sort order. + While at it, save a grep and perl call to prepare the list from + 'THANKS.in' by doing all in the first perl call. + +2015-02-11 Pádraig Brady <P@draigBrady.com> + + maint: remove redundant diff filtering from sc_long_lines + * cfg.mk (sc_long_lines): diff files are now completely excluded, + so no need to filter portions of them. + Reported by Bernhard Voelker. + +2015-02-11 Pádraig Brady <P@draigBrady.com> + + build: update to latest gnulib + This includes a change to require --with-libmount + to be used with configure, due to the many libmount dependencies. + + * bootstrap: Sync with gnulib to exit early on gnulib-tool error. + * gl/lib/tempname.c.diff: Adjust for gnulib changes. + * gl/lib/tempname.h.diff: Likewise. + * gl/modules/tempname: Likewise. + * doc/.gitignore: Add new gendocs_template_min gnulib script. + +2015-02-11 Pádraig Brady <P@draigBrady.com> + + maint: exclude diff files from long lines check + * cfg.mk: Add .diff files to the exclusion expression + for sc_long_lines, since the gnulib code might be >= 80 chars. + Note 80 char lines trigger due to the added +/- diff marks. + Also normalize the $$ used in the other sc_long_lines exclusion + expressions. + + maint: avoid arbitrary memory access with buggy localtime() + * src/ls.c (align_nstrftime): Be defensive and validate the tm_mon + index before using to access the abmon array. This was _not_ seen + to be an issue any system. See https://bugzilla.redhat.com/1190454 + + doc: give an example of using a seed for random operations + * doc/coreutils.texi (Random sources): Give an example using openssl, + generating a reproducible arbitrary amount of randomly distributed + data, given a seed value. + +2015-02-09 Bernhard Voelker <mail@bernhard-voelker.de> + + maint: make sc_dd_O_FLAGS more robust + The construct "diff ... || diff=1 || diff=" does not set the variable + in all cases. This could be triggered with: + + $ env make diff=1 make sc_dd_O_FLAGS + dd_O_FLAGS + maint.mk: ./src/dd.c has inconsistent O_ flag lists + cfg.mk:59: recipe for target 'sc_dd_O_FLAGS' failed + make: *** [sc_dd_O_FLAGS] Error 1 + + * cfg.mk (sc_dd_O_FLAGS): Remember $? of the diff command directly + and check its value later rather than using the above mentioned + mapping. + +2015-02-09 Bernhard Voelker <mail@bernhard-voelker.de> + + maint: make sc_THANKS_in_duplicates more robust + The previous commit v8.23-124-g7b1ca5f made the above syntax-check rule + fail, because that took the whole content of THANKS.in for comparison. + + * cfg.mk (sc_THANKS_in_duplicates): Strip off the header (all before the + first empty line) and the footer (all past the next empty line) from + 'THANKS.in' for the check. + +2015-02-09 Bernhard Voelker <mail@bernhard-voelker.de> + + maint: sort contributors in THANKS.in + * THANKS.in: Document the preferred sort order as a comment + at the top of the file. Change "Марк Коренберг" to latin1 + ("Mark Korenberg"). Sort all entries. + * cfg.mk (sc_THANKS_in_sorted): Add rule to ensure that + 'THANKS.in' remains sorted. + +2015-02-06 Pádraig Brady <P@draigBrady.com> + + maint: document a caveat in the tail inotify implementation + * src/tail.c (main): Document another caveat with the + inotify implementation wrt multiple hardlinked files. + +2015-02-06 Pádraig Brady <P@draigBrady.com> + + tail: return inotify resources where possible + Each user has a maximum number of inotify watches, + so handle the cases where we exhaust these resources. + + * src/tail.c (tail_forever_inotify): Ensure we inotify_rm_watch() + the watch for an inode, when replacing with a new watch for a name. + Return all used inotify resources when reverting to polling. + Revert to polling upon first indication of inotify resource exhaustion. + Revert to polling on any inotify resource exhaustion. + Diagnose resource exhaustion correctly in all cases. + Avoid redundant reinsertion in the hash for unchanged watches + (where only attributes of the file are changed). + * tests/tail-2/retry.sh: Avoid false failure when reverting to polling. + * tests/tail-2/inotify-rotate.sh: Likewise. + * tests/tail-2/symlink.sh: Likewise. + * tests/tail-2/inotify-rotate-resources.sh: New test to check + that we're calling inotify_rm_watch() for replaced files. + * tests/local.mk: Reference the new test. + * NEWS: Mention the bug fix. + * THANKS.in: Thanks for reporting and problem identification. + +2015-02-06 Pádraig Brady <P@draigBrady.com> + + tests: fix recent regression in tail inotify test + * tests/tail-2/inotify-rotate.sh (cleanup_fail_): Set fail=1 + so that failures are identified. Regression in v8.23-63-g111a2b9 + Also use print_ver_ rather than open coding --verbose support. + Also check for more than a single 'b' which seems brittle. + +2015-02-05 Yury Usishchev <y.usishchev@samsung.com> + + build: ensure make-prime-list doesn't access out of bounds memory + The -fsanitize=address run associated with v8.22-75-gf940fec + failed to check make-prime-list, as src/primes.h is not + regenerated with `make clean`. Running with -fsanitize=address + indicates a read 1 byte beyond the allocated buffer. + + $ rm src/make-prime-list.o + $ make AM_CFLAGS=-fsanitize=address src/make-prime-list + $ src/make-prime-list 5000 + + ================================================================= + ==13913==ERROR: AddressSanitizer: heap-buffer-overflow on address + 0x61e00000fa43 at pc 0x4016f5 bp 0x7fff9d9840e0 sp 0x7fff9d9840d0 + READ of size 1 at 0x61e00000fa43 thread T0 + #0 0x4016f4 in main src/make-prime-list.c:214 + #1 0x7f98892c5fdf in __libc_start_main (/lib64/libc.so.6+0x1ffdf) + #2 0x401774 (src/make-prime-list+0x401774) + + 0x61e00000fa43 is located 0 bytes to the right of 2499-byte + region [0x61e00000f080,0x61e00000fa43) allocated by thread T0 here: + #0 0x7f98896ba7b7 in malloc (/lib64/libasan.so.1+0x577b7) + #1 0x400f3f in xalloc src/make-prime-list.c:163 + #2 0x400f3f in main src/make-prime-list.c:198 + + SUMMARY: AddressSanitizer: heap-buffer-overflow + src/make-prime-list.c:214 main + Shadow bytes around the buggy address: + 0x0c3c7fff9ef0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 + 0x0c3c7fff9f00: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 + 0x0c3c7fff9f10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 + 0x0c3c7fff9f20: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 + 0x0c3c7fff9f30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 + =>0x0c3c7fff9f40: 00 00 00 00 00 00 00 00[03]fa fa fa fa fa fa fa + 0x0c3c7fff9f50: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa + 0x0c3c7fff9f60: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa + 0x0c3c7fff9f70: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa + 0x0c3c7fff9f80: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa + 0x0c3c7fff9f90: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa + Shadow byte legend (one shadow byte represents 8 application bytes): + Addressable: 00 + Partially addressable: 01 02 03 04 05 06 07 + Heap left redzone: fa + ... + ==13913==ABORTING + + * src/make-prime-list.c (main): Bounds check the incremented index, + before using to access the buffer. + Fixes http://bugs.gnu.org/19784 + +2015-02-03 Pádraig Brady <P@draigBrady.com> + + build: fix invalid gnulib patch + * gl/lib/tempname.c.diff: Fix recent breakage so it applies again. + Invalid patch was noticed at http://hydra.nixos.org/eval/1172233 + * cfg.mk: Exempt diff files from these "id_est" syntax checks. + (sc_ensure_gl_diffs_apply): A new syntax check, to ensure all + patches under gl/ apply cleanly. Note we use --fuzz=0 to check + patches apply cleanly for safety, due to the patch(1) issue detailed + in commit v8.21-117-g46f7e05 + * gl/lib/regcomp.c.diff: Rediffed. + * gl/lib/regex_internal.c.diff: Likewise. + * gl/lib/regex_internal.h.diff: Likewise. + * gl/lib/regexec.c.diff: Likewise. + * gl/lib/tempname.h.diff: Likewise. + +2015-02-03 Bernhard Voelker <mail@bernhard-voelker.de> + + tests: avoid a FP on aarch64 when comparing env/printenv output + The following test fails on aarch64 on openSUSE's OpenBuildService + due to glibc's execvp reversing the pointers of 'environ', i.e., + the output of "env|tac" equals "env env" on that platform. + + * tests/misc/printenv.sh: Use 'env env' to work around the behavior + on that platform. + While at it, fix the grep pattern which suppressed all environment + variables starting with an underscore "_" instead of "$_" (and + "$LD_PRELOAD") only. + +2015-02-02 Pádraig Brady <P@draigBrady.com> + + dircolors: sync with Xiph file extensions + * src/dircolors.hin: Remove deprecated anx, axa, axv. Add opus. + Suggested by Scott Teal. + +2015-01-31 Bernhard Voelker <mail@bernhard-voelker.de> + + doc,maint: fix use of "i.e." in documentation and comments + To align with all other places (and correct grammar), change all + upper-case "I.E." to "I.e.". Furthermore, ensure that "i.e." is + followed by a comma. Finally, ensure to use a double-space before + "I.e.," at the beginning of a sentence. + + The following was used to change all offending uses (apart from + old ChangeLog files): + + $ git grep -liF 'i.e.' \ + | xargs sed -i \ + -e 's/I\.E\./I.e./g' \ + -e 's/\. \(I\.e\.\)/. \1/g' \ + -e 's/\([Ii]\.e\.\)\( \)/\1,\2/g' \ + -e 's/\([Ii]\.e\.\)$/\1,/g' + + * cfg.mk (sc_prohibit_uppercase_id_est): Add new rule. + (sc_ensure_double_space_after_dot_before_id_est): Likewise. + (sc_ensure_comma_after_id_est): Likewise. + (old_NEWS_hash): Refresh hash via "make update-NEWS-hash". + * NEWS: Change use of "id est" abbreviation via the above command. + * README: Likewise. + * README-prereq: Likewise. + * doc/coreutils.texi: Likewise. + * gl/lib/rand-isaac.c: Likewise. + * gl/lib/tempname.c.diff: Likewise. + * man/stdbuf.x: Likewise. + * src/cat.c: Likewise. + * src/copy.c: Likewise. + * src/copy.h: Likewise. + * src/cp.c: Likewise. + * src/cut.c: Likewise. + * src/dd.c: Likewise. + * src/df.c: Likewise. + * src/fiemap.h: Likewise. + * src/longlong.h: Likewise. + * src/ls.c: Likewise. + * src/numfmt.c: Likewise. + * src/pr.c: Likewise. + * src/shred.c: Likewise. + * src/shuf.c: Likewise. + * src/split.c: Likewise. + * tests/Coreutils.pm: Likewise. + * tests/df/df-symlink.sh: Likewise. + * tests/df/skip-rootfs.sh: Likewise. + * tests/init.sh: Likewise. + * tests/ls/color-norm.sh: Likewise. + * tests/misc/basename.pl: Likewise. + * tests/misc/ls-misc.pl: Likewise. + * tests/misc/md5sum-bsd.sh: Likewise. + * tests/misc/shred-exact.sh: Likewise. + * tests/misc/sort.pl: Likewise. + * tests/misc/stdbuf.sh: Likewise. + * tests/misc/tac-continue.sh: Likewise. + * tests/rm/r-root.sh: Likewise. + * tests/tail-2/symlink.sh: Likewise. + +2015-01-29 Pádraig Brady <P@draigBrady.com> + + doc: clarify the output format for the *sum utilities + * src/md5sum.c (usage): Detail the reasons for the default + double space between checksum and file name. + * doc/coreutils.texi (md5sum invocation): Likewise. + Explicitly mention the 3 formats that --check supports. + + Fixes http://bugs.gnu.org/19725 + +2015-01-28 Giuseppe Scrivano <gscrivano@gnu.org> + + sync: support syncing specified arguments + * m4/jm-macros.m4 (coreutils_MACROS): Check for syncfs(). + * man/sync.x: Add references to syncfs, fsync and fdatasync. + * doc/coreutils.texi (sync invocation): Document the new feature. + * src/sync.c: Include "quote.h". + (AUTHORS): Include myself. + (MODE_FILE, MODE_DATA, MODE_FILE_SYSTEM, MODE_SYNC): New enum values. + (long_options): Define. + (sync_arg): New function. + (usage): Describe that arguments are now accepted. + (main): Add arguments parsing and add support for fsync(2), + fdatasync(2) and syncfs(2). + * tests/misc/sync.sh: New (and only) test for sync. + * tests/local.mk: Reference the new test. + * AUTHORS: Add myself to sync's authors. + * NEWS: Mention the new feature. + +2015-01-25 Jim Meyering <meyering@fb.com> + + scripts: autotools-install: update + * scripts/autotools-install: Increase automake's version number + to 1.15 and add Stefano Lattarini's new GPG key ID. + Increase gettext's version to 0.19.4 and add Daiki Ueno's GPG key ID. + Also move VERSION definition "up" so that it is once again + automatically updated via the emacs hook snippet at the end + of the file. + +2015-01-24 Pádraig Brady <P@draigBrady.com> + + stty: only print supported options for combined options + * src/stty.c (usage): Don't reference unsupported options, + in the combined options descriptions. + * doc/coreutils.texi (stty invocation): Adjust for the + new order of the 'sane' and 'raw' combined options. + Also add -iutf8 to the 'sane' list. + + stty: document the 'status' character where supported + * src/stty.c (usage): On systems that support this setting (BSD), + display 'status' in the list of adjustable special characters. + * doc/coreutils.texi (stty invocation): Mention the option, and that + it's not currently supported on Linux. + +2015-01-24 Pádraig Brady <P@draigBrady.com> + + stty: document the 'discard' character setting + The equivalent of this is 'flush', but that was never documented + as an option (though was output with stty -a). Therefore use + the more descriptive name, also generally used on BSD systems. + Note even though this setting seems ineffective on Linux, supporting + the setting is useful to allow terminal programs to receive + the default ^O character code. + + * doc/coreutils.texi (stty invocation): Document the 'discard' option. + * src/stty.c (struct control_info): Add 'discard'; same as 'flush'. + (display_all): Show 'discard' rather than 'flush' char. + (display_changed): Likewise. + (usage): Document the 'discard' option. + +2015-01-24 Pádraig Brady <P@draigBrady.com> + + stty: add support for extproc/LINEMODE + Add support for the "extproc" option which is well described at: + http://lists.gnu.org/archive/html/bug-readline/2011-01/msg00004.html + + * src/stty.c (usage): Describe the extproc option if either the + Linux EXTPROC local option is defined, or the equivalent + BSD TIOCEXT ioctl is defined. + (main): Make the separate ioctl call for extproc on BSD. + * doc/coreutils.texi (stty invocation): Describe the option, + and reference the related RFC 1116. + * NEWS: Mention the new feature. + +2015-01-20 Bernhard Voelker <mail@bernhard-voelker.de> + + tests: use returns_ function for new split test + * tests/split/record-sep.sh: Use the recently added returns_ function + to simplify the shell syntax in this test. Also remove the redirection + of stdout/stderr to /dev/null as this eases analyzing errors. + +2015-01-19 Assaf Gordon <assafgordon@gmail.com> + + split: new -t option to select record separator + * src/split.c (eolchar): A new variable to hold + the separator character (unibyte for now). + This is reference throughout rather than hardcoding '\n'. + (usage): Describe the new --separator option, and + mention records along with lines so there is no ambiguity + that all options treat lines and records equivalently. + (main): Have -t update eolchar, or default to '\n'. + * tests/split/record-sep.sh: New test case. + * tests/local.mk: Reference the new test. + * doc/coreutils.texi (split invocation): Document the new option. + Adjust --lines, --line-bytes, --number=[lr]/... to mention + they pertain to records if --separator is specified. + * NEWS: Mention the new feature. + +2015-01-19 Pádraig Brady <P@draigBrady.com> + + maint: fix typo in THANKS.in in previous commit + * THANKS.in: s/Stehpen/Stephen/ + +2015-01-19 Pádraig Brady <P@draigBrady.com> + + doc: clarify that du operands are interdependent + Following on from http://bugs.gnu.org/17546 + make it more obvious that du may elide specified operands + to avoid double counting in the set. + + * src/du.c (usage): Specify that du operates on the set of + operands, rather than each independently. + * doc/coreutils.texi (du invocation): Likewise. Also state + that the number of entries printed may change due to the + order specified. Currently, deeper items specified earlier + will result in them being displayed, but don't mention that + implementation detail in the documentation. + * THANKS.in: Add reporter. + Reported by Stephen Shirley + +2015-01-14 Bernhard Voelker <mail@bernhard-voelker.de> + + tests: use compare-vs-/dev/null instead of 'test -s' + When some program produces unexpected output, that use of + compare-vs-/dev/null will ensure that the surprising output is + printed in the test's output. With "test -s err" only, one + would have to instrument and rerun in order to see the offending + output. + + * cfg.mk (sc_prohibit_and_fail_1): Exempt 'compare' from this check. + * tests/dd/misc.sh: Change "tests -s ... || fail=1" to + "compare /dev/null ... && fail=1". + * tests/misc/nice.sh: Likewise. + * tests/rm/read-only.sh: Likewise. + * tests/tail-2/inotify-race.sh: Likewise. + * tests/touch/no-dereference.sh: Likewise. + + Suggested by Jim Meyering in + http://lists.gnu.org/archive/html/coreutils/2015-01/msg00042.html + +2015-01-14 Pádraig Brady <P@draigBrady.com> + + tests: add extra protection against unexpected exits + Many tests use `program ... && fail=1` to ensure expected + error situations are indicated. However that would mask + an unexpected exit (like a crash). Therefore explicitly + check the expected exit code. + Note where error messages are also verified, the extra + protection is not added. + + * tests/init.sh (returns_): A new helper function to + check the return code of a command, and used + throughout the tests. + * cfg.mk (sc_prohibit_and_fail_1): Add a syntax check + to avoid new instances of this issue. + +2015-01-12 Pádraig Brady <P@draigBrady.com> + + tests: avoid skipping some df tests with libmount + * tests/df/no-mtab-status.sh: Provide libmount placeholders, + to avoid skipping the test when libmount is in use. + * tests/df/skip-duplicates.sh: Likewise. + * tests/df/skip-rootfs.sh: Comment that the test is moot + when libmount (/proc/self/mountinfo) is being used. + +2015-01-10 Pádraig Brady <P@draigBrady.com> + + maint: clean up some test issues identified with shellcheck + * tests/cp/cp-a-selinux.sh: Comment why unused variables are assigned. + Fix misspellings noticed while adjusting. + * tests/cp/fiemap-perf.sh: Fix quoting. + * tests/misc/shuf.sh: Avoid useless use of cat. + * tests/misc/printf-surprise.sh: Likewise. + +2015-01-08 Daiki Ueno <ueno@gnu.org> + + maint: adjustments related to previous shuf crash fix + * tests/misc/shuf.sh: Improve the test so it detects + crashes in more cases. + * NEWS: Mention the previous fix. + +2015-01-08 Assaf Gordon <assafgordon@gmail.com> + + maint: skip long-lines syntax-check if unsupported + * cfg.mk(sc_long_lines): Skip if required wc and sed options + are not supported, which is currently the case on OS X. + +2015-01-06 Paul Eggert <eggert@cs.ucla.edu> + + shuf: do not mishandle 'shuf -i0-0 1' + Problem reported by Daiki Ueno in: http://bugs.gnu.org/19520 + * src/shuf.c (main): Avoid core dump if !input_range. + * tests/misc/shuf.sh: Test for this bug. + +2015-01-01 Bernhard Voelker <mail@bernhard-voelker.de> + + maint: update further copyright year number ranges + * bootstrap: Update copyright year manually (missing in previous + gnulib update). + * tests/init.sh: Likewise. + + The entries in the exemption list are processed by + "grep -vEf ./.x-update-copyright", and therefore evaluated as an + extended regular expression (ERE). Thus, the "bootstrap" entry + also matched for bootstrap.conf which we want to be updated. + + * .x-update-copyright: Change all entries to EREs, i.e. including + the caret ^ and dollar sign $ meta-characters matching the beginning + and the end of a line. + * bootstrap.conf: Update copyright year by "make update-copyright". + + Finally, the only one showing up with the following command should + be the COPYING file: + $ git grep 'Copyright .* Free Software' | grep -v '2015 Free Software' + +2015-01-01 Pádraig Brady <P@draigBrady.com> + + doc: fix man page formatting for split CHUNKS options + * src/split.c (usage): Indent the info on CHUNKS so that + help2man can match it and align appropriately in its own section. + Fixes http://bugs.gnu.org/19228 + + build: update to latest gnulib + Pick up an errno adjustment in xstrtol() that fixes + a spurious test failure on Darwin 14.0.0. + Also update copyright year to 2015 avoiding a syntax-check failure. + +2015-01-01 Pádraig Brady <P@draigBrady.com> + + maint: update all copyright year number ranges + Run "make update-copyright" and then... + + * tests/sample-test: Adjust to use the single most recent year. + * tests/du/bind-mount-dir-cycle-v2.sh: Fix case in copyright message, + so that year is updated automatically in future. + +2014-12-30 Pádraig Brady <P@draigBrady.com> + + tests: fix possible 8 minute running time of inotify-rotate.sh + Commit v8.23-63-g111a2b9 removed the expensive tag on this test, + as it runs quickly on systems with inotify. However without that + it would take about 8 minutes for the test to complete all iterations. + + * tests/tail-2/inotify-rotate.sh: Tag as expensive without inotify. + Also adjust the polling parameters used on systems without inotify + so that the test completes within about 15 seconds. + +2014-12-30 Pádraig Brady <P@draigBrady.com> + + build: update to latest gnulib + Included in this are gnulib changes 3ea43e02 2768ceb7 + which make the device IDs from /proc/self/mountinfo + available to df. This can be leveraged by a subsequent + change to df to present a more accurate list of file systems. + + * bootstrap: Merge from gnulib. + * src/ls.c (dev_ino_pop): s/obstack_blank/obstack_blank_fast/ + as this API/ABI has changed, giving memory exhausted errors + if negative (large positive) numbers are passed to obstack_blank(). + * tests/df/skip-duplicates.sh: Adjust as the new gnulib code + requires a non NULL mnt_opts even when mnt_type is not "none". + +2014-12-29 Pádraig Brady <P@draigBrady.com> + + maint: remove duplicate names from THANKS + * .mailmap: Adjust so that there is only a single + entry per name in the generated THANKS. + +2014-12-26 Pádraig Brady <P@draigBrady.com> + + doc: update the URL referencing SI prefixes + Identified at https://www.gnu.org/software/gnun/linc/linc.html + + * doc/coreutils.texi (Block size): Fix the stale link. + +2014-12-25 Pádraig Brady <P@draigBrady.com> + + tests: fix error message check on some systems + http://hydra.nixos.org/build/18129583 identified (on OS X) + an incorrect test assumption in the previous commit. + + * gl/lib/xdectoint.c (__xnumtoint): Suppress the EINVAL + error message as it's redundant in this context. + * tests/misc/tail.pl: Suppress _optionally_ appended + strerror messages. + * tests/fmt/base.pl: Likewise. + * tests/pr/pr-tests.pl: Likewise. + * tests/split/l-chunk.sh: Likewise. + +2014-12-19 Pádraig Brady <P@draigBrady.com> + + diagnose too-large numbers better + Following on from commit v8.23-82-gaddae94, consistently diagnose + numbers that are too large, so as to distinguish from other errors, + and make the limits obvious. + + * gl/modules/xdectoint: A new module implementing xdecto[iu]max(), + which handles the common case of parsing a bounded integer and + exiting with a diagnostic on error. + * gl/lib/xdectoimax.c: The signed variant. + * gl/lib/xdectoint.c: The parameterized implementation. + * gl/lib/xdectoint.h: The interface. + * gl/lib/xdectoumax.c: The unsigned variant. + * bootstrap.conf: Reference the new module. + * cfg.mk (exclude_file_name_regexp--sc_require_config_h_first): + Exclude the parameterized templates. + * src/csplit.c: Output EOVERFLOW or ERANGE errors if appropriate. + * src/fmt.c: Likewise. + * src/fold.c: Likewise. + * src/head.c: Likewise. + * src/ls.c: Likewise. + * src/nl.c: Likewise. + * src/nproc.c: Likewise. + * src/shred.c: Likewise. + * src/shuf.c: Likewise. + * src/stdbuf.c: Likewise. + * src/stty.c: Likewise. + * src/tail.c: Likewise. + * src/truncate.c: Likewise. + * src/split.c: Likewise. + * src/pr.c: Likewise. + * tests/pr/pr-tests.pl: Adjust to avoid matching errno diagnostic. + * tests/fmt/base.pl: Likewise. + * tests/split/l-chunk.sh: Likewise. + * tests/misc/shred-negative.sh: Likewise. + * tests/misc/tail.pl: Likewise. Also remove the redundant + existing ERR_SUBST from test err-6. + * tests/ls/hex-option.sh: Check HEX/OCT options. + * tests/misc/shred-size.sh: Likewise. + * tests/misc/stty-row-col.sh: Likewise. + +2014-12-19 KO Myung-Hun <komh@chollian.net> + + build: add $(EXEEXT) suffix to man page make targets + * man/local.mk: Add $(EXEEXT) suffix to the executables, + which is significant on OS/2 for example. + + build: don't call OS/2 routines on all systems + * src/system.h: Add a missing __OS2__ ifdef guard. + Also adjust spacing around () to avoid a syntax-check failure. + +2014-12-18 KO Myung-Hun <komh@chollian.net> + + build: expand a response file and a wildcard on OS/2 + OS/2 traditional shells(cmd) do not expand a response file(@file) + or a wildcard. Expand them in each utility itself. + + * src/system.h (initialize_main): Define on OS/2. Expand a response + file and a wildcard. + +2014-12-16 Bernhard Voelker <mail@bernhard-voelker.de> + + maint: fix how to request changes for THANKS.in + * THANKS.in: Change the comment at the top to send change requests + regarding this file to the main mailing list rather than referring + to cp's --help output for the mailing list's address - which does + not include that information anymore. + +2014-12-16 Paul Eggert <eggert@cs.ucla.edu> + + dd: fix typo in previous change + Reported by Bernhard Voelker in: + http://lists.gnu.org/archive/html/bug-gnulib/2014-12/msg00191.html + * src/dd.c (scanargs): s/IN/OUT/. + + dd: diagnose too-large numbers better + Reported by Isabella Parakiss in: + http://lists.gnu.org/archive/html/bug-gnulib/2014-12/msg00184.html + * src/dd.c (parse_integer): Return strtol_error code, not bool. + All callers changed. + (scanargs): Improve quality of diagnostic when a number is too large. + +2014-12-10 Pádraig Brady <P@draigBrady.com> + + build: use the system printf routines in most cases + glibc <= 2.5 would crash when passed invalid long double values, + therefore internal gnulib routines were used, essentially only by od, + to output such invalid values. Later glibc versions don't crash, + as per https://sourceware.org/bugzilla/show_bug.cgi?id=4586 + and subsequently od was adjusted to use the system printf routines + through the use of the ftoastr module with commit v8.7-22-ga71c22f. + Consequently our testing of this feature was moot, and use of + the gnulib printf replacement for printf(1), od(1) and error(3) etc. + was redundant. + + * configure.ac (gl_printf_safe): Unset so that we don't check that + "nan" is output for these long double values. + * tests/misc/od-float.sh: Adjust all existing checks to fail if od + exits with failure status (like crashing for example). Add a new case + for one of the problematic invalid long double values for x86_64. + We only check that od exits successfully at present, which may change + if https://sourceware.org/bugzilla/show_bug.cgi?id=17661 is resolved. + +2014-12-03 Pádraig Brady <P@draigBrady.com> + + maint: avoid -fsanitize=undefined warning in rand-isaac + * gl/lib/rand-isaac.c (isaac_refill): readisaac() purposefully passes + unaligned pointers to avoid memory copies. This is only done on + platforms where this is defined, so avoid the associated + runtime warning generated with -fsanitize=undefined, which is: + + lib/rand-isaac.c:125:182: runtime error: store to misaligned address + 0x63100003d7fd for type 'isaac_word', which requires 8 byte alignment + 0x63100003d7fd: note: pointer points here + 47 ce ed a4 be be be 00 00 00 00 00 00 00 00 ... + ^ + +2014-12-02 Pádraig Brady <P@draigBrady.com> + + maint: avoid signed overflow warning with -O3 + Prompted by the implicit -O3 added by american-fuzzy-lop, + seen with GCC 4.9.2 on x86_64. + + src/pr.c: In function 'print_files.part.5': + src/pr.c:1781:6: error: assuming signed overflow does not occur + when simplifying conditional to constant [-Werror=strict-overflow] + if (cols_ready_to_print () == 0) + + This happens because cols_ready_to_print() is inlined + thus reducing the comparison to the N variable in print_page(). + Now this can't overflow due to the protection when parsing the + specified column, but use an unsigned type to avoid the + apparent signed overflow. + + * src/pr.c (cols_ready_to_print): Increment an unsigned type to + avoid the subsequent signed overflow warning. + +2014-12-02 Boris Ranto <branto@redhat.com> + + du: handle sub-bind-mount cycles gracefully + This patch fixes the handling of sub-bind-mount cycles which are + incorrectly detected as the file system errors. If you bind mount the + directory 'a' to its subdirectory 'a/b/c' and then run 'du a/b' you + will get the circular dependency warning even though nothing is wrong + with the file system. This happens because the first directory that is + traversed twice in this case is not a bind mount but a child of bind + mount. The solution is to traverse all the directories in the cycle + that fts detected and check whether they are not a (bind) mount. + + * src/du.c (mount_point_in_fts_cycle): New function that checks whether + any of the directories in the cycle that fts detected is a mount point. + * src/du.c (process_file): Update the function to use the new function + that looks up all the directories in the fts cycle instead of only the + last one. + * tests/du/bind-mount-dir-cycle-v2.sh: New test case that exhibits the + described behavior. + * tests/local.mk: Reference the new root test. + * NEWS: Mention the bug fix. + +2014-11-29 Pádraig Brady <P@draigBrady.com> + + tests: avoid hardlink to symlink tests where not supported + These checks weren't correctly avoided in commit v8.23-66-g222d7ac + + * tests/cp/same-file.sh: Avoid all hardlink to symlink tests + on platforms where that's not supported. + Identified by http://hydra.nixos.org/build/17636446 + +2014-11-28 Pádraig Brady <P@draigBrady.com> + + build: fix missing casts from recent change + * src/dd.c (alloc_[io]buf): I committed a stale patch that omitted + the casts needed on 32 bit. + Identified by http://hydra.nixos.org/build/17610188 + +2014-11-27 Pádraig Brady <P@draigBrady.com> + + rm: fix prompted number of arguments to remove on some platforms + "zu" was output on solaris 8 for example rather than the number, + since coreutils-8.22. + + * cfg.mk: Disallow %z, since we don't currently use the gnulib + fprintf module, so any usage with it is non portable. Also + our usage with error() currently works only through an ancillary + dependency on the vfprintf gnulib module. + * src/rm.c (main): Use %PRIuMAX rather than %zu for portability. + * src/dd.c (alloc_[io]buf): Likewise for consistency. + * src/od.c (main): Likewise. + * src/split.c (set_suffix_length): Likewise. + * NEWS: Mention the rm bug fix. + Reported in http://bugs.gnu.org/19184 + +2014-11-26 Pádraig Brady <P@draigBrady.com> + + tests: fix portability issue in dd/ascii test + Solaris 8 was seen to issue this error: + "printf: `&': illegal format character" + + * test/dd/ascii.sh: Use the coreutils printf in this test + rather than the system one, to avoid portability issues. + +2014-11-26 Paul Eggert <eggert@cs.ucla.edu> + + build: port new rule for coreutils.h to old Bash + Reported by Ted Carr in: http://bugs.gnu.org/19184 + * src/local.mk (src/coreutils.h): + Don't assume single_binary_progs is nonempty. + +2014-11-24 Tobias Stoeckmann <tobias@stoeckmann.org> + + paste: fix possible truncated output with large files + If '\n' was present at the size_t boundary of a file, + then that and subsequent data would be discarded. + + * src/paste.c (paste_parallel): Avoid the overflow issue + by changing the flag to a boolean rather than a count. + * NEWS: Mention the bug fix. + +2014-11-24 Pádraig Brady <P@draigBrady.com> + + df: only suppress remote mounts of separate exports with --total + * src/df.c (filter_mount_list): Separate remote locations are + generally explicitly mounted, so list each even if they share + the same remote device and thus storage. However with --total + keep the suppression to give a more accurate value for the + total storage available. + (usage): Expand on the new implications of --total and move + it in the options list according to alphabetic order. + doc/coreutils.texi (df invocation): Mention that --total impacts + on deduplication of remote file systems and also move location + according to alphabetic order. + * tests/df/skip-duplicates.sh: Add remote test cases. + * NEWS: Mention the change in behavior. + + Reported in http://bugs.debian.org/737399 + Reported in http://bugzilla.redhat.com/920806 + Reported in http://bugzilla.opensuse.org/866010 + Reported in http://bugzilla.opensuse.org/901905 + +2014-11-23 Pádraig Brady <P@draigBrady.com> + + df: ensure -a shows all remote file system entries + commit v8.22-125-g9d736f8 printed placeholder "-" values + for device names that didn't match the preferred device name + for a particular mount point. However that was seen to erroneously + suppress values for aliased host names or exports, common with + remote file systems. + + * src/df.c (me_for_dev): Rename from devname_for_dev() so that + we can determine the remoteness as well as the name for the + preferred mount entry. + (get_dev): Don't output place holder values when both + current and preferred mount entries are remote. + + Reported in http://bugs.debian.org/737399 + +2014-11-22 Pádraig Brady <P@draigBrady.com> + + tests: add a case verifying mv on case insensitive file systems + * NEWS: Update the recent entry to also mention the avoidance + of incorrectly unlinking a multi-hardlinked "source" file when + presented with source and dest that only differ in case. + * src/copy.c (same_file_ok): Mention the case issue with same_name(). + * tests/mv/hardlink-case.sh: Test the issue on HFS+. + * tests/local.mk: Reference the new test case. + * tests/mv/vfat: Remove an old related but unused test case. + +2014-11-21 Pádraig Brady <P@draigBrady.com> + + doc: mention how to avoid newlines impacting ls -1 + * src/ls.c (usage): Mention the -b and -q options + in the -1 description. + * doc/coreutils.texi (ls invocation): Likewise. + +2014-11-21 Pádraig Brady <P@draigBrady.com> + + tests: chcon: avoid false failure with newer selinux + file_t is now mapped to unlabeled_t as per: + http://danwalsh.livejournal.com/68189.html + + Therefore use the latter to ensure we match correctly. + This is needed on >= Fedora 21 for example, + while it also works on earlier releases. + +2014-11-21 Boris Ranto <branto@redhat.com> + + mv: fail when moving a file to a hardlink + We may run into a race condition if we treat hard links to the same file + as distinct files. If we do 'mv a b' and 'mv b a' in parallel, both a + and b can disappear from the file system. The reason is that in this + case the unlink on src is called and the system calls can end up being + run in the order where unlink(a) and unlink(b) are the last two system + calls. Therefore exit with an error code so that we avoid the potential + data loss. + + * src/copy.c (same_file_ok): Don't set unlink_src that was used by mv, + and return false for two hardlinks to a file in move_mode. + *src/copy.c (copy_internal): No longer honor the unlink_src option, + used only by mv. + NEWS: Mention the change in behavior. + * tests/cp/same-file.sh: Augment to cover the `cp -a hlsl1 sl1` case. + * tests/mv/hard-verbose.sh: Remove no longer needed test. + * tests/local.mk: Remove the reference to hard-verbose.sh. + * tests/mv/hard-4.sh: Adjust so we fail in this case. + * tests/mv/i-4.sh: Likewise. + * tests/mv/symlink-onto-hardlink-to-self.sh: Likewise. + +2014-11-18 Pádraig Brady <P@draigBrady.com> + + maint: run strftime syntax check on newer systems + * cfg.mk (sc_strftime_check): Adjust regex to handle + newer glibc info formatting with different indentation + and quoting. + +2014-10-30 Pádraig Brady <P@draigBrady.com> + + maint: tests: fix comments about retry_delay_ + * tests/tail-2/F-vs-missing.sh: Comment with the correct total delay. + * tests/tail-2/F-vs-rename.shi: Likewise. + * tests/tail-2/flush-initial.sh: Likewise. + * tests/tail-2/inotify-hash-abuse.sh: Likewise. + * tests/tail-2/pipe-f2.sh: Likewise. + * tests/misc/chroot-fail.sh: Initialize can_chroot_root in all cases. + + tests: make inotify-rotate more robust and efficient + * tests/tail-2/inotify-rotate.sh: Use retry_delay_ + to employ an exponential backoff with a total delay of + up to 25.5s. The 15s delay was seen to trigger a false + failure in http://hydra.nixos.org/build/16546517 + Also remove the .1s sleep in each of the 50 iterations + to reduce the running time of the test and thus the + expensive_ tag on this test was removed. + Also ensure that we use the standard exit procedure + upon failure to avoid any erroneous diagnostics due + to persistent files on NFS. + +2014-10-29 Bernhard Voelker <mail@bernhard-voelker.de> + + tests: make du/move-dir-while-traversing more robust + * tests/du/move-dir-while-traversing.sh: Catch failure of retry_delay_ + when waiting for the watcher to get ready. + +2014-10-27 Pádraig Brady <P@draigBrady.com> + + doc: mention that df -a includes duplicate file systems + * src/df.c (usage): Mention that duplicate file systems are shown + with this option, not just dummy file systems. + * doc/coreutils.texi (df invocation): For the --all option, expand + on the class of normally suppressed mount entries that it includes. + + Reported in http://bugs.debian.org/737399 + +2014-10-23 Pádraig Brady <P@draigBrady.com> + + maint: improve sc_long_lines syntax-check speed + sc_long_lines was the slowest syntax check + + before$ time make sc_long_lines + long_lines + real 0m2.740s + + after $ time make sc_long_lines + long_lines + real 0m0.677s + + * src/cfg.mk (sc_dd_max_sym_length): s/--max-line-length/-L/ + for compat with BSDs. + (sc_long_lines): Prefilter with wc -L to only identify lines + in files that have lines longer than 80 characters. + +2014-10-23 Mike Frysinger <vapier@gentoo.org> + + tests: d_type-check: don't hardcode the C library name + * tests/d_type-check: The hardcoded name doesn't hold true for all + Linux/glibc platforms, let alone Linux/non-glibc. + Use ctypes.util.find_library() instead to search for the library. + +2014-10-17 Bernhard Voelker <mail@bernhard-voelker.de> + + tests: avoid false failure when comparing /proc files + At least the MHz number in /proc/cpuinfo may change, thus leading to + a false positive failure when comparing the expected against the + actual output file. Use an invariant file instead: /proc/version. + + * tests/misc/head-c.sh: s/cpuinfo/version/ + +2014-10-16 Pádraig Brady <P@draigBrady.com> + + tests: fix test hang with unstable inodes in /proc + * cp/proc-zero-len.sh: Search the 'err' file + for the error to ignore, not stdin. + + chroot: call chroot() unconditionally to handle bind mounted "/" + * src/chroot.c (is_root): Adjust to compare canonicalized paths + rather than inodes, to handle (return false in) the case where + we have a tree that is constructed by first bind mounting "/" + (thus having the same inode). + (main): Unconditionally call chroot() because it's safer + and of minimal performance benefit to avoid in this case. + This will cause inconsistency with some platforms + not allowing `chroot / true` for non root users. + * tests/misc/chroot-fail.sh: Adjust appropriately. + * NEWS: Mention the bug fixes. + Fixes http://bugs.gnu.org/18736 + +2014-10-15 Pádraig Brady <P@draigBrady.com> + + copy: avoid an extraneous error when reporting errors + * src/copy.c (copy_reg): If sparse_copy() failed, then an + erroneous error about failing to extend the file would be reported. + + cp: read sparse files more efficiently with non regular destination + * src.copy.c (copy_reg): Use fiemap to read sparse files, even + if the output is not to a regular file. + * NEWS: Mention the improvement. + +2014-10-15 Pádraig Brady <P@draigBrady.com> + + cp: avoid speculative preallocation with --sparse=always + With --sparse=always use fallocate(...PUNCH_HOLE...) to + avoid any permanent allocation due to speculative + preallocation employed by file systems such as XFS. + + * m4/jm-macros.m4: Check for <linux/falloc.h> and fallocate(). + * src/copy.c (punch_hole): A new function to try and punch + a hole at the specified offset if supported. + (create_hole): Call punch_hole() after requesting a hole. + (extent_copy): Likewise. + * NEWS: Mention the improvement. + +2014-10-15 Pádraig Brady <P@draigBrady.com> + + copy: detect smaller holes than the copy buffer size + Previously cp would not detect runs of NULs that were + smaller than the buffer size used for I/O (currently 128KiB). + + * src/copy.c (copy_reg): Use an independent hole_size, set to + st_blksize, to increase the chances of detecting a representable hole, + in a run of NULs read from the input. + (create_hole): A new function refactored from sparse_copy() and + extent_copy() so we have a single place to handle holes. + (sparse_copy): Adjust to loop over the larger input buffer + in chunks of the passed hole size. Also adjust to only call + lseek once per hole, rather than at least once per input buffer. + * tests/cp/sparse.sh: Add test cases for various sparse chunk sizes. + * NEWS: Mention the improvement. + +2014-10-09 Wieland Hoffmann <themineo@gmail.com> + + doc: clarify that timeout limits are not 2038 seconds + * man/timeout.x: The 2038 that the sentence is referring to is the year + 2038, not 2038 seconds (the default unit used for timeouts). + +2014-10-08 Pádraig Brady <P@draigBrady.com> + + maint: avoid new signed overflow warning on 32 bit + Prompted by http://hydra.nixos.org/build/15682577 + with GCC 4.8.3 on i686 + + src/tac.c:557:6: error: assuming signed overflow does not occur + when simplifying conditional to constant [-Werror=strict-overflow] + if (bytes_copied < 0) + + This happens because copy_to_temp() is inlined in tac_nonseekable(), + thus reducing the comparison to the bytes_copied variable in + copy_to_temp. Now this can't overflow on either 32 or 64 bit + due to the protection of the preceding fwrite(). We could use a + guard like "if (bytes_copied <= OFF_T_MAX - bytes_read)" to avoid + the warning, but rather than a runtime branch, just use an unsigned + type to avoid apparent signed overflow on systems where the accumulation + is not promoted to unsigned (32 bit size_t, 64 bit off_t). + + * src/tac.c (copy_to_temp): Increment an unsigned type to + avoid the subsequent signed overflow warning. + +2014-10-08 Jim Meyering <meyering@fb.com> + + tests: split/b-chunk.sh: avoid spurious fail on non-Linux + * tests/split/b-chunk.sh: Skip each file that does not exist. + Some systems lack /proc/version or /sys/kernel/profiling + +2014-10-08 Pádraig Brady <P@draigBrady.com> + + maint: avoid syntax-check failures in previous patch + * tests/misc/od-j.sh: Non standard comparison order. + * tests/split/b-chunk.sh: Confusing input file name. + * tests/tail-2/tail-c.sh: Redundant require ulimit. + +2014-10-08 Paul Eggert <eggert@cs.ucla.edu> + + wc: don't miscount /sys and similar file systems + Fix similar problems in head, od, split, tac, and tail. + Reported by George Shuklin in: http://bugs.gnu.org/18621 + * NEWS: Document this. + * src/head.c (elseek): Move up. + (elide_tail_bytes_pipe, elide_tail_lines_pipe): New arg + CURRENT_POS. All uses changed. + (elide_tail_bytes_file, elide_tail_lines_file): + New arg ST and remove arg SIZE. All uses changed. + * src/head.c (elide_tail_bytes_file): + * src/od.c (skip): Avoid optimization for /sys files, where + st_size is bogus and st_size == st_blksize. + Don't report error at EOF when not optimizing. + * src/head.c, src/od.c, src/tail.c: Include "stat-size.h". + * src/split.c (input_file_size): New function. + (bytes_split, lines_chunk_split, bytes_chunk_extract): New arg + INITIAL_READ. All uses changed. Use it to double-check st_size. + * src/tac.c (tac_seekable): New arg FILE_POS. All uses changed. + (copy_to_temp): Return size of temp file. All uses changed. + * src/tac.c (tac_seekable): + * src/tail.c (tail_bytes): + * src/wc.c (wc): + Don't trust st_size; double-check by reading. + * src/wc.c (wc): New arg CURRENT_POS. All uses changed. + * tests/local.mk (all_tests): Add tests/misc/wc-proc.sh, + tests/misc/od-j.sh, tests/tail-2/tail-c.sh. + * tests/misc/head-c.sh: + * tests/misc/tac-2-nonseekable.sh: + * tests/split/b-chunk.sh: + Add tests for problems with /proc and /sys files. + * tests/misc/od-j.sh, tests/misc/wc-proc.sh, tests/tail-2/tail-c.sh: + New files. + +2014-10-04 Bernhard Voelker <mail@bernhard-voelker.de> + + doc: document stat's output with the --terse option + * doc/coreutils.texi (stat invocation): Add a paragraph documenting + stat's output format when the --terse option is specified, both in + normal and in --file-system mode. + + Reported by Dan Jacobson <jidanni@jidanni.org> + in http://bugs.gnu.org/18624 + +2014-10-02 Nick Alcock <nick.alcock@oracle.com> + + tests: fix false failure for test referencing libdl + * init.cfg (gcc_shared_): -ldl has to be positioned after the object + files that may rely upon it. This fixes tests/cp/nfs-removal-race.sh + which references dlsym() from libdl. + +2014-10-02 Bernhard Voelker <mail@bernhard-voelker.de> + + maint: avoid double semicolon syntax check failure + A syntax-check recently added to gnulib would trigger a failure + (once gnulib gets updated here) for a statement introduced with + commit v8.23-43-gaf2a4ed: + + src/dd.c:806: char const *time_fmt = _(", %g s, %s/s\n");; + maint.mk: Double semicolon detected + make: *** [sc_prohibit_double_semicolon] Error 1 + + * src/dd.c (print_xfer_stats): s/;;/;/ + +2014-09-30 Federico Simoncelli <fsimonce@redhat.com> + + dd: new status=progress level to print stats periodically + * src/dd.c: Report the transfer progress every second when the + new status=progress level is used. Adjust the handling and + description of the status= option so that they're treated as + mutually exclusive levels, rather than flags with implicit precedence. + * doc/coreutils.texi (dd invocation): Document the new progress + status level. Reference the new level in the description of SIGUSR1. + * tests/dd/stats.sh: Add new test for status=progress. + * tests/dd/misc.sh: Change so status=none only takes precedence + if it's the last level specified. + * NEWS: Mention the feature. + +2014-09-30 Pádraig Brady <P@draigBrady.com> + + dd: use more robust SIGUSR1 handling + * src/dd.c (ifd_reopen): A new wrapper to ensure we + don't exit upon receiving a SIGUSR1 in a blocking open() + on a fifo for example. + (iftruncate): Likewise for ftruncate(). + (iread): Process signals also after a short read. + (install_signal_handlers): Install SIGINFO/SIGUSR1 handler + even if set to SIG_IGN, as this is what the parent can easily + set from a shell script that can send SIGUSR1 without the + possiblity of inadvertently killing the dd process. + * doc/coreutils.texi (dd invocation): Improve the example to + show robust usage wrt signal races and short reads. + * tests/dd/stats.sh: A new test for various signal races. + * tests/local.mk: Reference the new test. + * NEWS: Mention the fix. + +2014-09-24 Paul Eggert <eggert@cs.ucla.edu> + + test: check for Fedora 20 sort key bug + Problem reported by Göran Uddeborg in: http://bugs.gnu.org/18540 + * tests/misc/sort.pl: New test 23. + +2014-09-24 David Sterba <dsterba@suse.cz> + + mv: use reflink=auto mode by default + On some filesystems (BTRFS), moving a file within the filesystem may + cross subvolume boundaries and we can use a lightweight reflink copy, + similar to what cp(1) can do, which is faster than a full file copy. + This is enabled by default because it's only an optimization for + the fall back copy and does not break user expectations or usability. + + * src/mv.c (cp_option_init): Set the reflink mode to AUTO. + * NEWS: Mention the improvement. + +2014-09-23 Pádraig Brady <P@draigBrady.com> + + stty: only list supported options in --help and man pages + * src/stty.c (usage): Exclude unsupported options from --help, + which for example impacts the "dsusp" and "cdtrdsr" options on Linux. + Fixes http://bugs.gnu.org/18506 + +2014-09-23 Michal Nazarewicz <mina86@mina86.com> + + doc: fix use of "e.g." in stdbuf help message + "E.g." stands for latin "exempli gratia" which is typically read + as "for example". "E.g." does not stand for the word "example". + As such, "for e.g." might be read as "for for example". + + Fix this usage by simply replacing "e.g." with "example". + +2014-09-23 Bernhard Voelker <mail@bernhard-voelker.de> + + build: pass program name to help2man after other options + * man/local.mk (.x.1): Move the program name argument down after + the last option argument when calling $(run_help2man). + While the other way would be accepted for the GNU help2man program, + it is not for the 'dummy-man' script (called as a fallback on + systems lacking perl). + The wrong order was introduced in commit v8.21-119-gb3578fc while + adding the --info-page option. + + build: fix argument count check in dummy-man again + * man/dummy-man: Fix argument count check, now only permitting + exactly 1 argument, the program name. + Reported by Andreas Schwab <schwab@linux-m68k.org> + +2014-09-22 Alban Bedel <alban.bedel@avionic-design.de> + + build: fix an inverted test breaking dummy-man + * man/dummy-man: Fix argument count check, + allowing dummy-man to run (on systems without perl). + Fixes http://bugs.gnu.org/18531 + +2014-09-19 Pádraig Brady <P@draigBrady.com> + + build: fix dependency issues with man page generation + * .gitignore: Remove reference to no longer generated make file. + * configure.ac: Don't bother generating placeholder make file. + * man/local.mk: Hardcode the man page deps list for normal builds + to be compatible with all make implementations and configure options. + Note in SINGLE_BINARY mode, all man pages will be generated on + any change to the coreutils binary, but development will generally + not be done in this mode, so this shouldn't be an issue. + + Fixes http://bugs.gnu.org/18055 + +2014-09-19 Jim Meyering <meyering@fb.com> + + maint: don't trigger gcc-5's new -Wlogical-not-parentheses warning + * src/dircolors.c (main): Parenthesize !VAR as LHS to "<", + to avoid triggering gcc's new -Wlogical-not-parentheses warning. + +2014-09-19 Pádraig Brady <P@draigBrady.com> + + cp: fix handling of -H with multiply specified source dirs + Following on from commit v5.92-729-g130dd06, also avoid + the erroneous directory hardlink warning with -H. + + * src/copy.c (copy_internal): Also handle the -H case + for command line arguments. + * tests/cp/duplicate-sources.sh: Augment the test case. + * NEWS: Augment the news entry. + +2014-09-19 Pádraig Brady <P@draigBrady.com> + + cp: issue correct warning and ignore duplicate source dirs + * src/copy.c (copy_internal): Handle the case where we have the + same destination directory as already encountered, which can only + be due to the corresponding source directory being specified multiple + times. + * tests/cp/duplicate-sources.sh: Add a test for the new multiply + specified directory case, and the existing multiply specified file case. + * tests/local.mk: Reference the new test. + * NEWS: Mention the bug fix. + + doc: output correct --help references with --program-prefix + * src/system.h (emit_ancillary_info): Take the invariant PROGRAM_NAME + as a parameter, so that consistent references are made to online docs + and texinfo nodes, when a --program-prefix is in place. Note the + man pages don't need this fix as they're generated before the program + prefix is used. + * NEWS: Mention the improvements in references to online documentation. + + doc: ensure the correct texinfo nodes are referenced in --help + * src/system.h (emit_ancillary_info): For commands that don't have + a 1:1 mapping with the texinfo node names, provide a mapping to + the correct node. + * doc/coreutils.texi: Add some extra cross references noticed while + checking this. + Fixes http://bugs.debian.org/762092 + +2014-09-16 Bernhard Voelker <mail@bernhard-voelker.de> + + tests: fix false du failure on newer XFS + On XFS, when creating the ~2G test file 'big' in a for-loop by + appending 20M each time, the file ends up using ~4G - visible in + 'st_blocks'. The unused space would be reclaimed later. + This feature is called "speculative preallocation" which aims at + avoiding fragmentation. + According to the XFS FAQ [1], there are two particular aspects of + XFS speculative preallocation that are triggering this: + + 1. "Applications that repeatedly trigger preallocation and reclaim + cycles [after file close] can cause fragmentation. + Therefore, this pattern is detected and causes the preallocation + to persist beyond the lifecycle of the file descriptor." + + 2. "Preallocation sizes grow as files grow larger." + + [1] http://xfs.org/index.php/XFS_FAQ + + Avoid one of the above by only doing a single close (reclaim cycle). + + * tests/du/2g.sh: Similar to the fix for a dd test (see commit + v8.22-65-g7c03fe2), avoid speculative preallocation by creating + the 'big' file in one go instead of appending to it in the loop. + Remove debugging statements as the output with 'set -x' is + sufficient nowadays. + +2014-09-11 Paul Eggert <eggert@cs.ucla.edu> + + cat: allow copying empty files to themselves + Problem reported by Vincent Lefevre in: http://bugs.gnu.org/18449 + * src/cat.c (main): Allow copying an empty file to itself. + * tests/misc/cat-self.sh: New test. + * tests/local.mk (all_tests): Add it. + +2014-09-11 Pádraig Brady <P@draigBrady.com> + + doc: reference online info pages directly from man pages + * src/system.h (emit_ancillary_info): Add a direct reference + to the corresponding online info documentation. Corresponding + redirects were put in place on www.gnu.org to allow for concise links. + * help2man: Adjust to add the "online help" link (and subsequent + translation bugs link) to a "REPORTING BUGS" section. + Also add the concise links for further information in --help + to the "SEE ALSO" section, and dispense with the more verbose + default for that. + +2014-09-10 Pádraig Brady <P@draigBrady.com> + + doc: adjust reference to info nodes in man pages + old form: coreutils '$cmd invocation' + new form: '(coreutils) $cmd invocation' + + The old form erroneously referenced the node for the 'coreutils' + multi-call program. Now that problematic node name was renamed + in commit v8.23-18-g72e470b, but the newer less ambiguous form + also has the advantage of working with the pinfo viewer for example. + Full discussion at http://bugs.gnu.org/18428 + + * man/local.mk: Adjust man page references to texinfo nodes. + * src/system.h: Adjust --help references to texinfo nodes. + +2014-09-10 Pádraig Brady <P@draigBrady.com> + + maint: include libstdbuf.c in extraneous headers check + * cfg.mk (sc_system_h_headers): Don't exclude libstdbuf.c. + * src/libstdbuf.c: Remove headers already included in system.h. + + build: adjust previous transformations on libstdbuf name + * src/local.mk (transform): commit v8.23-22-g6f9b018 discarded all + transformations on the libstdbuf.so name. Be more conservative and + only exclude the $(program_transform_name) portion for libstdbuf. + + build: avoid name transformations on libstdbuf + * src/local.mk (transform): Skip the transformation for libstdbuf + since that should not be subject to name clashes, and we need + to reference the name directly in LD_PRELOAD etc. + * configure.ac: Add a comment on the coupling of pkglibexec_PROGRAMS + to $(transform). + Issue reported at https://trac.macports.org/ticket/44922 + Improved by Nick Bowler + +2014-09-09 Pádraig Brady <P@draigBrady.com> + + maint: fix syntax-check issues in recent commit + Avoid 2 new syntax-check failures introduced in commit v8.23-19-g8defcee + + * cfg.mk (sc_some_programs_must_avoid_exit_failure): s/exit/return/. + * src/whoami.c (main): Reinstate translation marker for diagnostic. + +2014-09-09 Paul Eggert <eggert@cs.ucla.edu> + + maint: avoid file-scope names of the form _[a-z]* + The C standard says this isn't portable, if you include + standard include files. + * build-aux/gen-single-binary.sh: + * src/coreutils-arch.c (single_binary_main_arch) + (single_binary_main_uname): + * src/coreutils-dir.c (single_binary_main_ls) + (_single_binary_main_dir): + * src/coreutils-vdir.c (single_binary_main_ls) + (_single_binary_main_vdir): + * src/coreutils.c (SINGLE_BINARY_PROGRAM): + Remove leading _ from single_binary prefix. + * src/numfmt.c (round_style): Rename from _round. All uses changed. + (inval_style): Rename from _invalid. All uses changed. + + maint: prefer 'return status;' to 'exit (status);' in 'main' + * build-aux/gen-single-binary.sh: Don't use ATTRIBUTE_NORETURN + for main functions. + * src/base64.c, src/basename.c, src/cat.c, src/chcon.c, src/chgrp.c: + * src/chmod.c, src/chown.c, src/chroot.c, src/cksum.c, src/comm.c: + * src/cp.c, src/csplit.c, src/cut.c, src/date.c, src/dd.c, src/df.c: + * src/dircolors.c, src/dirname.c, src/du.c, src/echo.c, src/env.c: + * src/expand.c, src/expr.c, src/factor.c, src/fmt.c, src/fold.c: + * src/getlimits.c, src/groups.c, src/head.c, src/hostid.c: + * src/hostname.c, src/id.c, src/install.c, src/join.c, src/kill.c: + * src/link.c, src/ln.c, src/logname.c, src/ls.c, src/make-prime-list.c: + * src/md5sum.c, src/mkdir.c, src/mkfifo.c, src/mknod.c, src/mktemp.c: + * src/mv.c, src/nice.c, src/nl.c, src/nohup.c, src/nproc.c: + * src/numfmt.c, src/od.c, src/paste.c, src/pathchk.c, src/pinky.c: + * src/pr.c, src/printenv.c, src/printf.c, src/ptx.c, src/pwd.c: + * src/readlink.c, src/realpath.c, src/rm.c, src/rmdir.c, src/runcon.c: + * src/seq.c, src/shred.c, src/shuf.c, src/sleep.c, src/sort.c: + * src/split.c, src/stat.c, src/stdbuf.c, src/stty.c, src/sum.c: + * src/sync.c, src/tac.c, src/tail.c, src/tee.c, src/timeout.c: + * src/touch.c, src/tr.c, src/true.c, src/truncate.c, src/tsort.c: + * src/tty.c, src/uname.c, src/unexpand.c, src/uniq.c, src/unlink.c: + * src/uptime.c, src/users.c, src/wc.c, src/who.c, src/whoami.c: + In 'main' functions, Prefer 'return status;' to 'exit (status);'. + * src/coreutils-arch.c (_single_binary_main_uname) + (_single_binary_main_arch): + * src/coreutils-dir.c, src/coreutils-vdir.c (_single_binary_main_ls) + (_single_binary_main_dir, _single_binary_main_vdir): + Omit ATTRIBUTE_NORETURN. Return a value. + * src/coreutils.c (SINGLE_BINARY_PROGRAM): Omit ATTRIBUTE_NORETURN. + (launch_program): Now static. + * src/dd.c (finish_up): New function. + (quit, main): Use it. + * src/getlimits.c (main): Return a proper exit status. + * src/test.c (test_main_return): New macro. + (main): Use it. + * src/logname.c, src/nohup.c, src/whoami.c: + Use 'error' to simplify exit status in 'main' function. + * src/yes.c (main): Use 'return' rather than 'error' to exit, + so that GCC doesn't suggest ATTRIBUTE_NORETURN. + + doc: rename "coreutils invocation" to "Multi-call invocation" + This supports longstanding shell commands like + 'info coreutils "touch invocation"'. + Problem reported by Vincent Lefevre via Bob Proulx in: + http://bugs.gnu.org/18428 + * doc/coreutils.texi (Multi-call invocation): + Rename from "coreutils invocation". + + doc: mention which commands are optional + * doc/coreutils.texi (coreutils invocation, df invocation) + (stty invocation, whoami invocation, nproc invocation) + (arch invocation, hostname invocation, hostid invocation) + (uptime invocation, chroot invocation, nice invocation) + (stdbuf invocation): Document that the command is installed + optionally. + +2014-09-07 Bernhard Voelker <mail@bernhard-voelker.de> + + doc: fix typos + * doc/coreutils.texi: Fix normal typos: + s/pseudorandom/pseudo-random/; + s/behaviour/behavior/; + s/linux-based/Linux-based/; + s/nonnegative/non-negative/. + Fix IEC's long name: s/Electronical/Electrotechnical/. + Wrap 'getopt' into the @code{} macro. + Fix a grammatical error (from myself): s/splitted/split/. + +2014-09-03 Paul Eggert <eggert@cs.ucla.edu> + + doc: spell "indeterminate" correctly + * doc/coreutils.texi (timeout invocation): Fix misspelling. + Reported by Yureruchihirosan via OKANO Takayoshi in: + http://bugs.gnu.org/18394 + +2014-08-23 Pádraig Brady <P@draigBrady.com> + + maint: ensure fiemap extents flags are compared correctly + * src/extent-scan.c (extent_scan_read): Following on from the flags size + adjustment in commit v8.23-13-g1505b37, verify that the internal + representation of the flags is never truncated which could happen in the + unlikely case on 32 bit if the kernel flags ever expanded to 64 bits + which is theoretically possible given the reserved space. + +2014-08-22 Paul Eggert <eggert@cs.ucla.edu> + + maint: avoid int64_t and similar types unless they're needed + C11 doesn't require them, even POSIX doesn't strictly require the + 64-bit versions, and it makes the code a bit clearer if they're + used only when needed. + * src/copy.c (write_zeros, extent_copy): + * src/extent-scan.h (struct extent_info.ext_length): + Use off_t, not uint64_t, for a value derived from a file offset. + * src/extent-scan.h (struct extent_info.ext_flags) + Prefer plain unsigned int to uint32_t where either will do. + (struct extent_scan.ei_count): + Use size_t, not uint32_t, for a value bounded by SIZE_MAX. + * src/factor.c (MAGIC64, MAGIC63, MAGIC65): + Remove unnecessary casts to uint64_t. + +2014-08-21 Yurij Goncharuk <lnkgyv@gmail.com> + + maint: refactor ls QUOTING_STYLE env var handling + * src/ls.c (main): As per the FIXME comment, move the + QUOTING_STYLE handling to a separate function. + +2014-08-21 Fridolin Pokorny <fpokorny@redhat.com> + + doc: clarify that duplicate NFS mounts are skipped by df + * doc/coreutils.texi (df invocation): Add a sentence that eliding + duplicate entries for the same file system is not limited to bind + mounts, but also happens for remote file systems like NFS. + +2014-08-19 Pádraig Brady <P@draigBrady.com> + + df: improve mount point selection with inaccurate mount list + v8.23 has a test failure on Fedora rawhide build servers + in tests/df/skip-duplicate.sh. This was due to no '/' + entry being output by df. That was due to an inaccurate + /proc/mounts on the build environment as stat(/mnt/point) + identified all these /proc/mounts entries as having the + same device id: + + / rootfs + / /dev/md1 + /dev devtmpfs + /run tmpfs + /boot /dev/md0 + /proc/filesystems /dev/md1 + + Since the device name on the right changes for a given id, + that causes the entries to be continually replaced, thus + resulting in no '/' entry. I'm guessing this is due to + the mock environment bind mounting unneeded or sensitive + items to a dummy file on the host / (/dev/md1) though + have not looked into those details. + + So rather than relying on an accurate /proc/mounts, + the attached patch takes a more conservative replacement + approach and only swaps a new device entry when the + mount point matches. That should handle all practical + cases while also avoiding this situation. + + * src/df.c (filter_mount_list): Only replace entries with + different device names when the mount point also matches. + +2014-08-11 Rasmus Borup Hansen <rbh@intomics.com> + + cp: remove redundant possibly expensive heap deallocation + If the hash structures grow sufficiently large so that + the system is actively swapping, then the deallocation + can take a significant amount of time. Details at: + http://lists.gnu.org/archive/html/coreutils/2014-08/msg00012.html + + * src/cp.c (main): Only call hash deallocation routines + when in lint checking mode. + * THANKS.in: Remove as now in the git author list. + +2014-08-04 Reuben Thomas <rrt@sc3d.org> + + doc: indicate that FILE arguments are optional with rm -f + * src/rm.c (usage): s/FILE/[FILE]/. + Fixes http://bugs.gnu.org/18187 + +2014-08-03 Anders Jonsson <anders.jonsson@norsjovallen.se> + + numfmt: fix misspelling in --debug message + * src/numfmt.c (parse_format_string): s/overridding/overriding/. + Fixes http://bugs.gnu.org/18050 + +2014-08-01 Paul Eggert <eggert@cs.ucla.edu> + + tests: fix typo in tail-2/inotify-race + Reported by Andreas Schwab in: http://bugs.gnu.org/18057 + * tests/tail-2/inotify-race.sh (break_src): + Use abs_top_srcdir, not abs_top_builddir. + +2014-08-01 Bernhard Voelker <mail@bernhard-voelker.de> + + chroot: perform chdir("/") again unless new --skip-chdir is specified + Since commit v8.22-94-g99960ee, chroot(1) skips the chroot(2) syscall + for "/" arguments (and synonyms). The problem is that it also skips + the following chdir("/") call in that case. The latter breaks existing + scripts which expect "/" to be the working directory inside the chroot. + While the first part of the change - i.e., skipping chroot("/") - is + okay for consistency with systems where it might succeed for a non-root + user, the second part might be malicious, e.g. + + cd /home/user && chroot '/' bin/foo + + In the "best" case, chroot(1) could not execute 'bin/foo' with ENOENT, + but in the worst case, chroot(1) would execute '/home/user/bin/foo' in + the case that exists - instead of '/bin/foo'. + + Revert that second part of the patch, i.e., perform the chdir("/) + in the common case again - unless the new --skip-chdir option is + specified. Restrict this new option to the case of "/" arguments. + + * src/chroot.c (SKIP_CHDIR): Add enum. + (long_opts): Add entry for the new --skip-chdir option. + (usage): Add --skip-chdir option, and while at it, move the other + to options into alphabetical order. + (main): Accept the above new option, allowing it only in the case + when NEWROOT is the old "/". + Move down the chdir() call after the if-clause to ensure it is + run in any case - unless --skip-chdir is specified. + Add a 'newroot' variable for the new root directory as it is used + in a couple of places now. + * tests/misc/chroot-fail.sh: Invert the last tests which check the + working directory of the execvp()ed program when a "/"-like + argument was passed: now expect it to be "/" - unless --skip-chdir + is given. + * doc/coreutils.texi (chroot invocation): Document the new option. + Document that chroot(1) usually calls chdir("/") unless the new + --skip-chdir option is specified. Sort options. + * NEWS (Changes in behavior): Mention the fix. + (New features): Mention the new option. + * init.cfg (nonroot_has_perm_): Add chroot's new --skip-chdir option. + * tests/cp/preserve-gid.sh (t1): Likewise. + * tests/cp/special-bits.sh: Likewise. + * tests/id/setgid.sh: Likewise. + * tests/misc/truncate-owned-by-other.sh: Likewise. + * tests/mv/sticky-to-xpart.sh: Likewise. + * tests/rm/fail-2eperm.sh: Likewise. + * tests/rm/no-give-up.sh: Likewise. + * tests/touch/now-owned-by-other.sh: Likewise. + + Reported by Andreas Schwab in http://bugs.gnu.org/18062 + +2014-07-31 Pádraig Brady <P@draigBrady.com> + + build: avoid building stdbuf on cygwin + * configure.ac: Don't add stdbuf to the list of programs to build + if EXEEXT is set, as that is not handled in configure.ac for + libstdbuf.so yet (see bin_PRGRAMS handling in configure.ac). + Also the LD_PRELOAD mechanism will need to be adjusted to support + cygwin in any case, so avoid stdbuf completely in this case for now. + Problem reported by Eric Blake. + +2014-07-29 Eric Blake <eblake@redhat.com> + + doc: clarify that floating point parses "inf" + * doc/coreutils.texi (Floating point): Document handling of "inf", + "infinity", "NaN", and so on. + +2014-07-19 Paul Eggert <eggert@cs.ucla.edu> + + maint: fix message translation glitches + Problem reported by Sebastian Rasmussen in: http://bugs.gnu.org/18054 + * gl/lib/randread.c (randread_error): Don't put multiple string + literals inside _(...), as xgettext doesn't support that. + * src/chroot.c (main): In diagnostics, don't bother to distinguish + between setting the number of supplemental group IDs to a zero or + to a nonzero value, as the underlying system call is the same + either way. This also makes the string easier to translate correctly. + +2014-07-18 Pádraig Brady <P@draigBrady.com> + + maint: post-release administrivia + * NEWS: Add header line for next release. + * .prev-version: Record previous version. + * cfg.mk (old_NEWS_hash): Auto-update. + + version 8.23 + * NEWS: Record release date. + + +See the source repo for older entries |