Module Name:    src
Committed By:   pooka
Date:           Wed Mar 31 13:33:14 UTC 2010

Modified Files:
        src/sbin/mount_kernfs: mount_kernfs.c
Added Files:
        src/sbin/mount_kernfs: mount_kernfs.h

Log Message:
convert to parseargs


To generate a diff of this commit:
cvs rdiff -u -r1.23 -r1.24 src/sbin/mount_kernfs/mount_kernfs.c
cvs rdiff -u -r0 -r1.1 src/sbin/mount_kernfs/mount_kernfs.h

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

Modified files:

Index: src/sbin/mount_kernfs/mount_kernfs.c
diff -u src/sbin/mount_kernfs/mount_kernfs.c:1.23 src/sbin/mount_kernfs/mount_kernfs.c:1.24
--- src/sbin/mount_kernfs/mount_kernfs.c:1.23	Mon Jul 21 13:29:05 2008
+++ src/sbin/mount_kernfs/mount_kernfs.c	Wed Mar 31 13:33:14 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: mount_kernfs.c,v 1.23 2008/07/21 13:29:05 lukem Exp $	*/
+/*	$NetBSD: mount_kernfs.c,v 1.24 2010/03/31 13:33:14 pooka Exp $	*/
 
 /*
  * Copyright (c) 1992, 1993, 1994
@@ -77,7 +77,7 @@
 #if 0
 static char sccsid[] = "@(#)mount_kernfs.c	8.3 (Berkeley) 5/4/95";
 #else
-__RCSID("$NetBSD: mount_kernfs.c,v 1.23 2008/07/21 13:29:05 lukem Exp $");
+__RCSID("$NetBSD: mount_kernfs.c,v 1.24 2010/03/31 13:33:14 pooka Exp $");
 #endif
 #endif /* not lint */
 
@@ -92,6 +92,8 @@
 
 #include <mntopts.h>
 
+#include "mount_kernfs.h"
+
 static const struct mntopt mopts[] = {
 	MOPT_STDOPTS,
 	MOPT_GETARGS,
@@ -109,18 +111,18 @@
 }
 #endif
 
-int
-mount_kernfs(int argc, char *argv[])
+void
+mount_kernfs_parseargs(int argc, char *argv[], void *dummy, int *mntflags,
+	char *canon_dev, char *canon_dir)
 {
-	int ch, mntflags;
-	char canon_dir[MAXPATHLEN];
+	int ch;
 	mntoptparse_t mp;
 
-	mntflags = 0;
+	*mntflags = 0;
 	while ((ch = getopt(argc, argv, "o:")) != -1)
 		switch (ch) {
 		case 'o':
-			mp = getmntopts(optarg, mopts, &mntflags, 0);
+			mp = getmntopts(optarg, mopts, mntflags, 0);
 			if (mp == NULL)
 				err(1, "getmntopts");
 			freemntopts(mp);
@@ -136,16 +138,26 @@
 		usage();
 
 	/* not supported, fail silently */
-	if (mntflags & MNT_GETARGS)
+	if (*mntflags & MNT_GETARGS)
 		exit(0);
 
+	strlcpy(canon_dev, argv[0], MAXPATHLEN);
 	if (realpath(argv[1], canon_dir) == NULL)    /* Check mounton path */
 		err(1, "realpath %s", argv[1]);
 	if (strncmp(argv[1], canon_dir, MAXPATHLEN)) {
 		warnx("\"%s\" is a relative path.", argv[1]);
 		warnx("using \"%s\" instead.", canon_dir);
 	}
+}
+
+int
+mount_kernfs(int argc, char *argv[])
+{
+	char canon_dev[MAXPATHLEN], canon_dir[MAXPATHLEN];
+	int mntflags;
 
+	mount_kernfs_parseargs(argc, argv, NULL, &mntflags,
+	    canon_dev, canon_dir);
 	if (mount(MOUNT_KERNFS, canon_dir, mntflags, NULL, 0) == -1)
 		err(1, "kernfs on %s", argv[1]);
 	exit(0);

Added files:

Index: src/sbin/mount_kernfs/mount_kernfs.h
diff -u /dev/null src/sbin/mount_kernfs/mount_kernfs.h:1.1
--- /dev/null	Wed Mar 31 13:33:14 2010
+++ src/sbin/mount_kernfs/mount_kernfs.h	Wed Mar 31 13:33:14 2010
@@ -0,0 +1,35 @@
+/*	$NetBSD: mount_kernfs.h,v 1.1 2010/03/31 13:33:14 pooka Exp $	*/
+
+/*
+ * Copyright (c) 2008 The NetBSD Foundation.  All Rights Reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#ifndef _SBIN_MOUNT_KERNFS_MOUNT_KERNFS_H_
+#define _SBIN_MOUNT_KERNFS_MOUNT_KERNFS_H_
+
+int	mount_kernfs(int, char **);
+void	mount_kernfs_parseargs(int, char **, void *, int *,
+			       char *, char *);
+
+#endif /* _SBIN_MOUNT_KERNFS_MOUNT_KERNFS_H_ */

Reply via email to