Jim Meyering [Fri, 13 May 2005 07:39:50 +0000 (07:39 +0000)]
* NEWS: `rm -r' now removes all of the files it should, even on
systems with a buggy readdir affecting file systems inaccessible
at configure time.
In some unusual circumstances `rm -r' would fail to remove --
or even consider -- all entries in a directory with more than 254
(SunOS) or 338 (Darwin) entries. This could cause trouble even on
other types of systems when using an affected file system via e.g.,
NFS. The underlying cause was a bug in readdir on those systems.
Coreutils-5.2.1 and earlier used a configure-time test designed
to detect precisely those problem systems, but it would detect
the problem and enable remove.c's work-around code only when its
configure-time test was run on a losing file system. Obviously,
it couldn't detect a problem if the offending file system wasn't
tested or even mounted at coreutils configure time. Now, rm itself
performs a minimal-cost run-time test to detect the problem.
(CONSECUTIVE_READDIR_UNLINK_THRESHOLD): Define.
(remove_cwd_entries): When readdir returns NULL for a directory from
which we've removed more than CONSECUTIVE_READDIR_UNLINK_THRESHOLD
entries, call rewinddir and then resume the readdir/unlink loop.
(UNLINK_CAN_UNLINK_DIRS): Rename from ROOT_CAN_UNLINK_DIRS.
Jim Meyering [Tue, 10 May 2005 07:35:43 +0000 (07:35 +0000)]
(abandon_move): Remove erroneous UNWRITABLE check.
This makes `mv -i --reply=no f1 f2' work as expected (in not
performing the move operation). But note that specifying `-i'
after `--reply=no' does *not* work.
Tiny patch from Vlada Macek.
Paul Eggert [Mon, 9 May 2005 18:53:33 +0000 (18:53 +0000)]
(__P): Remove. All uses rewritten to assume C89 or better.
(fts_open): Don't cast a function value in a possibly-unsafe way.
(fts_compar): New function.
(fts_sort): Use it.
Paul Eggert [Mon, 9 May 2005 18:53:11 +0000 (18:53 +0000)]
(FTS): Use correct type for fts_compar member.
(FTSENT): New member fts_fts. Remove members fts_ino, fts_dev,
fts_nlink; no longer needed now that fts_statp is always there.
All uses changed to use fts_statp instead.
Paul Eggert [Sun, 8 May 2005 16:50:57 +0000 (16:50 +0000)]
* yesno.c: Include getline.h, not ctype.h.
(yesno): Don't remove leading white space; POSIX doesn't allow it.
Use getline to remove arbitrary restriction on response length.
Paul Eggert [Wed, 4 May 2005 17:22:25 +0000 (17:22 +0000)]
Include quotearg.h.
(diagnose_surprises): New var.
(process_file): Diagnose surprises. Simplify the logic a bit,
while we're at it.
(main): Prepare to diagnose surprises. Remove useless code for
'-' option.
Paul Eggert [Mon, 2 May 2005 18:40:47 +0000 (18:40 +0000)]
(usage): ls --indicator-style=directory renamed to ls
--indicator-style=slash, to avoid confusion with ls --directory.
(slash): Renamed from directory_only. All uses changed.
Paul Eggert [Sun, 1 May 2005 14:26:50 +0000 (14:26 +0000)]
(mode_free): Remove; all callers changed to invoke 'free'.
xstrtol.h, stdbool.h, stddef.h: Don't include; no longer needed.
(MODE_DONE): New constant.
(struct mode_change): Remove 'next' member.
(make_node_op_equals): New function; like the old one of the
same name, except it allocates an array.
(mode_compile, mode_create_from_ref): Use it.
(mode_compile): Allocate result as an array, not a linked list.
Parse octal string ourself, so that we catch mistakes like "+0".
(mode_adjust): Arg is an array, not a linked list.