aboutsummaryrefslogtreecommitdiffstats
path: root/gpxe/src/core/main.c
diff options
context:
space:
mode:
authorH. Peter Anvin <hpa@zytor.com>2008-03-31 05:27:05 -0700
committerH. Peter Anvin <hpa@zytor.com>2008-03-31 05:27:05 -0700
commit1a8b87b10c173c2be5f384d68cf75395483a3230 (patch)
tree96dba02f2a85e46ba0e9aa14e7adc964874d8aa9 /gpxe/src/core/main.c
parent162a7e92138ed5c01c4a4c2168ab1126a7d9d685 (diff)
downloadsyslinux.git-1a8b87b10c173c2be5f384d68cf75395483a3230.tar.gz
syslinux.git-1a8b87b10c173c2be5f384d68cf75395483a3230.tar.xz
syslinux.git-1a8b87b10c173c2be5f384d68cf75395483a3230.zip
Merge gpxe-for-syslinux
Merge gpxe-for-syslinux up to commit 71c509be409820a12efeebf31f486e144c9efdae; upstream commit b107637008d15e00a4d95cdb5c8f5c11fda490f7.
Diffstat (limited to 'gpxe/src/core/main.c')
-rw-r--r--gpxe/src/core/main.c34
1 files changed, 31 insertions, 3 deletions
diff --git a/gpxe/src/core/main.c b/gpxe/src/core/main.c
index 3295feaf..ca62db25 100644
--- a/gpxe/src/core/main.c
+++ b/gpxe/src/core/main.c
@@ -14,26 +14,54 @@ Literature dealing with the network protocols:
**************************************************************************/
+#include <stdio.h>
#include <gpxe/init.h>
+#include <gpxe/features.h>
#include <gpxe/shell.h>
#include <gpxe/shell_banner.h>
#include <usr/autoboot.h>
+#define NORMAL "\033[0m"
+#define BOLD "\033[1m"
+#define CYAN "\033[36m"
+
+static struct feature features[0] __table_start ( struct feature, features );
+static struct feature features_end[0] __table_end ( struct feature, features );
+
/**
* Main entry point
*
* @ret rc Return status code
*/
__cdecl int main ( void ) {
+ struct feature *feature;
initialise();
startup();
- if ( shell_banner() )
+ /* Print welcome banner */
+ printf ( NORMAL "\n\n\n" BOLD "gPXE " VERSION
+ NORMAL " -- Open Source Boot Firmware -- "
+ CYAN "http://etherboot.org" NORMAL "\n"
+ "Features:" );
+ for ( feature = features ; feature < features_end ; feature++ )
+ printf ( " %s", feature->name );
+ printf ( "\n" );
+
+ /* Prompt for shell */
+ if ( shell_banner() ) {
+ /* User wants shell; just give them a shell */
shell();
- else
+ } else {
+ /* User doesn't want shell; try booting. If booting
+ * fails, offer a second chance to enter the shell for
+ * diagnostics.
+ */
autoboot();
-
+ if ( shell_banner() )
+ shell();
+ }
+
shutdown();
return 0;