diff --git a/src/config.h b/src/config.h index cedd68bc..088d448a 100644 --- a/src/config.h +++ b/src/config.h @@ -116,6 +116,7 @@ * */ #define NVO_CMD /* Non-volatile option storage commands */ +#define CONFIG_CMD /* Option configuration console */ /* @END general.h */ diff --git a/src/core/config.c b/src/core/config.c index fa3a4b0f..c8ec9362 100644 --- a/src/core/config.c +++ b/src/core/config.c @@ -146,6 +146,9 @@ REQUIRE_OBJECT ( pxe ); #ifdef NVO_CMD REQUIRE_OBJECT ( nvo_cmd ); #endif +#ifdef CONFIG_CMD +REQUIRE_OBJECT ( config_cmd ); +#endif /* * Drag in miscellaneous objects diff --git a/src/hci/commands/config_cmd.c b/src/hci/commands/config_cmd.c new file mode 100644 index 00000000..fc21c67f --- /dev/null +++ b/src/hci/commands/config_cmd.c @@ -0,0 +1,35 @@ +#include +#include +#include +#include +#include + + +#include +extern struct nvo_block *ugly_nvo_hack; + + +static int config_exec ( int argc, char **argv ) { + struct config_context dummy_context; + + if ( argc != 1 ) { + printf ( "Usage: %s\n" + "Opens the option configuration console\n", argv[0] ); + return 1; + } + + if ( ! ugly_nvo_hack ) { + printf ( "No non-volatile option storage available\n" ); + return 1; + } + + dummy_context.options = ugly_nvo_hack->options; + settings_ui ( &dummy_context ); + + return 0; +} + +struct command config_command __command = { + .name = "config", + .exec = config_exec, +}; diff --git a/src/include/gpxe/settings_ui.h b/src/include/gpxe/settings_ui.h new file mode 100644 index 00000000..59fc3cbd --- /dev/null +++ b/src/include/gpxe/settings_ui.h @@ -0,0 +1,14 @@ +#ifndef _GPXE_SETTINGS_UI_H +#define _GPXE_SETTINGS_UI_H + +/** @file + * + * Option configuration console + * + */ + +struct config_context; + +extern void settings_ui ( struct config_context *context ); + +#endif /* _GPXE_SETTINGS_UI_H */