*BSD News Article 13105


Return to BSD News archive

Path: sserve!newshost.anu.edu.au!munnari.oz.au!news.Hawaii.Edu!ames!haven.umd.edu!uunet!not-for-mail
From: sef@Kithrup.COM (Sean Eric Fagan)
Newsgroups: comp.os.386bsd.bugs
Subject: patch for bin/rm/rm.c
Date: 22 Mar 1993 15:35:57 -0800
Organization: Kithrup Enterprises, Ltd.
Lines: 137
Sender: sef@ftp.UU.NET
Message-ID: <1oligtINN6mj@ftp.UU.NET>
NNTP-Posting-Host: ftp.uu.net

"rm -f" doesn't work properly; it actually complains.  (How silly!)
Here is a patch file that should fix it.

*** rm.c.~1~	Mon Apr  8 14:52:58 1991
--- rm.c	Mon Mar 22 15:29:40 1993
***************
*** 98,104 ****
  
  	checkdot(argv);
  	if (!*argv)
! 		exit(retval);
  
  	stdin_ok = isatty(STDIN_FILENO);
  
--- 98,104 ----
  
  	checkdot(argv);
  	if (!*argv)
! 		exit(fflag ? 0 : retval);
  
  	stdin_ok = isatty(STDIN_FILENO);
  
***************
*** 106,112 ****
  		rmtree(argv);
  	else
  		rmfile(argv);
! 	exit(retval);
  }
  
  rmtree(argv)
--- 106,112 ----
  		rmtree(argv);
  	else
  		rmfile(argv);
! 	exit(fflag ? 0 : retval);
  }
  
  rmtree(argv)
***************
*** 131,137 ****
  
  	if (!(fts = fts_open(argv,
  	    needstat ? FTS_PHYSICAL : FTS_PHYSICAL|FTS_NOSTAT,
! 	    (int (*)())NULL))) {
  		(void)fprintf(stderr, "rm: %s.\n", strerror(errno));
  		exit(1);
  	}
--- 131,137 ----
  
  	if (!(fts = fts_open(argv,
  	    needstat ? FTS_PHYSICAL : FTS_PHYSICAL|FTS_NOSTAT,
! 	    (int (*)())NULL)) && !fflag) {
  		(void)fprintf(stderr, "rm: %s.\n", strerror(errno));
  		exit(1);
  	}
***************
*** 181,187 ****
  			if (errno == ENOENT) {
  				if (fflag)
  					continue;
! 			} else if (p->fts_info != FTS_DP)
  				(void)fprintf(stderr,
  				    "rm: unable to read %s.\n", p->fts_path);
  		} else if (!unlink(p->fts_accpath) || fflag && errno == ENOENT)
--- 181,187 ----
  			if (errno == ENOENT) {
  				if (fflag)
  					continue;
! 			} else if (p->fts_info != FTS_DP && !fflag)
  				(void)fprintf(stderr,
  				    "rm: unable to read %s.\n", p->fts_path);
  		} else if (!unlink(p->fts_accpath) || fflag && errno == ENOENT)
***************
*** 209,215 ****
  				error(f, errno);
  			continue;
  		}
! 		if (S_ISDIR(sb.st_mode) && !df) {
  			(void)fprintf(stderr, "rm: %s: is a directory\n", f);
  			retval = 1;
  			continue;
--- 209,215 ----
  				error(f, errno);
  			continue;
  		}
! 		if (S_ISDIR(sb.st_mode) && !df  && !fflag) {
  			(void)fprintf(stderr, "rm: %s: is a directory\n", f);
  			retval = 1;
  			continue;
***************
*** 241,246 ****
--- 241,247 ----
  		if (S_ISLNK(sp->st_mode) || !stdin_ok || !access(name, W_OK))
  			return(1);
  		strmode(sp->st_mode, modep);
+ 		if (!fflag)
  			(void)fprintf(stderr, "override %s%s%s/%s for %s? ",
  				      modep + 1, modep[9] == ' ' ? "" : " ",
  				      user_from_uid(sp->st_uid, 0),
***************
*** 268,274 ****
  		else
  			p = *t;
  		if (ISDOT(p)) {
! 			if (!complained++)
  			    (void)fprintf(stderr,
  				"rm: \".\" and \"..\" may not be removed.\n");
  			retval = 1;
--- 269,275 ----
  		else
  			p = *t;
  		if (ISDOT(p)) {
! 			if (!complained++ && !fflag)
  			    (void)fprintf(stderr,
  				"rm: \".\" and \"..\" may not be removed.\n");
  			retval = 1;
***************
*** 283,288 ****
--- 284,290 ----
  	char *name;
  	int val;
  {
+ 	if (!fflag)
  		(void)fprintf(stderr, "rm: %s: %s.\n", name, strerror(val));
  	retval = 1;
  }
***************
*** 289,294 ****
--- 291,297 ----
  
  usage()
  {
+ 	if (!fflag)
  		(void)fprintf(stderr, "usage: rm [-dfiRr] file ...\n");
  	exit(1);
  }