Added -q to return to Motorola bug.
authorgvf <gvf@openbsd.org>
Thu, 17 Apr 1997 19:16:39 +0000 (19:16 +0000)
committergvf <gvf@openbsd.org>
Thu, 17 Apr 1997 19:16:39 +0000 (19:16 +0000)
Added loop to prompt for kernel name if it is not found.

sys/arch/mvme68k/stand/bootsd/boot.c
sys/arch/mvme68k/stand/libsa/libsa.h
sys/arch/mvme68k/stand/libsa/parse_args.c

index 646dcb1..1fcc0bd 100644 (file)
 int debug;
 int errno;
 extern char *version;
+char   line[80];
 
 int
 main()
 {
        char *cp, *file;
-       int     io, flag;
+       int     io, flag, ret;
+       int     ask = 0;
 
        printf(">> OpenBSD MVME%x bootsd [%s]\n", bugargs.cputyp, version);
 
-       parse_args(&file, &flag);
+       ret = parse_args(&file, &flag);
 
-       exec_mvme(file, flag);
-
-       printf("boot: %s: %s\n", file, strerror(errno));
+       for (;;) {
+               if (ask) {
+                       printf("boot: ");
+                       gets(line);
+                       if (line[0]) {
+                               bugargs.arg_start = line;
+                               cp = line;
+                               while (cp < (line + sizeof(line) -1) && *cp)
+                                       cp++;
+                               bugargs.arg_end = cp;
+                               ret = parse_args(&file, &flag);
+                       }
+               }
+               if ( ret == -1 ) {
+                       printf("boot: -q returning to MVME-Bug\n");
+                       break;
+               }
+               exec_mvme(file, flag);
+               printf("boot: %s: %s\n", file, strerror(errno));
+               ask = 1;
+       }
        return(0);
 }
index 3657bc0..eff5fd7 100644 (file)
@@ -14,5 +14,5 @@ int bugscstrategy __P((void *, int, daddr_t, size_t, void *, size_t *));
 void exec_mvme __P((char *, int));
 
 /* parse_args.c */
-void parse_args __P((char **, int *));
+int parse_args __P((char **, int *));
 
index 2cdc474..25cecfc 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: parse_args.c,v 1.2 1996/07/27 11:28:15 deraadt Exp $ */
+/*     $OpenBSD: parse_args.c,v 1.3 1997/04/17 19:16:42 gvf Exp $ */
 
 /*-
  * Copyright (c) 1995 Theo de Raadt
@@ -56,7 +56,7 @@ struct flags {
        { 's', RB_SINGLE },
 };
 
-void
+int
 parse_args(filep, flagp)
 
 char **filep;
@@ -83,6 +83,8 @@ int *flagp;
                                continue;
                        }
                        while ((c = *++ptr) && c != ' ') {
+                               if (c == 'q')
+                                       return (-1);
                                for (i = 0; i < sizeof(bf)/sizeof(bf[0]); i++)
                                        if (bf[i].c == c) {
                                                howto |= bf[i].bit;
@@ -92,4 +94,5 @@ int *flagp;
        }
        *flagp = howto;
        *filep = name;
+       return (0);
 }