summaryrefslogtreecommitdiffstats
path: root/sys/boot/common
diff options
context:
space:
mode:
Diffstat (limited to 'sys/boot/common')
-rw-r--r--sys/boot/common/Makefile.inc4
-rw-r--r--sys/boot/common/boot.c18
2 files changed, 22 insertions, 0 deletions
diff --git a/sys/boot/common/Makefile.inc b/sys/boot/common/Makefile.inc
index 9ede386..1f31aa9 100644
--- a/sys/boot/common/Makefile.inc
+++ b/sys/boot/common/Makefile.inc
@@ -38,4 +38,8 @@ MAN+= ../forth/loader.conf.5
MAN+= ../forth/loader.4th.8
.endif
+.if defined(BOOT_PROMPT_123)
+CFLAGS+= -DBOOT_PROMPT_123
+.endif
+
MAN+= loader.8
diff --git a/sys/boot/common/boot.c b/sys/boot/common/boot.c
index 315c039..c6ab681 100644
--- a/sys/boot/common/boot.c
+++ b/sys/boot/common/boot.c
@@ -162,6 +162,9 @@ autoboot(int timeout, char *prompt)
int c, yes;
char *argv[2], *cp, *ep;
char *kernelname;
+#ifdef BOOT_PROMPT_123
+ const char *seq = "123", *p = seq;
+#endif
autoboot_tried = 1;
@@ -192,14 +195,29 @@ autoboot(int timeout, char *prompt)
yes = 0;
+#ifdef BOOT_PROMPT_123
+ printf("%s\n", (prompt == NULL) ? "Hit [Enter] to boot immediately, or "
+ "1 2 3 sequence for command prompt." : prompt);
+#else
printf("%s\n", (prompt == NULL) ? "Hit [Enter] to boot immediately, or any other key for command prompt." : prompt);
+#endif
for (;;) {
if (ischar()) {
c = getchar();
+#ifdef BOOT_PROMPT_123
+ if ((c == '\r') || (c == '\n')) {
+ yes = 1;
+ break;
+ } else if (c != *p++)
+ p = seq;
+ if (*p == 0)
+ break;
+#else
if ((c == '\r') || (c == '\n'))
yes = 1;
break;
+#endif
}
ntime = time(NULL);
if (ntime >= when) {
OpenPOWER on IntegriCloud