Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 30 Jan 2000 09:40:43 +0200
From:      Giorgos Keramidas <charon@hades.hell.gr>
To:        Jun Kuriyama <kuriyama@sky.rim.or.jp>
Cc:        current@FreeBSD.org
Subject:   Re: "rm -rf" behavior on readonly nfs
Message-ID:  <20000130094043.B10414@hades.hell.gr>
In-Reply-To: <86aeloo22e.wl@localhost.sky.rim.or.jp>; from kuriyama@sky.rim.or.jp on Sun, Jan 30, 2000 at 09:06:33AM %2B0900
References:  <86aeloo22e.wl@localhost.sky.rim.or.jp>

next in thread | previous in thread | raw e-mail | index | archive | help
On Sun, Jan 30, 2000 at 09:06:33AM +0900, Jun Kuriyama wrote:
> 
> I found difference between "rm -rf" for non-exist file on readonly nfs
> and usual non-writable directory.
> 
> In this example, /usr/src is readonly nfs mounted and /usr/bin is
> normal filesystem but not writable.  And file "a" is not exist.
> 
> -----
> % rm /usr/bin/a
> rm: /usr/bin/a: No such file or directory
> % rm -f /usr/bin/a
> % rm -rf /usr/bin/a
> % rm /usr/src/a
> rm: /usr/src/a: No such file or directory
> % rm -f /usr/src/a
> % rm -rf /usr/src/a
> rm: /usr/src/a: Read-only file system
> %
> -----
> 
> For "-f" option, last behavior is expected one, or not?

This happens on either NFS-mounted or real directories.  It think that since
the manual of rm(1) says:

     -f   Attempt to remove the files without prompting for confirma-
          tion, regardless of the file's permissions.  If the file does
          not exist, do not display a diagnostic message or modify the
          exit status to reflect an error.

it ought to print nothing in such a case.  Let me know if the small patch
shown below helps in correcting this.  I can't check this cause I got bitten
by getflags() in(s)anity last night when I cvsup'ed.

The diff -u output is:

%%% patch begins here %%%
--- /usr/src/bin/rm/rm.c        Sat Jan 29 01:14:23 2000
+++ rm.c        Sun Jan 30 09:32:18 2000
@@ -196,7 +196,9 @@
                        }
                        continue;
                case FTS_ERR:
-                       errx(1, "%s: %s", p->fts_path, strerror(p->fts_errno));
+                       if (!fflag)
+                               errx(1, "%s: %s", p->fts_path,
+                                    strerror(p->fts_errno));
                case FTS_NS:
                        /*
                         * FTS_NS: assume that if can't stat the file, it
%%% patch ends here %%%

-- 
Giorgos Keramidas, < keramida @ ceid . upatras . gr >
"Don't let your schooling interfere with your education." [Mark Twain]


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-current" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20000130094043.B10414>