diff options
author | chuck <chuck@cvs.openbsd.org> | 1996-05-16 02:30:39 +0000 |
---|---|---|
committer | chuck <chuck@cvs.openbsd.org> | 1996-05-16 02:30:39 +0000 |
commit | 97750c06b0d2986f4e0281b923e3d51f8480467e (patch) | |
tree | e31c3b69157c2f6c2126fca12b20353f51e6538d /sys/arch/mvme68k/stand/libsa/parse_args.c | |
parent | 1c147e3e4be7c34db0d985e42f325e8d444fcf63 (diff) |
sync with sun3 port.
major reorg. & cleanup.
new SRT that works with bugcrt.
common parse_arg.
Diffstat (limited to 'sys/arch/mvme68k/stand/libsa/parse_args.c')
-rw-r--r-- | sys/arch/mvme68k/stand/libsa/parse_args.c | 94 |
1 files changed, 94 insertions, 0 deletions
diff --git a/sys/arch/mvme68k/stand/libsa/parse_args.c b/sys/arch/mvme68k/stand/libsa/parse_args.c new file mode 100644 index 00000000000..69f678afbc4 --- /dev/null +++ b/sys/arch/mvme68k/stand/libsa/parse_args.c @@ -0,0 +1,94 @@ +/* $OpenBSD: parse_args.c,v 1.1 1996/05/16 02:30:37 chuck Exp $ */ + +/*- + * Copyright (c) 1995 Theo de Raadt + * + * 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 acknowledgement: + * This product includes software developed under OpenBSD by + * Theo de Raadt for Willowglen Singapore. + * 4. The name of the author 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 <sys/param.h> +#include <sys/reboot.h> +#include <machine/prom.h> +#include <a.out.h> + +#include "stand.h" +#include "libsa.h" + +#define KERNEL_NAME "bsd" + +struct flags { + char c; + short bit; +} bf[] = { + { 'a', RB_ASKNAME }, + { 'b', RB_HALT }, + { 'y', RB_NOSYM }, + { 'd', RB_KDB }, + { 'm', RB_MINIROOT }, + { 'r', RB_DFLTROOT }, + { 's', RB_SINGLE }, +}; + +void +parse_args(filep, flagp) + +char **filep; +int *flagp; + +{ + char *name = KERNEL_NAME, *ptr; + int i, howto = 0; + char c; + + if (bugargs.arg_start != bugargs.arg_end) { + ptr = bugargs.arg_start; + while (c = *ptr) { + while (c == ' ') + c = *++ptr; + if (c == '\0') + return; + if (c != '-') { + name = ptr; + while ((c = *++ptr) && c != ' ') + ; + if (c) + *ptr++ = 0; + continue; + } + while ((c = *++ptr) && c != ' ') { + for (i = 0; i < sizeof(bf)/sizeof(bf[0]); i++) + if (bf[i].c == c) { + howto |= bf[i].bit; + } + } + } + } + *flagp = howto; + *filep = name; +} |