Separated out (and tidied up) shell banner code
authorMichael Brown <mcb30@etherboot.org>
Wed, 20 Dec 2006 00:24:13 +0000 (00:24 +0000)
committerMichael Brown <mcb30@etherboot.org>
Wed, 20 Dec 2006 00:24:13 +0000 (00:24 +0000)
src/hci/shell_banner.c [new file with mode: 0644]
src/include/gpxe/shell_banner.h [new file with mode: 0644]

diff --git a/src/hci/shell_banner.c b/src/hci/shell_banner.c
new file mode 100644 (file)
index 0000000..247a105
--- /dev/null
@@ -0,0 +1,65 @@
+/*
+ * Copyright (C) 2006 Michael Brown <mbrown@fensystems.co.uk>.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include <console.h>
+#include <latch.h>
+#include <gpxe/shell_banner.h>
+
+/** @file
+ *
+ * Shell startup banner
+ *
+ */
+
+#define BANNER_TIMEOUT ( 2 * TICKS_PER_SEC )
+
+#define NORMAL "\033[0m"
+#define BOLD   "\033[1m"
+#define CYAN   "\033[36m"
+
+/**
+ * Print shell banner and prompt for shell entry
+ *
+ * @ret        enter_shell             User wants to enter shell
+ */
+int shell_banner ( void ) {
+       unsigned long timeout = ( currticks() + BANNER_TIMEOUT );
+       int key;
+       int enter_shell = 0;
+
+       /* Print welcome banner */
+       printf ( "\n\n\n" BOLD "gPXE " VERSION
+                NORMAL " -- Open Source Boot Firmware -- "
+                CYAN "http://etherboot.org" NORMAL "\n"
+                "Press Ctrl-B for the gPXE command line..." );
+
+       /* Wait for key */
+       while ( currticks() < timeout ) {
+               if ( iskey() ) {
+                       key = getchar();
+                       if ( key == 0x02 /* Ctrl-B */ )
+                               enter_shell = 1;
+                       break;
+               }
+       }
+
+       /* Clear the "Press Ctrl-B" line */
+       printf ( "\r                                         \r" );
+
+       return enter_shell;
+}
diff --git a/src/include/gpxe/shell_banner.h b/src/include/gpxe/shell_banner.h
new file mode 100644 (file)
index 0000000..f8e92a4
--- /dev/null
@@ -0,0 +1,12 @@
+#ifndef _GPXE_SHELL_BANNER_H
+#define _GPXE_SHELL_BANNER_H
+
+/** @file
+ *
+ * Shell startup banner
+ *
+ */
+
+extern int shell_banner ( void );
+
+#endif /* _GPXE_SHELL_BANNER_H */