From owner-svn-src-all@FreeBSD.ORG Thu Nov 12 01:30:18 2009 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 40CEC106566C; Thu, 12 Nov 2009 01:30:18 +0000 (UTC) (envelope-from attilio@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 2F7158FC13; Thu, 12 Nov 2009 01:30:18 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id nAC1UHCk013752; Thu, 12 Nov 2009 01:30:17 GMT (envelope-from attilio@svn.freebsd.org) Received: (from attilio@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id nAC1UHbK013749; Thu, 12 Nov 2009 01:30:17 GMT (envelope-from attilio@svn.freebsd.org) Message-Id: <200911120130.nAC1UHbK013749@svn.freebsd.org> From: Attilio Rao Date: Thu, 12 Nov 2009 01:30:17 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r199210 - head/sys/boot/common X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 12 Nov 2009 01:30:18 -0000 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) {