svn commit: r249948 - head/bin/rm
Eitan Adler
eadler at FreeBSD.org
Fri Apr 26 17:45:39 UTC 2013
Author: eadler
Date: Fri Apr 26 17:45:37 2013
New Revision: 249948
URL: http://svnweb.freebsd.org/changeset/base/249948
Log:
Add -x option to avoid crossing mount points when removing a hierarchy.
Discussed on: -hackers
Inspired by: DragonflyBSD
MFC After: 1 week
Modified:
head/bin/rm/rm.1
head/bin/rm/rm.c
Modified: head/bin/rm/rm.1
==============================================================================
--- head/bin/rm/rm.1 Fri Apr 26 17:28:45 2013 (r249947)
+++ head/bin/rm/rm.1 Fri Apr 26 17:45:37 2013 (r249948)
@@ -32,7 +32,7 @@
.\" @(#)rm.1 8.5 (Berkeley) 12/5/94
.\" $FreeBSD$
.\"
-.Dd March 15, 2013
+.Dd April 25, 2013
.Dt RM 1
.Os
.Sh NAME
@@ -42,7 +42,7 @@
.Sh SYNOPSIS
.Nm
.Op Fl f | i
-.Op Fl dIPRrvW
+.Op Fl dIPRrvWx
.Ar
.Nm unlink
.Ar file
@@ -132,6 +132,8 @@ Attempt to undelete the named files.
Currently, this option can only be used to recover
files covered by whiteouts in a union file system (see
.Xr undelete 2 ) .
+.It Fl x
+When removing a hierarchy, do not cross mount points.
.El
.Pp
The
Modified: head/bin/rm/rm.c
==============================================================================
--- head/bin/rm/rm.c Fri Apr 26 17:28:45 2013 (r249947)
+++ head/bin/rm/rm.c Fri Apr 26 17:45:37 2013 (r249948)
@@ -59,7 +59,7 @@ __FBSDID("$FreeBSD$");
#include <unistd.h>
static int dflag, eval, fflag, iflag, Pflag, vflag, Wflag, stdin_ok;
-static int rflag, Iflag;
+static int rflag, Iflag, xflag;
static uid_t uid;
static volatile sig_atomic_t info;
@@ -106,8 +106,8 @@ main(int argc, char *argv[])
exit(eval);
}
- Pflag = rflag = 0;
- while ((ch = getopt(argc, argv, "dfiIPRrvW")) != -1)
+ Pflag = rflag = xflag = 0;
+ while ((ch = getopt(argc, argv, "dfiIPRrvWx")) != -1)
switch(ch) {
case 'd':
dflag = 1;
@@ -136,6 +136,9 @@ main(int argc, char *argv[])
case 'W':
Wflag = 1;
break;
+ case 'x':
+ xflag = 1;
+ break;
default:
usage();
}
@@ -196,6 +199,8 @@ rm_tree(char **argv)
flags |= FTS_NOSTAT;
if (Wflag)
flags |= FTS_WHITEOUT;
+ if (xflag)
+ flags |= FTS_XDEV;
if (!(fts = fts_open(argv, flags, NULL))) {
if (fflag && errno == ENOENT)
return;
@@ -624,7 +629,7 @@ usage(void)
{
(void)fprintf(stderr, "%s\n%s\n",
- "usage: rm [-f | -i] [-dIPRrvW] file ...",
+ "usage: rm [-f | -i] [-dIPRrvWx] file ...",
" unlink file");
exit(EX_USAGE);
}
More information about the svn-src-all
mailing list