summaryrefslogtreecommitdiff
path: root/ChangeLog
diff options
context:
space:
mode:
Diffstat (limited to 'ChangeLog')
-rw-r--r--ChangeLog4191
1 files changed, 4191 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index 205b3d4e..f9ce4441 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,4196 @@
+2014-07-18 Pádraig Brady <P@draigBrady.com>
+
+ version 8.23
+ * NEWS: Record release date.
+
+ build: port new bootstrap script to POSIX shells
+ * build-aux/gen-single-binary.sh: Avoid bash only constructs.
+ Reported by Assaf Gordon
+
+ tests: fix false failure with spaces in the test directory
+ * tests/misc/env.sh: Skip if we can't execute the generated shebang,
+ which would be the case if there are spaces in the directory hierarchy.
+ This is triggered by `make distcheck`
+
+2014-07-18 Pádraig Brady <P@draigBrady.com>
+
+ build: don't distribute generated coreutils.h
+ This issue was identified by the manifest comparisons
+ done by `make distcheck`
+
+ * src/local.mk (noinst_HEADERS): Remove coreutils.h from this always
+ distributed list.
+ (nodist_src_coreutils_SOURCES): Add coreutils.h as its contents
+ are determined at configure time, so pointless to distribute.
+ (src_coreutils_SOURCES): Define explicitly so that the corresponding
+ nodist_ variable is honored.
+ (DISTCLEANFILES): Add coreutils.h to this rather than CLEANFILES,
+ as its contents are determined at configure time.
+
+2014-07-18 Pádraig Brady <P@draigBrady.com>
+
+ tests: fix false failure in cp --preserve=context test
+ With libselinux-2.2.1-6.fc20.x86_64, kernel-3.12.6-300.fc20.x86_64
+ `cp --preserve=context src dst` was seen to succeed when src and
+ dst where on the same fixed context file system, as lsetfilecon()
+ returned success in this case when the context wasn't being changed.
+
+ * tests/cp/cp-a-selinux.sh: Copy from a different file system to
+ most likely have a different context that will test context
+ setting logic correctly.
+
+2014-07-18 Pádraig Brady <P@draigBrady.com>
+
+ maint: avoid a syntax-check warning in previous commit
+ * cfg.mk: Avoid warning for @AMDEP_TRUE@ usage in man/local.mk
+
+2014-07-17 Paul Eggert <eggert@cs.ucla.edu>
+
+ build: port to non-GNU make
+ This fixes a problem with native Solaris 'make', which does not
+ grok '-include' lines (a GNU extension to POSIX 'make').
+ * configure.ac (man/dynamic-deps.mk): Create it, with an old
+ time stamp, if doing dynamic dependency tracking.
+ * man/local.mk (DISTCLEANFILES): Put man/dynamic-deps.mk here,
+ rather than in CLEANFILES.
+ (man/dynamic-deps.mk): Don't create it read-only, so that we
+ can easily touch it later.
+ Include it with '@AMDEP_TRUE@@am__include@', not with '-include',
+ as '-include' does not work with native Solaris 'make'.
+
+2014-07-16 Assaf Gordon <assafgordon@gmail.com>
+
+ numfmt: fix isblank() usage for some unibyte locales
+ * src/numfmt.c (simple_strtod_int): Replace isdigit() with c_isdigit()
+ to avoid locale concerns and -Wchar-subscripts warnings on cygwin.
+ Remove the now redundant locale guard.
+ (simple_strtod_human): Cast characters to unsigned so that the promoted
+ int value passed to isblank() is positive, allowing it to work correctly
+ for all characters in unibyte locales. Previously character 0xA0,
+ i.e. non-breaking space, would be misclassified for example.
+ (process_suffixed_number): Likewise.
+ (skip_fields): Likewise.
+ Both issues were triggered by the -Wchar-subscripts warning on GCC 4.8.3
+ on cygwin, due to the is*() implementations used there, but the issue
+ is present on all platforms defaulting to signed chars.
+ * NEWS: Mention the bug fix.
+
+ Reported by Eric Blake
+
+2014-07-14 Pádraig Brady <P@draigBrady.com>
+
+ tests: fix portabilitiy issue in new od-endian test
+ * tests/misc/od-endian.sh: '\n' is not generally supported
+ in the replacement, so use the more portable "\\$NL".
+
+ tests: fix portability issue in new dd/ascii test
+ * tests/dd/ascii.sh: Quote so that '\\' is passed
+ to printf rather than a single '\', as that's not portable.
+ bash, dash, zsh and external solaris printf were seen to support
+ printf '\%03o' 1 2
+ while ksh, freebsh shell and external GNU printf need the more portable
+ printf '\\%03o' 1 2
+ Note we don't use env here to call the coreutils printf implementation,
+ as there are many printf calls, so relying on portable shell
+ implementations will be faster.
+
+ tests: avoid hang when files created with wrong permissions
+ * tests/split/b-chunk.sh: Never show the rm prompt which would
+ hang the test suite. This was seen when split erroneously
+ created files with no persmissions, which was triggered by
+ this compiler bug in clang 3.4:
+ http://llvm.org/bugs/show_bug.cgi?id=18346
+
+ maint: avoid clang -Wint-to-pointer-cast warning
+ * src/chroot.c: Explicitly cast int to pointer type.
+
+2014-07-13 Pádraig Brady <P@draigBrady.com>
+
+ build: update gnulib submodule to latest
+ * gnulib: Sync recent cleanups and the fix for
+ missing df entries in the presence of bind mounts:
+ http://bugs.gnu.org/17833
+ * NEWS: Detail the df bug fix.
+
+2014-07-13 Pádraig Brady <P@draigBrady.com>
+
+ sort: avoid undefined operation with destroying locked mutex
+ This didn't seem to cause any invalid operation on GNU/Linux at least,
+ but depending on the implementation, mutex deadlocks could occur.
+ For example this might be the cause of lockups seen on Solaris:
+ http://lists.gnu.org/archive/html/coreutils/2013-03/msg00048.html
+
+ This was identified with valgrind 3.9.0 with this setup:
+
+ seq 200000 > file.sort
+ valgrind --tool=drd src/sort file.sort -o file.sort
+
+ With that, valgrind would _intermittently_ report the following:
+
+ Destroying locked mutex: mutex 0x5419548, recursion count 1, owner 2.
+ at 0x4C2E3F0: pthread_mutex_destroy(in vgpreload_drd-amd64-linux.so)
+ by 0x409FA2: sortlines (sort.c:3649)
+ by 0x409E26: sortlines (sort.c:3621)
+ by 0x40AA9E: sort (sort.c:3955)
+ by 0x40C5D9: main (sort.c:4739)
+ mutex 0x5419548 was first observed at:
+ at 0x4C2DE82: pthread_mutex_init(in vgpreload_drd-amd64-linux.so)
+ by 0x409266: init_node (sort.c:3276)
+ by 0x4092F4: init_node (sort.c:3286)
+ by 0x4090DD: merge_tree_init (sort.c:3234)
+ by 0x40AA5A: sort (sort.c:3951)
+ by 0x40C5D9: main (sort.c:4739)
+
+ Thread 2:
+ The object at address 0x5419548 is not a mutex.
+ at 0x4C2F4A4: pthread_mutex_unlock(in vgpreload_drd-amd64-linux.so)
+ by 0x4093CA: unlock_node (sort.c:3323)
+ by 0x409C85: merge_loop (sort.c:3531)
+ by 0x409F8F: sortlines (sort.c:3644)
+ by 0x409CE3: sortlines_thread (sort.c:3574)
+ by 0x4E44F32: start_thread (in /usr/lib64/libpthread-2.18.so)
+ by 0x514EEAC: clone (in /usr/lib64/libc-2.18.so)
+
+ * src/sort.c (sortlines): Move pthread_mutex_destroy() out to
+ merge_tree_destroy(), so that we don't overlap mutex destruction
+ with threads still operating on the nodes.
+ (sort): Call the destructors only with "lint" defined, as the
+ memory used will be deallocated implicitly at process end.
+ * NEWS: Mention the bug fix.
+
+2014-07-13 Shayan Pooya <shayan@liveve.org>
+
+ sort: fix two threading issues reported by valgrind
+ Neither issue impacts on the correct operation of sort.
+ The issues were detected by both valgrind 3.8.1 and 3.9.0 using:
+
+ seq 200000 > file.sort
+ valgrind --tool=drd src/sort file.sort -o file.sort
+
+ For tool usage and error details see:
+ http://valgrind.org/docs/manual/drd-manual.html
+
+ * src/sort.c (queue_insert): Unlock mutex _after_ signalling the
+ associated condition variable. Valgrind flags this with:
+ "Probably a race condition: condition variable 0xffeffffb0 has been
+ signaled but the associated mutex 0xffeffff88 is not locked by the
+ signalling thread."
+ The explanation at the above URL is:
+ "Sending a signal to a condition variable while no lock is held on
+ the mutex associated with the condition variable. This is a common
+ programming error which can cause subtle race conditions and
+ unpredictable behavior."
+ This should at least give more defined scheduling behavior.
+
+ (merge_tree_destroy): Make symmetrical with merge_tree_init() thus
+ destroying the correct mutex. Valgrind flags this with:
+ "The object at address 0x5476cf8 is not a mutex."
+
+2014-07-13 Pádraig Brady <P@draigBrady.com>
+
+ maint: avoid an inconsequential mem leak
+ * src/df.c (get_disk): Avoid an inconsequential mem leak
+ spotted by coverity. Also s/duplicities/duplicates/.
+
+2014-07-13 Jim Meyering <meyering@fb.com>
+
+ build: adjust new rule not to depend on bash-4.x
+ * man/local.mk (man/dynamic-deps.mk): Use the same code to
+ derive FOO from man/FOO.1 as in the .x.1 rule below.
+ Using the more concise "name=$${man:4: -2}" is not portable enough.
+
+2014-07-13 Alex Deymo <deymo@chromium.org>
+
+ build: support building all tools in a single binary
+ Add the --enable-single-binary option to the configure file.
+ When enabled, this option builds a single binary file containing
+ the selected tools. Which tool gets executed depends on the value
+ of argv[0] which can be set implicitly through symlinks to the
+ single program.
+
+ This setup reduces significantly the size of a complete coreutils
+ install, since code from lib/libcoreutils.a is not duplicated in
+ every one of the more than 100 binaries. Runtime overhead is
+ increased due to more dynamic libraries being loaded, and extra
+ initialization being performed for all utils. Also initially
+ a larger binary is loaded from storage, though this is usually
+ alleviated due to caching and lazy mmaping of unused blocks,
+ and in fact the single binary should have better caching
+ characteristics.
+
+ Comparing the size of the individual versus single binary on x86_64:
+ $ cd src
+ $ size coreutils
+ $ size -t $(../build-aux/gen-lists-of-programs.sh --list-progs |
+ grep -Ev '(coreutils|libstdbuf)') | tail -n1
+ text data bss dec hex filename
+ 1097416 5388 88432 1191236 122d44 src/coreutils
+ 4901010 124964 163768 5189742 4f306e (TOTALS)
+
+ Storage requirements are reduced similarly:
+ $ cd src
+ $ du -h coreutils
+ $ du -ch $(../build-aux/gen-lists-of-programs.sh --list-progs |
+ grep -Ev '(coreutils|libstdbuf)') | tail -n1
+ 1.2M coreutils
+ 5.3M total
+
+ When installing, the makefile will create either symlinks or
+ shebangs based on the --enable-single-binary setting, for
+ each configured tool. In this way, all the tools are still
+ callable individually, but they are all implemented by the same
+ "coreutils" binary installed on the same directory.
+
+ * .gitignore: Add new generated files.
+ * Makefile.am: New rules to generate build-aux/gen-single-binary.sh
+ and install symlinks.
+ * NEWS: Mention the new feature.
+ * README: Add "coreutils" to the list of utils.
+ * bootstrap.conf: Regenerate src/single-binary.mk
+ * build-aux/gen-lists-of-programs.sh: New --list-progs option.
+ * build-aux/gen-single-binary.sh: Regenerate
+ * configure.ac: New --enable-single-binary option and other variables.
+ Disallow --enable-single-binary=symlinks with --program-prefix et. al.
+ * man/coreutils.x: Manpage hook.
+ * man/local.mk: Add manpage hook and fix dependencies.
+ * src/coreutils.c: Multicall implementation.
+ * src/local.mk: New rules for the single binary option.
+ * tests/local.mk: Add $single_binary_progs to support
+ require_built_() from init.cfg
+ * tests/misc/env.sh: Avoid the use of symlink to echo.
+ * tests/misc/help-version.sh: Add exception for coreutils.
+ * tests/install/basic-1.sh: Really avoid using ginstall strip
+ functionality if there is an issue with the independent strip command.
+ * src/kill.c: Changes to call exit() in main.
+ * src/readlink.c: Likewise.
+ * src/shuf.c: Likewise.
+ * src/timeout.c: Likewise.
+ * src/truncate.c: Likewise.
+
+2014-07-04 Bernhard Voelker <mail@bernhard-voelker.de>
+
+ maint: simplify parsing df's output in shell scripts
+ Avoid complicated and error-prone parsing of df's output via
+ sed(1), cut(1), etc., and instead use df's more modern --output
+ option.
+
+ * src/ioblksize.h (in a comment): Simplify the extraction of the
+ device name of the mounted file system from df's output.
+ * tests/dd/skip-seek-past-dev.sh: Likewise.
+ * tests/du/2g.sh: Likewise for the 'avail' column here.
+ Also avoid the deprecated use of "tail -NUM".
+ * tests/misc/stat-mount.sh: While at it, remove the determination
+ of the mount point of "." via df(1) plus sed(1) as it is unused
+ since commit v8.5-159-gf57cb37 anyway. Instead, improve this test
+ by verifying that the output of "stat -c%m ." at least starts with
+ a slash '/'.
+
+2014-07-02 Pádraig Brady <P@draigBrady.com>
+
+ pwd: revert default mode back to -P
+ Revert commit v8.22-131-g3e89d5b as even though POSIX
+ states that the default mode should be -L,
+ common practice for stand-alone pwd implementations
+ is to default to -P.
+
+ * src/pwd.c (usage): Retain mention of the default mode of operation.
+
+ Suggested by Bob Proulx
+
+2014-07-02 Pádraig Brady <P@draigBrady.com>
+
+ tests: avoid false failure with spaces in mount point paths
+ * tests/ls/readdir-mountpoint-inode.sh: Quote appropriately
+ to process mount points with spaces in the path.
+ Previously items like these would usually be skipped,
+ though if the path also contained a '-' for example,
+ that would stat stdin, thus producing a wrong inode
+ and a false failure.
+ Fixes http://bugs.gnu.org/17863
+
+ tests: avoid errors on systems without getmntent
+ * tests/df/no-mtab-status.sh: Skip if getmntent() not available.
+ * tests/df/skip-duplicates.sh: Likewise.
+ Fixes http://bugs.gnu.org/17863
+
+2014-07-02 Jim Meyering <meyering@fb.com>
+
+ tests: use "env builtin" in place of "$abs_top_builddir/src/builtin"
+ This works for any program that might also be a shell built-in.
+ It is more concise. In addition, it makes output more reproducible:
+ some diagnostics include argv[0], which will now be just the program
+ name, rather than the full absolute name of the executable.
+ * tests/misc/sort-compress.sh: Use env kill, rather than absolute name.
+ * tests/install/trap.sh: Likewise.
+ * tests/misc/timeout.sh: Likewise.
+ * tests/touch/no-dereference.sh: Do the same for two uses of "test".
+ * tests/touch/no-create-missing.sh: Likewise.
+
+2014-07-02 Alex Deymo <deymo@chromium.org>
+
+ maint: fix context_t init warning on systems without selinux
+ On systems without libselinux, context_t is defined as an int type,
+ but defined as a pointer type by SELinux.
+
+ * src/chcon.c: Init with 0 rather than NULL to avoid warning.
+
+2014-07-01 Jim Meyering <meyering@fb.com>
+
+ tests: adapt tests to change in pwd's default
+ * tests/misc/pwd-option.sh (base): Initialize with -P,
+ now that -L is the default, to accommodate an initial
+ working directory with a symlink component.
+ * tests/misc/readlink-fp-loop.sh: Use $(env pwd -P) to get the
+ absolute working directory. Using "env" ensures we do not invoke
+ any shell built-in, and PATH ensures we invoke the one from coreutils.
+ * tests/readlink/can-e.sh: Likewise.
+ * tests/readlink/can-f.sh: Likewise.
+ * tests/readlink/can-m.sh: Likewise.
+
+2014-07-01 Pádraig Brady <P@draigBrady.com>
+
+ maint: fix const correctness warnings with security_context_t
+ The security_context_t type was always an artificial separation
+ from a standard char* string, and various libselinux using code
+ assumed both were synonymous. In addition, prior to libselinux 2.3
+ function declarations were incorrect wrt constness of this type.
+ Here we replace security_context_t with char*, and also
+ provide a wrapper function to cater for the const issue on
+ older libselinux.
+
+ * src/system.h (se_const): A new function to avoid and identify
+ the const issue on older libselinux.
+ * src/copy.c: s/security_context_t/char */.
+ * src/cp.c: Likewise.
+ * src/id.c: Likewise.
+ * src/install.c: Likewise.
+ * src/ls.c: Likewise.
+ * src/mkdir.c: Likewise.
+ * src/mkfifo.c: Likewise.
+ * src/mknod.c: Likewise.
+ * src/runcon.c: Likewise.
+ * src/selinux.c: Likewise.
+ * tests/cp/no-ctx.sh: Likewise.
+ * src/chcon.c: Likesize.
+
+2014-07-01 Namhyung Kim <namhyung@gmail.com>
+
+ chcon: avoid redundant context allocations
+ Since context is verified by security_check_context() it can be used in
+ change_file_context() without converting to context_t every time.
+
+ * src/chcon.c (change_file_context): Use specified_context directly.
+
+2014-07-01 Namhyung Kim <namhyung@gmail.com>
+
+ chcon: use security_check_context() for context validation
+ context_new() and _free() are used for checking validity of a
+ specified context. libselinux provides security_check_context
+ for this purpose so use it.
+
+ Note that context_new() can fail for a valid context - e.g. ENOMEM.
+
+ * src/chcon.c (main): Use security_check_context().
+
+2014-06-30 Pádraig Brady <P@draigBrady.com>
+
+ pwd: assume -L mode by default, as per POSIX
+ * src/pwd.c (main): Adjust default mode to be "logical"
+ and independent of the POSIXLY_CORRECT env var.
+ (usage): Mention the default mode of operation.
+ * doc/coreutils.texi (pwd invocation): Adjust accordingly.
+ * tests/misc/pwd-option.sh: Likewise.
+ * NEWS: Mention the change in behavior.
+
+2014-06-26 Pádraig Brady <P@draigBrady.com>
+
+ tests: use predetermined NON_ROOT_GID
+ * HACKING: GID is more useful in tests than group name, so rename
+ input param from NON_ROOT_GROUP to NON_ROOT_GID to make it obvious
+ that only a group ID is now acceptable, thus allowing GID lookups
+ to be avoided throughout the tests.
+ * init.cfg (require_root_): Likewise.
+ * tests/misc/truncate-owned-by-other.sh: Avoid looking up the GID.
+ * tests/touch/now-owned-by-other.sh: Likewise.
+ * tests/misc/chroot-credentials.sh: Likewise. Also fix an instance
+ of comparison against NON_ROOT_GROUP which would have given a false
+ failure if a non numeric value was passed in.
+ * tests/id/setgid.sh: Use previously looked up gid as a more
+ accurate base for the subsequent adjustment, and move
+ the uid lookup within chroot, rather than having the overhead
+ of a separate `id` invocation.
+
+ maint: mention when the du cycle warning bug was introduced
+ * NEWS: Mention bug introduced in v8.1 (with commit v8.0-88-g8ba5d1a).
+
+2014-06-26 Petr Stodůlka <pstodulk@redhat.com>
+
+ id: output the effective group for the process
+ * src/id.c (print_full_info): When no user is specified,
+ output the effective group for the _process_, rather than
+ the default group from the system database, which may be different.
+ * tests/id/setgid.sh: Add a case for `id` as well as `id -G`.
+ * NEWS: Mention the bug fix.
+ Fixes http://bugs.gnu.org/7320
+ Reported at http://bugzilla.redhat.com/1016163
+
+2014-06-25 Pádraig Brady <P@draigBrady.com>
+
+ df: report correct device in presence of eclipsed mounts
+ * src/df.c (last_device_for_mount): A new function to identify
+ the last device mounted for a mount point.
+ (get_disk): Use the above to discard mount entries for a device,
+ where a later mount entry uses a different device name than
+ that of the user specified device.
+ * tests/df/over-mount-device.sh: A new root test.
+ * tests/local.mk: Reference the new test.
+ * NEWS: Reword for all these related recent fixes.
+ Discussed at: http://bugs.gnu.org/16539#69
+
+2014-06-24 Pádraig Brady <P@draigBrady.com>
+
+ df: look for accessible mount points for specified devices
+ * src/df.c (get_disk): Include whether we can access the mount dir,
+ in the mount entry selection criteria. This handles the case where
+ a device is (bind) mounted multiple times with the shortest mount path
+ not being accessible, while some of the other mount points are.
+ Discussed at: http://bugs.gnu.org/16539#63
+
+2014-06-24 Pádraig Brady <P@draigBrady.com>
+
+ df: output placeholder values for inaccessible mount points
+ A system provided mount entry may be unavailable due to TOCTOU race,
+ or if another device has been over-mounted at that position, or due to
+ access permissions. In all these cases output "-" placeholder values
+ rather than either producing an error, or in the over-mount case
+ outputting values for the wrong device.
+
+ * src/df.c (device_list): A new global list now updated by
+ filter_mount_list().
+ (filter_mount_list): Adjust to take a parameter as to whether
+ update the global mount list, or only the mount <-> device ID mapping.
+ (get_dev): Use the device ID mapping to ensure we're not outputting
+ stats for the wrong device. Also output placeholder values when we
+ can't access a system specified mount point.
+ (get_all_entries): Set the DEVICE_ONLY param for filter_mount_list().
+ (devname_for_dev): A new function to search the mount <-> dev mapping.
+ * test/df/skip-duplicates.sh: Adjust accordingly.
+ * NEWS: Mention the bug fixes.
+
+ Discussed at: http://bugs.gnu.org/16539
+
+2014-06-24 Pádraig Brady <P@draigBrady.com>
+
+ du: ignore directory cycles due to bind mounts
+ * src/du.c (process_file): Treat cycles due to bind mounts
+ like cycles due to following symlinks.
+ * tests/du/bind-mount-dir-cycle.sh: Adjust accordingly.
+ * NEWS: Mention the change in behavior.
+ Reported at http://bugzilla.redhat.com/836557
+
+ doc: state in ls --help, that -h affects --size format
+ * src/ls.c (usage): State that --human changes --size format.
+ Fixes http://bugs.gnu.org/17838
+
+2014-06-19 Pádraig Brady <P@draigBrady.com>
+
+ doc: clarify chgrp restrictions
+ * doc/coreutils.texi (chown invocation): Mention the system dependent
+ restrictions on setting groups.
+ (chgrp invocation): Likewise. Reference the 'chown' superset.
+ * man/chgrp.x: Cross reference chown(1) which is the superset interface,
+ and also chown(2) which gives details of the platform restrictions.
+ Fixes http://bugs.gnu.org/17495
+
+2014-06-18 Pádraig Brady <P@draigBrady.com>
+
+ df: use all of the last device details provided
+ * src/df.c (filter_mount_list): Recent commit v8.22-108-g25a2c94
+ failed to copy file system type along with the updated device name.
+ Therefore simply replace the existing mount entry with the
+ current one with all the latest device details. Note the name,
+ even if not shorter in this entry, will be replaced with a shorter
+ name in a subsequent mount entry.
+ * tests/df/skip-duplicates.sh: Add a test case.
+
+ seq: fix incorrect output with start or end of -0
+ * src/seq.c (main): Avoid seq_fast() with a start or end of -0.
+ * tests/misc/seq.pl: Add test cases.
+ * NEWS: Mention the fix.
+ Fixes http://bugs.gnu.org/17800
+
+2014-06-13 Pádraig Brady <P@draigBrady.com>
+
+ tail: fix --follow to use polling mode for VXFS
+ Veritas File System can run in single instance or clustered mode,
+ so mark as remote to avoid using inotify for the latter case.
+
+ * src/stat.c (human_fstype): Tag VXFS as remote, to use polling
+ for the clustered variant (VXCFS).
+ * NEWS: Mention the bug fix.
+
+ Reported by Ondřej Vašík in http://bugzilla.redhat.com/1104244
+ Fixes http://bugs.gnu.org/17770
+
+2014-06-12 Pádraig Brady <P@draigBrady.com>
+
+ maint: suppress a theoretical buffer overflow warning
+ * src/numfmt.c (double_to_human): The printf format is built up in
+ a stack buffer which is big enough to hold any of the possible formats.
+ However the size parameter passed to snprintf was too big by 1
+ when GROUP was true. So decrease the buffer available to snprintf
+ to avoid this theoretical in practise but valid coverity warning.
+
+2014-06-11 Pádraig Brady <P@draigBrady.com>
+
+ tests: fix version printing for ginstall in one test
+ * tests/install/d-slashdot.sh: 'ginstall' is the binary name
+ in the build directory, not 'install'.
+
+2014-06-11 Bernhard Voelker <mail@bernhard-voelker.de>
+
+ install: allow options -D and -t to be used together
+ * src/install.c (install_file_in_file_parents): Factor out the
+ creation of any parent directories into ...
+ (mkancesdirs_safe_wd): ... this new function.
+ (install_file_in_dir): Add the parameter 'mkdir_and_install', and
+ call the above new function if it evaluates to true.
+ (main): During parsing of the -t option, move the check whether
+ the target_directory exists down after the option parsing loop,
+ and do not complain about stat(optarg,...) failing if -D was given.
+ Pass 'mkdir_and_install' to install_file_in_dir().
+ * doc/coreutils.texi (install invocation): Remove the (false)
+ restriction that -D would be ignored together with -t. Instead,
+ clarify install's new bahavior.
+ Fix the node's reference in the top-level @direntry for consistency.
+ * src/install/basic-1.sh: Add tests for the now-allowed combination
+ of the -D and -t options.
+ * NEWS: Mention the improvement.
+
+2014-06-11 Pádraig Brady <P@draigBrady.com>
+
+ build: update gnulib submodule and tests/init.sh to latest
+ * gnulib: Update to latest.
+ * tests/init.sh: Update from gnulib.
+
+2014-06-11 Pádraig Brady <P@draigBrady.com>
+
+ build: update GCC warnings
+ * configure.ac: Remove the -Wsuggest-attribute=pure
+ enablement on GCC >= 4.7, as that was moot since
+ gnulib was already enabling that warning in its default set.
+ The false positive was seen with 4.6.2, but confirmed
+ not present in 4.6.3, so that's sufficiently old to
+ just leave this enabled unconditionally.
+
+ Remove the -Wsuggest-attribute={const,noreturn}
+ enablement, as gnulib already has those in the default set.
+
+ Enable the -Wlogical-op warning for GCC >= 4.8.0
+ as that is confirmed OK with coreutils at least, due to
+ fixing: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=43772
+
+ Remove the -Wno-logical-op override since the main
+ -Wlogical-op flag is now sufficient to control this warning
+ as of GCC 4.6.3 at least.
+
+2014-06-03 Pádraig Brady <P@draigBrady.com>
+
+ tests: consolidate tests for true and false
+ * src/true.c (main): Add a comment about the possibility
+ of true returning EXIT_FAILURE due to write failure.
+ * tests/misc/false-status.sh: Fix so we're testing
+ the tool and not the shell builtin. Add a case for true(1).
+ * tests/misc/help-version.sh: Skip /dev/full test
+ for true as well as false since the exit status is tested separately.
+ Also remove the iterations for different LC_MESSAGES, as this was only
+ applied for false(1). Translations are not honored in the test dir
+ and so would need separate handling in any case.
+
+2014-06-02 Ben Walton <bdwalton@gmail.com>
+
+ maint: avoid compiler warnings with some assert() implementations
+ * src/df.c (get_dev): asssert() on Solaris 10 is not marked as
+ __noreturn__ and thus the compiler may think V is uninitialized
+ later on in the function.
+ * THANKS.in: Remove the now committer.
+
+ build: be more specific about .git repo before enabling warnings
+ * configure.ac: When looking for a .git checkout, exclude repos that
+ contain a .tarball-version file as these are probably releases
+ that are imported into git for patch management.
+
+2014-06-01 Pádraig Brady <P@draigBrady.com>
+
+ cut: restore special case handling of -f with -d$'\n'
+ commits v8.20-98-g51ce0bf and v8.20-99-gd302aed changed cut(1)
+ to process each line independently and thus promptly output
+ each line without buffering. As part of those changes we removed
+ the special handling of --delimiter=$'\n' --fields=... which
+ could be used to select arbitrary (ranges of) lines, so as to
+ simplify and optimize the implementation while also matching the
+ behavior of different cut(1) implementations.
+
+ However that GNU behavior was in place for a long time, and
+ could be useful in certain cases like making a separated list like
+ `seq 10 | cut -f1- -d$'\n' --output-delimiter=,` although other tools
+ like head(1) and paste(1) are more suited to this operation.
+ This patch reinstates that functionality but restricts the
+ "line behind" buffering behavior to only the -d$'\n' case.
+
+ We also fix the following related edge case to be more consistent:
+
+ before> printf "\n" | cut -s -d$'\n' -f1- | wc -l
+ 2
+ before> printf "\n" | cut -d$'\n' -f1- | wc -l
+ 1
+ after > printf "\n" | cut -s -d$'\n' -f1- | wc -l
+ 1
+ after > printf "\n" | cut -d$'\n' -f1- | wc -l
+ 1
+
+ * src/cut.c (cut_fields): Adjust as discussed above.
+ * tests/misc/cut.pl: Likewise.
+ * NEWS: Mention the change in behavior both for v8.21
+ and this effective revert.
+ * cfg.mk (old_NEWS_hash): Adjust for originally omitted v8.21 entry.
+ * src/paste.c: s/delimeter/delimiter/ comment typo fix.
+
+2014-06-01 Pádraig Brady <P@draigBrady.com>
+
+ stat: avoid redundant stat() calls
+ * src/stat.c (find_bind_mount): NAME is invariant in the loop,
+ so only stat(NAME) outside the loop.
+
+2014-05-29 Pádraig Brady <P@draigBrady.com>
+
+ df: use the last device name provided by the system
+ The device name reported for a particular mount entry
+ may no longer be valid if the mount point was subsequently
+ mounted on a different device. Therefore honor the order
+ of the mount list returned by the system and use the last
+ reported device name.
+
+ * src/df.c (filter_mount_list): When discarding the current
+ mount entry, ensure that a new device name is not also discarded.
+ * tests/df/skip-duplicates.sh: Add a test case. Also fix
+ a false failure in the edge case of a system with only a
+ single file system.
+ * NEWS: Mention the fix.
+
+2014-05-26 Pádraig Brady <P@draigBrady.com>
+
+ stdbuf: support OS X
+ * src/stdbuf.c (set_LD_PRELOAD): Adjust to use Mac OS X
+ specific environment variables on __APPLE__ platforms.
+ Fixes http://bugs.gnu.org/17590
+
+2014-05-26 Jim Meyering <meyering@fb.com>
+
+ build: uname: avoid shadowing warning
+ * src/uname.c (main) [__APPLE__]: Rename inner "s" to "cs",
+ to avoid gcc shadowing warning.
+
+2014-05-26 Pádraig Brady <P@draigBrady.com>
+
+ doc: clarify --zero-terminated option
+ * src/join.c (usage): Reword to avoid implication that
+ the NUL byte is only generated as the output delimeter.
+ * src/sort.c (usage): Likewise.
+ * src/shuf.c (usage): Likewise. Also since we're changing the
+ translation string take the opportunity to separate out
+ the description to a separate string to reduce translation overhead.
+ * src/uniq.c (usage): Likewise.
+ * src/stty.c (usage): s/null/NUL/ for consistency.
+ * src/basename.c (usage): Reword for accuracy/consistency.
+ * src/dirname.c (usage): Likewise.
+ * src/du.c (usage): Likewise.
+ * src/env.c (usage): Likewise.
+ * src/printenv.c (usage): Likewise.
+ * src/readlink.c (usage): Likewise.
+ * src/realpath.c (usage): Likewise.
+ * doc/coreutils.texi: Consolidate/share the descriptions of
+ --null, --zero and --zero-terminated.
+
+2014-05-25 Jim Meyering <meyering@fb.com>
+
+ build: libstdbuf.so: avoid new OS X link failure
+ * src/local.mk (src_libstdbuf_so_LDADD): Add $(LIBINTL),
+ to avoid link failure on OS X.
+
+ cat,cp,split: use a larger buffer for copying
+ * src/ioblksize.h (IO_BUFSIZE): Double the size, to 128KB.
+ Add four more columns to the blksize-vs-bandwidth table
+
+2014-05-24 Paul Eggert <eggert@cs.ucla.edu>
+
+ doc: use nicer quotes
+ * doc/coreutils.texi: Add "@documentencoding UTF-8".
+
+2014-05-23 Pádraig Brady <P@draigBrady.com>
+
+ stat,tail: improve support for LogFS and ConfigFS
+ * src/stat.c (human_fstype): Add new file system ID definitions.
+ * NEWS: Mention the improvement.
+
+2014-05-22 Pádraig Brady <P@draigBrady.com>
+
+ maint: enforce consistent width and case of file system constants
+ * src/stat.c (human_fstype): Adjust a couple of existing constants
+ to be a consistent width and capitalization so that the
+ src/fs-magic-compare target works without reporting false positives.
+ * cfg.mk (sc_fs-magic-compare): A new syntax check to enforce this.
+
+ Improved by: Jim Meyering
+
+2014-05-21 Pádraig Brady <P@draigBrady.com>
+
+ stdbuf: support compilers other than __GNUC__
+ __SUNPRO_C >= 0x590 /*12.0*/ supports __attribute((constructor))
+ required by stdbuf, so use a more direct check for this.
+
+ Note ensure that --libexecdir is set to the appropriate
+ install location for libstdbuf.so so that stdbuf works
+ when installed on the system like it does when running
+ tests in the build directory.
+
+ * configure.ac (stdbuf_supported): Use a test prog to determine support.
+ * src/libstdbuf.c (stdbuf): Define appropriately for non GCC compilers,
+ and provide early feedback (compilation warning) if trying to compile
+ libstdbuf without the necessary support.
+ * src/stdbuf.c (set_LD_PRELOAD): Add a note on having stdbuf
+ look for libstdbuf.so in the default lib search path.
+ * cfg.mk (sc_prohibit-gl-attributes): Adjust so we can exclude
+ libstdbuf.so from prohibiting '__attribute', since we want
+ this form to avoid silently eliding this required attribute on non GCC.
+
+ Reported and tested by Rich Burridge.
+
+2014-05-21 Pádraig Brady <P@draigBrady.com>
+
+ tests: use chroot --user rather than internal setuidgid tool
+ * init.cfg (require_root_): Adjust to use chroot, and make
+ `require_built_ chroot` implicit when chroot used in the test.
+ * po/POTFILES.in: Remove reference to setuidgid tool.
+ * src/.gitignore: Likewise.
+ * src/local.mk: Likewise.
+ * src/setuidgid.c: Remove.
+ * tests/cp/preserve-gid.sh: s/setuidgid/chroot --user/.
+ * tests/cp/special-bits.sh: Likewise.
+ * tests/id/setgid.sh: Likewise.
+ * tests/misc/truncate-owned-by-other.sh
+ * 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.
+ * tests/misc/chroot-fail.sh: Skip if chroot not built.
+
+ chroot: make changing root check more robust
+ * src/chroot.c (is_root): A new helper function to
+ determine if the passed argument is the root directory
+ based on inode comparison.
+ (main): Use the new helper rather than comparing strings.
+ * tests/misc/chroot-fail.sh: Add cases for alternative root paths.
+
+ chroot: exit immediately upon failure
+ * src/chroot.c (main): Consistently exit with failure status immediately
+ upon hitting a terminal issue, rather than diagnosing multiple issues
+ lest users think previous failing actions are optional.
+
+2014-05-21 Pádraig Brady <P@draigBrady.com>
+
+ chroot: with --userspec clear root's supplemental groups
+ It's dangerous and confusing to leave root's supplemental
+ groups in place when specifying other users with --userspec.
+ In the edge case that that is desired one can explicitly
+ specify --groups.
+
+ Also we implicitly set the system defined supplemental groups
+ for a user. The existing mechanism where supplemental groups
+ needed to be explicitly specified is confusing and not general
+ when the lookup needs to be done within the chroot.
+
+ Also we extend the --groups syntax slightly to allow clearing
+ the set of supplementary groups using --groups=''.
+
+ * src/chroot.c (setgroups): On systems without supplemental groups,
+ clearing then is a noop and so should return success.
+ (main): Lookup the primary GID with getpwuid() when just a numeric
+ uid is specified, and also infer the USERNAME from this call,
+ needed when we're later looking up the supplemental groups for a user.
+ Support clearing supplemental groups, either implicitly for
+ unknown users, or explicitly when --groups='' is specified.
+ * tests/misc/chroot-credentials.sh: Various new test cases
+ * doc/coreutils.texi (chroot invocation): Adjust for the new behavior.
+ * NEWS: Mention the change in behavior.
+
+2014-05-16 Pádraig Brady <P@draigBrady.com>
+
+ chroot: don't chdir() if not changing root
+ This allows chroot to be used as a light weight tool
+ to change user identification for a command,
+ while not changing the current working directory.
+ It also makes `chroot / true` consistently succeed on
+ all platforms for non root users.
+
+ * src/chroot.c (main): If the same root is specified. i.e. '/'
+ then don't change the current working directory, and avoid the
+ overhead of the other redundant calls.
+ * tests/misc/chroot-fail.sh: Remove failure guard previously
+ needed on some systems. Also add an explicit case to ensure
+ we don't change directory.
+ * NEWS: Mention the change in behavior.
+
+2014-05-13 Pádraig Brady <P@draigBrady.com>
+
+ maint: avoid clang -Wtautological-constant-out-of-range-compare warning
+ * src/df.c (decode_output_arg): Use only enum constants to avoid
+ clang "warning: comparison of constant -1 with expression of
+ type 'display_field_t' is always false"
+
+2014-05-13 Pádraig Brady <P@draigBrady.com>
+
+ df: ignore non file system entries in /proc/mounts
+ Linux with network namespaces contains entries in /proc/mounts like:
+ proc net:[4026532464] proc rw,nosuid,nodev,noexec,relatime 0 0
+ resulting in a failure to stat 'net:[...]', inducing a warning
+ and an exit with failure status.
+
+ * src/df.c (get_dev): Ignore all relative mount points.
+ * tests/df/skip-duplicates.sh: Add an entry to test relative dirs.
+
+2014-05-13 Pádraig Brady <P@draigBrady.com>
+
+ df: fix handling of symlinks in mount list
+ The symlink handling in commit v8.21-172-g33660b4 was incomplete
+ in the case where there were symlinks in the mount list itself.
+ For example, in the case where /dev/mapper/fedora-home was in the
+ mount list and that in turn was a symlink to /dev/dm-2, we have:
+
+ before> df --out=source /dev/mapper/fedora-home
+ devtmpfs
+
+ after > df --out=source /dev/mapper/fedora-home
+ /dev/mapper/fedora-home
+
+ * src/df.c (get_disk): Compare canonicalized device names from
+ the mount list. Note we still display the non canonicalized name,
+ even if longer, as we assume that is the most representative.
+ * tests/df/df-symlink.sh: This could theoretically fail on some systems
+ depending on the content of the mount list, but adjust to fail on any
+ system where symlinks are present in the mount list for the current dir.
+
+2014-05-13 Pádraig Brady <P@draigBrady.com>
+
+ df: also deduplicate virtual file systems
+ * src/df.c (filter_mountlist): Remove the constraint that
+ a '/' needs to be in the device name for a mount entry to
+ be considered for deduplication. Virtual file systems also
+ have storage associated with them (like tmpfs for example),
+ and thus need to be deduplicated since they will be shown
+ in the default df output and subject to --total processing also.
+ * test/df/skip-duplicates.sh: Add a test to ensure we deduplicate
+ all entries, even for virtual file systems. Also avoid possible
+ length operations on many remote file systems in the initial
+ check of df operation. Also avoid the assumption that "/root"
+ is on the same file system as "/".
+ * NEWS: Mention the change in behavior.
+
+ tests: fix spurious failure with leading spaces in file names
+ * tests/ls/stat-vs-dirent.sh: This test lists all parent directories,
+ and would spuriously fail if any of those had a file name with a
+ leading space as the first entry. There is only ever a single space
+ between the right aligned inode number and the file name, so
+ process accordingly.
+
+2014-05-12 Assaf Gordon <assafgordon@gmail.com>
+
+ build: avoid bootstrap error with gettext 0.18.3.1
+ * bootstrap: Create critical bootstrap files for autopoint,
+ before gnulib re-generates them, avoiding the issue. See:
+ http://lists.gnu.org/archive/html/coreutils/2013-11/msg00038.html
+ http://savannah.gnu.org/bugs/?40083
+ https://pad.lv/1311895
+
+2014-05-10 Jim Meyering <meyering@fb.com>
+
+ shred: don't infloop upon negative size
+ * src/shred.c (main): With the preceding change, shred -s-2 FILE
+ would write 64KB blocks forever -- or until disk full. This change
+ makes shred reject a negative size.
+ * tests/misc/shred-negative.sh: New file.
+ * tests/local.mk (all_tests): Add it.
+
+2014-05-10 Paul Eggert <eggert@cs.ucla.edu>
+
+ shred: fix overflow checking of command-line options
+ * src/shred.c (main): Limit -n (number of passes) value to
+ ULONG_MAX, not to UINT32_MAX, since the vars are unsigned long.
+ Limit the -s (file size) value to OFF_T_MAX.
+
+2014-05-07 Bernhard Voelker <mail@bernhard-voelker.de>
+
+ tests: improve new ascii test of dd
+ * tests/dd/ascii.sh: Avoid unnecessary subshells. Catch dd's
+ exit code. Remove testing artifact. In the case of a comparison
+ failure, show the differences in octal format in addition to
+ "binary files differ". Simplify the creation of the 'in' file.
+
+2014-05-07 Paul Eggert <eggert@cs.ucla.edu>
+
+ dd: fix conv=ascii, conv=ebcdic, conv=ibm to match POSIX
+ Problem reported by Don Baggett in <http:/bugs.gnu.org/17422>.
+ * NEWS:
+ * doc/coreutils.texi (dd invocation): Document this.
+ * src/dd.c (conversions): conv=ascii implies conv=unblock.
+ conv=ebcdic and conv=ibm imply conv=block.
+ (ascii_to_ebcdic, ebcdic_to_ascii): Correct to match
+ POSIX 1003.1-2013.
+ * tests/dd/ascii.sh: New file.
+ * tests/local.mk (all_tests): Add it.
+
+2014-05-07 Pádraig Brady <P@draigBrady.com>
+
+ tests: improve diagnostics when asserting empty files
+ * tests/chmod/c-option.sh: Use `compare /dev/null ... || fail=1`
+ rather than `test -s ... && fail=1`, so that the file contents
+ are output, thus improving diagnostics for failing tests.
+ * tests/cp/acl.sh: Likewise.
+ * tests/cp/cp-a-selinux.sh: Likewise.
+ * tests/cp/cp-mv-enotsup-xattr.sh: Likewise.
+ * tests/cp/reflink-perm.sh: Likewise.
+ * tests/dd/misc.sh: Likewise.
+ * tests/misc/env-null.sh: Likewise.
+ * tests/misc/env.sh: Likewise.
+ * tests/misc/nice.sh: Likewise.
+ * tests/misc/nohup.sh: Likewise.
+ * tests/misc/printenv.sh: Likewise.
+ * tests/misc/xattr.sh: Likewise.
+ * tests/mv/update.sh: Likewise.
+ * tests/rm/deep-2.sh: Likewise.
+ * tests/rm/read-only.sh: Likewise.
+ * tests/split/r-chunk.sh: Likewise.
+ * tests/tail-2/follow-stdin.sh: Likewise.
+ * tests/tail-2/inotify-race.sh: Likewise.
+ * tests/tail-2/wait.sh: Likewise.
+ * tests/touch/no-dereference.sh: Likewise.
+
+ * cfg.mk (sc_prohibit_test_empty:): New syntax-check.
+ * tests/cp/proc-zero-len.sh: Adjust to avoid false syntax-check failure.
+ * tests/cp/proc-zero-len.sh: Likewise.
+ * tests/mv/part-symlink.sh: Likewise.
+ * tests/tail-2/infloop-1.sh: Likewise.
+
+2014-05-06 Pádraig Brady <P@draigBrady.com>
+
+ mv,cp: preserve symlink xattrs when copying across file systems
+ * src/copy.c (copy_internal): Include the copy_attr() call for symlinks.
+ This should not dereference symlinks, since llistxattr() is used
+ in attr_copy_file() in libattr, and so should copy all but the filtered
+ extended attributes. Note we don't just move the copy_attr() call
+ before the set_owner() call, as that would break capabilities
+ for non symlinks.
+ * tests/cp/cp-mv-enotsup-xattr.sh: Add a test case.
+ * NEWS: Mention the bug fix.
+ Fixes http://bugs.gnu.org/16131
+
+2014-05-05 Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
+
+ tests: initial SMACK tests
+ * init.cfg (require_smack_): New function.
+ * local.mk: Referenced new tests.
+ * tests/id/smack.sh: SMACK tests (new file).
+ * tests/mkdir/smack-no-root.sh: SMACK tests (new file).
+ * tests/mkdir/smack-root.sh: SMACK tests (new file).
+
+2014-05-04 Jim Meyering <meyering@fb.com>
+
+ maint: autotools-install: update tool version numbers to latest
+ * scripts/autotools-install (tarballs): Update to latest.
+
+2014-05-03 Jim Meyering <meyering@fb.com>
+
+ maint: don't let envvar setting break ChangeLog generation
+ * Makefile.am (gen-ChangeLog): Clear amend_git_log when we
+ don't set it, so that an envvar setting cannot cause trouble.
+
+2014-05-02 Pádraig Brady <P@draigBrady.com>
+
+ numfmt: improve processing throughput by 800%
+ The devmsg() calls that took quote_n() arguments,
+ didn't normally output anything, but still incurred
+ the overhead of those quote_n() calls.
+
+ * src/numfmt.c (devmsg): Move the inline function
+ with _internal_ enablement check to...
+ * src/system.h: ...here as a variadic macro, with
+ the enablement check at the outer level.
+ * src/factor.c: As per numfmt.c but there is no
+ performance change in this case.
+ * NEWS: Mention the significant performance improvement.
+
+2014-05-02 Pádraig Brady <P@draigBrady.com>
+
+ numfmt: support zero padding using --format="%010f"
+ * src/numfmt.c (setup_padding_buffer): Simplify the code by not
+ explicitly dealing with heap exhaustion.
+ (parse_format_string): Likewise. Handle multiple grouping
+ modifiers as does the standard printf. Handle the new leading
+ zero --format modifier.
+ (double_to_human): Use more defensive coding against overwriting
+ stack buffers. Honor the leading zeros width.
+ (usage): Mention the leading zero --format modifier.
+ (main): Allow --padding in combo with a --format (width),
+ as the number of leading zeros are useful independent of
+ the main field width.
+ * doc/coreutils.texi (numfmt invocation): Likewise.
+ * tests/misc/numfmt.pl: Add new test cases.
+ * NEWS: Mention the improvement.
+
+2014-04-29 Pádraig Brady <P@draigBrady.com>
+
+ doc: clarify the pr --page-width descriptions
+ * doc/coreutils.texi (pr invocation): Clarify that -w or -W
+ will be rounded down so that each column has the same width.
+ Adjust the wording for -W, to avoid the implication that the
+ width of -S is insignificant to the page width.
+ * src/pr.c (usage): Add a period to avoid ambiguity in
+ the man page output.
+
+2014-04-29 Pádraig Brady <P@draigBrady.com>
+
+ ptx: fix whitespace trimming with multiple files
+ This issue was identified by running the test suite with
+ http://code.google.com/p/address-sanitizer/
+ which is included in GCC 4.8 and enabled with -fsanitize=address
+
+ This was checked on Fedora 20 with GCC 4.8 as follows:
+
+ $ yum install libasan # http://bugzilla.redhat.com/991003
+ $ rm -f src/ptx.o
+ $ make check AM_CFLAGS='-fsanitize=address' SUBDIRS=. VERBOSE=yes
+ $ failure identified in tests/test-suite.log
+
+ To see this particular failure triggered with multiple files:
+
+ $ src/ptx <(echo a) <(echo a) 2>&1 | asan_symbolize.py -d
+
+ =================================================================
+ ==32178==ERROR: AddressSanitizer: heap-buffer-overflow on address
+ 0x60200000e74f at pc 0x435442 bp 0x7fffe8a1b290 sp 0x7fffe8a1b288
+ READ of size 1 at 0x60200000e74f thread T0
+ #0 0x435441 in define_all_fields coreutils/src/ptx.c:1425
+ #1 0x7fa206d31d64 in __libc_start_main ??:?
+ #2 0x42f77c in _start ??:?
+ 0x60200000e74f is located 1 bytes to the left of 3-byte region
+ [0x60200000e750,0x60200000e753) allocated by thread T0 here:
+ #0 0x421809 in realloc ??:?
+ #1 0x439b4e in fread_file coreutils/lib/read-file.c:97
+ Shadow bytes around the buggy address:
+ 0x0c047fff9c90: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
+ 0x0c047fff9ca0: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
+ 0x0c047fff9cb0: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
+ 0x0c047fff9cc0: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
+ 0x0c047fff9cd0: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fd fd
+ =>0x0c047fff9ce0: fa fa 03 fa fa fa fd fd fa[fa]03 fa fa fa 00 00
+ 0x0c047fff9cf0: fa fa 04 fa fa fa 04 fa fa fa fd fa fa fa fd fa
+ 0x0c047fff9d00: fa fa 00 fa fa fa fd fa fa fa 00 fa fa fa 00 fa
+ 0x0c047fff9d10: fa fa fd fa fa fa fd fa fa fa fd fa fa fa fd fa
+ 0x0c047fff9d20: fa fa fd fa fa fa fd fa fa fa fd fa fa fa fd fa
+ 0x0c047fff9d30: fa fa fd fa fa fa 00 fa fa fa 00 fa fa fa 00 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
+ Heap right redzone: fb
+ Freed heap region: fd
+ Stack left redzone: f1
+ Stack mid redzone: f2
+ Stack right redzone: f3
+ Stack partial redzone: f4
+ Stack after return: f5
+ Stack use after scope: f8
+ Global redzone: f9
+ Global init order: f6
+ Poisoned by user: f7
+ ASan internal: fe
+ ==32178==ABORTING
+
+ The initial report and high level analysis were from Jim Meyering...
+
+ "The underlying problem is that swallow_file_in_memory()
+ is setting the contents of the global text_buffer for the first file,
+ then updating it (clobbering old value) for the second file.
+ Yet, some pointers to the initial buffer have been squirreled away
+ and later, one of them (keyafter) is presumed to point into
+ the new "text_buffer", which it does not. The subsequent
+ SKIP_WHITE_BACKWARDS use backs up "cursor" and goes out of bounds."
+
+ * src/ptx.c (text_buffers): Maintain references for the limits of each
+ buffer corresponding to each file, rather than just the last processed.
+ (struct OCCURS): Add a member to map back to the corresponding file.
+ Note normally this could be computed from the "reference" member
+ rather than needing the extra storage, however this is not possible
+ when in --references mode.
+ (find_occurs_in_text): Reference the array rather than a single entry.
+ (define_all_fields): Likewise. Also avoid computing the file index
+ since this is now stored directly.
+ (main): Update text_buffers[] array rather than a single text_buffer.
+ * tests/misc/ptx-overrun.sh: Even though this issue is already triggered
+ with AddressSanitizer, add a new case to demonstrate the whitespace
+ trimming issue, and to trigger without AddressSanitizer.
+ Fixes https://bugs.gnu.org/16171
+
+2014-04-25 Pádraig Brady <P@draigBrady.com>
+
+ maint: make ChangeLog generation more robust
+ * Makefile.am (gen-ChangeLog): Sync changes from GNU hello,
+ to ensure exit status is propagated, and to support an optional
+ git-log-fix file.
+
+2014-04-25 Edgars Irmejs <edgars.irmejs@gmail.com>
+
+ maint: remove trailing comma from enum to make gl/ c89 compat
+ * gl/lib/fadvise.c (fadvice_t): This might go to gnulib some day so
+ remove the trailing comma.
+ Fixes http://bugs.gnu.org/17329
+
+2014-04-22 Assaf Gordon <assafgordon@gmail.com>
+
+ doc: clarify meaning of stat's mtime and ctime formats
+ * src/stat.c (usage): s/modification time/data modification time/;
+ s/change time/status change time/
+ * doc/coreutils.texi: Ditto.
+
+2014-04-18 Pádraig Brady <P@draigBrady.com>
+
+ tests: make ls tests independent of COLORTERM env
+ Since the recent commit v8.22-68-g08783f1, ls coloring
+ is now dependent on the COLORTERM environment variable.
+
+ * tests/envvar-check: Unset COLORTERM from test environment.
+ * tests/ls/color-dtype-dir.sh: Ensure coloring is used.
+ * tests/misc/ls-misc.pl: Likewise.
+
+ Prompted by the continuous integration build failure at:
+ http://hydra.nixos.org/build/10397646
+
+2014-04-17 Pádraig Brady <P@draigBrady.com>
+
+ doc: disambiguate chmod man page reference to (a) users
+ * man/chmod.x: Don't rely on the bold markup for 'a' to
+ distinguish it as that's not done in all cases.
+
+2014-04-17 David Michael <fedora.dm0@gmail.com>
+
+ dircolors: add hurd and mach-gnu-color terminal types
+ mach-color was replaced by mach-gnu-color in Hurd in 2012.
+ mach-color is left for compatibility and corresponding
+ definitions for mach-color are still found in ncurses.
+
+ * src/dircolors.hin: Add hurd and mach-gnu-color.
+
+2014-04-17 Guilherme de Almeida Suckevicz <guito.linux@gmail.com>
+
+ ls: don't output colors with unknown TERM env variable
+ --colors controls whether to output colors depending on
+ whether we're connected to a terminal or not, while this
+ change gives control over which terminals we output colors to.
+
+ * NEWS: Mention the change in behavior.
+ * src/ls.c (known_term_type): A new function to search the static
+ list from dircolors.h
+ (parse_ls_colors): Honor the TERM when both LS_COLORS and COLORTERM
+ are non empty.
+ * tests/ls/color-term.sh: A new test.
+ * tests/local.mk: Reference the new test.
+ Fixes http://bugs.gnu.org/15992
+
+2014-04-16 Benno Schulenberg <bensberg@justemail.net>
+
+ doc: improve remove prompt translator comment
+ * src/remove.c (prompt): Explain where the difficulty with translating
+ these two strings resides, and suggest an alternative: the one that
+ Paul Eggert first proposed back in 2002, which seems fully resistant.
+
+2014-04-16 Bernhard Voelker <mail@bernhard-voelker.de>
+
+ maint: df: avoid sizeof(char**) static analysis warning
+ * src/df.c (alloc_table_row): Use the size of char** to enlarge
+ the table. Spotted by Coverity.
+
+2014-04-11 Pádraig Brady <P@draigBrady.com>
+
+ tests: fix false dd conv=sparse failure on newer XFS
+ * tests/dd/sparse.sh: When testing that a hole is created,
+ use an existing sparse destination file, so that we're
+ not write extending the file size, and thus avoiding
+ speculative preallocation which can result in smaller
+ holes than requested.
+ Workaround suggested by Brian Foster
+
+2014-04-10 Pádraig Brady <P@draigBrady.com>
+
+ maint: avoid static analysis warnings in ln.c
+ * src/ln.c (do_link): It's not obvious that record_file() is a noop
+ in the symlink case (in that case dest_set is NULL and so ignored).
+ So to make it obvious, and to avoid false positives seen in coverity,
+ add the explicit condition here.
+
+2014-04-09 Pádraig Brady <P@draigBrady.com>
+
+ maint: document timeout --preserve-status in v8.21 NEWS
+ * NEWS: Add the omitted new feature.
+ * cfk.mk (old_NEWS_hash): Adjust accordingly.
+
+ doc: clarify in --help that -Z doesn't take an argument
+ * NEWS: Fix a confusing old entry.
+ * cfg.mk (old_NEWS_hash): Adjust accordingly.
+ * src/cp.c (usage): Separate the -Z and --context descriptions.
+ * src/install.c: Likewise.
+ * src/mkdir.c: Likewise.
+ * src/mkfifo.c: Likewise.
+ * src/mknod.c: Likewise.
+ Fixes http://bugs.gnu.org/17220
+
+2014-04-05 Pádraig Brady <P@draigBrady.com>
+
+ maint: various cleanups
+ * tests/misc/numfmt.pl: Fix comment misspelling.
+ * src/cut.c: Likewise.
+ * src/tsort.c (detect_loop): Replace an fprintf() with error().
+
+ shred: overwrite inode storage used by some file systems
+ * doc/coreutils.texi (shred invocation): Mention some reasons
+ why clearing slack space might be useful.
+ * src/shred.c (do_wipefd): Add initial writes for each pass
+ for small regular files in case the storage for those is
+ in the inode, and thus a larger write up to a block size would
+ bypass that. Move the direct I/O control to...
+ (dopass): ... here so we can avoid enabling it for these small
+ initial writes. It's better to retry direct I/O for each pass
+ anyway to handle the case where direct I/O is disabled for only
+ the last portion of a file when the size is not a multiple of
+ the block size. Note we don't avoid the sync for the initial
+ write as it will be small but more importantly could be on a
+ different part of the disk and so worth doing independently
+ to ensure the write is not discarded.
+ * tests/misc/shred-exact.sh: Check some more direct I/O cases.
+ * NEWS: Mention the improvements.
+ The inode storage issue was mentioned by Paul Eggert.
+
+2014-04-04 Pádraig Brady <P@draigBrady.com>
+
+ shred: avoid a data pass on empty files
+ * src/shred.c (do_wipefd): Don't increase the size written
+ for an empty file up to a full block. Also increase the size
+ to OFF_T_MAX in the edge case where we do overflow.
+ * NEWS: Mention the shred improvements from recent changes.
+ * tests/misc/shred-passes.sh: Adjust as we no longer
+ write a BLKSIZE of data for empty files.
+
+2014-04-03 Paul Eggert <eggert@cs.ucla.edu>
+
+ cp: don't reserve a device number
+ * src/copy.c (copy_internal): Replace dev_t arg DEVICE with struct
+ stat pointer arg PARENT. All callers changed. This removes an
+ unwarranted assumption that dev_t values of 0 cannot occur in file
+ systems. See: http://bugs.gnu.org/17179
+
+ shred: shred one block even for empty files
+ * src/shred.c (do_wipefd): Shred one block of empty regular files.
+ This reverts an unintended part of the previous change.
+
+ shred: port to GNU/Linux behavior with tape drives
+ See: http://bugs.gnu.org/17149
+ * src/shred.c [__linux__]: Include <sys/mtio.h>.
+ (dorewind): New function, which works around the lseek problem with
+ tape drives on GNU/Linux, the same way that dd does.
+ (dopass): Use it. New arg ST, needed for dorewind. All uses changed.
+ (do_wipefd): Don't rely on undefined behavior on integer overflow
+ of file sizes. Use INT_ADD_OVERFLOW instead.
+
+2014-04-02 Paul Eggert <eggert@cs.ucla.edu>
+
+ head: port to Darwin and use simpler seeks
+ This removes an unportable assumption that if lseek succeeds, the
+ file is capable of seeking. See: http://bugs.gnu.org/17145
+ * src/head.c (elseek): New function, for consistency in reporting
+ lseek failures.
+ (elide_tail_bytes_file, elide_tail_lines_seekable)
+ (elide_tail_lines_file, head_lines, head): Use it.
+ (elide_tail_bytes_file, elide_tail_lines_file):
+ New args CURRENT_POS and SIZE. All uses changed. Don't bother
+ invoking lseek, since we know the file's pos and size now.
+ (elide_tail_bytes_file): Change a local from uintmax_t to off_t,
+ since it fits.
+ (head): Use lseek only on regular files, since its behavior on
+ unseekable devices is implementation-defined.
+ * NEWS: Document this.
+
+2014-03-31 Paul Eggert <eggert@cs.ucla.edu>
+
+ head: fix bug with head -c-N when stdin is not at start
+ * src/head.c (elide_tail_bytes_file): Fix typo in lseek invocation.
+ * tests/misc/head-c.sh: Add test for this bug.
+ * NEWS: Document this.
+
+2014-03-26 Pádraig Brady <P@draigBrady.com>
+
+ mv: fix issues with previous prompt adjustments
+ * src/copy.c (overwrite_ok): Fix the gettext calls so
+ that the second string is tagged for translation.
+ Display the correct "replace ..." prompt when in move_mode.
+ * tests/mv/i-3.sh: Display the output on failure to ease debugging.
+
+2014-03-26 Bernhard Voelker <mail@bernhard-voelker.de>
+
+ ptx: avoid --format long option falling through into --help
+ * src/ptx.c (main): Add a 'break' after the --format handling case.
+ Otherwise it would fall through into the usage case.
+ * tests/misc/ptx.pl: Add test cases for --format=tex and --format=roff.
+ * NEWS (Bug fixes): Mention the fix.
+ Bug introduced in 1999-04-04 commit, SH-UTILS-1_16f-269-gd815c15.
+ Spotted by coverity (MISSING_BREAK).
+
+2014-03-26 Bernhard Voelker <mail@bernhard-voelker.de>
+
+ basename: mention that the -s option implies -a in usage
+ * src/basename.c (usage): Mention that -s implies -a.
+ (main): Add "fall through" comment to case 's'.
+
+ Spotted by coverity: MISSING_BREAK.
+
+2014-03-25 Paul Eggert <eggert@cs.ucla.edu>
+
+ cp: simplify overwrite logic
+ * src/copy.c (overwrite_ok): Rename from overwrite_prompt. Invoke
+ yesno instead of having the caller do it; that's cleaner. Return
+ bool, not void. All callers changed.
+
+ cp: improve quality of overwrite prompt
+ * src/copy.c (overwrite_prompt): New arg X. All callers changed.
+ Use X to improve the quality of the prompt (Bug#17087).
+ * tests/mv/i-2.sh, tests/mv/i-3.sh: Change test to match new prompt.
+
+2014-03-24 Pádraig Brady <P@draigBrady.com>
+
+ split: avoid unnecessary input buffering
+ Input buffering is best avoided because it introduces
+ delayed processing of output for intermittent input,
+ especially when the output size is less than that of
+ the input buffer. This is significant when output
+ is being further processed which could happen if split
+ is writing to precreated fifos, or through --filter.
+
+ If input is arriving quickly from a pipe then this will
+ already be buffered before we read it, so fast arriving
+ input shouldn't be a performance issue.
+
+ * src/split.c (lines_split, lines_bytes_split, bytes_split,
+ lines_chunk_split, bytes_chunk_extract): s/full_read/safe_read/.
+ * THANKS.in: Mention the reporter.
+ * NEWS: Mention the improvement.
+
+2014-03-19 Pádraig Brady <P@draigBrady.com>
+
+ doc: clarify the operation of uniq -uD
+ The description of -u was inaccurate when combined with -D:
+
+ $ printf '%s\n' '1 a' '2 a' | uniq -uD -f1
+ 1 a
+
+ * doc/coreutils.texi (uniq invocation): Clarify that it's
+ the last repeated line that is suppressed from the output.
+
+ Fixes http://bugs.gnu.org/17022
+
+2014-03-19 Edward Welbourne <eddy@chaos.org.uk>
+
+ doc: avoid regex ambiguity in chmod mode description
+ * man/chmod.x: s/[+-=]/[-+=]/
+ * doc/perm.texi (Symbolic Modes): Likewise.
+ * THANKS.in: Remove patch owner.
+ Fixes http://bugs.gnu.org/17041
+
+2014-03-19 Pádraig Brady <P@draigBrady.com>
+
+ chroot: always diagnose failure to set supplemental groups
+ * src/chroot.c (setgroups): Change this replacement to
+ fail when called so that platforms like Interix without support for
+ supplemental groups don't silently ignore a --groups option.
+
+2014-03-19 Dylan Simon <dylan@dylex.net>
+
+ chmod: fix erroneous warnings with -R --changes
+ For files with "special" bits set, we would stat the relative
+ file name in the wrong directory, giving an erroneous ENOENT diagnostic.
+ This issue was introduced with commit v5.92-653-gc1994c1
+ which changed fts to not change directory on traversal.
+
+ * src/chmod.c (mode_changed): Use fts->fts_cwd_fd with fstatat rather
+ than stat. All callers changed.
+ * tests/chmod/c-option.sh: Add a test case.
+ * NEWS: Mention the fix.
+ Fixes http://bugs.gnu.org/17035
+
+2014-03-19 Bernhard Voelker <mail@bernhard-voelker.de>
+
+ maint: fix typo in comment in fadvise.c
+ * gl/lib/fadvise.c: s/the the/the/, indroduced in commit
+ v8.22-40-g4f21182. Promted by sc_prohibit_doubled_word.
+ While at it, also s/be candidate/be a candidate/.
+
+2014-03-18 Paul Eggert <eggert@cs.ucla.edu>
+
+ stat: port birthtime to Solaris 11
+ Problem reported by Rich Burridge.
+ * src/stat.c [HAVE_GETATTRAT]: Include <attr.h>, <sys/nvpair.h>.
+ (print_statfs, print_stat, print_it):
+ Pass fd, too, for the benefit of get_birthtime.
+ All uses changed.
+ (get_birthtime): New function, for porting to Solaris 11.
+ (print_stat): Use it.
+
+ * configure.ac (getattrat, LIB_NVPAIR): New checks.
+ * src/local.mk (src_stat_LDADD): Add $(LIB_NVPAIR).
+
+2014-03-14 Jim Meyering <meyering@fb.com>
+
+ ln: with -sr, don't segfault for a TARGET of ''
+ Prior to this change, "ln -sr '' F" would segfault, attempting
+ to read path2[1] in relpath.c's path_common_prefix function.
+ This problem arises whenever canonicalize_filename_mode returns
+ NULL.
+ * src/ln.c (convert_abs_rel): Call relpath only when
+ both canonicalize_filename_mode calls return non-NULL.
+ * tests/ln/relative.sh: Add a test to trigger this failure.
+ * THANKS.in: List reporter's name/address.
+ * NEWS (Bug fixes): Mention it.
+ Reported by Erik Bernstein in 739752@bugs.debian.org.
+ Fixes http://bugs.gnu.org/17010.
+
+2014-03-13 Jim Meyering <meyering@fb.com>
+
+ maint: avoid "attribute-const"-suggesting warning from gcc
+ * gl/lib/fadvise.c: Use a pragma to turn off this warning option:
+ -Wsuggest-attribute=const. Without this change, building with
+ --enable-gcc-warnings would evoke this error:
+
+ lib/fadvise.c:25:1: error: function might be candidate for\
+ attribute 'const' [-Werror=suggest-attribute=const]
+
+2014-03-13 Jim Meyering <jim@meyering.net>
+
+ scripts: autotools-install: update
+ * scripts/autotools-install: Update version numbers of latest
+ automake and gettext packages.
+
+2014-03-13 Pádraig Brady <P@draigBrady.com>
+
+ chroot: improve --userspec and --groups look-up
+ - Support arbitrary numbers in --groups, consistent with
+ what is already done for --userspec
+ - Avoid look-ups entirely for --groups items with a leading '+'
+ - Support names that are actually numbers in --groups
+ - Ignore an empty --groups="" option for consistency with --userspec
+ - Look up both inside and outside the chroot with inside taking
+ precedence. The look-up outside may load required libraries
+ to complete the look-up inside the chroot. This can happen for
+ example with a 32 bit chroot on a 64 bit system, where the
+ 32 bit NSS plugins within the chroot fail to load.
+
+ * src/chroot.c (parse_additional_groups): A new function refactored
+ from set_addition_groups(), to just do the parsing. The actual
+ setgroups() call is separated out for calling from the chroot later.
+ (main): Call parse_user_spec() and parse_additional_groups()
+ both outside and inside the chroot for the reasons outlined above.
+ * tests/misc/chroot-credentials.sh: Ensure arbitrary numeric IDs
+ can be specified without causing look-up errors.
+ * NEWS: Mention the improvements.
+ * THANKS.in: Add Norihiro Kamae who initially reported the issue
+ with a proposed patch.
+ Also thanks to Dmitry V. Levin for his diagnosis and sample patch.
+
+2014-03-09 Aleksej Serdjukov <deletesoftware@yandex.ru>
+
+ doc: fix typo in texinfo docs
+ * doc/coreutils.texi (Operating on characters): s/This/These/.
+ Fixes http://bug.gnu.org/16973
+
+2014-03-07 Pádraig Brady <P@draigBrady.com>
+
+ doc: fix readpath typo in texinfo contents
+ * docs/coreutils.texi: s/readpath/realpath/
+ Fixes http://bugs.gnu.org/16964
+
+2014-03-05 Pádraig Brady <P@draigBrady.com>
+
+ tests: avoid the :> construct which can hide errors
+ On most shells `:>file || framework_failure_` will not evaluate
+ the framework_failure_ even if there was an error writing the file.
+ shells which do evaluate the failure are ksh 93u+ and bash 4.2,
+ while shells wich don't include bash 4.3, solaris, freebsd, dash.
+
+ Furthermore this construct is problematic on Solaris 10 sh,
+ which will try to optimize away a `:' command in a loop
+ after the first iteration, even if it is redirected.
+
+ * tests/cp/link-deref.sh: Remove the leading colon on redirections.
+ * tests/cp/reflink-perm.sh: Likewise.
+ * tests/id/zero.sh: Likewise.
+ * tests/install/install-C.sh: Likewise.
+ * tests/misc/env.sh: Likewise.
+ * tests/misc/md5sum-bsd.sh: Likewise.
+ * tests/misc/runcon-no-reorder.sh: Likewise.
+ * tests/mv/partition-perm.sh: Likewise.
+ * tests/rm/r-root.sh: Likewise.
+ * tests/split/l-chunk.sh: Likewise.
+ * tests/split/line-bytes.sh: Likewise.
+ * tests/tail-2/inotify-rotate.sh: Likewise.
+ * tests/tail-2/retry.sh: Likewise.
+ * tests/tail-2/symlink.sh: Likewise.
+ * tests/tail-2/wait.sh: Likewise.
+ * tests/touch/read-only.sh: Likewise.
+ + cfg.mk (sc_prohibit_colon_redirection): A new syntax check
+ to avoid further instances of this creeping in.
+
+2014-03-05 Pádraig Brady <P@draigBrady.com>
+
+ tests: fix false failure in nohup.sh in non tty builds
+ * tests/misc/nohup.sh: When running tests without a controlling tty,
+ an exec failure is triggered in a subshell, which causes POSIX
+ shells to immediately exit the subshell. This was brought
+ to notice by the newly conforming bash 4.3.
+ Fixes http:/bugs.gnu.org/16940
+
+2014-03-03 Pádraig Brady <P@draigBrady.com>
+
+ doc: improve df --human and --si, help and man page
+ * src/df.c (usage): Adjust the --human and --si descriptions
+ to not depend on each other. Also include an example that is
+ illustrative of the rounding, suffix, width, and localized fractions.
+ * src/system.h (emit_size_note). Adjust so that it's obvious the
+ description is pertaining to the input SIZE argument, and not
+ to any sizes that might be output by df for example.
+ Fixes http://bugs.gnu.org/16922
+
+2014-02-27 Pádraig Brady <P@draigBrady.com>
+
+ date: fix crash or infinite loop when parsing a malformed TZ=""
+ * NEWS: Mention the fix.
+ * gnulib: Update to incorporate the fix.
+ This is the only change in this gnulib update.
+ * tests/misc/date.pl: Add a test for this case.
+
+ Fixes http://bugs.gnu.org/16872
+
+2014-02-27 Paul Eggert <eggert@cs.ucla.edu>
+
+ cp: copy files by inode only if that facility is available
+ * src/copy.c (copy_dir): Use the new SAVEDIR_SORT_FASTREAD, not
+ SAVEDIR_SORT_INODE. Problem reported by Bernhard Voelker in:
+ http://lists.gnu.org/archive/html/coreutils/2014-02/msg00037.html
+
+ build: update gnulib submodule to latest
+
+2014-02-26 Paul Eggert <eggert@cs.ucla.edu>
+
+ cp: copy files by inode
+ Problem reported by Bernhard Voelker in:
+ http://lists.gnu.org/archive/html/coreutils/2014-02/msg00034.html
+ * src/copy.c (copy_dir): Adjust to recent gnulib change.
+
+ build: update gnulib submodule to latest
+
+2014-02-26 Bernhard Voelker <mail@bernhard-voelker.de>
+
+ shuf: convert error diagnostic to lowercase
+ * src/shuf.c (main): s/No/no/, introduced by commit v8.22-25-g9f60f37.
+ * NEWS: Also adjust the NEWS for that recent commit to make it
+ clear this was new bug rather than a regression.
+
+ Prompted by the syntax-check rule sc_error_message_uppercase
+
+2014-02-26 Bernhard Voelker <mail@bernhard-voelker.de>
+
+ doc: add dd example for failing disks
+ * doc/coreutils.texi (dd invocation): Add an example for how to call
+ dd to save data from a failing disk. Mention GNU 'ddrescue' as one
+ of the more specialized tools in such a case.
+
+2014-02-23 Paul Eggert <eggert@cs.ucla.edu>
+
+ shuf: with -r, don't dump core if the input is empty
+ Problem reported by valiant xiao in <http://bugs.gnu.org/16855>.
+ * NEWS: Document this.
+ * src/shuf.c (main): With -r, report an error if the input is empty.
+ * tests/misc/shuf.sh: Test for the bug.
+
+2014-02-21 Paul Eggert <eggert@cs.ucla.edu>
+
+ doc: fix problems with @w and @kbd (Bug#16802)
+ * doc/coreutils.texi: Prefer '@allowcodebreaks false' to '@w'.
+ Also, don't use @kbd except for keyboard input.
+
+2014-02-10 Pádraig Brady <P@draigBrady.com>
+
+ cp: with --link always use linkat() if available
+ * src/copy.c (copy_reg): If linkat() is available it doesn't
+ matter about the gnulib emulation provided, and thus the
+ LINK_FOLLOWS_SYMLINKS should not have significance here.
+ This was noticed on FreeBSD and the consequence is that
+ cp --link will create hardlinks to symlinks there, rather
+ than emulating with symlinks to symlinks.
+ * tests/cp/link-deref.sh: Adjust the checks to cater
+ for all cases where hardlinks to symlinks are supported.
+
+2014-02-09 Pádraig Brady <P@draigBrady.com>
+
+ head,tail: consistently diagnose write errors
+ If we can't output more data, we should immediately
+ diagnose the issue and exit rather than consuming all
+ of input (in some cases).
+
+ * src/tail.c (xwrite_stdout): Also diagnose the case where
+ only some data is written. Also clearerr() to avoid the
+ redundant less specific error from atexit (close_stdout);
+ * src/head.c (xwrite_stdout): Copy this new function from tail,
+ and use it to write all output.
+ * tests/misc/head-write-error.sh: A new test to ensure we
+ exit immediately on write error.
+ * tests/local.mk: Reference the new test.
+
+2014-02-09 Алексей Шилин <rootlexx@mail.ru>
+
+ head: fix --lines=-0 outputting nothing if no newline at EOF
+ * src/head.c (elide_tail_lines_pipe): Just output all input in
+ this case to avoid the issue and also avoid redundant '\n' processing.
+ (elide_tail_lines_seekable): Likewise.
+ * tests/misc/head-elide-tail.pl: Add tests for no '\n' at EOF.
+ * NEWS: Mention the fix.
+ Fixes http://bugs.gnu.org/16329
+
+2014-02-09 John <da_audiophile@yahoo.com>
+
+ dircolors: add a new entry to colorize 'm4a' files
+ * src/dircolors.hin: Add entry for mpeg4 audio files.
+ Fixes http://bugs.gnu.org/16700
+
+2014-02-09 Niels Möller <nisse@lysator.liu.se>
+
+ od: add an --endian option to control byte swapping
+ * src/od.c (main): Handle the new --endian option,
+ taking "little" and "big" as parameters.
+ (usage): Describe the new option.
+ (PRINT_FIELDS): Adjust to swap bytes if required.
+ * tests/misc/od-endian.sh: A new test to verify
+ the byte swapping operations for hex (ints) and floats
+ for all sizes between 1 and 16 inclusive.
+ * test/local.mk: Reference the new test.
+ * doc/coreutils.texi (od invocation): Describe the new option.
+ * NEWS: Mention the new feature.
+
+2014-01-29 Pádraig Brady <P@draigBrady.com>
+
+ stat,tail: improve support for HFS+ and HFSX
+ * src/stat.c (human_fstype): Add new file system ID definitions.
+ * NEWS: Mention the improvement.
+ Fixes http://bugs.gnu.org/16336
+
+2014-01-24 Assaf Gordon <assafgordon@gmail.com>
+
+ tests: skip chown/separator with conflicting group IDs
+ * tests/chown/separator.sh: skip test if the user's group has
+ multiple entries.
+ Fixes http://bugs.gnu.org/16532
+
+2014-01-21 Pádraig Brady <P@draigBrady.com>
+
+ build: suppress an erroneous warning --with-selinux=no
+ * m4/jm-macros.m4: Don't check the SELinux cached variables
+ --without-selinux.
+ Reported-by: Bernhard Voelker
+
+2014-01-17 Pádraig Brady <P@draigBrady.com>
+
+ build: remove no longer used spawn-pipe files from POTFILES.in
+ This should have been part of the previous commit v8.22-14-gf18999b
+
+ * po/POTFILES.in: Remove gnulib files no longer used.
+ Prompted by the continuous integration build failure at:
+ http://hydra.nixos.org/build/8288209/
+
+2014-01-17 Pádraig Brady <P@draigBrady.com>
+
+ build: avoid unneeded spawn-pipe gnulib module
+ * bootstrap.conf: Reference the used pipe-posix module
+ rather than the uneeded and larger spawn-pipe module,
+ which the pipe module is the deprecated equivalent of.
+
+2014-01-17 Chengwei Yang <chengwei.yang@intel.com>
+
+ doc: clarify SMACK related --help and documentation
+ * src/ls.c: Remove all mention of SELinux since ls
+ should treat all security context labels equally.
+ * doc/coreutils.texi (ls invocation): Likewise.
+ (id invocation): Clarify that -Z outputs the context
+ inherited by the process, rather than one specific to a user.
+ Note for SMACK this can be set instead by the SMACK64EXEC label,
+ in the unusual case where this is set on the id executable.
+ * src/id.c (usage): Likewise.
+ * src/mkdir.c (usage): Clarify that -Z is specific to SELinux,
+ while --context=CTX is also supported for SMACK.
+ * src/mkfifo.c (usage): Likewise.
+ * src/mknod.c (usage): Likewise.
+
+2014-01-17 Pádraig Brady <P@draigBrady.com>
+
+ ln: fix replacing symbolic links whose targets can't exist
+ * src/ln.c (errno_nonexisting): A new function to determine if
+ the errno implies that a file doesn't or can't (currently) exist.
+ (target_directory_operand): Use the new function to expand the
+ set of errors we handle.
+ * tests/ln/sf-1.sh: Add test cases for the newly handled errors.
+ * THANKS.in: Mention the reporter.
+ * NEWS: Mention the bug fix.
+
+2014-01-14 Pádraig Brady <P@draigBrady.com>
+
+ tests: restrict a recent SELinux test to SELinux systems
+ * tests/cp/no-ctx.sh: Since the test diagnoses whether the
+ intercepted lgetfilecon() calls are actually called or not,
+ restrict the test to systems where that occurs.
+ The test cases are minimal on non SELinux systems and should
+ be well covered by other tests.
+ Reported-by: Bernhard Voelker
+
+2014-01-13 Nicolas Iooss <nicolas.iooss@m4x.org>
+
+ copy: fix a segfault in SELinux context copying code
+ * src/selinux.c (restorecon_private): On ArchLinux the
+ `fakeroot cp -a file1 file2` command segfaulted due
+ to getfscreatecon() returning a NULL context.
+ So map this to the sometimes ignored ENODATA error,
+ rather than crashing.
+ * tests/cp/no-ctx.sh: Add a new test case.
+ * tests/local.mk: Reference the new test.
+ * NEWS: Mention the fix.
+ Fixes http://bugs.gnu.org/16335
+
+2014-01-13 Pádraig Brady <P@draigBrady.com>
+
+ maint: tests: refactor gcc commands for building shared lib
+ * init.cfg (gcc_shared_): A new function refactored from tests.
+ (require_gcc_shared_): Adjust to call gcc_shared_() to build the
+ test library, and remove that library before the function returns.
+ * tests/cp/nfs-removal-race.sh: Call the new gcc_shared_().
+ * 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.
+
+ copy: fix SELinux context preservation for existing directories
+ * src/copy.c (copy_internal): Use the global process context
+ to set the context of existing directories before they're populated.
+ This is more consistent with the new directory case, and fixes
+ a bug for existing directories where we erroneously set the
+ context to the last copied descendent, rather than to that of
+ the source directory itself.
+ * tests/cp/cp-a-selinux.sh: Add a test for this case.
+ * NEWS: Mention the fix.
+ * THANKS.in: Add reporter Michal Trunecka.
+
+2014-01-10 Bernhard Voelker <mail@bernhard-voelker.de>
+
+ tests: improve test for a working setfacl
+ Prompted by a test framework failure of tests/mkdir/p-acl.sh on armv7l:
+ The previous test for a working setfacl was not sufficient in some
+ circumstances.
+
+ * init.cfg (require_setfacl_): Call setfacl twice with conflictive
+ ACL specs, and use ACL specs which can't be mapped into regular file
+ permission bits. Document the reasons.
+
+2014-01-09 Bernhard Voelker <mail@bernhard-voelker.de>
+
+ tests: avoid FP failure when cp fails for /proc/cpuinfo
+ On emulated aarch64 systems like in the qemu-based OpenBuildService
+ of openSUSE, cp fails to copy /proc/cpuinfo because the inode number
+ changes between the initial stat() call and copying the file:
+
+ $ cp /proc/cpuinfo exp
+ cp: skipping file '/proc/cpuinfo', as it was \
+ replaced while being copied
+
+ * tests/cp/proc-zero-len.sh: When cp fails, check on the above
+ error message to skip the test.
+
+2014-01-02 Bernhard Voelker <mail@bernhard-voelker.de>
+
+ maint: fix copyright holder and year in selinux sources
+ * src/selinux.c: As the copyright is assigned to the FSF for all
+ of coreutils, replace the copyright holder from "Red Hat, Inc."
+ to "Free Software Foundation, Inc.". Prompted by a warning of
+ 'make update-copyright'. Also update the copyright year.
+
+ maint: update all copyright year number ranges
+ Run "make update-copyright", but then also run this,
+ perl -pi -e 's/2\d\d\d-//' tests/sample-test
+ to make that one script use the single most recent year number.
+
+2014-01-02 Bernhard Voelker <mail@bernhard-voelker.de>
+
+ maint: prevent update-copyright from updating files from gnulib
+ The files 'bootstrap' and 'tests/init.sh' are taken from the
+ gnulib submodule. Therefore, 'make update-copyright' there should
+ already have updated the copyright year in these 2 files.
+
+ * .x-update-copyright: Add entries for the above mentioned files.
+
+2014-01-02 Bernhard Voelker <mail@bernhard-voelker.de>
+
+ build: update gnulib submodule, bootstrap and tests/init.sh to latest
+ * gnulib: Update to latest.
+ * bootstrap: Update from gnulib.
+ * tests/init.sh: Likewise.
+
+2013-12-13 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.22
+ * NEWS: Record release date.
+
+2013-12-13 Pádraig Brady <P@draigBrady.com>
+
+ stat,tail: improve support for hostfs and smackfs
+ hostfs is provided by the Linux UML subsystem.
+ smackfs is provided by the Linux Smack security module.
+
+ * src/stat.c (human_fstype): Add new file system ID definitions.
+ * NEWS: Mention the improvement, and adjust for the fact that
+ SNFS is a remote file system.
+
+2013-12-13 Pádraig Brady <P@draigBrady.com>
+
+ tests: avoid unlikely deadlock in dd/no-allocate on some shells
+ * test/dd/no-allocate.sh: Use 'wait' to ensure we don't have
+ multiple writers to the fifo, which was seen to trigger
+ a very hard to reproduce deadlock with make -j20 on solaris.
+ Also avoid writing to the fifo with the shell; instead using dd.
+ (check_dd_seek_alloc): A new function refactored from the various
+ cases, which are now constructed from function parameters.
+
+ tests: restrict cp --link inode comparisons to compatible systems
+ * tests/cp/link-deref.sh: On systems were cp can't determine if
+ gnulib linkat() emulation might create a symlink instead of a hardlink
+ to a symlink, copy.c will create a symlink to the symlink so that
+ it has more control over its metadata. Also even if the system
+ supports this operation, the particular file system under test may not.
+ So avoid the hardlinked symlink verification in these cases.
+ This fixes a false failure on aix, solaris and freebsd.
+
+ build: default to avoiding openssl system libraries
+ * configure.ac: Don't change the gnulib default of 'no' for
+ whether to link with openssl system libraries if available.
+ Distributions can explicitly enable this as their policy allows.
+ * NEWS: Adjust accordingly.
+
+2013-12-12 Tiger Lee <i@tigerlee.me>
+
+ doc: fix typo in numfmt invocation
+ * doc/coreutils.texi (numfmt invocation): s/nun/num/.
+ Fixes http://bugs.gnu.org/16122
+
+2013-12-11 Pádraig Brady <P@draigBrady.com>
+
+ tests: df/total-unprocessed: fix false failure with lofs
+ * tests/df/total-unprocessed.sh: Skip the test when we can't
+ determine the file system type as the exclusion filter is not
+ applied in that case. "lofs" being ignored is effectively
+ an unknown file system type.
+
+ tests: avoid warnings due to new filefrag -v format
+ * tests/cp/sparse-fiemap.sh: Newer versions of filefrag output
+ more fields, in different orders, so handle that to avoid warnings.
+
+2013-12-09 Pádraig Brady <P@draigBrady.com>
+
+ build: update gnulib to fix a tests build failure
+ * gnulib: Update to incorporate a fix for building tests
+ with -Werror=old-style-declaration
+
+ tests: fix false failure due to xargs usage
+ * tests/readlink/multi.sh: Ensure there is a trailing delimeter
+ or xargs may (on AIX 7 at least) suppress the last argument.
+
+ tests: fix false failure on systems without /dev/stdin
+ * tests/rm/interactive-once.sh: Ensure the expected output
+ matches with the output on systems without /dev/stdin (like AIX 7).
+ Also change some fail=1 to a more appropriate framework_failure_.
+
+ build: update gnulib and improve --with-openssl configure help
+ * configure.ac: Use gl_SET_CRYPTO_CHECK_DEFAULT() to set the
+ coreutils default for --with-openssl early, so that the
+ help text can be provided in a standard and complete form.
+ * gnulib: Update to incorporate a build fix on platforms
+ with only some of md5 and sha* implemented by libcrypto.
+
+2013-12-09 Pádraig Brady <P@draigBrady.com>
+
+ tests: fix false failure due to gdb inline function handling
+ Inline functions are awkward to breakpoint as mentioned at:
+ https://sourceware.org/bugzilla/show_bug.cgi?id=10738
+ The normal case here was for the breakpoint on the inline function
+ to fail, resulting in a 10s delay before skipping the test.
+ However on GCC 4.7.2 on ppc64 at least it was seen that
+ the test failed erroneously due to the breakpoint being successfully
+ set on an "out of line" function, but an inline function was
+ actually being called.
+
+ * tests/tail-2/inotify-race.sh: Switch to a line based breakpoint,
+ rather than a symbol base one, which avoids issues with breakpoints
+ on inline functions. Also skip_ on the initial breakpoint check
+ in case the breakpoint is not traversed which would be the case
+ on remote file systems for example.
+
+2013-12-09 Pádraig Brady <P@draigBrady.com>
+
+ tail: use consistent diagnostics with and without inotify
+ * src/tail.c: With inotify, when a file is initially absent,
+ we fstat(-1) for that file spec, thus recording an errnum of EBADF,
+ which caused the "has become accessible" diagnostic to be issued,
+ when the file first appears. Instead we avoid the fstat(-1) and
+ thus emit the more natural and consistent "has appeared" diagnostic.
+ * tests/tail-2/retry.sh: Use the new diagnostic which also causes
+ this test to pass on systems without inotify.
+
+2013-12-09 Bernhard Voelker <mail@bernhard-voelker.de>
+
+ tests: avoid false df failure with nfs and lofs
+ * tests/df/total-unprocessed.sh: -t nfs and --local are
+ _not_ mutually exclusive on solaris, with lofs mounts.
+
+2013-12-07 Pádraig Brady <P@draigBrady.com>
+
+ tests: avoid problematic $(< file) shell construct
+ * tests/cp/link-deref.sh: This was seen to cause an issue
+ with dash v0.5.6 at least, so change to a simpler expression.
+
+ tests: fix false failure on platforms using newfstatat
+ * tests/ls/stat-free-color.sh: Add newfstatat to the list
+ of syscalls to trace. Also add all "stat" syscalls to the
+ list of syscalls that we verify that strace supports.
+ Also only create a single dangling symlink to check, since
+ we already only check for a single "stat" call.
+ Fixes http://bugs.gnu.org/16075 seen on AArch64
+
+ tests: avoid a false memory leak test failure
+ * tests/misc/shuf-reservoir.sh: Restrict the valgrind
+ "exit on leak" behavior to developer environments where
+ specific "lint" code is enabled to avoid inconsequential leaks.
+
+2013-12-06 Bernhard Voelker <mail@bernhard-voelker.de>
+
+ tests: fix shuf test verifying that -i and -e can not be combined
+ Previously, the test triggered another error diagnostic:
+ shuf: invalid input range ‘-e’
+ and therefore eclipsed the expected one:
+ shuf: cannot combine -e and -i options
+
+ While at it, reindent a line with more than 80 characters, present
+ since the previous commit to silence sc_long_lines.
+
+ * tests/misc/shuf.sh: Pass a valid range to the -i option.
+
+2013-12-06 Paul Eggert <eggert@cs.ucla.edu>
+
+ shuf: --repeat, not --repetitions; default --head-count is infinity
+ Original problem reported by Philipp Thomas in
+ <http://bugs.gnu.org/16061>.
+ * NEWS: shuf --repeat, not shuf --repetitions.
+ * doc/coreutils.texi (shuf invocation):
+ * src/shuf.c (usage, long_opts, main):
+ * tests/misc/shuf.sh:
+ Likewise. Also, the default head-count is infinity.
+
+2013-12-05 Bernhard Voelker <mail@bernhard-voelker.de>
+
+ doc: clarify that df now generally processes special files correctly
+ Since v8.21-172-g33660b4, df not only treats symbolic link arguments
+ differently, as stated there, but now generally processes special file
+ arguments in a non-canonicalized form correctly:
+
+ $ cd /dev && df-old sdb
+ Filesystem 1K-blocks Used Available Use% Mounted on
+ devtmpfs 1014572 48 1014524 1% /dev
+
+ $ cd /dev && df-new sdb
+ Filesystem 1K-blocks Used Available Use% Mounted on
+ /dev/sdb 10190136 6039532 3609932 63% /home
+
+ Document df's new behavior.
+
+ * doc/coreutils.texi (df invocation): In the paragraph describing
+ df's behavior regarding special file arguments, relax the condition
+ for such special files from "... is an absolute name of ..." to
+ "... resolves to ...".
+ * NEWS (Bug fixes): Mention the new behavior also here.
+
+2013-12-05 Pádraig Brady <P@draigBrady.com>
+
+ tests: fix false failure with disabled SELinux support
+ This could trigger on SELinux systems where we build --qithout-selinux
+ or where the SELinux development libraries are not installed.
+
+ * init.cfg (require_selinux_enforcing_): Call require_selinux_()
+ to determine if the current build supports SELinux. This avoids
+ a false failure in tests/mkdir/selinux.sh where only mkdir would
+ determine that SELinux was disabled and thus ignore invalid contexts.
+ (require_selinux_): Refactor a little to distinguish whether it's
+ the build or the (file) system that doesn't support SELinux.
+
+2013-12-05 Pádraig Brady <P@draigBrady.com>
+
+ selinux: fix --context=CTX for cp and diagnose defaultcon() errors
+ * src/selinux.h (ignorable_ctx_err): A new function used
+ to determine if a warning should be given after a call
+ to defaultcon() or restorecon().
+ * src/cp.c (main): Fix the setfscreatecon() call to use
+ the argument passed by the user.
+ * src/mkdir.c (make_ancestor): Show all but "ignoreable" errors
+ from defaultcon() and restorecon().
+ * tests/misc/selinux.sh: Add a test run as root in selinux enforcing
+ mode, to ensure cp --context=invalid is honored and fails immediately.
+
+2013-12-04 Pádraig Brady <P@draigBrady.com>
+
+ md5sum, sha*sum: use libcrypto where available
+ libcrypto is generally available and has well optimized
+ crypto hash routines particular to various systems.
+ For example, testing sha1sum with openssl-1.0.0j
+ on an i3-2310M, gives a performance boost of about 40%:
+
+ $ time sha1sum.old --tag ~/test.iso
+ SHA1 (/home/padraig/test.iso) = 3c27f7ed01965fd2b89e22128fd62dc51a3bef30
+ real 0m4.692s
+ user 0m4.499s
+ sys 0m0.162s
+
+ $ time sha1sum.new --tag ~/test.iso
+ SHA1 (/home/padraig/test.iso) = 3c27f7ed01965fd2b89e22128fd62dc51a3bef30
+ real 0m2.685s
+ user 0m2.512s
+ sys 0m0.170s
+
+ * configure.ac: By default, enable use of libcrypto if available.
+ * src/local.mk: Link with libcrypto.
+ * NEWS: Mention the md5sum and sha*sum improvements.
+
+2013-12-04 Pádraig Brady <P@draigBrady.com>
+
+ df: handle bind mounts when processing device nodes
+ * src/df.c (get_disk): Use the same heuristic used in
+ get_point() to select the shortest file system mount point,
+ in an attempt to show the base mounted file system.
+ * NEWS: Mention the bug fix.
+
+2013-12-04 Pádraig Brady <P@draigBrady.com>
+
+ df: dereference symlinks to disk device nodes
+ This is so the matching for the device is done on the canonical name
+ of the disk node, rather than on the path of the symlink.
+ In any case the user will generally want to use the symlink target.
+
+ * src/df.c (get_disk): Canonicalize the passed file,
+ before matching against the list of mounted file system devices.
+ Note we pass the original symlink name to the "file" output field,
+ as the symlink target is usually available through the "source" field.
+ * tests/df/df-symlink.sh: Test the dereferencing operation.
+ * tests/local.mk: Mention the new test.
+ * NEWS: Mention the fix.
+ Reported by Ondrej Oprala
+
+2013-12-04 Pádraig Brady <P@draigBrady.com>
+
+ build: update gnulib submodule to latest
+ Note tests/init.sh and bootstrap are still in sync with gnulib.
+
+ * gnulib: Sync two configure check fixes.
+ - Avoid generating core dumps from regex configure check
+ - Fix compile error in getcwd configure check
+
+2013-12-04 Pádraig Brady <P@draigBrady.com>
+
+ build: update gnulib submodule to latest
+ Note tests/init.sh and bootstrap are still in sync with gnulib.
+
+ * gnulib: Sync many fixes/changes, including the base64
+ encoding speedup mentioned in commit v8.21-145-g9120845
+ Also included is support for enabling use of libcrypto hash routines
+ which are generally well optimized for particular systems.
+
+2013-12-03 Bernhard Voelker <mail@bernhard-voelker.de>
+
+ maint: avoid '%s' quoting notation in diagnostic messages
+ Add a new rule to ensure the use of quote() instead of '%s' or `%s'
+ in format strings of diagnostics messages.
+
+ * cfg.mk (sc_prohibit_quotes_notation): Add rule.
+ * TODO: Remove the entry regarding the '%s' notation.
+ * src/mkfifo.c (main): Remove the offending and in this case even
+ duplicate quoting in the format string of the error diagnostic.
+ * src/mknod.c (main): Likewise.
+ * src/df.c (decode_output_arg): Change two invocations of error()
+ according to the above new rule.
+ * src/numfmt.c: Fix numerous wrong quote notations to fit the above
+ new rule, mostly in internal debugging diagnostic messages.
+
+2013-12-03 Pádraig Brady <P@draigBrady.com>
+
+ doc: remove obsolete info on terminal alignment bugs
+ * doc/coreutils.texi (ls invocation): Remove the note about
+ OSX terminals not aligning properly as this is no longer the case.
+ Tested by: Philipp Thomas
+
+2013-11-29 Pádraig Brady <P@draigBrady.com>
+
+ build: fix potential factor build failure on arm and powerpc
+ * src/longlong.h: Sync with the latest longlong.h from libgmp to:
+ - avoid arm asm when being compiled for the thumb instruction [sub]set
+ - avoid old powerpc assembly that is incompatible with newer GCC
+ - add arm64 optimized count_trailing_zeros()
+ - add sparc64 optimized add_ssaaaa() and umul_ppmm()
+
+2013-11-29 Bernhard Voelker <mail@bernhard-voelker.de>
+
+ tests: add a test for rm -r "/"
+ * tests/rm/r-root.sh: Add a non-root test.
+ * tests/local.mk (all_tests): Mention the test.
+
+2013-11-29 Bernhard Voelker <mail@bernhard-voelker.de>
+
+ maint: remove various FIXME comments
+ * src/extent-scan.c (extent_need_sync): Remove the FIXME comment about
+ removing the work around. As discussed in [1], the needed FIEMAP fix
+ never made it into the Linux kernel.
+
+ * src/realpath.c (longopts): Remove the FIXME comment about deprecating
+ the --strip option as it's a valid alias for --no-symlinks option.
+ Also discussed in [1].
+
+ [1] http://lists.gnu.org/archive/html/coreutils/2013-11/msg00103.html
+
+2013-11-29 Bernhard Voelker <mail@bernhard-voelker.de>
+
+ df: remove long-obsolescent --megabytes option
+ This option has been undocumented for 12 years [1], and warned
+ about for a year [2].
+
+ [1] commit FILEUTILS-4_1_4-23-gd177203
+ [2] commit v8.17-43-g453ce92
+
+ * src/df.c (MEGABYTES_OPTION): Remove.
+ (long_options): Remove "megabytes" element.
+ (main): In the option parsing loop, remove the MEGABYTES_OPTION case.
+ * NEWS: Mention the change.
+
+2013-11-28 Pádraig Brady <P@draigBrady.com>
+
+ build: fix selinux.c build failure on 32 bit
+ * src/selinux.c: Don't include the system "fts.h" as
+ that disallows _FILE_OFFSET_BITS=64 which gnulib auto enables
+ to support large files on 32 bit systems. Instead include
+ our "xfts.h" which includes the less limited gnulib replacement,
+ and also a checked version of xfts_open().
+ (restorecon): Use the checked xfts_open() rather than the standard
+ fts_open().
+ Prompted by the continuous integration build failure at:
+ http://hydra.nixos.org/build/6934169
+
+2013-11-27 Pádraig Brady <P@draigBrady.com>
+
+ build: avoid more selinux build failures
+ Handle both newer selinux libraries with mode_to_security_class(),
+ and systems without selinux at all. We could easily adjust
+ gnulib to provide the necessary stubs for use by this module,
+ but it's more efficient to just stub out the module completely,
+ when not using selinux.
+
+ * src/selinux.h: Define stubs for the two module functions,
+ when SELinux is not available.
+ * src/selinux.c: Exclude all logic in preference for the stubs
+ when selinux isn't used. Also when newer selinux libs are used,
+ don't use our conflicting static version of mode_to_security_class().
+ m4/jm-macros.m4: Check for the system mode_to_security_class().
+
+2013-11-27 Pádraig Brady <P@draigBrady.com>
+
+ build: avoid build failure on non selinux systems
+ * src/selinux.c: This module introduced in commit v8.21-159-gd8e27ab
+ doesn't need to include <selinux/flask.h>. That header file
+ isn't catered for by gnulib, but is not needed as we're not
+ explicitly referencing any class IDs.
+ Prompted by the continuous integration build failure at:
+ http://hydra.nixos.org/build/6920020
+
+2013-11-27 Pádraig Brady <P@draigBrady.com>
+
+ selinux: adjust utils to run restorecon with -Z
+ cp, mv, install, mkdir, mkfifo, mknod are adjusted so that:
+ -Z no longer accepts an argument.
+ -Z or --context without an argument do not warn without SELinux.
+ --context with an argument will warn without SELinux.
+
+ * src/local.mk: Reference the new selinux module where required.
+ * src/system.h: Make the argument to --context optional.
+ * src/mkdir.c: Likewise. Also handle the SMACK case for --context.
+ Note we currently silently ignore -Z with SMACK.
+ * src/mkfifo.c: Likewise.
+ * src/mknod.c: Likewise.
+ * src/install.c: Likewise. Note install(1) by default already
+ set the context for target files to their system default,
+ albeit with an older method. Use the -Z option to select between
+ the old and new context restoration behavior, and document
+ the differences and details for how context restoration
+ is done in new and old methods, with a view disabling the
+ old method entirely in future.
+ * src/cp.c: Make the argument to --context optional.
+ Note -Z implies --no-preserve=context. I.E. -Z overrides
+ that aspect of -a no matter what order specified.
+ (struct cp_options): Document the context handling options.
+ (main): Check/adjust option combinations after all
+ options are processed, to both simplify processing
+ and to make handling independent of order of options
+ on the command line. Also improve the diagnostics
+ from a failed call to setfscreatecon().
+ (set_process_security_ctx): A new function,
+ refactored to set the default context from the source file,
+ or with the type adjusted as per the system default for
+ the destination path.
+ (set_file_security_ctx): A new function refactored to
+ set the security context of an existing file, either based on
+ the process context or the default system context for a path.
+ (copy_internal): Use the refactored functions to simplify
+ error handling and consistently fail or warn as needed.
+ (copy_reg): Likewise.
+ (copy_internal): With --preserve=context, also copy
+ context from non regular files. Note for directories this may
+ impact the copying of subsequent files to that directory?
+ (copy_attr): If we're handling SELinux explicitly,
+ then exclude to avoid the redudant copy with --preserve=context,
+ and the problematic copy with -Z. Note SELinux attribute exclusion
+ also now honors cp -a --no-preserve=context. Note there was a
+ very small window over 10 years ago, where attr_copy_file was
+ available, while attr_copy_check_permissions was not, so we
+ don't bother adding an explicit m4 check for the latter function.
+ * src/mv.c: Support --context, but don't allow specifying an argument.
+ * src/chcon.c: Adjust a comment to be specific to SELinux.
+ * src/runcon.c: Likewise.
+ * src/copy.c: Honor the context settings to "restorecon" as appropriate.
+ * src/copy.h: Add a new setting to select "restorecon" functionality.
+ * tests/mkdir/selinux.sh: s/-Z/--context=/
+ * tests/cp/cp-a-selinux.sh: Augment this test with cases
+ testing basic -Z functionality, and also test the various
+ invalid option combinations and option precedence.
+ * tests/mkdir/restorecon.sh: Add a new test for the
+ more involved mkdir -Z handling, since the directory changing
+ and non existent directories need to be specially handled.
+ Also check the similar but simpler handling of -Z by mk{nod,fifo}.
+ * tests/local.mk: Reference the new test.
+ * doc/coreutils.texi (cp invocation): Update as per interface changes.
+ (mv invocation): Likewise.
+ (install invocation): Likewise.
+ (mkfifo invocation): Likewise.
+ (mknod invocation): Likewise.
+ (mkdir invocation): Likewise.
+ * NEWS: Mention the new feature and change in behavior.
+
+2013-11-27 Daniel J Walsh <dwalsh@redhat.com>
+
+ selinux: a new module implementing "restorecon" functionality
+ * src/selinux.c: A new module implementing "restorecon" functionality.
+ There are two main functions to adjust the type of the referenced
+ file system item. defaultcon() will setup the process context so
+ that new items will have the required context without races. This is
+ the preferred method. For existing files, the equivalent restorecon()
+ is available which has two modes. With the "local" parameter set to
+ false, restorecon() will adjust the type according to the system
+ configuration for that file, and set to true will update the context
+ as per the context for the current process (disregarding type).
+ * src/selinux.h: Likewise.
+ * po/POTFILES.in: Reference the new module.
+
+2013-11-27 Pádraig Brady <P@draigBrady.com>
+
+ shred: provide --remove methods to avoid excessive syncing
+ A sync operation is very often expensive. For illustration
+ I timed the following python script which indicated that
+ each ext4 dir sync was taking about 2ms and 12ms, on an
+ SSD and traditional disk respectively.
+
+ import os
+ d=os.open(".", os.O_DIRECTORY|os.O_RDONLY)
+ for i in range(1000):
+ os.fdatasync(d)
+
+ So syncing for each character for each file can result
+ in significant delays. Often this overhead is redundant,
+ as only the data is sensitive and not the file name.
+ Even if the names are sensitive, your file system may
+ employ synchronous metadata updates, which also makes
+ explicit syncing redundant.
+
+ * tests/misc/shred-remove.sh: Ensure all the new parameters
+ actually unlink the file.
+ * doc/coreutils.texi (shred invocation): Describe the new
+ parameters to the --remove option.
+ * src/shred.c (Usage): Likewise.
+ (main): Parse the new options.
+ (wipename): Inspect the new enum to see which of
+ the now optional tasks to perform.
+ * NEWS: Mention the new feature.
+ * THANKS.in: Add reporter Joseph D. Wagner
+
+2013-11-27 Pádraig Brady <P@draigBrady.com>
+
+ tail: improve inotify handling of symlinks
+ Previous behavior failed to read contents of a (re)appearing file,
+ when symlinked by tail's watched file. Also we now diagnose other
+ edge cases when running in inotify mode, where an initially
+ missing or regular file changes to a symlink.
+
+ * src/tail.c (main): If any arg is a symlink, use polling mode.
+ (recheck): Diagnose the edge case where a symlink appears during
+ inotify processing.
+ * tests/tail-2/symlink.sh: Test the fix. Mention the edge cases.
+ * tests/local.mk: Reference the new test.
+ * NEWS: Mention the fix.
+ Reported by: Ondrej Oprala
+
+2013-11-27 Pádraig Brady <P@draigBrady.com>
+
+ df: add --output=file to directly output specified arguments
+ * src/df.c (usage): Document the new 'file' --output field.
+ (get_dev): Add a new parameter to pass the specified
+ argument from the command line through. Use '-' if a
+ command line parameter is not being used.
+ * doc/coreutils.texi (df invocation): Describe the new 'file' field.
+ * tests/df/df-output.sh: Adjust all fields test, and
+ add a specific test for --output=file.
+ * NEWS: Mention the new feature.
+
+ timeout: avoid unlikely issues with --kill-after
+ * src/timeout.c (cleanup): When calling settimeout() from
+ this signal handler, ensure we don't call out to error()
+ or gettext(), which are not async-signal-safe.
+ Also reset the errno which may be cleared by settimeout().
+
+ tests: ensure factor tests can be regenerated
+ * tests/local.mk (factor-tests:) Add -f to the mv command that
+ replaces any existing generated tests. This is required to avoid
+ prompts when root initially generates the tests, and they subsequently
+ need to be regenerated by a non root user.
+
+ sort: avoid issues when issuing diagnostics from child processes
+ * src/sort.c: (async_safe_die): A new limited version of error(),
+ that outputs fixed strings and unconverted errnos to stderr.
+ This is safe to call in the limited context of a signal handler,
+ or in this particular case, between the fork() and exec() of
+ a multithreaded process.
+ (move_fd_or_die): Use the async_safe_die() rather than error().
+ (maybe_create_temp): Likewise.
+ (open_temp): Likewise.
+ Fixes http://bugs.gnu.org/15970
+
+2013-11-26 Pádraig Brady <P@draigBrady.com>
+
+ doc: clarify the operation of ls -k
+ * src/ls.c (usage): Mention -k only changes the display
+ for disk usage (directory total, and ls -s), and imply
+ that it can be overridden (by --block-size, and -h).
+ * doc/coreutils.texi (block size): Mention that ls -k
+ handling is different to other utilities.
+ Addresses http://bugs.gnu.org/14525
+
+2013-11-23 John <da_audiophile@yahoo.com>
+
+ dircolors: add a new entry to colorize 'lz4' files
+ * src/dircolors.hin: Add entry for the speed optimized 'lz4' compressor.
+
+2013-11-22 Bernhard Voelker <mail@bernhard-voelker.de>
+
+ tests: enhance rm test regarding "." and ".."
+ Recent commit 2da7009d changed the error diagnostic of rm(1) trying
+ to remove "." or "..". Enhance the corresponding test.
+
+ * tests/rm/r-4.sh: Ensure rm(1) outputs the expected error diagnostic.
+
+2013-11-21 Bernhard Voelker <mail@bernhard-voelker.de>
+
+ maint: avoid perl warning in sc_check-AUTHORS
+ With newer perl, "make syntax-check" issues many warnings like:
+ -i used with no filenames on the command line, reading from STDIN.
+
+ * cfg.mk (sc_check-AUTHORS): Remove the -i flag in the perl
+ invocation as it is reading from a pipe.
+
+2013-11-21 Bernhard Voelker <mail@bernhard-voelker.de>
+
+ doc: enhance diagnostic when rm skips "." or ".." arguments
+ The error diagnostic
+ "rm: cannot remove directory: '.'"
+ does not give the user a hint for the reason.
+ Issue a clearer error message.
+
+ * src/remove.c (rm_fts): Enhance the error diagnostic in the above
+ case to emphasize that skipping is done deliberately.
+ In the corresponding comment, mention that POSIX mandates this
+ behavior. Likewise in the subsequent comment for skipping "/".
+ * doc/coreutils.texi (rm invocation): In the paragraph describing
+ the above behavior, mention that POSIX mandates it.
+
+2013-11-18 Pádraig Brady <P@draigBrady.com>
+
+ tests: fix false rm -I test failure when run as root
+ Fix a recent regression introduced in commit v8.21-127-g5ee7d8f
+
+ Also related to this is the recent query about root run `rm -I`
+ ignoring the mode bits of a file: https://bugzilla.redhat.com/1013171
+
+ * tests/rm/interactive-once.sh: Avoid the messages and
+ corresponding file presence checks with write protected files
+ when running as root.
+
+2013-11-17 Colin Leitner <colin.leitner@googlemail.com>
+
+ stty: add support for mark/space parity
+ This adds support for using a constant or "stick" parity bit.
+
+ * src/stty.c (usage): Mention the new flag.
+ * tests/misc/stty.sh: Adjust for the new flag.
+ * NEWS: Mention the improvement.
+ * docs/coreutils.texi (stty invocation): Mention the new flag.
+
+2013-11-11 Pádraig Brady <P@draigBrady.com>
+
+ base64: improve encoding I/O efficiency
+ Since the I/O overhead is significant to the relatively
+ simple processing done by this utility, use fputs() rather
+ than fputc() to output '\n'.
+ Time to process a 100MiB file was measured to
+ decrease from 0.417s to 0.383s, i.e. an 8% improvement.
+
+ Related to these changes, is a processing improvement in
+ gnulib, which increases throughput by 60% when processing
+ full buffers, which improves processing of a 100MiB file
+ with standard wrapped output, down to 0.256s.
+ http://git.sv.gnu.org/gitweb/?p=gnulib.git;a=commit;h=43fd1e7b
+
+ Also increase the encoding buffer size from 3 to 30KiB.
+ This was seen to give a further 8% improvement, taking
+ processing time down to 0.235s in the wrapped output case.
+ The decoding size buffer is not adjusted,
+ due to the noted caveat with --ignore-garbage.
+
+ * src/base64.c (BLOCKSIZE): Split into ENC_ and DEC_ variants,
+ with the former increased from 3KiB to 30KiB.
+ (wrap_write): Use the simpler fputc() rather than fputs()
+ to output the '\n' character. Also check against EOF
+ rather than < 0 for errors.
+ (do_encode): Likewise.
+ * NEWS: Mention the large increase in performance, which
+ with the I/O improvements in coreutils and the processing
+ improvement in gnulib, amount to about a 60% throughput increase.
+
+2013-11-08 Pádraig Brady <P@draigBrady.com>
+
+ shred: avoid data write pass with --size=0
+ * src/shred.c (dopass): Exit early to avoid redundant heap
+ allocation, and more importantly avoiding a file sync
+ when we're writting no data, as this can have side effects.
+ Also with --verbose, this avoids printing of "pass status"
+ which could be confusing as to whether data was actually written.
+ * tests/misc/shred-passes.sh: Ensure the status for data
+ passes are not written when not doing any data writes.
+
+ shred: increase I/O block size for periodic pattern case
+ * src/shred.c (dopass): In the periodic pattern case increase the
+ I/O block size from 12KiB to 60KiB (also a multiple of 3 and 4096).
+ * NEWS: Adjust accordingly.
+
+2013-11-08 Pádraig Brady <P@draigBrady.com>
+
+ shred: fix direct I/O failures for last write to file
+ Since direct I/O is now enabled with commit v8.21-139-gebaf961
+ we must handle the case where we write an odd size at the
+ end of a file (with --exact), or we specify an odd --size that
+ is larger than 64KiB, or in the very unlikely case of a device
+ with an odd size. This issue was present since direct I/O
+ support was first added in v5.3.0, but latent since v6.0.
+ Theoretically this could have also been an issue after that on
+ systems which didn't have alignment constraints, but did have
+ size constraints for direct I/O.
+
+ * src/shred.c (dopass): On the first pass for a file, always
+ retry a write that fails with EINVAL, so we handle direct I/O
+ failure at either the start or end of the file. Adjust the comment
+ as the original case is out of date and implicitly handled
+ by this more general fix.
+ * tests/misc/shred-exact.sh: Add a test case.
+ * NEWS: Add a "bug fix" entry for shred since there are
+ two related issues now fixed.
+
+2013-11-07 Gian Piero Carrubba <gpiero@rm-rf.it>
+ Bernhard Voelker <mail@bernhard-voelker.de>
+
+ cp: fix --link regarding the dereferencing of symbolic links
+ * src/copy.c (create_hard_link): Add a bool 'dereference' parameter,
+ and pass AT_SYMLINK_FOLLOW as 'flags' to linkat() when dereference
+ is true.
+ (should_dereference): Add new 'bool' function to determine if a
+ file should be dereferenced or not.
+ (copy_internal): Use the above new should_dereference() and remember
+ its return value in a new local bool 'dereference' variable. Use that
+ in all three calls to create_hard_link().
+ * src/cp.c (main): after parsing the options, if x.dereference is
+ still DEFEF_UNDEFINED and the x.recursive is true, then only set
+ x.dereference to DEREF_NEVER iff --link was not specified.
+ * doc/coreutils.texi (cp invocation): Mention that cp(1) does not
+ follow symbolic links in the source when --link is specified.
+ Likewise in the description of the -R option when used together with
+ that option.
+ * tests/cp/same-file.sh: Adapt the expected results for the -fl,
+ the -bl and the -bfl tests.
+ * tests/cp/link-deref.sh: Add a new test.
+ * tests/local.mk (all_tests): Reference the above new test.
+ * NEWS (Changes in behavior): Mention the change.
+
+ This fixes http://bugs.gnu.org/15173
+
+2013-11-06 Pádraig Brady <P@draigBrady.com>
+
+ shred: write larger chunks when possible
+ * src/shred.c (dopass): When not needing to write periodic patterns,
+ use a 64KiB block size to reduce the number of write system calls.
+
+2013-11-05 Pádraig Brady <P@draigBrady.com>
+
+ shred: enable direct I/O when possible
+ Commit v5.92-1057-g43d487b introduced a regression
+ in coreutils 6.0 where it removed the page alignment
+ of the buffer to write, thus disabling direct I/O.
+ We want to use direct I/O when possible to avoid
+ impacting the page cache at least, as we know we don't
+ want to cache the data we're writing.
+
+ * src/shred.c (dopass): Allocate the buffer on the heap,
+ while using a more general calculation to allow to have
+ the output size independent from the fillpattern() size
+ constraint of a multiple of 3. Also we dispense with the
+ union as it's no longer needed given we're aligning on
+ a page boundary and thus don't need to explicitly handle
+ uint32_t alignment.
+
+2013-11-01 Pádraig Brady <P@draigBrady.com>
+
+ md5sum, sha*sum: improve help for --check related options
+ * src/md5sum.c (usage): s/three/four/ in the message pertaining
+ to the --check related options. Also clarify that --strict
+ is just significant for the formatting of the checksum lines.
+ Also since we're changing both strings, move the --strict description
+ in with the description of the other options and order alphabetically.
+ * THANKS.in: Added reporter: Daniel Mach
+
+ maint: simplify printing of md5sum file names
+ * src/md5sum.c (main): Add a comment as to why we continue
+ to escape names that do not have '\n' but do have '\\' chars.
+ (print_filename): Use the predetermined boolean to decide
+ whether to escape or not, so that in the common case we
+ can output the file name directly, rather than inspecting each char.
+ * tests/misc/md5sum.pl: Add case to show '\\' chars cause escaping.
+ * tests/misc/sha1sum.pl: Likewise.
+
+2013-11-01 Bernhard Voelker <mail@bernhard-voelker.de>
+
+ build: fix dependencies of man/sha*sum.1
+ Although the above man pages depend on src/md5sum.c as a shared
+ source, the build of the man pages directly requires their own
+ executables to exist.
+
+ * man/local.mk (man/sha1sum.1): Change the dependency from
+ 'src/md5sum' to 'src/sha1sum'.
+ (man/sha224sum.1): s/md5sum/sha224sum/
+ (man/sha256sum.1): s/md5sum/sha256sum/
+ (man/sha384sum.1): s/md5sum/sha384sum/
+ (man/sha512sum.1): s/md5sum/sha512sum/
+
+ Reported by Pádraig Brady in
+ http://lists.gnu.org/archive/html/coreutils/2013-11/msg00006.html
+
+2013-10-15 Mike Frysinger <vapier@gentoo.org>
+
+ dircolors: add putty-256color terminal type
+ * src/dircolors.hin: Add putty-256color
+ Reported-by: Thomas D. <whissi@whissi.de>, via
+ http://bugs.gentoo.org/486786
+ Fixes http://bugs.gnu.org/15624
+
+2013-10-15 Pádraig Brady <P@draigBrady.com>
+
+ maint: update the instructions for building prerequisites
+ * README-prereq: Update as per the latest required versions
+ in bootstrap.conf. Also add a missing cd command.
+ Reported by Aaron Davies
+ Fixes http://bugs.gnu.org/15612
+
+2013-10-11 Ondřej Vašík <ovasik@redhat.com>
+
+ cp: correct error message for invalid arguments of '--no-preserve'
+ * src/cp.c (decode_preserve_arg):
+ Correct error message for invalid arguments of '--no-preserve'.
+ Reported by M.Vadkerti in http://bugzilla.redhat.com/1018206
+ Fixes http://bugs.gnu.org/15588
+
+2013-10-10 Pádraig Brady <P@draigBrady.com>
+
+ doc: clarify the example for cp --preserve=links
+ * doc/coreutils.texi (cp invocation): Give more detail about what's
+ happening in the example, explicitly calling out the --no-dereference
+ option required to make the -H and -L options significant.
+ Also mention the option order significance of the -H and -L options.
+ Fixes http://bugs.gnu.org/15579
+
+2013-10-07 Pádraig Brady <P@draigBrady.com>
+
+ mktemp: fix incorrect exit status from previous commit
+ * src/mktemp.c (main): Use an exit() strategy consistent with the
+ previous clauses dealing with optional error messages to ensure
+ we exit with the correct status in all cases.
+ Prompted by the continuous integration build failure at:
+ http://hydra.nixos.org/build/6412979
+
+2013-10-06 Pádraig Brady <P@draigBrady.com>
+
+ mktemp: with --quiet, only suppress I/O errors
+ The reason for having a --quiet option is to
+ suppress only some subset of possible errors.
+ The most useful separation here is with usage/internal errors,
+ and errors due to file creation etc. (i.e. I/O errors).
+
+ * src/mktemp.c (main): Match the --help and info docs and
+ only suppress the file/dir creation error messages.
+ * tests/misc/mktemp.pl: Adjust accordingly.
+
+2013-10-06 Pádraig Brady <P@draigBrady.com>
+
+ mktemp: synchronize the -p option with docs
+ * src/mktemp.c (usage): Synchronize the -p option description with
+ the logic and info docs. I.E. that -p is just an alias of --tmpdir.
+ Also for consistency treat --tmpdir='' the same with or without -t.
+ I.E. always ignore the --tmpdir option if the param is empty.
+ Fixes http://bugs.gnu.org/15425
+
+2013-10-06 Karl Berry <karl@freefriends.org>
+
+ doc: expand the texinfo examples for the paste command
+ * doc/coreutils.texi (paste invocation): Move the synopsis to the top.
+ Provide examples for the different type of operations possible.
+ Add a specific common example to join consecutive lines with a space.
+
+2013-09-26 Sergio Durigan Junior <sergiodj@sergiodj.net>
+
+ rm: with -I, prompt before deleting a write protected file
+ This regression was introduced in commit v6.7-71-g0928c24
+
+ * src/rm.c (main): Make the -I option behave like --interactive=once.
+ * tests/rm/interactive-once.sh: Add cases for single and multiple files.
+ * NEWS: Mention the bug fix.
+ Fixes http://bugs.gnu.org/9308
+
+2013-09-22 Pádraig Brady <P@draigBrady.com>
+
+ maint: move all id(1) tests to the same directory
+ * tests/misc/id-context.sh -> tests/id/context.sh
+ * tests/misc/id-setgid.sh -> tests/id/setgid.sh
+ * tests/misc/id-uid.sh -> tests/id/uid.sh
+ * tests/misc/id-zero.sh -> tests/id/zero.sh
+ * tests/local.mk: Reference the renamed tests
+
+ tests: parameterize the "root" username
+ * tests/misc/chroot-credentials.sh: Don't assume uid 0
+ has the "root" name, nor any name for that matter.
+
+ maint: remove unused parameters to parse_user_spec()
+ * src/chown.c (main): Since "name" parameters to parse_user_spec()
+ are now optional, just pass NULL for those unused parameters.
+ * src/chroot.c (main): Likewise.
+
+ id: support specifying the user by user ID
+ * src/id.c (usage): Remove 'name' from the synopsis,
+ implying that one can also specify by user ID.
+ (main): Like chown(1), call parse_user_spec() to implement
+ user name or ID lookup with appropriate precedence.
+ * doc/coreutils.texi (id invocation): Mention that
+ a user ID is supported and how '+' affects lookup order.
+ * tests/misc/id-groups.sh: Remove test now subsumed into...
+ * tests/misc/id-uid.sh: New test covering new interface.
+ * tests/local.mk: Rename the test.
+ * NEWS: Mention the new feature.
+ Addresses http://bugs.gnu.org/15421
+
+2013-09-22 Pádraig Brady <P@draigBrady.com>
+
+ build: update gnulib submodule to latest; also bootstrap to latest
+ Notes tests/init.sh is still in sync with gnulib.
+
+ * bootstrap: Update to latest.
+ * gnulib: Sync many fixes/changes, including:
+ a fix for http://bugs.gnu.org/15066
+ and preparation for http://bugs.gnu.org/15421
+
+2013-09-22 Pádraig Brady <P@draigBrady.com>
+
+ tests: avoid a failure when there isn't a name for all user IDs
+ * tests/misc/id-zero.sh: Don't check exit status when in -n mode.
+
+ Prompted by the continuous integration build failure at:
+ http://hydra.nixos.org/build/6196762
+
+2013-09-21 Bernhard Voelker <mail@bernhard-voelker.de>
+
+ id: add -z, --zero option
+ * src/group-list.h (print_group_list): Add a parameter for the
+ delimiter of type char.
+ * src/group-list.c (print_group_list): Likewise, and use it instead
+ of a white space character to delimit the group entries.
+ * src/groups.c (main): Pass white space character to print_group_list().
+ * src/id.c (longopts): Add array element for the new long option.
+ (usage): Document the new option. While at it, fix the alignment
+ of the descriptions to match that of HELP_OPTION_DESCRIPTION.
+ (main): Define the bool flag opt_zero indicating the use of the
+ new option. In the getopt_long loop, handle it.
+ Output an error diagnostic in the case the --zero option has been
+ specified together with the default format.
+ In the case of -gG, pass either a NUL or a white space character to
+ print_group_list() - depending on the above new flag.
+ Likewise change the printing of the final newline character: output
+ a NUL instead if the --zero option has been specified.
+ * doc/coreutils.texi (id invocation): Document the new option.
+ While at it, move the @exitstatus macro down after the macro
+ @primaryAndSupplementaryGroups in order to be consistent with
+ other texinfo documents.
+ (groups invocation): Move @exitstatus down after the macro
+ @primaryAndSupplementaryGroups here, too.
+ * tests/misc/id-zero.sh: Add new test exercising the new option.
+ * tests/local.mk (all_tests): Reference it.
+ * NEWS (New features): Mention the new option.
+ Fixes http://bugs.gnu.org/9987
+
+2013-09-12 Bernhard Voelker <mail@bernhard-voelker.de>
+
+ maint: avoid patching help2man
+ Commit cde1ea0e separated the coreutils-specific patches from help2man.
+ Most changes had been made to accommodate to the coreutils style guide,
+ i.e., to avoid syntax-check failures like sc_long_lines.
+ Yet 2 changes had to be put into the patch help2man.diff.
+ But this added the dependency to patch(1) in distribution builds.
+ Incidentally, the 2 remaining parts of the patch can easily be
+ done outside of help2man. Therefore, this commit partly reverts
+ the recent separation of help2man into 'help2man.in' and
+ 'help2man.diff', and instead uses the original help2man script.
+
+ * man/help2man.in: Rename to ...
+ * man/help2man: ... this file.
+ * man/help2man.diff: Remove.
+ * man/local.mk (mandeps): Remove man/help2man.
+ (man/help2man): Remove recipe.
+ (.x.1): Add the --info-page option when calling help2man in order
+ to change the name of the texinfo manual from the default, "info PRG",
+ to "info coreutils 'PRG invocation'".
+ Furthermore, use an sed pattern to remove the sentence starting
+ with "For complete documentation".
+ * .gitignore (/man/help2man): Remove entry.
+ * .x-update-copyright: Replace the entries for the files
+ 'man/help2man.diff' and 'man/help2man.in' by 'man/help2man'.
+ * cfg.mk (sc_long_lines): Instead of 'man/help2man.in', exempt
+ 'man/help2man' from this test.
+ (sc_po_check): Likewise.
+ (sc_space_tab): Instead of 'man/help2man.diff', exempt 'man/help2man'
+ from this test.
+ (sc_trailing_blank): Likewise.
+ (sc_prohibit_tab_based_indentation): Instead of 'man/help2man.in' and
+ 'man/help2man.diff', exempt 'man/help2man'.
+ * man/dummy-man: Recognize the option --info-page=... as no-op.
+
+2013-09-12 Bernhard Voelker <mail@bernhard-voelker.de>
+
+ maint: use help2man configured with --disable-nls
+ Prompted by the continuous integration build failure at:
+ http://hydra.nixos.org/build/6038769
+
+ The previously committed 'help2man' requires a Perl module
+ which does not seem to be installed everywhere - and which
+ is not needed for our purposes:
+
+ Can't locate Locale/gettext.pm in @INC
+ BEGIN failed--compilation aborted at ./man/help2man line 28.
+
+ This module was pulled in automatically by the default configure call.
+ Use the NLS-disabled version instead.
+
+ * man/help2man.in: Use help2man configured with the --disable-nls
+ option to avoid the dependency to the above Perl module.
+ * man/help2man.diff: Adapt the line numbers of the hunks in the
+ coreutils-specific patch for help2man to apply without fuzz.
+
+ Reported by Pádraig Brady.
+
+2013-09-10 Pádraig Brady <P@draigBrady.com>
+
+ build: fix corrupted patch causing bootstrap failures
+ The patch was corrupted in commit v8.21-50-g7b65f8e
+
+ * gl/modules/tempname.diff: Fix the offsets so that the patch
+ applies cleanly. Note that this was only apparent with patch < 2.6.
+ With patch >= 2.6, patch will not indicate an error applying
+ the second hunk of the patch and silently ignore it.
+ I double checked that all patches now apply cleanly by adjusting
+ gnulib-tool to run patch with --fuzz=0 which might be advisable
+ going forward, even on a per project basis.
+ The silent ignoring of hunks by newer patch(1) has been reported.
+ Fixes http://bugs.gnu.org/15255
+
+2013-09-09 Bernhard Voelker <mail@bernhard-voelker.de>
+
+ maint: update help2man to 1.43.3
+ Instead of diverging further from the upstream GNU help2man project
+ (http://www.gnu.org/software/help2man/), hold a copy of the original
+ script and keep track of our changes in a separate patch file.
+
+ The man pages created with the new version show the following,
+ non-invasive differences:
+ a) command options in the EXAMPLE sections are no longer in bold format,
+ b) file names are underlined now consistently.
+
+ * man/help2man: Rename to ...
+ * man/help2man.in: ... this file, and update content from the
+ upstream GNU help2man project.
+ * man/help2man.diff: Add patch file for help2man to remove the
+ sentence "For complete documentation ..." (see commit 5d4f09d8),
+ and to emit "info coreutils 'PROG invocation'" into the man
+ pages (77abf69a).
+ * man/local.mk (mandeps): Add help2man to the dependencies of
+ the man pages.
+ (man/help2man): Add rule to generate this script from the upstream
+ help2man.in file and the help2man.diff patch.
+ * .gitignore: Add man/help2man as it is no longer version controlled.
+ * cfg.mk (sc_long_lines): Exempt help2man.in from this check.
+ (sc_po_check): Likewise.
+ (sc_space_tab): Likewise.
+ (sc_trailing_blank): Exempt man/help2man.diff from this check.
+ (sc_prohibit_tab_based_indentation): Instead of help2man, now exempt
+ both help2man.in and help2man.diff from this test.
+ * .x-update-copyright: Add new file and add the above new help2man
+ files as well as the COPYING file.
+
+2013-09-05 FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
+
+ ls: fix possible incorrect exit status when recursing directories
+ If there is an error reading a directory that was referenced
+ through recursion, rather than directly on the command line,
+ then exit with the "less serious" exit code, rather than the
+ "serious" exit code reserved for command line arguments.
+ This issue was introduced in commit v5.2.1-1908-gb58dea5
+
+ * src/ls.c (print_dir): Ensure that the command_line_arg param
+ is false for directories being recursed into.
+ * NEWS: Mention the bug fix.
+ Fixes http://bugs.gnu.org/15249
+
+2013-09-01 Pádraig Brady <P@draigBrady.com>
+
+ maint: update out of date confusing comments
+ * src/copy.c (copy_internal): Change mention of the removed --reply=no
+ option, to the similar in this context --no-clobber.
+ * src/sort.c: SI and IEC suffixes can now be mixed when --human-numeric.
+
+2013-08-29 Pádraig Brady <P@draigBrady.com>
+
+ df: fix "blocks" translation in header
+ * src/df.c (get_header): Get the translation of "blocks" here,
+ rather than just marking the string for translation.
+ Fixes http://bugs.gnu.org/15054
+
+2013-08-10 Bernhard Voelker <mail@bernhard-voelker.de>
+
+ doc: clarify when seq ends
+ * doc/coreutils.texi (seq invocation): Add a sentence clarifying
+ that seq terminates when LAST becomes smaller than the current number
+ plus INCREMENT.
+ * src/seq.c (usage): Likewise.
+ Fixes http://bugs.gnu.org/15068
+
+2013-08-07 Bernhard Voelker <mail@bernhard-voelker.de>
+
+ doc: use more modern file system type examples in df description
+ * doc/coreutils.texi (df invocation): In the example list of common
+ file system types, exchange the entries which are not so common
+ anymore (4.2, ufs, efs, hsfs, pcfs) by far more prominent ones
+ (ext2, ext3, ext4, xfs, btrfs, iso9660, ntfs, fat).
+
+2013-08-07 Filipus Klutiero <chealer@gmail.com>
+
+ doc: fix typo in description of df
+ * doc/coreutils.texi (df invocation): s/pseude/pseudo/
+ * THANKS.in (Filipus Klutiero): Remove entry, now that it will be
+ automatically included in the generated THANKS file.
+ Fixes http://bugs.gnu.org/15041
+
+2013-08-05 Benno Schulenberg <bensberg@justemail.net>
+
+ doc: more semicolons instead of periods in option descriptions
+ Also slightly rephrase some descriptions for extra clarity, and
+ add more consistent indentation.
+
+ * src/df.c (usage): Semicolon, no final period.
+ * src/du.c (usage): Likewise, plus indentation and clarifying words.
+ * src/ls.c (usage): Semicolon, rephrasings, added parentheses for
+ clarity, indentation.
+ * src/rm.c (usage): Semicolons.
+ * src/tail.c (usage): Adjust -f description to prefer explanatory
+ language instead of option syntax.
+
+2013-08-03 Pádraig Brady <P@draigBrady.com>
+
+ doc: clarify that uniq -d outputs a single entry per group
+ * src/uniq.c (usage): Clarify the -d option.
+ Fixes http://bugs.gnu.org/14996
+
+2013-08-02 Bernhard Voelker <mail@bernhard-voelker.de>
+
+ maint: update copyright year number ranges of numfmt sources
+ Run "make update-copyright".
+
+ * src/numfmt.c: Update copyright year number range. This file has
+ obviously been added to coreutils after and without the annual update.
+ * tests/misc/numfmt.pl: Likewise.
+
+2013-08-01 Benno Schulenberg <bensberg@justemail.net>
+
+ doc: use semicolon instead of period in option descriptions
+ Also do not end option descriptions with a period, properly indent
+ continuation lines, and make some tiny clarifications.
+
+ * src/du.c (usage): Lowercase after semicolon.
+ * src/ls.c (usage): Semicolons instead of periods, small rephrasing
+ and two hyphens for clarity, proper indentation.
+ * src/mktemp.c (usage): Semicolons and lowercase.
+ * src/od.c (usage): Semicolons.
+ * src/ptx.c (usage): Use the standard phrase, clarify default option.
+ * src/setuidgid.c (usage): Properly indent continuation line.
+ * src/split.c (usage): Semicolons, lowercase, no final period.
+ * src/stat.c (usage): Semicolons, lowercase.
+ * src/tail.c (usage): Proper indentation, one shorter rephrasing,
+ semicolons, no final periods.
+ * src/timeout.c (usage): Properly indent, semicolons, no final periods.
+ Fixes http://bugs.gnu.org/14976
+
+2013-08-01 Pádraig Brady <P@draigBrady.com>
+
+ doc: clarify that cp by default doesn't adjust existing file perms
+ * doc/coreutils.texi (cp invocation): Mention explicitly what
+ happens to permissions of existing files when -p is not specified.
+ Fixes http://bugs.gnu.org/14972
+
+2013-07-29 Bernhard Voelker <mail@bernhard-voelker.de>
+
+ tests: fix another test failure in test/du/inodes.sh
+ Prompted by the continuous integration build failure at:
+ http://hydra.nixos.org/build/5584121
+
+ du(1) uses the first file object of the two test files linked to the
+ same inode, 'd/f' and 'd/h', whatever the system returns first.
+ Use 'd/f' in both the expected and the actual output.
+
+ * test/du/inodes.sh: Change the expected output as described above
+ when returning the --all directory entries (without -l). Also replace
+ the name of the hardlink 'd/h' by 'd/f' in the actual output.
+
+2013-07-28 Paul Eggert <eggert@cs.ucla.edu>
+
+ doc: fix typo
+ * doc/coreutils.texi (du invocation): @itemx -> @item.
+
+2013-07-28 Bernhard Voelker <mail@bernhard-voelker.de>
+
+ maint: cleanup compare calls in test/du/inodes.sh
+ * test/du/inodes.sh: In the cases where compare() fails, that function
+ would show the unified diff automatically. Therefore, remove the
+ excess "cat out".
+ In the cases where expecting an empty file, use compare() again
+ rather than the simpler "test -s" because possible error reports
+ will then include the file's content for the same reason as above.
+
+2013-07-28 Pádraig Brady <P@draigBrady.com>
+
+ maint: avoid clang static analysis issues in csplit
+ * src/csplit.c (find_lines): Assert that load_buffer() updates the
+ global buffers, thus "b" will be non NULL, thus suppressing subsequent
+ NULL pointer derefence warnings.
+ (process_regexp): Avoid a redundant assignment of the "line" pointer.
+ (process_line_count): Likewise. Also reduce the "line" pointer scope.
+
+2013-07-28 Pádraig Brady <P@draigBrady.com>
+
+ tests: fix intermittent failure in test/du/inodes.sh
+ Prompted by the continuous integration build failure at:
+ http://hydra.nixos.org/build/5582213
+
+ * test/du/inodes.sh: Due to undefined order in returned directory
+ entries, the expected output might not match, so sort both expected
+ and actual output when returning --all directory entries.
+ Also use a simpler test for ensuring no errors are output.
+
+2013-07-27 Bernhard Voelker <mail@bernhard-voelker.de>
+
+ du: add --inodes option
+ This new option can be used to find directories with a huge
+ amount of files. The GNU find utility has the printf format
+ "%h" which prints the number of entries in a directory, but
+ this is non-cumulative and doesn't handle hard links.
+
+ * src/du.c (struct duinfo): Add new member for counting inodes.
+ (duinfo_init): Initialize inodes member with Zero.
+ (duinfo_set): Set inodes counter to 1.
+ (duinfo_add): Sum up the 2 given inodes counters.
+ (opt_inodes): Add new boolean flag to remember if the --inodes
+ option has been specified.
+ (INODES_OPTION): Add new enum value to be used ...
+ (long_options): ... here.
+ (usage): Add description of the new option.
+ (print_size): Pass inodes counter or size to print_only_size,
+ depending on the inodes mode.
+ (process_file): Adapt threshold handling: with --inodes, print or
+ elide the entries according to the struct member inodes.
+ (main): Add a case for accepting the new INODES_OPTION.
+ Print a warning diagnostic when --inodes is used together with the
+ option --apparent-size or -b.
+ Reset the output_block_size to 1 ... and thus ignoring the
+ options -m and -k.
+ * tests/du/inodes.sh: Add a new test.
+ * tests/local.mk (all_tests): Mention it.
+ * doc/coreutils.texi (du invocation): Document the new option.
+ * NEWS: Mention the new option.
+
+2013-07-25 Ken Booth <ken@booths.org.uk>
+
+ mv: replace empty directories in cross file system move
+ src/copy.c (copy_internal): Use rmdir() rather than unlink()
+ when the source is a directory, so that empty directories
+ are replaced in the destination as per POSIX.
+ * tests/mv/part-rename.sh: Augment with various combinations.
+ * NEWS: Mention the bug fix.
+ Fixes http://bugs.gnu.org/14763
+
+2013-07-22 Bernhard Voelker <mail@bernhard-voelker.de>
+
+ maint: use new gnulib function to free mount entries in du
+ * src/du.c (fill_mount_table): Use free_mount_entry() instead
+ of freeing struct members manually.
+
+2013-07-22 Bernhard Voelker <mail@bernhard-voelker.de>
+
+ maint: make some shell and perl scripts executable in 'tests/'
+ Some newer test scripts - partially ones from me - are not executable.
+ It does not seem to be a problem, but for consistency and to avoid
+ future problems on unusual platforms or shells change the permissions
+ by adding the executable bit.
+
+ * cfg.mk (sc_tests_executable): Add new syntax-check rule to ensure
+ that all test scripts are executable.
+ * tests/df/df-output.sh: Change file mode from 644 to 755.
+ * tests/du/threshold.sh: Likewise.
+ * tests/factor/run.sh: Likewise.
+ * tests/init.sh: Likewise.
+ * tests/misc/csplit-suppress-matched.pl: Likewise.
+ * tests/misc/numfmt.pl: Likewise.
+ * tests/tail-2/retry.sh: Likewise.
+
+2013-07-19 Rasmus Villemoes <rv@rasmusvillemoes.dk>
+
+ rm: output number of arguments at the interactive prompt
+ Include the number of arguments which rm received in the "Remove all
+ arguments?" prompt. This is useful in the, presumably, common case
+ where the arguments were not provided by hand, but instead were the
+ result of various shell expansions. A simple, if somewhat contrived,
+ example (assuming rm is aliased to rm -I) could be:
+
+ rm * .o
+
+ where the prompt "Remove 120 arguments?" is more likely to make
+ the user catch the problem.
+
+ * src/rm.c (main): Include correctly pluralized n_files
+ in the output message. Also remove the now redudant "all".
+ * tests/rm/interactive-always.sh: Adjust to the new prompt.
+ * tests/rm/interactive-once.sh: Likewise.
+
+2013-07-19 Pádraig Brady <P@draigBrady.com>
+
+ dd: make status=none suppress all diagnostics
+ * src/dd.c (STATUS_NONE): Simplify the enum so that
+ it's more general than just suppressing transfer counts.
+ Then test this in all locations where non fatal diagnostics
+ are output.
+ * tests/dd/misc.sh: Ensure the diagnostic about
+ being unable to skip past the end of input is suppressed.
+ * NEWS: Mention the change in behavior.
+ Fixes http://bugs.gnu.org/14897
+
+2013-07-12 Pádraig Brady <P@draigBrady.com>
+
+ head: avoid redundant allocations when reading empty files
+ * src/head.c (elide_tail_lines_file): For seekable empty files,
+ or seekable files where the current offset is after the
+ end of the file, return immediately. Previously the short
+ circuit code could not be reached due to logic error.
+ Spotted by coverity.
+
+2013-07-12 Pádraig Brady <P@draigBrady.com>
+
+ maint: avoid a valgrind memory leak warning from pinky
+ Similarly to commit v8.21-84-g8d2da3f in src/uptime.c
+ avoid a "definitely lost" error from valgrind. Note this
+ only happens with pinky when compiled without optimization,
+ in which case certain paths aren't eliminated casuing
+ valgrind to trigger the message. Note also that coverity
+ flags this "resource leak" too.
+
+ * src/pinky.c (short_pinky): free utmp_buf for developer builds.
+
+2013-07-11 Anton Ovchinnikov <revolver112@gmail.com>
+
+ df: reduce memory usage when filtering mount entries
+ Avoid Valgrind reports of "definitely lost" items
+ and while at it, free all discarded mount entries
+ to minimize the amount of memory used.
+
+ * src/df.c (filter_mount_list): Use the newly exported
+ free_mount_entry() from gnulib to free all mount entries
+ as they're discarded.
+
+2013-07-11 Pádraig Brady <P@draigBrady.com>
+
+ build: update gnulib submodule to latest
+
+2013-07-11 Pádraig Brady <P@draigBrady.com>
+
+ build: fix a build warning on 32 bit systems in shuf.c
+ Prompted by the continuous integration build failure at:
+ http://hydra.nixos.org/build/5508873
+
+ * src/shuf.c (write_random_numbers): Convert to an int type
+ that matches the prinft format spec.
+
+2013-07-11 Assaf Gordon <assafgordon@gmail.com>
+
+ shuf: add --repetition to support repetition in output
+ main(): Process new option. Replace input_numbers_option_used()
+ with a local variable. Re-organize argument processing.
+ usage(): Describe the new option.
+ (write_random_numbers): A new function to generate a
+ permutation of the specified input range with repetition.
+ (write_random_lines): Likewise for stdin and --echo.
+ (write_permuted_numbers): New function refactored from
+ write_permuted_output().
+ (write_permuted_lines): Likewise.
+ * tests/misc/shuf.sh: Add tests for --repetitions option.
+ * doc/coreutils.texi: Mention --repetitions, add examples.
+ * TODO: Mention an optimization to avoid needing to
+ read all of the input into memory with --repetitions.
+ * NEWS: Mention new shuf option.
+
+ tests: add more tests for shuf option combinations
+ * test/misc/shuf.sh: Add tests for erroneous conditions
+ like multiple '-o' and '--random-source'.
+
+2013-07-11 Pádraig Brady <P@draigBrady.com>
+
+ maint: adjust indentation in df.c
+ * src/df.c: Adjust indentation and spacing with has
+ gotten quite out of line in a couple of places.
+
+2013-07-09 Pádraig Brady <P@draigBrady.com>
+
+ df: fix mount list processing with unstatable mount dirs
+ * src/df.c (filter_mount_list): Initialize devlist->dev_num correctly
+ when unable to stat() a mount point. This will avoid possible invalid
+ deduplication done on the list due to use of uninitialized memory.
+ * tests/df/skip-duplicates.sh: Ensure this code path is exercised.
+ Also refactor the test to be table driven.
+ * NEWS: Mention the bug fix.
+
+2013-07-07 Anton Ovchinnikov <revolver112@gmail.com>
+
+ maint: avoid a valgrind memory leak warning from uptime
+ * src/uptime.c (uptime): Free utmp_buf returned from read_utmp,
+ to avoid a "definitely lost" warning from valgrind.
+
+2013-07-07 Paul Eggert <eggert@cs.ucla.edu>
+
+ build: update gnulib submodule to latest
+
+2013-07-05 Pádraig Brady <P@draigBrady.com>
+
+ tests: fix "shuf unreadable" test to work when run as root
+ * tests/misc/shuf.sh: Restrict the test to the significant
+ case where we can't in fact read the "unreadable" file.
+
+2013-07-02 Pádraig Brady <P@draigBrady.com>
+
+ stat: ensure --context emits an "unrecognized option" diagnostic
+ * src/stat.c (long_options): Remove the "context" option as it's
+ no longer referenced since commit v8.5-65-g13f3237
+
+2013-07-02 Bernhard Voelker <mail@bernhard-voelker.de>
+
+ mkdir,mkfifo,mknod: give scontext-related variable a better scope
+ * src/mkdir.c (main): Move the variable ret and issuing the error
+ message into the body of the scontext-related if-block.
+ * src/mkfifo.c (main): Likewise.
+ * src/mknod.c (main): Likewise.
+
+2013-07-02 Pádraig Brady <P@draigBrady.com>
+
+ maint: refactor SMACK interface to a separate module
+ Consolidate all smack routines and checks in a module.
+ We replace and wrap the most commonly used smack routines,
+ which allows removing ifdefs throughout the code.
+
+ * gl/lib/smack.h: A new header containing the implementation
+ of the wrapped and replacement routines. Note the is_smack_enabled()
+ routine should be optimized out at compile time when compiled
+ on a system without libsmack.
+ * gl/modules/smack: Describe the new module and move the
+ configure time code here from ...
+ * m4/jm-macros.m4: ... here.
+ * bootstrap.conf: Reference the new module.
+ * src/id.c: Use the routines without ifdefs where possible.
+ * src/ls.c: Likewise.
+ * src/mkdir.c: Likewise.
+ * src/mkfifo.c: Likewise.
+ * src/mknod.c: Likewise.
+
+2013-07-02 Pádraig Brady <P@draigBrady.com>
+
+ id: don't show SMACK errors unless -Z is specified
+ * src/id.c (main): Be consistent with the SELinux case,
+ and only show errors in getting the security context
+ when -Z is specified.
+
+2013-07-01 Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
+
+ mkdir,mkfifo,mknod: with -Z, create SMACK security context
+ Enable creation of SMACK security context with -Z command-line switch
+ if SMACK is enabled.
+
+ * mkdir.c (main): Set process security context to given SMACK label.
+ * mkfifo.c (main): Likewise.
+ * mknod.c (main): Likewise.
+ * src/local.mk: link mk{dir, fifo, nod} with libsmack.
+ * NEWS: Mention the new feature.
+
+2013-06-27 D. Hugh Redelmeier <hugh@mimosa.com>
+
+ doc: fix details on the interaction of df with device nodes
+ * man/df.x: Don't say that a dev node is always on the root file system.
+ * doc/coreutils.texi (df invocation): Likewise. Also state that the
+ device node to mounted file system interpretation is only done when
+ passed absolute paths to device nodes.
+
+2013-06-24 Jarkko Sakkinen <jarkko.sakkinen@iki.fi>
+
+ ls: with -Z, show SMACK security context
+ Enable showing of file SMACK security with '-Z' command-line switch
+ if SMACK is enabled. Showing SMACK context of a file does not strictly
+ require SMACK to be enabled but this required to make choice whether to
+ show SELinux or SMACK security context.
+
+ * src/ls.c (getfilecon_cache): Retrieve SMACK context if available.
+ (gobble_file): Handle SMACK context similarly to SELinux context.
+ * src/local.mk: Link lsl with libsmack.
+ * NEWS: Mention the new feature.
+ * .mailmap: Merge the Author's 2 email addresses.
+
+2013-06-22 Pádraig Brady <P@draigBrady.com>
+
+ stdbuf: make it mandatory to specify a buffering option
+ This is consistent with the documented interface and
+ avoids any ambiguity in a user thinking that stdbuf without options
+ might reset to a "standard" buffering setup.
+
+ * src/stdbuf.c (set_libstdbuf_options): Indicate with the return value
+ whether any env variables were actually set.
+ (main): Fail unless some env variables were set.
+ * tests/misc/stdbuf.sh: Ensure this constraint is enforced.
+ * NEWS: Mention the small change in behavior.
+
+2013-06-22 Pádraig Brady <P@draigBrady.com>
+
+ doc: clarify that truncate --size represents bytes by default
+ * src/truncate.c (usage): Mention that --size is in bytes which
+ is by far the most common usage.
+ * doc/coreutils.texi (truncate invocation): Likewise. Also cross
+ reference the --io-blocks option.
+ Reported in http://bugs.gnu.org/14686
+
+2013-06-20 Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
+
+ id: adjust/restrict smack support to newer versions of libsmack
+ There was slight change to libsmack such that positive values are
+ reserved for returning length of the label for smack_new_label_from_*
+ functions.
+
+ * m4/jm-macros.m4: Set HAVE_SMACK when both smack_new_label_from_self()
+ and recently added smack_new_label_from_path() are present.
+ The latter's presence indicates the newer API of the former.
+ * src/id.c (main): Check that smack_new_label_from_self() < 0,
+ and not just non-zero.
+
+2013-06-18 Pádraig Brady <P@draigBrady.com>
+
+ tests: use appropriate precision when printing float limits
+ * src/getlimits.c (print_float): Adjust to use the ftoastr module,
+ which uses the appropriate precision so that no info is lost.
+ * cfg.mk (sc_prohibit_continued_string_alpha_in_column_1): Exclude od.c
+ fixes http://bugs.gnu.org/14650
+
+2013-06-13 Pádraig Brady <P@draigBrady.com>
+
+ maint: update gitignore entries
+ * .gitignore: Exclude the generated doc/manual directory,
+ and also the src/fs-latest-magic.h file referenced in README-release.
+
+2013-06-12 Pádraig Brady <P@draigBrady.com>
+
+ doc: clarify the description of du --separate-dirs
+ * src/du.c (usage): Clarify that --separate-dirs doesn't exclude
+ all directories.
+ * doc/coreutils.texi (du invocation): Avoid implying that -S
+ excludes the size of any non directory entries for a directory.
+ Also don't mention st_size as it's dependent on --apparent-size.
+ Reported by C de-Avillez in <https://launchpad.net/bugs/1187044>
+
+2013-06-05 Eric Blake <eblake@redhat.com>
+
+ doc: mention prior stat change
+ For a file of size 1234 bytes, commit ca9aa759 had the side effect
+ of changing 'stat -c "%'s" file' from outputting "?s" to the nicer
+ "1,234", depending on locale. This is worth mentioning in the NEWS.
+
+ Resolves part of http://bugs.gnu.org/14556.
+
+ * NEWS: Mention 8.7 improvement in stat.
+ * cfg.mk (old_NEWS_hash): Adjust accordingly.
+
+2013-06-05 Bernhard Voelker <mail@bernhard-voelker.de>
+
+ build: update gnulib submodule; also bootstrap to latest
+ Notes tests/init.sh is still in sync with gnulib.
+
+ * bootstrap: Update to latest.
+ * gnulib: Update avoiding gnulib-test failures.
+
+2013-06-03 Pádraig Brady <P@draigBrady.com>
+
+ tests: avoid a race in tail --retry testing
+ Prompted by the continuous integration build failure at:
+ http://hydra.nixos.org/build/5221053
+
+ * tests/tail-2/retry.sh: Ensure the 'out' file is truncated,
+ as it's used to arbitrate the run order of commands.
+ Relying on the truncation in the background tail command
+ is racy because the truncation can occur after the fork
+ of the background shell and thus wait4lines would not wait
+ for output to occur in 'out', which would mean that the
+ 'missing' file could be populated by the time tail(1)
+ gets to process it.
+
+2013-06-03 Andreas Mohr <andi@lisas.de>
+
+ doc: mention 'UTC' in date --utc help
+ src/date.c (usage): Make -u apparent in searches for UTC.
+
+2013-06-02 Jim Meyering <meyering@fb.com>
+
+ od: -wN, N>64K, avoid misbehavior on systems with 32-bit size_t
+ * src/od.c (PRINT_FIELDS): Declare "i" to be of type uintmax_t, so that
+ the numerator in the expression for "next_pad" does not overflow.
+ (print_named_ascii): Likewise.
+ (print_ascii): Likewise.
+ Bug introduced via commit v6.12-42-g20c0b87.
+ * tests/misc/od.pl: Exercise each of the three affected code paths.
+ * NEWS (Bug fixes): Mention it.
+ Reported by Rich Burridge.
+
+ tests: head-c: avoid spurious failure with a 32-bit size_t
+ * tests/misc/head-c.sh: Don't try to elide 1 exabytes, since on
+ 32-bit systems, that number is not representable as a size_t.
+ This command would fail on 32-bit systems, where SIZE_MAX < 1E:
+ head --bytes=-E < /dev/null
+ Instead of "E", use $SSIZE_MAX.
+ For discussion, see http://bugs.gnu.org/13530
+
+2013-05-27 Jim Meyering <meyering@fb.com>
+
+ tests: avoid spurious failure when SIZE_MAX is 2^32-1
+ * tests/split/line-bytes.sh: Since we've limited virtual memory to
+ 20MB, choose a smaller size, 1GiB (which is <= SIZE_MAX) rather than
+ 1EiB, which is larger than SIZE_MAX on 32-bit systems.
+ I confirmed that this test still fails when the split.c-modifying
+ part of v8.21-58-gfec363c is backed out.
+
+ tests: fix an ls test not to fail when user or group name contains SP
+ * tests/ls/block-size.sh (size_etc): The sed expression through which
+ we filtered the output of "ls -l ..." assumed that the user and group
+ name components of each line would not contain spaces. Avoid the
+ problem by using -og instead of -l, thus not printing either of those
+ fields. Adjust the sed expression accordingly.
+
+2013-05-27 Stefano Lattarini <stefano.lattarini@gmail.com>
+
+ tests: numfmt: use the printf program, not the shell builtin
+ * tests/misc/numfmt.pl: Avoid a spurious failure when
+ /bin/sh is dash (as can happen on Debian systems).
+
+2013-05-24 Paul Eggert <eggert@cs.ucla.edu>
+
+ stat: tune for large-LDAP case
+ * src/stat.c (print_stat): Omit unnecessary calls to setpwent, setgrent.
+ Problem reported by Fridolín Pokorný in <http://bugs.gnu.org/14462>.
+
+2013-05-23 Pádraig Brady <P@draigBrady.com>
+
+ split: with --line-bytes only allocate memory as needed
+ * src/split.c (line_bytes_split): Rewrite to only buffer
+ when necessary. I.E. only increase the buffer when we've
+ already lines output in a split and we encounter a line
+ larger than the input buffer size, in which case a hold
+ buffer will be increased in increments of the input buffer size.
+ (lines_rr): Use the more abstract xalloc_die() just like
+ we did in line_bytes_split(), rather than explicitly
+ printing the "memory exhausted" message and exiting.
+ * tests/split/line-bytes.sh: Add a new test for this
+ function which previously had no test coverage.
+ * tests/local.mk: Reference the new test.
+ * NEWS: Mention the improvement.
+ Fixes http://bugs.gnu.org/13537
+
+2013-05-19 Paul Eggert <eggert@cs.ucla.edu>
+
+ maint: port --enable-gcc-warnings to clang
+ * configure.ac: If clang, add -Wno-format-extra-args and
+ -Wno-tautological-constant-out-of-range-compare.
+ * gl/lib/rand-isaac.c (ind):
+ * gl/lib/randread.c (readisaac):
+ * src/ls.c (dev_ino_push, dev_ino_pop):
+ * src/sort.c (buffer_linelim):
+ * src/system.h (is_nul):
+ * src/tail.c (tail_forever_inotify):
+ Rewrite to avoid casts that clang dislikes.
+ It's good to avoid casts anyway.
+ * src/expr.c (integer_overflow): Declare only if it exists.
+ (die): Remove; unused.
+ * src/ls.c (dev_ino_push): New function, replacing ...
+ (DEV_INO_PUSH): ... this removed macro. All uses changed.
+ (decode_switches): Rewrite "str"+i to &str[i].
+
+ build: update gnulib submodule to latest
+
+ tests: don't assume expr was built with GMP
+ * tests/misc/cut-huge-range.sh (subtract_one): New string.
+ (CUT_MAX): Don't pass a too-large integer to 'expr'.
+
+2013-05-12 Pádraig Brady <P@draigBrady.com>
+
+ doc: link to the list of rejected feature requests
+ * README: Update the email address best suited to discussing
+ feature requests, and also link to the list of previously
+ discussed and rejected requests.
+
+2013-05-12 Jim Meyering <meyering@fb.com>
+
+ build: avoid new syntax-check failure
+ * po/POTFILES.in: Reflect renaming.
+
+2013-05-12 Paul Eggert <eggert@cs.ucla.edu>
+
+ maint: add FIXME comment
+
+ mkdir: don't assume umask equals POSIX default ACL mask
+ This fixes Bug#14371, reported by Killer Bassist.
+ * NEWS: Document this.
+ * src/mkdir.c (struct mkdir_options): Remove member ancestor_mode.
+ New member umask_value. All uses changed.
+ * src/mkdir.c (make_ancestor): Fix umask assumption.
+ * src/mkdir.c, src/mkfifo.c, src/mknod.c (main):
+ Leave umask alone. This requires invoking lchmod after creating
+ the file, which introduces a race condition, but this can't be
+ avoided on hosts with "POSIX" default ACLs, and there's no easy
+ way with network file systems to tell what kind of host the
+ directory is on.
+ * tests/local.mk (all_tests): Add tests/mkdir/p-acl.sh.
+ * tests/mkdir/p-acl.sh: New file.
+
+ build: update gnulib submodule to latest
+
+2013-05-08 Jarkko Sakkinen <jarkko.sakkinen@iki.fi>
+
+ id: with -Z, show SMACK security context
+ Adds an optional dependency on libsmack.
+
+ * m4/jm-macros.m4: Look for the smack library/header.
+ * src/id.c (main): Output the smack context if available.
+ * src/local.mk: Link with libsmack if available.
+ * NEWS: Mention the new feature.
+
+2013-05-08 Cojocaru Alexandru <xojoc@gmx.com>
+
+ cut: improve performance, especially with --output-delimiter
+ Use a sentinel value that's checked implicitly, rather than
+ a bit array, to determine if an item should be output.
+
+ Benchmark results for this change are:
+
+ $ yes abcdfeg | head -n1MB > big-file
+
+ $ for c in orig sentinel; do
+ src/cut-$c 2>/dev/null
+ echo -ne "\n== $c =="
+ time src/cut-$c -b1,3 big-file > /dev/null
+ done
+ == orig ==
+ real 0m0.049s
+ user 0m0.044s
+ sys 0m0.005s
+
+ == sentinel ==
+ real 0m0.035s
+ user 0m0.032s
+ sys 0m0.002s
+
+ ## Again with --output-delimiter ##
+ $ for c in orig sentinel; do
+ src/cut-$c 2>/dev/null
+ echo -ne "\n== $c =="
+ time src/cut-$c -b1,3 --output-delimiter=: big-file > /dev/null
+ done
+ == orig ==
+ real 0m0.106s
+ user 0m0.103s
+ sys 0m0.002s
+
+ == sentinel ==
+ real 0m0.055s
+ user 0m0.052s
+ sys 0m0.003s
+
+ eol_range_start: Removed. 'n-' is no longer treated specially,
+ and instead SIZE_MAX is set for the 'hi' limit, and tested implicitly.
+ complement_rp: Used to complement 'rp' when '--complement' is specified.
+ ADD_RANGE_PAIR: Macro renamed to 'add_range_pair' function.
+ * tests/misc/cut-huge-range.sh: Adjust to the SENTINEL value.
+ Also remove the overlapping range test as this is no longer
+ dependent on large ranges and also is already handled with
+ the EOL-subsumed-3 test in cut.pl.
+
+2013-05-07 Cojocaru Alexandru <xojoc@gmx.com>
+
+ cut: fix handling of overlapping ranges
+ This issue was introduced in commit v8.21-43-g3e466ad
+
+ * src/cut.c (set_fields): Process all range pairs when merging.
+ * tests/misc/cut-huge-range.sh: Add a test for this edge case.
+ Also fix an issue where we could miss reported errors due
+ to truncation of the 'err' file.
+
+2013-04-30 Pádraig Brady <P@draigBrady.com>
+
+ doc: correct a URL to older textutils source
+ * doc/coreutils.texi (Putting the tools together): Adjust the
+ textutils-1.22 URL, and add a URL for newer sources.
+
+2013-04-29 Pádraig Brady <P@draigBrady.com>
+
+ cut: reduce CPU usage for the the common case
+ Ensure appropriate functions are inlined. This was seen to
+ be required with gcc 4.6.0 with -O2 on x86_64 at least.
+ It was reported that gcc 4.8.0 did inline these functions though.
+
+ Also reinstate the bit vector for the common case,
+ to further improve performance.
+
+ Benchmark results for both aspects of this change are:
+
+ $ yes abcdfeg | head -n1MB > big-file
+ $ for c in orig inline inline-array; do
+ src/cut-$c 2>/dev/null
+ echo -ne "\n== $c =="
+ time src/cut-$c -b1,3 big-file > /dev/null
+ done
+
+ == orig ==
+ real 0m0.088s
+ user 0m0.081s
+ sys 0m0.007s
+
+ == inline ==
+ real 0m0.070s
+ user 0m0.060s
+ sys 0m0.009s
+
+ == inline-array ==
+ real 0m0.049s
+ user 0m0.044s
+ sys 0m0.005s
+
+ * src/cut.c (set_fields): Set up the printable_field bit vector
+ for performance, but only when it's appropriate. I.E. not
+ when either --output-delimeter or huge ranges are specified.
+ (next_item): Ensure it's inlined and avoid unnecessary processing.
+ (print_kth): Ensure it's inlined and add a branch for the fast path.
+ Related to http://bugs.gnu.org/13127
+
+2013-04-29 Cojocaru Alexandru <xojoc@gmx.com>
+
+ cut: reduce CPU overhead in determining item to output
+ print_kth() is the central function of cut used to
+ determine if an item is to be output or not,
+ so simplify it by moving some logic outside.
+ Benchmark results for this change are:
+
+ $ yes abcdfeg | head -n1MB > big-file
+ $ for c in orig split; do
+ src/cut-$c 2>/dev/null
+ echo -ne "\n== $c =="
+ time src/cut-$c -b1,3 big-file > /dev/null
+ done
+
+ == orig ==
+ real 0m0.111s
+ user 0m0.108s
+ sys 0m0.002s
+
+ == split ==
+ real 0m0.088s
+ user 0m0.081s
+ sys 0m0.007s
+
+ * src/cut.c (print_kth): Refactor a branch to outside the function.
+ Related to http://bugs.gnu.org/13127
+
+2013-04-29 Cojocaru Alexandru <xojoc@gmx.com>
+
+ cut: make memory allocation independent of range width
+ The current implementation of cut, uses a bit array,
+ an array of `struct range_pair's, and (when --output-delimiter
+ is specified) a hash_table. The new implementation will use
+ only an array of `struct range_pair's.
+ The old implementation is memory inefficient because:
+ 1. When -b with a big num is specified, it allocates a lot of
+ memory for `printable_field'.
+ 2. When --output-delimiter is specified, it will allocate 31 buckets.
+ Even if only a few ranges are specified.
+
+ Note CPU overhead is increased to determine if an item is to be printed,
+ as shown by:
+
+ $ yes abcdfeg | head -n1MB > big-file
+ $ for c in with-bitarray without-bitarray; do
+ src/cut-$c 2>/dev/null
+ echo -ne "\n== $c =="
+ time src/cut-$c -b1,3 big-file > /dev/null
+ done
+
+ == with-bitarray ==
+ real 0m0.084s
+ user 0m0.078s
+ sys 0m0.006s
+
+ == without-bitarray ==
+ real 0m0.111s
+ user 0m0.108s
+ sys 0m0.002s
+
+ Subsequent patches will reduce this overhead.
+
+ * src/cut.c (set_fields): Set and initialize RP
+ instead of printable_field.
+ * src/cut.c (is_range_start_index): Use CURRENT_RP rather than a hash.
+ * tests/misc/cut.pl: Check if `eol_range_start' is set correctly.
+ * tests/misc/cut-huge-range.sh: Rename from cut-huge-to-eol-range.sh,
+ and add a test to verify large amounts of mem aren't allocated.
+ Fixes http://bugs.gnu.org/13127
+
+2013-04-28 Pádraig Brady <P@draigBrady.com>
+
+ stat,tail: improve support for snfs
+ The StorNext distributed file system was previously known as CVFS.
+
+ * src/stat.c (human_fstype): Add new file system ID definition.
+ * NEWS: Mention the improvement.
+ Fixes http://bugs.gnu.org/14251
+
+2013-04-25 Pádraig Brady <P@draigBrady.com>
+
+ tests: fix usage of require_ulimit_
+ * init.cfg (require_ulimit_v_): Renamed from require_ulimit_
+ as this only checks for ulimit -v support. Other uses of
+ ulimit -t and ulimit -n in tests shouldn't cause false failures
+ if not supported.
+ * cfg.mk (sc_prohibit_test_ulimit_without_require_): A new syntax check
+ to ensure that require_ulimit_v_() is used iff required.
+ * tests/misc/head-c.sh: Add missing call to require_ulimit_v_.
+ * tests/rm/many-dir-entries-vs-OOM.sh: Likewise.
+ * tests/split/r-chunk.sh: Remove non mandatory require_ulimit_ call.
+ * tests/misc/sort-merge-fdlimit.sh: Likewise.
+ * tests/cp/link-heap.sh: Adjust to renamed require_ulimit_v_.
+ * tests/dd/no-allocate.sh: Likewise.
+ * tests/misc/csplit-heap.sh: Likewise.
+ * tests/misc/cut-huge-to-eol-range.sh: Likewise.
+ * tests/misc/printf-surprise.sh: Likewise.
+
+2013-04-22 Jim Meyering <meyering@fb.com>
+
+ scripts: tweak URLs in autotools-install
+ * scripts/autotools-install (tarballs): Use http:// URLs rather
+ than ftp:// ones. The former are more likely to work, these days.
+ Update URLs to point to the latest versions.
+
+2013-04-20 Bernhard Voelker <mail@bernhard-voelker.de>
+
+ tail: exit following by descriptor when no tailable file left
+ As a side effect of the previous commit which fixes 'tail -f --retry'
+ to wait for a file to appear, tail would not exit when the last file
+ appears untailable and gives up on this file.
+ This can happen, for example, when the argument file name appears
+ as directory. Tail sets the 'ignore' flag of this file to true,
+ but instead of exiting the program, tail would continue the loop.
+
+ * src/tail.c (any_live_files): Change the function to return true
+ if any of the files is still tailable or if tail should continue to
+ try to check again.
+ (tail_forever): Change the condition to break the loop in the
+ "no files remaining" case, because now any_live_files() will care
+ about it, as mentioned above.
+ (parse_options): When --retry is used without any follow mode,
+ then reset reopen_inaccessible_files to false.
+ * tests/tail-2/retry.sh: Add test case.
+
+2013-04-20 Bernhard Voelker <mail@bernhard-voelker.de>
+
+ tail: let -f --retry wait for inaccessible files
+ The --retry option is indeed useful for both following modes
+ by name and by file descriptor. The difference is that in the
+ latter case, it is effective only during the initial open.
+
+ As a regression of the implementation of the inotify support,
+ tail -f --retry would immediately exit if the given file is
+ inaccessible.
+
+ * src/tail.c (usage): Change the description of the --retry option:
+ remove the note that this option would mainly be useful when
+ following by name.
+ (main): Change diagnosing dubios uses of --retry option:
+ when the --retry option is used without following, then issue
+ a warning that this option is ignored; when it is used together
+ with --follow=descriptor, then issue a warning that it is only
+ effective for the initial open.
+ Disable inotify also in the case when the initial open in tail_file()
+ failed (which is the actual bug fix).
+ * init.cfg (retry_delay_): Pass excess arguments to the test function.
+ * tests/tail-2/retry.sh: Add new tests.
+ * tests/local.mk (all_tests): Mention it.
+ * doc/coreutils.texi (tail invocation): Enhance the documentation
+ of the --retry option. Clarify the difference in tail's behavior
+ regarding the --retry option when combined with the following modes
+ name versus descriptor.
+ * NEWS (Bug fixes): Mention the fix.
+
+ Reported by Noel Morrison in:
+ http://lists.gnu.org/archive/html/coreutils/2013-04/msg00003.html
+
+2013-04-14 Pádraig Brady <P@draigBrady.com>
+
+ tests: avoid false failures with non default groups
+ On OS X it was seen that the group ID used for new files,
+ are set to a that of the directory rather than the current user.
+ It's not currently understood when this happens, but it was confirmed
+ that ACLs, extended attributes and setgid bits are _not_ involved.
+
+ * init.cfg (skip_if_nondefault_group_): A new function to detect
+ and avoid this situation. Document with links to the discussions
+ for hopefully future clarification.
+ * tests/install/install-C-root.sh: Use the new function.
+ * tests/install/install-C-selinux.sh: Likewise.
+ * tests/install/install-C.sh: Likewise.
+
+2013-04-14 Pádraig Brady <P@draigBrady.com>
+
+ doc: mention caveats with using install --compare
+ * doc/coreutils.texi (install invocation): Mention that install(1) may
+ not correctly determine the default user or permissions for installed
+ files, and so is best used with options specifying these attributes.
+
+ head: with --bytes=-N only allocate memory as needed
+ * src/head.c (elide_tail_bytes_pipe): Don't use calloc as that
+ bypasses memory overcommit due to the zeroing requirement.
+ Also realloc rather than malloc the pointer array to avoid
+ dependence on overcommit entirely.
+ * tests/misc/head-c.sh: Add a test case.
+ Fixes http://bugs.gnu.org/13530
+
+2013-04-14 Ondrej Oprala <ooprala@redhat.com>
+
+ dd: avoid buffer allocations unless needed
+ * src/dd.c: Add new static global variable ibuf.
+ (alloc_ibuf, alloc_obuf): New functions factored from dd_copy().
+ (dd_copy): Call the new functions to allocate memory for
+ ibuf and obuf when necessary.
+ (skip): Likewise.
+ * tests/dd/no-allocate.sh: New test.
+ * tests/local.mk: Reference the test.
+
+2013-04-10 Assaf Gordon <assafgordon@gmail.com>
+
+ csplit: add the --suppress-matched option
+ With --suppress-matched, the lines that match the pattern will not be
+ printed in the output files. I.E. the first line from the second
+ and subsequent splits will be suppressed.
+
+ * src/csplit.c: process_regexp(),process_line_count(): Don't output the
+ matched lines. Since csplit includes "up to but not including" matched
+ lines in each split, the first line (in the next group) is the matched
+ line - so just skip it.
+ main(): Handle new option.
+ usage(): Mention new option.
+ * doc/coreutils.texi (csplit invocation): Mention new option, examples.
+ * tests/misc/csplit-suppress-matched.pl: New test script.
+ * tests/local.mk: Reference the new test.
+ * NEWS: Mention new feature.
+
+2013-04-07 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+ build: fix man page build failure with some permissions setups
+ Use the more portable 'chmod a-w', instead of the 'chmod -w' form.
+ The latter is not always supported. Also its operation is
+ dependent on umask controlling the permissions bits for new files,
+ which is not the case in the presence of POSIX default ACLs for e.g.
+ In that case, chmod may print a warning like the following, and
+ exit with failure status:
+
+ chmod: man/hostid.1-t: new permissions are r--rw-r--, not r--r--r--
+
+ * man/local.mk: s/-w/a-w/
+
+2013-04-04 Pádraig Brady <P@draigBrady.com>
+
+ tests: avoid shared lib tests on unsupported platforms
+ * init.cfg (require_gcc_shared_): A new function to check
+ that we can build shared libraries in the particular manner
+ we use in our tests.
+ * tests/cp/nfs-removal-race.sh: Use require_gcc_shared_.
+ Then fail rather than skip, if the actual shared lib build fails.
+ * tests/df/no-mtab-status.sh: Likewise.
+ * tests/df/skip-duplicates.sh: Likewise.
+ * tests/ls/getxattr-speedup.sh: Likewise.
+ Reported in http://bugs.gnu.org/14024
+
+ tail: exit without reading input if would never output
+ * src/tail.c (main): If -n0 or -c0 were specified without -f,
+ then no data would ever be output, so exit without reading input.
+ * tests/tail-2/tail-n0f.sh: Augment the related test with this case.
+
+ shuf: exit without reading if would never output
+ * src/shuf.c (main): If -n0 specified then no data would ever be output,
+ so exit without reading input.
+ * tests/misc/shuf.sh: Augment the related test with this case.
+
+ doc: add details on ln --relative symlink resolution
+ * doc/coreutils.texi (ln invocation): Describe how symlinks are
+ resolved with --relative, and give an example showing the greater
+ control available through realpath(1).
+ * tests/ln/relative.sh: Add a test to demonstrate full symlink
+ resolution, in a case where it might not be wanted.
+
+2013-04-04 Rémy Lefevre <lefevreremy@gmail.com>
+
+ ln: --relative: fix updating of existing symlinks
+ Don't dereference an existing symlink being replaced.
+ I.E. generate the symlink relative to the symlink's containing dir,
+ rather than to some arbitrary place it points to.
+
+ * src/ln.c (convert_abs_rel): Don't consider the final component
+ of the symlink name when canonicalizing, as we want to avoid
+ dereferencing the final component.
+ * tests/ln/relative.sh: Add a test case.
+ * NEWS: Mention the fix.
+ Resolves http://bugs.gnu.org/14116
+
+2013-03-25 Assaf Gordon <assafgordon@gmail.com>
+
+ shuf: use reservoir-sampling for large or unknown sized inputs
+ Reservoir sampling optimizes selecting K random lines from large or
+ unknown-sized input: http://en.wikipedia.org/wiki/Reservoir_sampling
+ Note this also avoids reading any input when -n0 is specified.
+
+ * src/shuf.c (main): Use reservoir-sampling when the number of output
+ lines is known, and the input size is large or unknown.
+ (input_size): A new function to get the input size for regular files.
+ (read_input_reservoir_sampling): New function to read lines from input,
+ keeping only K lines in memory, replacing lines with decreasing prob.
+ (write_permuted_output_reservoir): New function to output reservoir.
+ * tests/misc/shuf-reservoir.sh: An expensive_ test using valgrind to
+ exercise the reservoir-sampling code.
+ * tests/local.mk: Reference new test.
+ * NEWS: Mention the improvement.
+
+2013-03-24 Pádraig Brady <P@draigBrady.com>
+
+ stat,tail: improve support for efivarfs, exofs, f2fs and ubifs
+ * src/stat.c (human_fstype): Add new file system ID definitions.
+ * NEWS: Mention the improvement.
+ Fixes http://bugs.gnu.org/14020
+
+ maint: improve make src/fs-magic-compare
+ * README-release: fix the `make` command, and mention how
+ to get the latest results without requring running a
+ system with the latest kernel.
+ * src/local.mk (src/fs-latest-magic.h): A new target to
+ document how/where to place the latest magic header.
+ (src/fs-kernel-magic): Adjust to include separately
+ downloaded header if available.
+ (src/fs-magic): Undefine MANPAGER as it may impact the
+ ability to pipe the output of man(1).
+ (fs-magic-compare): Don't echo the commands run as they're
+ distracting from the output which needs to be examined.
+
+ build: fix issues when building with GMP
+ * m4/gmp.m4 (cu_GMP): Add an extra check that gmp.h is available
+ which is required on one Mac OS X 10.5.8 system at least,
+ where the lib was available but the header wasn't.
+ Also enable our GMP code on systems where GMP is not in a separate lib.
+
+2013-03-22 Pádraig Brady <P@draigBrady.com>
+
+ doc: clarify the printable characters output by od
+ * src/od.c (usage): Mention any printable character is output,
+ Not just ASCII.
+ * doc/coreutils.texi (od invocation): Further clarify that only
+ single byte characters are output (due to the alignment requirement).
+ Also mention the fact that 3 digit octal sequences are output
+ for non printable characters without a corresponding C escape.
+ Reported in http://bugs.gnu.org/13947
+
+ doc: clarify stat the meaning of --format="%t %T"
+ * src/stat.c (usage): Mention that the values are only
+ defined for character and block special files.
+ * doc/coreutils.texi (stat invocation): Likewise.
+ Also mention st_rdev.
+ Reported in http://bugs.gnu.org/13927
+
+2013-03-06 Pádraig Brady <P@draigBrady.com>
+
+ doc: mention `numfmt` as an alternative to `sort -h`
+ * doc/coreutils.texi (sort invocation): Mention that numfmt
+ can achieve the same results with a possibly more accurate sort.
+
+ doc: remove a redundant numfmt heading from texinfo
+ * doc/coreutils.texi (detailmenu): Remove the redundant numfmt heading.
+
+ maint: ensure proper backslash quoting in texinfo macros
+ * doc/coreutils.texi (ambiguousGroupNote): Ensure '\' is escaped
+ appropriately within the macro. This was verified to generate
+ a single '\' in both "info" and "pdf" outputs.
+
+2013-03-04 Torbjörn Granlund <tg@gmplib.org>
+
+ build: fix factor build failure on aarch64
+ * src/longlong.h (__aarch64__): Make add_ssaaaa and sub_ddmmss work.
+ * NEWS: Mention the build fix.
+ Reported at https://bugzilla.redhat.com/917735
+
+2013-02-28 Assaf Gordon <assafgordon@gmail.com>
+
+ tests: don't skip all uniq tests when locale is missing
+ * tests/misc/uniq.pl: Previously, if LOCALE_FR was not defined, all
+ tests would be skipped. Modified to skip only the relevant test.
+
+ uniq: add the --group option
+ * src/uniq.c (usage): Summarize the new option,
+ and adjust the --all-repeated option to be more consistent.
+ (check_file): Merge the --group functionality into
+ the core loop for the default uniq operation since
+ it's very similar and can output lines immediately upon reading.
+ (main): Handle the new --group option and make it
+ mutually exclusive with other selection options.
+ * tests/misc/uniq.pl: Add tests.
+ * NEWS: Mention the new feature.
+ * doc/coreutils.texi (uniq invocation): Describe --group.
+
+2013-02-28 Pádraig Brady <P@draigBrady.com>
+
+ doc: move some info from all --help messages, online
+ * src/system.h (emit_ancillary_info): Link to the bug report email
+ addresses and general help URLs online rather than specifying directly.
+ This give us greater scope to present better info like describing
+ the difference between bug-coreutils@gnu.org and coreutils@gnu.org etc.
+ * tests/misc/help-version.sh: Remove the check for bug-coreutils@gnu.org
+ * tests/local.mk: Remove the no longer needed PACKAGE_BUGREPORT.
+
+2013-02-28 Assaf Gordon <assafgordon@gmail.com>
+
+ tests: add '--ignore-case' tests for uniq
+ * tests/misc/uniq.pl: add tests for --ignore-case.
+
+2013-02-28 Javier López <chilicuil@ubuntu.com>
+
+ dircolors: add a new entry to colorize 'arc' files
+ * src/dircolors.hin: Add an entry for arc. Suggested in:
+ https://bugs.launchpad.net/ubuntu/+source/coreutils/+bug/1088131
+
+2013-02-28 Assaf Gordon <assafgordon@gmail.com>
+
+ join: Add the -z, --zero-terminated option
+ * NEWS: Mention join's new option: --zero-terminated (-z).
+ * src/join.c: Add new option, --zero-terminated (-z), to make
+ join use the NUL byte as separator/delimiter rather than newline.
+ (get_line): Use readlinebuffer_delim in place of readlinebuffer.
+ (main): Handle the new option.
+ (usage): Describe new option the same way sort does.
+ * doc/coreutils.texi (join invocation): Describe the new option.
+ * tests/misc/join.pl: add tests for -z option.
+
+2013-02-28 Ondřej Vašík <ovasik@redhat.com>
+
+ dircolors: add new entries to colorized archive formats
+ * src/dircolors.hin: Add .cab, .alz, .lzo, .lrz, .t7z, .tzo, .lha
+ to colorized archives.
+ Suggested by Ville Skyttä in https://bugzilla.redhat.com/868510
+
+2013-02-22 Ondrej Oprala <ooprala@redhat.com>
+
+ install: cleanup properly if the strip program failed for any reason
+ * src/install.c (strip): Indicate failure with a return code instead
+ of terminating the program.
+ (install_file_in_file): Handle strip's return code and unlink the
+ created file if necessary.
+ * tests/install/strip-program.sh: Add a test to cover the changes.
+ * NEWS (Bug fixes): Mention the fix.
+ Reported by John Reiser in http://bugzilla.redhat.com/632444.
+
+2013-02-20 Joachim Schmitz <jojo@schmitz-digital.de>
+
+ copy: ensure the correct root ID is checked on all platforms
+ * src/copy.c (copy_reg): Check ROOT_UID rather than 0,
+ which is significant on HP-NonStop.
+
+2013-02-20 Pádraig Brady <P@draigBrady.com>
+
+ maint: cleanup up various uses of __attribute__
+ * src/cfg.mk (sc_prohibit-gl-attributes): Disallow the __attribute()
+ form without trailing underscores as that is not elided where required.
+ Also ensure we use gnulib macros rather than defining our own.
+ * src/system.h: Remove gnulib provided macros.
+ * src/chown-core.c: Likewise.
+ * src/chroot.c: Likewise.
+ * src/copy.c: Likewise.
+ * src/csplit.c: Likewise.
+ * src/dd.c: Likewise.
+ * src/expr.c: Likewise.
+ * src/extent-scan.c: Likewise.
+ * src/factor.c: Likewise.
+ * src/ls.c: Likewise.
+ * src/od.c: Likewise.
+ * src/paste.c: Likewise.
+ * src/ptx.c: Likewise.
+ * src/sort.c: Likewise.
+ * src/stat.c: Likewise.
+ * src/stty.c: Likewise.
+ * src/system.h: Likewise.
+ * src/tac.c: Likewise.
+ * src/test.c: Likewise.
+ * src/tsort.c: Likewise.
+
+2013-02-20 Joachim Schmitz <jojo@schmitz-digital.de>
+
+ build: fix numfmt build error on compilers without __attribute
+ * src/numfmt.c (): Use the more standard _GL_ATTRIBUTE_PURE
+ which is elided where required.
+ Reported in http://bugs.gnu.org/10305
+
+2013-02-20 Pádraig Brady <P@draigBrady.com>
+
+ tests: avoid false failures on file systems with smaller NAME_MAX
+ * tests/du/long-from-unreadable.sh: This test requires a NAME_MAX
+ of at least 200, so skip the test otherwise.
+ * tests/rm/deep-2.sh: Likewise.
+ Reported by C de-Avillez with ecryptfs where NAME_MAX = 143.
+
+2013-02-18 Stefano Lattarini <stefano.lattarini@gmail.com>
+
+ maint: choose editor in the commit-msg git hook the same way git does
+ Git honours the GIT_EDITOR environment variable, the "core.editor" Git
+ configuration variable, and the EDITOR environment variable (in that
+ order, and defaulting to "vi" if none of them is set) to decide which
+ editor should be invoked for the user when he has to or want to edit
+ his commit message.
+
+ However, our commit-msg hook, when invoking an editor on behalf of the
+ user to allow him to fix a non-policy-complaint commit message, only
+ honoured the EDITOR environment variable. To avoid potential annoying
+ inconsistencies, we should really use the same logic used by Git in the
+ selection of the editor. Luckily, we don't have to duplicate this
+ logic (that would be brittle in the long term), as we can rely on the
+ "git var" command, designed exactly to be used in situations like this.
+
+ * scripts/git-hooks ($editor): Adjust definition.
+
+2013-02-18 Stefano Lattarini <stefano.lattarini@gmail.com>
+
+ maint: don't reset PATH in the commit-msg git hook
+ I have a custom 'editor' script in ~/bin, and a system-provided
+ 'editor' program in /usr/bin (on Debian, this is a link set up the
+ "debian alternatives" subsystem). My '$EDITOR' and '$GIT_EDITOR'
+ variables are set simply to 'editor' (no absolute path), which I
+ expect should point to my 'editor' script, since ~/bin precedes
+ /usr/bin in my PATH definition. But the 'commit-msg' hook used in
+ coreutils unconditionally resets its PATH to '/bin:/usr/bin', which
+ causes it to call the "wrong" editor (the one in /usr/bin, not the
+ one in ~/bin) when it makes me update a botched commit message.
+
+ * scripts/git-hooks: Don't reset $ENV{PATH} to '/bin:/usr/bin',
+ which was only done to avoid failure when enabling Perl's taint
+ checking.
+
+2013-02-14 Bernhard Voelker <mail@bernhard-voelker.de>
+
+ maint: prevent trailing period at first line of a commit message
+ * scripts/git-hooks/commit-msg (bad_first_line): Return an error
+ message if the first line of a commit message ends with a period.
+
2013-02-14 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.21
* NEWS: Record release date.