Module Name:    src
Committed By:   christos
Date:           Wed Feb 17 23:30:21 UTC 2010

Modified Files:
        src/sbin/fsck: fsck.8 fsck.c

Log Message:
Add -x <mountpoint> ``exclude'' option.


To generate a diff of this commit:
cvs rdiff -u -r1.35 -r1.36 src/sbin/fsck/fsck.8
cvs rdiff -u -r1.47 -r1.48 src/sbin/fsck/fsck.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sbin/fsck/fsck.8
diff -u src/sbin/fsck/fsck.8:1.35 src/sbin/fsck/fsck.8:1.36
--- src/sbin/fsck/fsck.8:1.35	Tue Oct 20 21:07:46 2009
+++ src/sbin/fsck/fsck.8	Wed Feb 17 18:30:21 2010
@@ -1,4 +1,4 @@
-.\"	$NetBSD: fsck.8,v 1.35 2009/10/21 01:07:46 snj Exp $
+.\"	$NetBSD: fsck.8,v 1.36 2010/02/17 23:30:21 christos Exp $
 .\"
 .\" Copyright (c) 1996 Christos Zoulas.  All rights reserved.
 .\"
@@ -22,7 +22,7 @@
 .\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
 .\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 .\"
-.Dd February 23, 2008
+.Dd February 17, 2010
 .Dt FSCK 8
 .Os
 .Sh NAME
@@ -34,6 +34,7 @@
 .Op Fl l Ar maxparallel
 .Op Fl T Ar fstype:fsoptions
 .Op Fl t Ar fstype
+.Op Fl x Ar mountpoint
 .Op special | node ...
 .Sh DESCRIPTION
 The
@@ -111,6 +112,12 @@
 for the file system types that are not specified in the list.
 .It Fl v
 Print the commands before executing them.
+.It Fl x Ar mountpoint
+Exclude the filesystem which has a
+.Ar mountpoint
+the same as in
+.Pa /etc/fstab .
+Used only in ``preen'' mode.
 .It Fl y
 Causes
 .Nm

Index: src/sbin/fsck/fsck.c
diff -u src/sbin/fsck/fsck.c:1.47 src/sbin/fsck/fsck.c:1.48
--- src/sbin/fsck/fsck.c:1.47	Sat Feb 23 16:41:47 2008
+++ src/sbin/fsck/fsck.c	Wed Feb 17 18:30:21 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: fsck.c,v 1.47 2008/02/23 21:41:47 christos Exp $	*/
+/*	$NetBSD: fsck.c,v 1.48 2010/02/17 23:30:21 christos Exp $	*/
 
 /*
  * Copyright (c) 1996 Christos Zoulas. All rights reserved.
@@ -36,7 +36,7 @@
 
 #include <sys/cdefs.h>
 #ifndef lint
-__RCSID("$NetBSD: fsck.c,v 1.47 2008/02/23 21:41:47 christos Exp $");
+__RCSID("$NetBSD: fsck.c,v 1.48 2010/02/17 23:30:21 christos Exp $");
 #endif /* not lint */
 
 #include <sys/param.h>
@@ -67,7 +67,7 @@
 
 static enum { IN_LIST, NOT_IN_LIST } which = NOT_IN_LIST;
 
-TAILQ_HEAD(fstypelist, entry) opthead, selhead;
+TAILQ_HEAD(fstypelist, entry) opthead, selhead, omhead;
 
 struct entry {
 	char *type;
@@ -81,6 +81,7 @@
 
 static int checkfs(const char *, const char *, const char *, void *, pid_t *);
 static int selected(const char *);
+static int omitted(const char *);
 static void addoption(char *);
 static const char *getoptions(const char *);
 static void addentry(struct fstypelist *, const char *, const char *);
@@ -105,8 +106,9 @@
 
 	TAILQ_INIT(&selhead);
 	TAILQ_INIT(&opthead);
+	TAILQ_INIT(&omhead);
 
-	while ((i = getopt(argc, argv, "dfl:nPpqT:t:vy")) != -1) {
+	while ((i = getopt(argc, argv, "dfl:nPpqT:t:vx:y")) != -1) {
 		switch (i) {
 		case 'd':
 			flags |= CHECK_DEBUG;
@@ -152,6 +154,10 @@
 			flags |= CHECK_VERBOSE;
 			continue;
 
+		case 'x':
+			addentry(&omhead, optarg, "");
+			break;
+
 		case 'y':
 			break;
 
@@ -236,6 +242,9 @@
 	if (!selected(fs->fs_vfstype))
 		return NULL;
 
+	if (omitted(fs->fs_file))
+		return NULL;
+
 	return fs;
 }
 
@@ -391,6 +400,20 @@
 }
 
 
+static int
+omitted(const char *mountedon)
+{
+	struct entry *e;
+
+	/* If no type specified, it's always selected. */
+	TAILQ_FOREACH(e, &omhead, entries)
+		if (!strcmp(e->type, mountedon))
+			return 1;
+
+	return 0;
+}
+
+
 static const char *
 getoptions(const char *type)
 {
@@ -558,7 +581,7 @@
 usage(void)
 {
 	static const char common[] =
-	    "[-dfnPpqvy] [-l maxparallel] [-T fstype:fsoptions]\n\t\t[-t fstype]";
+	    "[-dfnPpqvy] [-x excludemount] [-l maxparallel] [-T fstype:fsoptions]\n\t\t[-t fstype]";
 
 	(void)fprintf(stderr, "usage: %s %s [special|node]...\n",
 	    getprogname(), common);

Reply via email to