aboutsummaryrefslogtreecommitdiffstats
path: root/src (follow)
AgeCommit message (Collapse)AuthorFilesLines
2009-09-11rm: improve efficiency of rm -r (without -f) from O(N^2) to O(N)Jim Meyering1-0/+7
where N is the depth of the deepest hierarchy rm is processing. * src/remove.c (write_protected_non_symlink): Use faccessat to avoid O(N)-per-entry cost of calling euidaccess. * m4/jm-macros.m4 (coreutils_MACROS): Check for faccessat. * NEWS (Improvements): Mention it.
2009-09-11build: placate gcc's new -Wskip-jump-initJim Meyering1-35/+38
* remove.c (rm_fts): Put braces around each of the two offending blocks. * configure.ac: Don't turn off -Wjump-misses-init. With the rewrite of remove.c, it is no longer needed.
2009-09-11rm: rewrite to use ftsJim Meyering5-1495/+232
* remove.c: Don't include "unlinkdir.h"; no longer used. Do not include <setjmp.h> or "cycle-check.h". Likewise. Include "xfts.h". (dir_name, dir_len): Remove definitions. (CONSECUTIVE_READDIR_UNLINK_THRESHOLD): Likewise. (INODE_SORT_DIR_ENTRIES_THRESHOLD, NEED_REWIND, D_TYPE): Likewise. (struct dirstack_state, Dirstack_state): Likewise. (g_buf, g_n_allocated): Remove declarations. (hash_freer, hash_compare_strings, rm_malloc): Remove functions. (rm_free, push_dir, top_dir, pop_dir, right_justify): Likewise. (full_filename0, xfull_filename, full_filename_): Likewise. (AD_stack_height, AD_stack_top, AD_stack_pop, AD_stack_clear): Likewise. (obstack_init_minimal, ds_init, ds_clear, ds_free): Likewise. (AD_pop_and_chdir, AD_ensure_initialized, AD_mark_helper): Likewise. (AD_mark_as_unremovable, AD_mark_current_as_unremovable): Likewise. (AD_push_initial, AD_push, AD_push, AD_is_removable): Likewise. (write_protected_non_symlink): Change 3rd parameter from dirstack_state "ds" to full_name. (prompt): Adjust parameters. Now, state comes from FTS/FTSENT pair. Those replace fd_cwd and "ds". Remove "filename". Remove pdirent_type in favor of new "is_dir" parameter. Rename is_empty to is_empty_p. (DO_RMDIR, DO_UNLINK): Remove definitions. (remove_entry, fd_to_subdirp, compare_ino): Remove functions. (dirent_count, dirent_inode_sort_may_be_useful): Likewise. (preprocess_dir): Likewise. (fts_skip_tree, mark_ancestor_dirs, excise, rm_fts): New functions. (remove_cwd_entries, remove_dir, rm_1): Remove functions. (rm): Rewrite as a simple loop calling fts_read and dispatching each entry via rm_fts. * src/rm.c (main): Adapt to new signature of rm(). * bootstrap.conf (gnulib_modules): Remove unlinkdir, no longer used. * src/Makefile.am (sc_tight_scope): Also recognize an extern "enum" declaration. * tests/rm/empty-name: Adjust expected output to match new diagnostic. * NEWS (Improvements): Mention it.
2009-09-10doc: improve various BLOCKSIZE and SIZE helpOndřej Vašík6-23/+27
* doc/coreutils.texi (multiplierSuffixes): Mention that the suffix can be specified without a leading number * src/split.c (usage): Refactor SIZE help to within a function * src/truncate.c (usage): Likewise * src/ls.c (usage): Likewise * src/df.c (usage): Likewise. Also add a function with BLOCKSIZE help * src/du.c (usage): Likewise. * src/system.h: Define 2 functions to emit common help text This was prompted by https://bugzilla.redhat.com/show_bug.cgi?id=511188
2009-09-10dd conv=unblock: print final newline consistentlyJim Meyering1-4/+5
* src/dd.c (dd_copy) [C_UNBLOCK]: Always print the final newline for non-empty output, not just when output size is a multiple of cbs. * doc/coreutils.texi (dd invocation) [conv=unblock]: Mention that dd prints a newline after each output record, not just when replacing trailing spaces. Reported by Ulrich Drepper. * tests/dd/unblock: New file. Test for this. * tests/Makefile.am (TESTS): Add it. * NEWS (Bug fixes): Mention it.
2009-09-08tail: make the new piped-stdin test as portable as the old oneJim Meyering1-24/+7
* src/tail.c (main): Adapt piped-stdin test to use the same isapipe, test as was used in the preceding POSIXLY_CORRECT condition. Remove the now-subsumed POSIXLY_CORRECT test. Reported by Pádraig Brady. * doc/coreutils.texi (tail invocation): Document this change. * NEWS (Changes in behavior): Reclassify, clarify.
2009-09-07tail: syntax-only: use "false", rather than equivalent, 0Jim Meyering1-1/+1
* src/tail.c (record_open_fd): Initialize "->ignore" to false, not 0.
2009-09-07tail: ignore -f for piped-stdin, as POSIX requiresJim Meyering1-1/+15
* src/tail.c (main): Tailing a pipe "forever" is not useful, and POSIX specifies that tail ignore the -f when there is no file argument and stdin is a FIFO or pipe. So we do that. In addition, GNU tail excludes "-" arguments from the list of files to tail forever, when the associated file descriptor is connected to a FIFO or pipe. Before this change, ":|tail -f" would hang. Reported by Ren Yang and Ulrich Drepper. * tests/tail-2/pipe-f: Test for this. * tests/tail-2/pipe-f2: Ensure tail doesn't exit early for a fifo. * tests/Makefile.am (TESTS): Add these tests. * NEWS (POSIX conformance): Mention it.
2009-09-07tail: don't give up on inotify mode for an already-ignored "-"Jim Meyering1-1/+1
* src/tail.c (main): Adjust today's change to honor the F[i].ignore flag that may have been set in tail_file.
2009-09-07tail -f: handle "-"/stdin once againJim Meyering1-1/+13
* src/tail.c (main) [HAVE_INOTIFY]: When stdin (i.e., "-", or no args, but not /dev/stdin) is specified on the command line, don't use inotify. Reported by Bill Brelsford in <http://bugs.debian.org/545422>. * tests/tail-2/follow-stdin: New file. Test for this. * tests/Makefile.am (TESTS): Add the test. * NEWS (Bug fixes): Mention it. This bug was introduced in coreutils-7.5 via commit ae494d4b, 2009-06-02, "tail: use inotify if it is available".
2009-09-06tail: flush initial output before possibly blockingJim Meyering1-1/+6
* src/tail.c (main): Flush any output from tail_file, before calling tail_forever_inotify, which can block. * tests/tail-2/flush-initial: New file. Test for the bug. * tests/Makefile.am (TESTS): Add tail-2/flush-initial. * NEWS (Bug fixes): Mention it. This bug was introduced in coreutils-7.5 via commit ae494d4b, 2009-06-02, "tail: use inotify if it is available".
2009-09-05doc: make the tail --sleep-interval help less confusingPádraig Brady1-1/+1
* src/tail.c (usage): I read "approximately S seconds" as "approximately 5 seconds" for approximately 5 seconds.
2009-09-05maint: remove some tab indentation from copy.cPádraig Brady1-3/+3
* src/copy.c (copy_internal): Remove tabs erroneously added in commit 3346c0af.
2009-09-05tests: test old tail -f method even on systems with inotifyPádraig Brady1-8/+22
* src/tail.c (main): Add an undocumented ---disable-inotify option to allow disabling inotify. * tests/tail-2/pid: Run test in both normal and "disable_inotify" modes. * tests/tail-2/tail-n0f: Likewise. * tests/tail-2/wait: Likewise. * tests/tail-2/append-only: Likewise.
2009-09-05stty: use TAB0, TAB1, and TAB2 only if definedPetr Salinger1-0/+8
* src/stty.c (mode_info) [TAB0, TAB1, TAB2]: Guard each entry with #ifdef. Required for GNU/kFreeBSD. Reported by Petr Salinger in http://bugs.debian.org/520368.
2009-09-04ln: add comments related to POSIX 2008Eric Blake1-21/+15
* src/ln.c (ENABLE_HARD_LINK_TO_SYMLINK_WARNING): Delete. (do_link): Update comments per POSIX; add FIXME for -L, -P.
2009-09-04mv, cp: tweak LINK_FOLLOWS_SYMLINKS logicEric Blake1-14/+16
* gnulib: Update to latest gnulib. * src/copy.c (copy_internal): Adjust comment in light of POSIX 2008, and deal with macro now being tri-state.
2009-09-03df: don't fail due to an unreadable argumentJim Meyering1-1/+4
* src/df.c (main): If open or fstat fails when we're trying to ensure that all arg-partitions are automounted, fall back on using stat. Inspired by the report and patch from Olivier Fourdan in http://bugzilla.redhat.com/520630. * NEWS (Bug fixes): Mention it. * tests/df/unreadable: New test for the above. * tests/Makefile.am (TESTS): Add df/unreadable. The bug was introduced in coreutils-7.3 via commit dbd17157, 2009-04-28, "df: use open(2), not stat, to trigger automounting".
2009-09-03cp: don't leak resources for each xattr preservation failureOndřej Vašík1-1/+1
* src/copy.c (copy_reg): Don't return from the function after an unsuccessful and required preservation of extended attributes. This resulted in leaking the copy buffer and file descriptors. * NEWS (Bug fixes): Mention the fix. The bug was introduced in coreutils-7.1 via commit 0889381c, 2009-01-23, "cp/mv: add xattr support".
2009-09-01chcon, chmod, chgrp, chown, du: report fts_close failurePádraig Brady4-4/+16
* src/du.c (du_files): Don't fail silently upon fts_close failure. * src/chcon.c (process_files): Likewise. * src/chmod.c (process_files): Likewise. * src/chown-core.c (chown_files): Likewise.
2009-09-01chcon, chmod, chgrp, chown, du: do not ignore fts_close failureJim Meyering4-16/+8
This is probably never visible, but who knows... * src/chcon.c (process_files): Don't ignore fts_close failure. * src/chmod.c (process_files): Likewise. * src/chown-core.c (chown_files): Likewise. * src/du.c (du_files): Likewise.
2009-09-01maint: du: remove unnecessary initializationJim Meyering1-1/+0
* src/du.c (main): Don't set "skip_file" unnecessarily.
2009-09-01maint: chown, chgrp, chmod, chcon: remove unnecessary initializationJim Meyering3-4/+7
* src/chown-core.c: Include "ignore-value.h". (change_file_owner): Don't set "ent" only to ignore it. * src/chcon.c (process_file): Likewise. * src/chmod.c: Include "ignore-value.h". (process_file): Don't set "ent" only to ignore it. After diagnosing root-dev/ino failure, return false immediately: Now that we don't set "ent" we must be sure not to use it uninitialized, and there's no point in issuing --verbose-related output in this case.
2009-09-01maint: shred: remove unnecessary initializationJim Meyering1-1/+0
* src/shred.c (genpattern): Value stored to "n" is never used.
2009-09-01maint: dd: remove unnecessary initializationJim Meyering1-2/+1
* src/dd.c (skip): Remove set-but-never-used variable, soffset.
2009-09-01maint: tail: remove unnecessary initializationJim Meyering1-1/+1
* src/tail.c (tail_bytes): Don't compute "diff" twice.
2009-09-01timeout: remove a redundant assignmentPádraig Brady1-1/+0
* src/timeout.c (main): While keeping argc and argv in sync may be marginally useful, it is redundant to update argc, so just remove that to suppress the clang warning.
2009-09-01timeout: defensive handling of all wait() errorsPádraig Brady1-6/+19
* src/timeout.c (main): Handle all possible cases of unexpected failures from wait(). This was prompted by the clang tool reporting the possible non-initialization of the status variable.
2009-09-01ls -i: print consistent inode numbers also for mount pointsJim Meyering1-1/+22
On most unix- and linux-based kernels, ls -i DIR_CONTAINING_MOUNT_POINT would print the wrong inode number for any entry that is a mount point. It would do that by relying on readdir's dirent.d_ino values, while most readdir implementations return the inode number of the underlying, inaccessible directory. Thus, it is not consistent with what you'd get when applying stat to the same entry. This bug led to surprising results like "ls -i" and "ls -i --color" printing different numbers (ls must usually "stat" a file to colorize its name). This change makes it so that on offending systems, ls must stat non-command-line-arguments for which otherwise it would be able to use "for free" dirent.d_ino values. Regardless of this change, ls is already required to stat every command-line argument. Note: versions of GNU ls prior to coreutils-6.0 did not perform the invalid optimization, and hence always printed correct inode numbers. Thus, for the sake of correctness, ls -i is forgoing the readdir optimization, for any kernel (including linux!) with POSIX-nonconforming readdir. Note that currently, only Cygwin has been agile enough to conform. * src/ls.c (RELIABLE_D_INO): Define. (print_dir): Use it. For plenty of discussion, see this long thread: http://thread.gmane.org/gmane.comp.gnu.coreutils.bugs/14020 This bug was introduced by the 2006-02-26 commit, 33eb3efe: "In ls, avoid calling stat for --inode (-i), when possible." * tests/ls/readdir-mountpoint-inode: New test. * tests/Makefile.am (TESTS): Add it. * tests/ls/stat-vs-dirent: Don't suppress failure of this test, now that ls -i is fixed. Though note that it doesn't test well, since it compares only the always-stat'd command-line arguments. * NEWS (Bug fixes): Mention it.
2009-08-31maint: revert my stdbuf change: the result didn't even compileJim Meyering1-1/+2
This reverts commit c1e158489d88bad418d52ceadf37af0b6f5b2112.
2009-08-30maint: stdbuf: move a declaration; no-semantic-changeJim Meyering1-2/+1
* src/stdbuf.c (set_program_path): Move a declaration down into the scope where it's used.
2009-08-30build: quiet "make check" in src/Jim Meyering1-4/+4
* src/Makefile.am (check-duplicate-no-install): Use $(AM_V_GEN). (check-README): Likewise. And $(AM_V_at).
2009-08-29cp --reflink: preserve attributes on cloned files if askedPádraig Brady1-144/+147
* src/copy.c (copy_reg): When cloning only skip the data copying * tests/cp/reflink-perm: New test to check times and modes copied * tests/Makefile.am: Reference the new test * NEWS: Mention the fix
2009-08-29cp --reflink: add an "auto" parameter to fall back to a normal copyPádraig Brady5-16/+59
* doc/coreutils.texi (cp invocation): Document the new "auto" and "always" options to --reflink. * src/copy.c (copy_reg): Fall back to a standard copy when reflink() is not supported and --reflink=auto specified. * src/copy.h [struct cp_options] (reflink): Change type s/bool/enum/. * src/cp.c (usage): Describe the --reflink={always,auto} options and expand a little on what --reflink does. (main): parse the new parameters to --reflink and allow all --sparse options with --reflink=auto. * src/install.c (cp_option_init): Init the enum instead of bool. * src/mv.c (cp_option_init): Likewise. * tests/cp/reflink-auto: A new test for falling back to normal copy. * tests/Makefile.am: Reference the new test. * NEWS: Mention the new feature.
2009-08-28stdbuf: fix a small typo in --help outputPádraig Brady1-2/+2
* src/stdbuf.c (usage): s/then/the/
2009-08-28build: avoid unused variable warnings on cygwinEric Blake2-5/+14
* src/copy.c (clone_file, copy_attr_by_fd, copy_attr_by_name): Mark up unused variables. * src/remove.c (dirent_inode_sort_may_be_useful): Likewise.
2009-08-28dd: detect closed stderrEric Blake1-1/+6
* src/dd.c (maybe_close_stdout): Always flush stderr; regression introduced in commit 381e69ea. * tests/misc/close-stdout (p): Use consistent style. * tests/dd/stderr: New test, borrowing from misc/close-stdout. * tests/Makefile.am (TESTS): Run it. * NEWS: Mention this.
2009-08-25maint: remove Local Variables: indent-tabs-mode: nil from all sourcesJim Meyering8-48/+0
* src/getlimits.c: Likewise. * src/group-list.c: Likewise. * src/groups.c: Likewise. * src/mktemp.c: Likewise. * src/setuidgid.c: Likewise. * src/stdbuf.c: Likewise. * src/timeout.c: Likewise. * src/truncate.c: Likewise. * gl/lib/mbsalign.c: Likewise. * tests/test-lib.sh: Likewise. * bootstrap: Likewise. * README-hacking: Likewise.
2009-08-25global: convert indentation-TABs to spacesJim Meyering101-18340/+18340
Transformed via this shell code: t=$'\t' git ls-files \ | grep -vE '(^|/)((GNU)?[Mm]akefile|ChangeLog)|\.(am|mk)$' \ | grep -vE 'tests/pr/|help2man' \ | xargs grep -lE "^ *$t" \ | xargs perl -MText::Tabs -ni -le \ '$m=/^( *\t[ \t]*)(.*)/; print $m ? expand($1) . $2 : $_'
2009-08-24cp: ignore obscure failure to preserve symlink time stamps,Jim Meyering1-5/+10
...when run on a kernel older than what was implied by headers and libraries tested at configure time. * src/copy.c (utimens_symlink): Ignore failure when errno == ENOSYS. * NEWS (Bug fixes): Mention it. Reported by Todd Zullinger and Kamil Dudka. Details in this thread: http://thread.gmane.org/gmane.linux.redhat.fedora.devel/119834
2009-08-20install: avoid a portability bug when compiling with non-gccJim Meyering1-1/+1
* src/install.c (extra_mode): Be careful to return only a 0 or 1 value, since this is a "bool" function, and there are still some compilers for which this is necessary. Without this change, Bernhard Voelker reported that the Forte Developer 7 C 5.4 2002/03/09 compiler would produce a malfunctioning "install" binary. Details in http://thread.gmane.org/gmane.comp.gnu.coreutils.bugs/17710/focus=17760
2009-08-19build: avoid "make dist" failure in man/Jim Meyering1-0/+5
Now that "make check" no longer builds programs like arch, ... * src/Makefile.am (dist-hook): Depend on $(all_programs), so that the subsequent build in man/ doesn't fail due to lack of a program like arch that is not going to be installed.
2009-08-18nl: deprecate --page-increment in favor of --line-incrementGiuseppe Scrivano1-2/+13
* NEWS: Mention the change. * doc/coreutils.texi: Document the new --line-increment option. * src/nl.c (struct option): Add --line-increment, (usage): Describe it, (main): Use it.
2009-08-18build: perform check-AUTHORS via syntax-check, not via "make check"Jim Meyering1-4/+4
* src/Makefile.am (check): Don't depend on check-AUTHORS. That check fails on systems for which a program like stdbuf is not built. Instead, move this check to "make syntax-check". (sc_check-AUTHORS): Rename rule from check-AUTHORS. * cfg.mk (sc_check-AUTHORS): New rule. Reported by Berhnard Voelker.
2009-08-18sort: use more portable initialization syntaxJim Meyering1-4/+23
* src/sort.c (find_unit_order): Spell out 256-element static initializer, rather than relying on C99 syntax. Required for Forte Developer 7 C 5.4 2002/03/09 on Solaris 10. Reported by Bernhard Voelker.
2009-08-14cp,mv: fix issues with preserving timestamps of copied symlinksPádraig Brady1-8/+11
* src/copy.c (copy_internal): On systems without utimensat don't use utimens on a symlink, as that would dereference the symlink. * tests/cp/abuse: To work around possible attribute preservation failures breaking the test, use cp -dR rather than cp -a.
2009-08-13tail: fix tail -f failure when inotify usedPádraig Brady1-3/+2
* src/tail.c (tail_forever_inotify): Remove the redundant and incorrect error check of the return from inotify_add_watch(). Also initialize the wd member of each File_spec to an invalid value. Reported by C de-Avillez.
2009-08-13dd: fix a signal handling racePádraig Brady1-2/+2
* src/dd.c (main): Install the signal handlers at startup rather than just before the copy starts. In this way signals received before the copy (like during a slow truncate for e.g.) will be deferred and handled consistently. * THANKS: Add Bernhard's email address. * NEWS: Mention the fix. Reported by Bernhard Voelker.
2009-08-10nl, pinky: replace uses of strcatJim Meyering2-11/+7
* src/nl.c (main): Avoid strcat, on principle. Use stpcpy instead. * src/pinky.c (print_long_entry): Likewise.
2009-08-07cp: accept the --reflink optionGiuseppe Scrivano5-6/+29
* NEWS: Mention it. * doc/coreutils.texi (cp invocation): Describe it. * src/copy.h (struct cp_options) [reflink]: New member. * src/copy.c (usage): Describe it. (copy_reg): If reflink is true try to clone the file. (main): Check for --reflink. (cp_option_init): Initialize the new member. * src/install.c (cp_option_init): Initialize the new member. * src/mv.c (cp_option_init): Likewise. * tests/cp/sparse: Add a new test case.