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 [EMAIL PROTECTED]
with "unsubscribe freebsd-current" in the body of the message

Reply via email to