diff options
Diffstat (limited to 'ChangeLog')
-rw-r--r-- | ChangeLog | 4191 |
1 files changed, 4191 insertions, 0 deletions
@@ -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. |