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