Date: Thu, 12 Nov 2009 01:30:17 +0000 (UTC) From: Attilio Rao <attilio@FreeBSD.org> To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r199210 - head/sys/boot/common Message-ID: <200911120130.nAC1UHbK013749@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: attilio Date: Thu Nov 12 01:30:17 2009 New Revision: 199210 URL: http://svn.freebsd.org/changeset/base/199210 Log: Introduce a new option (BOOT_PROMPT_123) that lets enter the boot prompt only when typing the sequence "123" (opposite to the standard 'push any button' approach). That results useful when using serial lines sending garbage and leading to unwilling boot prompt appearence. Obtained from: Sandvine Incorporated Reviewed by: emaste, jhb Sponsored by: Sandvine Incorporated MFC: 1 week Modified: head/sys/boot/common/Makefile.inc head/sys/boot/common/boot.c Modified: head/sys/boot/common/Makefile.inc ============================================================================== --- head/sys/boot/common/Makefile.inc Thu Nov 12 00:52:14 2009 (r199209) +++ head/sys/boot/common/Makefile.inc Thu Nov 12 01:30:17 2009 (r199210) @@ -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: head/sys/boot/common/boot.c ============================================================================== --- head/sys/boot/common/boot.c Thu Nov 12 00:52:14 2009 (r199209) +++ head/sys/boot/common/boot.c Thu Nov 12 01:30:17 2009 (r199210) @@ -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) {
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200911120130.nAC1UHbK013749>