summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2014-07-04maint: simplify parsing df's output in shell scriptsBernhard Voelker
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-02pwd: revert default mode back to -PPádraig Brady
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-02tests: avoid false failure with spaces in mount point pathsPádraig Brady
* 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
2014-07-02tests: avoid errors on systems without getmntentPádraig Brady
* 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-02tests: use "env builtin" in place of "$abs_top_builddir/src/builtin"Jim Meyering
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-02maint: fix context_t init warning on systems without selinuxAlex Deymo
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-01tests: adapt tests to change in pwd's defaultJim Meyering
* 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-01maint: fix const correctness warnings with security_context_tPádraig Brady
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-01chcon: avoid redundant context allocationsNamhyung Kim
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-01chcon: use security_check_context() for context validationNamhyung Kim
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-30pwd: assume -L mode by default, as per POSIXPádraig Brady
* 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-26tests: use predetermined NON_ROOT_GIDPádraig Brady
* 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.
2014-06-26maint: mention when the du cycle warning bug was introducedPádraig Brady
* NEWS: Mention bug introduced in v8.1 (with commit v8.0-88-g8ba5d1a).
2014-06-26id: output the effective group for the processPetr Stodůlka
* 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-25df: report correct device in presence of eclipsed mountsPádraig Brady
* 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-24df: look for accessible mount points for specified devicesPádraig Brady
* 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-24df: output placeholder values for inaccessible mount pointsPádraig Brady
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-24du: ignore directory cycles due to bind mountsPádraig Brady
* 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
2014-06-24doc: state in ls --help, that -h affects --size formatPádraig Brady
* src/ls.c (usage): State that --human changes --size format. Fixes http://bugs.gnu.org/17838
2014-06-19doc: clarify chgrp restrictionsPádraig Brady
* 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-18df: use all of the last device details providedPádraig Brady
* 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.
2014-06-18seq: fix incorrect output with start or end of -0Pádraig Brady
* 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-13tail: fix --follow to use polling mode for VXFSPádraig Brady
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-12maint: suppress a theoretical buffer overflow warningPádraig Brady
* 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-11tests: fix version printing for ginstall in one testPádraig Brady
* tests/install/d-slashdot.sh: 'ginstall' is the binary name in the build directory, not 'install'.
2014-06-11install: allow options -D and -t to be used togetherBernhard Voelker
* 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-11build: update gnulib submodule and tests/init.sh to latestPádraig Brady
* gnulib: Update to latest. * tests/init.sh: Update from gnulib.
2014-06-11build: update GCC warningsPádraig Brady
* 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-03tests: consolidate tests for true and falsePádraig Brady
* 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-02maint: avoid compiler warnings with some assert() implementationsBen Walton
* 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.
2014-06-02build: be more specific about .git repo before enabling warningsBen Walton
* 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-01cut: restore special case handling of -f with -d$'\n'Pádraig Brady
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-01stat: avoid redundant stat() callsPádraig Brady
* src/stat.c (find_bind_mount): NAME is invariant in the loop, so only stat(NAME) outside the loop.
2014-05-29df: use the last device name provided by the systemPádraig Brady
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-26stdbuf: support OS XPádraig Brady
* 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-26build: uname: avoid shadowing warningJim Meyering
* src/uname.c (main) [__APPLE__]: Rename inner "s" to "cs", to avoid gcc shadowing warning.
2014-05-26doc: clarify --zero-terminated optionPádraig Brady
* 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-25build: libstdbuf.so: avoid new OS X link failureJim Meyering
* src/local.mk (src_libstdbuf_so_LDADD): Add $(LIBINTL), to avoid link failure on OS X.
2014-05-25cat,cp,split: use a larger buffer for copyingJim Meyering
* src/ioblksize.h (IO_BUFSIZE): Double the size, to 128KB. Add four more columns to the blksize-vs-bandwidth table
2014-05-24doc: use nicer quotesPaul Eggert
* doc/coreutils.texi: Add "@documentencoding UTF-8".
2014-05-23stat,tail: improve support for LogFS and ConfigFSPádraig Brady
* src/stat.c (human_fstype): Add new file system ID definitions. * NEWS: Mention the improvement.
2014-05-22maint: enforce consistent width and case of file system constantsPádraig Brady
* 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-21stdbuf: support compilers other than __GNUC__Pádraig Brady
__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-21tests: use chroot --user rather than internal setuidgid toolPádraig Brady
* 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.
2014-05-21chroot: make changing root check more robustPádraig Brady
* 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.
2014-05-21chroot: exit immediately upon failurePádraig Brady
* 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-21chroot: with --userspec clear root's supplemental groupsPádraig Brady
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-16chroot: don't chdir() if not changing rootPádraig Brady
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-13maint: avoid clang -Wtautological-constant-out-of-range-compare warningPádraig Brady
* 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-13df: ignore non file system entries in /proc/mountsPádraig Brady
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.