Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/sommerfeld_i386mp_1]: src/sys/arch/i386/stand/lib add new macro BOOT_FLA...
details: https://anonhg.NetBSD.org/src/rev/18b380c41b18
branches: sommerfeld_i386mp_1
changeset: 482305:18b380c41b18
user: jdolecek <jdolecek%NetBSD.org@localhost>
date: Sun Sep 24 12:32:36 2000 +0000
description:
add new macro BOOT_FLAG() (defined in <sys/boot_flag.h>) - this
maps standard boot flags to corresponding RB_* values
use BOOT_FLAG() in port's MD code as appropriate
as discussed on tech-kern, add new boot flags -v, -q for booting
verbosely or quietly, and corresponding AB_VERBOSE/AB_QUIET
boot flags; also add FreeBSD-compatible bootverbose macro and
NetBSD-specific bootquiet macro
for hpcmips, use new bootverbose instead of it's own hpcmips_verbose
Tested on i386, and to limited extend (compile of affected files) also for
mvme68k, hp300, luna68k, sun3.
diffstat:
sys/arch/i386/stand/lib/parseutils.c | 136 +++++++++++++++++++++++++++++++++++
1 files changed, 136 insertions(+), 0 deletions(-)
diffs (140 lines):
diff -r ece9412fc12d -r 18b380c41b18 sys/arch/i386/stand/lib/parseutils.c
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sys/arch/i386/stand/lib/parseutils.c Sun Sep 24 12:32:36 2000 +0000
@@ -0,0 +1,136 @@
+/* $NetBSD: parseutils.c,v 1.3.2.2 2000/09/24 12:32:36 jdolecek Exp $ */
+
+/*
+ * Copyright (c) 1996, 1997
+ * Matthias Drochner. All rights reserved.
+ * Copyright (c) 1996, 1997
+ * Perry E. Metzger. All rights reserved.
+ * Copyright (c) 1997
+ * Jason R. Thorpe. 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.
+ * 3. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgements:
+ * This product includes software developed for the NetBSD Project
+ * by Matthias Drochner.
+ * This product includes software developed for the NetBSD Project
+ * by Perry E. Metzger.
+ * 4. The names of the authors may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * 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 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.
+ */
+
+#include <lib/libkern/libkern.h>
+#include <lib/libsa/stand.h>
+#include <sys/boot_flag.h>
+
+#include "libi386.h"
+
+/*
+ * chops the head from the arguments and returns the arguments if any,
+ * or possibly an empty string.
+ */
+char *
+gettrailer(arg)
+ char *arg;
+{
+ char *options;
+
+ if ((options = strchr(arg, ' ')) == NULL)
+ return ("");
+ else
+ *options++ = '\0';
+
+ /* trim leading blanks */
+ while (*options && *options == ' ')
+ options++;
+
+ return (options);
+}
+
+int
+parseopts(opts, howto)
+ const char *opts;
+ int *howto;
+{
+ int r, tmpopt = 0;
+
+ opts++; /* skip - */
+ while (*opts && *opts != ' ') {
+ r = 0;
+ BOOT_FLAG(*opts, r);
+ if (r == 0) {
+ printf("-%c: unknown flag\n", *opts);
+ command_help(NULL);
+ return(0);
+ }
+ tmpopt |= r;
+ opts++;
+ }
+
+ *howto = tmpopt;
+ return(1);
+}
+
+int
+parseboot(arg, filename, howto)
+ char *arg;
+ char **filename;
+ int *howto;
+{
+ char *opts = NULL;
+
+ *filename = 0;
+ *howto = 0;
+
+ /* if there were no arguments */
+ if (!*arg)
+ return(1);
+
+ /* format is... */
+ /* [[xxNx:]filename] [-adqsv] */
+
+ /* check for just args */
+ if (arg[0] == '-')
+ opts = arg;
+ else {
+ /* there's a file name */
+ *filename = arg;
+
+ opts = gettrailer(arg);
+ if (!*opts)
+ opts = NULL;
+ else if (*opts != '-') {
+ printf("invalid arguments\n");
+ command_help(NULL);
+ return(0);
+ }
+ }
+
+ /* at this point, we have dealt with filenames. */
+
+ /* now, deal with options */
+ if (opts) {
+ if (parseopts(opts, howto) == 0)
+ return(0);
+ }
+
+ return(1);
+}
Home |
Main Index |
Thread Index |
Old Index