bug-fileutils
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: rm 4.1.9 and dangling symlinks


From: Jim Meyering
Subject: Re: rm 4.1.9 and dangling symlinks
Date: Thu, 04 Jul 2002 14:09:23 +0200
User-agent: Gnus/5.090006 (Oort Gnus v0.06) Emacs/21.3.50 (i686-pc-linux-gnu)

Mike Castle <address@hidden> wrote:
> Not sure if this is a bug or feature (or even Linux specific).
>
> address@hidden:30pm]~(937) ls foo bar
> ls: foo: No such file or directory
> ls: bar: No such file or directory
> address@hidden:31pm]~(938) ln -s foo bar
> address@hidden:31pm]~(939) rm bar
> rm: remove symbolic link `bar'? y
> address@hidden:31pm]~(940) ln -s foo bar
> address@hidden:31pm]~(941) rm -f bar
> address@hidden:31pm]~(942) rm --version
> rm (fileutils) 4.1.9
> address@hidden:31pm]~(943) touch foo
> address@hidden:32pm]~(946) ln -s foo bar
> address@hidden:32pm]~(947) rm bar
>
> In the dangling symlink case, should it be prompting about removal?

Thanks a lot for the report!
It's a bug.

Here's a fix:

        * src/remove.c (prompt): Fix test for write-protectedness to also
        check errno == EACCES.  Otherwise, `rm dangling-symlink' would
        mistakenly prompt.  Reported by Mike Castle.

        * tests/rm/Makefile.am (TESTS): Add dangling-symlink.
        * tests/rm/dangling-symlink: New file/test, for the above fix.

Index: src/remove.c
===================================================================
RCS file: /fetish/fileutils/src/remove.c,v
retrieving revision 1.56
retrieving revision 1.57
diff -u -p -u -r1.56 -r1.57
--- src/remove.c        29 Jun 2002 11:50:38 -0000      1.56
+++ src/remove.c        4 Jul 2002 12:06:49 -0000       1.57
@@ -560,7 +560,7 @@ prompt (char const *filename, struct rm_
   *is_dir = T_UNKNOWN;
 
   if ((!x->ignore_missing_files && (x->interactive || x->stdin_tty)
-       && (write_protected = euidaccess (filename, W_OK)))
+       && (write_protected = (euidaccess (filename, W_OK) && errno == EACCES)))
       || x->interactive)
     {
       struct stat sbuf;



reply via email to

[Prev in Thread] Current Thread [Next in Thread]