summaryrefslogtreecommitdiff
path: root/ChangeLog
diff options
context:
space:
mode:
authorJim Meyering <jim@meyering.net>2007-09-22 10:02:09 +0200
committerJim Meyering <jim@meyering.net>2007-09-22 13:27:57 +0200
commita7ec8caffe1a48590f5e3da9400080ab8a6ec303 (patch)
tree2f60406ee7f34139c53def242c7bf89005074761 /ChangeLog
parent920b4416c147ecb76731137158da8bcc9041fecd (diff)
downloadcoreutils-a7ec8caffe1a48590f5e3da9400080ab8a6ec303.tar.xz
rm: give a sensible diagnostic when failing to remove a symlink
On some systems (those with openat et al), when rm would fail to remove a symlink, it would fail with the misleading diagnostic, "Too many levels of symbolic links". * NEWS: Mention the bug fix. * src/remove.c (is_nondir_lstat): New function. (remove_entry): Use it to catch failed-to-remove symlink (and any other non-dir) here so that we don't fall through and try to treat it as directory, which -- with a symlink -- would provoke the bogus ELOOP failure. * tests/rm/fail-eacces: Add a test for the above. * src/c99-to-c89.diff: Adjust offsets.
Diffstat (limited to 'ChangeLog')
-rw-r--r--ChangeLog13
1 files changed, 13 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index 730ba2297..d96f4aa0f 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,18 @@
2007-09-22 Jim Meyering <jim@meyering.net>
+ rm: give a sensible diagnostic when failing to remove a symlink
+ On some systems (those with openat et al), when rm would fail to
+ remove a symlink, it would fail with the misleading diagnostic,
+ "Too many levels of symbolic links".
+ * NEWS: Mention the bug fix.
+ * src/remove.c (is_nondir_lstat): New function.
+ (remove_entry): Use it to catch failed-to-remove symlink (and any
+ other non-dir) here so that we don't fall through and try to treat
+ it as directory, which -- with a symlink -- would provoke the bogus
+ ELOOP failure.
+ * tests/rm/fail-eacces: Add a test for the above.
+ * src/c99-to-c89.diff: Adjust offsets.
+
rm: fix a tiny, nearly inconsequential bug.
Don't perform a "."-relative lstat, when the file in question
may well not be in ".". Although this is a bug, a few attempts