svn commit: r199650 - stable/8/sys/boot/common
Attilio Rao
attilio at FreeBSD.org
Sun Nov 22 15:57:08 UTC 2009
Author: attilio
Date: Sun Nov 22 15:57:08 2009
New Revision: 199650
URL: http://svn.freebsd.org/changeset/base/199650
Log:
MFC r199210:
Introduce the new loader compile-time option BOOT_PROMPT_123 which allows
to enter the loader prompt just after entering the sequence "123".
Sponsored by: Sandvine Incorporated
Modified:
stable/8/sys/boot/common/Makefile.inc
stable/8/sys/boot/common/boot.c
Directory Properties:
stable/8/sys/ (props changed)
stable/8/sys/amd64/include/xen/ (props changed)
stable/8/sys/cddl/contrib/opensolaris/ (props changed)
stable/8/sys/contrib/dev/acpica/ (props changed)
stable/8/sys/contrib/pf/ (props changed)
stable/8/sys/dev/xen/xenpci/ (props changed)
Modified: stable/8/sys/boot/common/Makefile.inc
==============================================================================
--- stable/8/sys/boot/common/Makefile.inc Sun Nov 22 15:53:39 2009 (r199649)
+++ stable/8/sys/boot/common/Makefile.inc Sun Nov 22 15:57:08 2009 (r199650)
@@ -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
Modified: stable/8/sys/boot/common/boot.c
==============================================================================
--- stable/8/sys/boot/common/boot.c Sun Nov 22 15:53:39 2009 (r199649)
+++ stable/8/sys/boot/common/boot.c Sun Nov 22 15:57:08 2009 (r199650)
@@ -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) {
More information about the svn-src-all
mailing list