aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/config/config.c2
-rw-r--r--src/core/dynui.c (renamed from src/core/menu.c)110
-rw-r--r--src/core/parseopt.c18
-rw-r--r--src/hci/commands/dynui_cmd.c (renamed from src/hci/commands/menu_cmd.c)109
-rw-r--r--src/hci/tui/menu_ui.c43
-rw-r--r--src/include/ipxe/dynui.h50
-rw-r--r--src/include/ipxe/errfile.h2
-rw-r--r--src/include/ipxe/menu.h49
-rw-r--r--src/include/ipxe/parseopt.h4
9 files changed, 195 insertions, 192 deletions
diff --git a/src/config/config.c b/src/config/config.c
index 209336c..6667123 100644
--- a/src/config/config.c
+++ b/src/config/config.c
@@ -225,7 +225,7 @@ REQUIRE_OBJECT ( dhcp_cmd );
REQUIRE_OBJECT ( sanboot_cmd );
#endif
#ifdef MENU_CMD
-REQUIRE_OBJECT ( menu_cmd );
+REQUIRE_OBJECT ( dynui_cmd );
#endif
#ifdef LOGIN_CMD
REQUIRE_OBJECT ( login_cmd );
diff --git a/src/core/menu.c b/src/core/dynui.c
index b9d0d5b..6e053b9 100644
--- a/src/core/menu.c
+++ b/src/core/dynui.c
@@ -25,7 +25,7 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
/** @file
*
- * Menu selection
+ * Dynamic user interfaces
*
*/
@@ -33,80 +33,80 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
#include <string.h>
#include <assert.h>
#include <ipxe/list.h>
-#include <ipxe/menu.h>
+#include <ipxe/dynui.h>
-/** List of all menus */
-static LIST_HEAD ( menus );
+/** List of all dynamic user interfaces */
+static LIST_HEAD ( dynamic_uis );
/**
- * Create menu
+ * Create dynamic user interface
*
- * @v name Menu name, or NULL
- * @v title Menu title, or NULL
- * @ret menu Menu, or NULL on failure
+ * @v name User interface name, or NULL
+ * @v title User interface title, or NULL
+ * @ret dynui Dynamic user interface, or NULL on failure
*/
-struct menu * create_menu ( const char *name, const char *title ) {
+struct dynamic_ui * create_dynui ( const char *name, const char *title ) {
+ struct dynamic_ui *dynui;
size_t name_len;
size_t title_len;
size_t len;
- struct menu *menu;
char *name_copy;
char *title_copy;
- /* Destroy any existing menu of this name */
- menu = find_menu ( name );
- if ( menu )
- destroy_menu ( menu );
+ /* Destroy any existing user interface of this name */
+ dynui = find_dynui ( name );
+ if ( dynui )
+ destroy_dynui ( dynui );
/* Use empty title if none given */
if ( ! title )
title = "";
- /* Allocate menu */
+ /* Allocate user interface */
name_len = ( name ? ( strlen ( name ) + 1 /* NUL */ ) : 0 );
title_len = ( strlen ( title ) + 1 /* NUL */ );
- len = ( sizeof ( *menu ) + name_len + title_len );
- menu = zalloc ( len );
- if ( ! menu )
+ len = ( sizeof ( *dynui ) + name_len + title_len );
+ dynui = zalloc ( len );
+ if ( ! dynui )
return NULL;
- name_copy = ( ( void * ) ( menu + 1 ) );
+ name_copy = ( ( void * ) ( dynui + 1 ) );
title_copy = ( name_copy + name_len );
- /* Initialise menu */
+ /* Initialise user interface */
if ( name ) {
strcpy ( name_copy, name );
- menu->name = name_copy;
+ dynui->name = name_copy;
}
strcpy ( title_copy, title );
- menu->title = title_copy;
- INIT_LIST_HEAD ( &menu->items );
+ dynui->title = title_copy;
+ INIT_LIST_HEAD ( &dynui->items );
- /* Add to list of menus */
- list_add_tail ( &menu->list, &menus );
+ /* Add to list of user interfaces */
+ list_add_tail ( &dynui->list, &dynamic_uis );
- DBGC ( menu, "MENU %s created with title \"%s\"\n",
- menu->name, menu->title );
+ DBGC ( dynui, "DYNUI %s created with title \"%s\"\n",
+ dynui->name, dynui->title );
- return menu;
+ return dynui;
}
/**
- * Add menu item
+ * Add dynamic user interface item
*
- * @v menu Menu
+ * @v dynui Dynamic user interface
* @v name Name, or NULL
* @v text Text, or NULL
* @v shortcut Shortcut key
* @v is_default Item is the default item
- * @ret item Menu item, or NULL on failure
+ * @ret item User interface item, or NULL on failure
*/
-struct menu_item * add_menu_item ( struct menu *menu, const char *name,
- const char *text, int shortcut,
- int is_default ) {
+struct dynamic_item * add_dynui_item ( struct dynamic_ui *dynui,
+ const char *name, const char *text,
+ int shortcut, int is_default ) {
+ struct dynamic_item *item;
size_t name_len;
size_t text_len;
size_t len;
- struct menu_item *item;
char *name_copy;
char *text_copy;
@@ -135,46 +135,46 @@ struct menu_item * add_menu_item ( struct menu *menu, const char *name,
item->is_default = is_default;
/* Add to list of items */
- list_add_tail ( &item->list, &menu->items );
+ list_add_tail ( &item->list, &dynui->items );
return item;
}
/**
- * Destroy menu
+ * Destroy dynamic user interface
*
- * @v menu Menu
+ * @v dynui Dynamic user interface
*/
-void destroy_menu ( struct menu *menu ) {
- struct menu_item *item;
- struct menu_item *tmp;
+void destroy_dynui ( struct dynamic_ui *dynui ) {
+ struct dynamic_item *item;
+ struct dynamic_item *tmp;
- /* Remove from list of menus */
- list_del ( &menu->list );
+ /* Remove from list of user interfaces */
+ list_del ( &dynui->list );
/* Free items */
- list_for_each_entry_safe ( item, tmp, &menu->items, list ) {
+ list_for_each_entry_safe ( item, tmp, &dynui->items, list ) {
list_del ( &item->list );
free ( item );
}
- /* Free menu */
- free ( menu );
+ /* Free user interface */
+ free ( dynui );
}
/**
- * Find menu
+ * Find dynamic user interface
*
- * @v name Menu name, or NULL
- * @ret menu Menu, or NULL if not found
+ * @v name User interface name, or NULL
+ * @ret dynui Dynamic user interface, or NULL if not found
*/
-struct menu * find_menu ( const char *name ) {
- struct menu *menu;
+struct dynamic_ui * find_dynui ( const char *name ) {
+ struct dynamic_ui *dynui;
- list_for_each_entry ( menu, &menus, list ) {
- if ( ( menu->name == name ) ||
- ( strcmp ( menu->name, name ) == 0 ) ) {
- return menu;
+ list_for_each_entry ( dynui, &dynamic_uis, list ) {
+ if ( ( dynui->name == name ) ||
+ ( strcmp ( dynui->name, name ) == 0 ) ) {
+ return dynui;
}
}
diff --git a/src/core/parseopt.c b/src/core/parseopt.c
index 8410e6e..b657c3f 100644
--- a/src/core/parseopt.c
+++ b/src/core/parseopt.c
@@ -33,7 +33,7 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
#include <getopt.h>
#include <ipxe/uuid.h>
#include <ipxe/netdevice.h>
-#include <ipxe/menu.h>
+#include <ipxe/dynui.h>
#include <ipxe/settings.h>
#include <ipxe/params.h>
#include <ipxe/timer.h>
@@ -194,21 +194,21 @@ int parse_netdev_configurator ( char *text,
}
/**
- * Parse menu name
+ * Parse dynamic user interface name
*
* @v text Text
- * @ret menu Menu
+ * @ret dynui Dynamic user interface
* @ret rc Return status code
*/
-int parse_menu ( char *text, struct menu **menu ) {
+int parse_dynui ( char *text, struct dynamic_ui **dynui ) {
- /* Find menu */
- *menu = find_menu ( text );
- if ( ! *menu ) {
+ /* Find user interface */
+ *dynui = find_dynui ( text );
+ if ( ! *dynui ) {
if ( text ) {
- printf ( "\"%s\": no such menu\n", text );
+ printf ( "\"%s\": no such user interface\n", text );
} else {
- printf ( "No default menu\n" );
+ printf ( "No default user interface\n" );
}
return -ENOENT;
}
diff --git a/src/hci/commands/menu_cmd.c b/src/hci/commands/dynui_cmd.c
index 8b6d2a9..dbaa669 100644
--- a/src/hci/commands/menu_cmd.c
+++ b/src/hci/commands/dynui_cmd.c
@@ -25,7 +25,7 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
/** @file
*
- * Menu commands
+ * Dynamic user interface commands
*
*/
@@ -34,7 +34,7 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
#include <string.h>
#include <errno.h>
#include <getopt.h>
-#include <ipxe/menu.h>
+#include <ipxe/dynui.h>
#include <ipxe/command.h>
#include <ipxe/parseopt.h>
#include <ipxe/settings.h>
@@ -42,42 +42,42 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
FEATURE ( FEATURE_MISC, "Menu", DHCP_EB_FEATURE_MENU, 1 );
-/** "menu" options */
-struct menu_options {
+/** "dynui" options */
+struct dynui_options {
/** Name */
char *name;
/** Delete */
int delete;
};
-/** "menu" option list */
-static struct option_descriptor menu_opts[] = {
+/** "dynui" option list */
+static struct option_descriptor dynui_opts[] = {
OPTION_DESC ( "name", 'n', required_argument,
- struct menu_options, name, parse_string ),
+ struct dynui_options, name, parse_string ),
OPTION_DESC ( "delete", 'd', no_argument,
- struct menu_options, delete, parse_flag ),
+ struct dynui_options, delete, parse_flag ),
};
-/** "menu" command descriptor */
-static struct command_descriptor menu_cmd =
- COMMAND_DESC ( struct menu_options, menu_opts, 0, MAX_ARGUMENTS,
+/** "dynui" command descriptor */
+static struct command_descriptor dynui_cmd =
+ COMMAND_DESC ( struct dynui_options, dynui_opts, 0, MAX_ARGUMENTS,
"[<title>]" );
/**
- * The "menu" command
+ * The "dynui" command
*
* @v argc Argument count
* @v argv Argument list
* @ret rc Return status code
*/
-static int menu_exec ( int argc, char **argv ) {
- struct menu_options opts;
- struct menu *menu;
+static int dynui_exec ( int argc, char **argv ) {
+ struct dynui_options opts;
+ struct dynamic_ui *dynui;
char *title;
int rc;
/* Parse options */
- if ( ( rc = parse_options ( argc, argv, &menu_cmd, &opts ) ) != 0 )
+ if ( ( rc = parse_options ( argc, argv, &dynui_cmd, &opts ) ) != 0 )
goto err_parse_options;
/* Parse title */
@@ -87,21 +87,21 @@ static int menu_exec ( int argc, char **argv ) {
goto err_parse_title;
}
- /* Create menu */
- menu = create_menu ( opts.name, title );
- if ( ! menu ) {
+ /* Create dynamic user interface */
+ dynui = create_dynui ( opts.name, title );
+ if ( ! dynui ) {
rc = -ENOMEM;
- goto err_create_menu;
+ goto err_create_dynui;
}
- /* Destroy menu, if applicable */
+ /* Destroy dynamic user interface, if applicable */
if ( opts.delete )
- destroy_menu ( menu );
+ destroy_dynui ( dynui );
/* Success */
rc = 0;
- err_create_menu:
+ err_create_dynui:
free ( title );
err_parse_title:
err_parse_options:
@@ -110,8 +110,8 @@ static int menu_exec ( int argc, char **argv ) {
/** "item" options */
struct item_options {
- /** Menu name */
- char *menu;
+ /** Dynamic user interface name */
+ char *dynui;
/** Shortcut key */
unsigned int key;
/** Use as default */
@@ -123,7 +123,7 @@ struct item_options {
/** "item" option list */
static struct option_descriptor item_opts[] = {
OPTION_DESC ( "menu", 'm', required_argument,
- struct item_options, menu, parse_string ),
+ struct item_options, dynui, parse_string ),
OPTION_DESC ( "key", 'k', required_argument,
struct item_options, key, parse_key ),
OPTION_DESC ( "default", 'd', no_argument,
@@ -146,8 +146,8 @@ static struct command_descriptor item_cmd =
*/
static int item_exec ( int argc, char **argv ) {
struct item_options opts;
- struct menu *menu;
- struct menu_item *item;
+ struct dynamic_ui *dynui;
+ struct dynamic_item *item;
char *name = NULL;
char *text = NULL;
int rc;
@@ -169,23 +169,23 @@ static int item_exec ( int argc, char **argv ) {
}
}
- /* Identify menu */
- if ( ( rc = parse_menu ( opts.menu, &menu ) ) != 0 )
- goto err_parse_menu;
+ /* Identify dynamic user interface */
+ if ( ( rc = parse_dynui ( opts.dynui, &dynui ) ) != 0 )
+ goto err_parse_dynui;
- /* Add menu item */
- item = add_menu_item ( menu, name, ( text ? text : "" ),
- opts.key, opts.is_default );
+ /* Add dynamic user interface item */
+ item = add_dynui_item ( dynui, name, ( text ? text : "" ),
+ opts.key, opts.is_default );
if ( ! item ) {
rc = -ENOMEM;
- goto err_add_menu_item;
+ goto err_add_dynui_item;
}
/* Success */
rc = 0;
- err_add_menu_item:
- err_parse_menu:
+ err_add_dynui_item:
+ err_parse_dynui:
free ( text );
err_parse_text:
err_parse_options:
@@ -194,20 +194,20 @@ static int item_exec ( int argc, char **argv ) {
/** "choose" options */
struct choose_options {
- /** Menu name */
- char *menu;
+ /** Dynamic user interface name */
+ char *dynui;
/** Timeout */
unsigned long timeout;
/** Default selection */
char *select;
- /** Keep menu */
+ /** Keep dynamic user interface */
int keep;
};
/** "choose" option list */
static struct option_descriptor choose_opts[] = {
OPTION_DESC ( "menu", 'm', required_argument,
- struct choose_options, menu, parse_string ),
+ struct choose_options, dynui, parse_string ),
OPTION_DESC ( "default", 'd', required_argument,
struct choose_options, select, parse_string ),
OPTION_DESC ( "timeout", 't', required_argument,
@@ -230,8 +230,8 @@ static struct command_descriptor choose_cmd =
static int choose_exec ( int argc, char **argv ) {
struct choose_options opts;
struct named_setting setting;
- struct menu *menu;
- struct menu_item *item;
+ struct dynamic_ui *dynui;
+ struct dynamic_item *item;
int rc;
/* Parse options */
@@ -243,12 +243,13 @@ static int choose_exec ( int argc, char **argv ) {
&setting ) ) != 0 )
goto err_parse_setting;
- /* Identify menu */
- if ( ( rc = parse_menu ( opts.menu, &menu ) ) != 0 )
- goto err_parse_menu;
+ /* Identify dynamic user interface */
+ if ( ( rc = parse_dynui ( opts.dynui, &dynui ) ) != 0 )
+ goto err_parse_dynui;
- /* Show menu */
- if ( ( rc = show_menu ( menu, opts.timeout, opts.select, &item ) ) != 0)
+ /* Show as menu */
+ if ( ( rc = show_menu ( dynui, opts.timeout, opts.select,
+ &item ) ) != 0 )
goto err_show_menu;
/* Apply default type if necessary */
@@ -268,20 +269,20 @@ static int choose_exec ( int argc, char **argv ) {
err_store:
err_show_menu:
- /* Destroy menu, if applicable */
+ /* Destroy dynamic user interface, if applicable */
if ( ! opts.keep )
- destroy_menu ( menu );
- err_parse_menu:
+ destroy_dynui ( dynui );
+ err_parse_dynui:
err_parse_setting:
err_parse_options:
return rc;
}
-/** Menu commands */
-struct command menu_commands[] __command = {
+/** Dynamic user interface commands */
+struct command dynui_commands[] __command = {
{
.name = "menu",
- .exec = menu_exec,
+ .exec = dynui_exec,
},
{
.name = "item",
diff --git a/src/hci/tui/menu_ui.c b/src/hci/tui/menu_ui.c
index 067e2d8..ab4e602 100644
--- a/src/hci/tui/menu_ui.c
+++ b/src/hci/tui/menu_ui.c
@@ -37,7 +37,7 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
#include <ipxe/console.h>
#include <ipxe/ansicol.h>
#include <ipxe/jumpscroll.h>
-#include <ipxe/menu.h>
+#include <ipxe/dynui.h>
/* Screen layout */
#define TITLE_ROW 1U
@@ -49,8 +49,8 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
/** A menu user interface */
struct menu_ui {
- /** Menu */
- struct menu *menu;
+ /** Dynamic user interface */
+ struct dynamic_ui *dynui;
/** Jump scroller */
struct jump_scroller scroll;
/** Timeout (0=indefinite) */
@@ -60,14 +60,15 @@ struct menu_ui {
/**
* Return a numbered menu item
*
- * @v menu Menu
+ * @v dynui Dynamic user interface
* @v index Index
* @ret item Menu item, or NULL
*/
-static struct menu_item * menu_item ( struct menu *menu, unsigned int index ) {
- struct menu_item *item;
+static struct dynamic_item * menu_item ( struct dynamic_ui *dynui,
+ unsigned int index ) {
+ struct dynamic_item *item;
- list_for_each_entry ( item, &menu->items, list ) {
+ list_for_each_entry ( item, &dynui->items, list ) {
if ( index-- == 0 )
return item;
}
@@ -82,7 +83,7 @@ static struct menu_item * menu_item ( struct menu *menu, unsigned int index ) {
* @v index Index
*/
static void draw_menu_item ( struct menu_ui *ui, unsigned int index ) {
- struct menu_item *item;
+ struct dynamic_item *item;
unsigned int row_offset;
char buf[ MENU_COLS + 1 /* NUL */ ];
char timeout_buf[6]; /* "(xxx)" + NUL */
@@ -95,7 +96,7 @@ static void draw_menu_item ( struct menu_ui *ui, unsigned int index ) {
move ( ( MENU_ROW + row_offset ), MENU_COL );
/* Get menu item */
- item = menu_item ( ui->menu, index );
+ item = menu_item ( ui->dynui, index );
if ( item ) {
/* Draw separators in a different colour */
@@ -171,8 +172,8 @@ static void draw_menu_items ( struct menu_ui *ui ) {
* @ret selected Selected item
* @ret rc Return status code
*/
-static int menu_loop ( struct menu_ui *ui, struct menu_item **selected ) {
- struct menu_item *item;
+static int menu_loop ( struct menu_ui *ui, struct dynamic_item **selected ) {
+ struct dynamic_item *item;
unsigned long timeout;
unsigned int previous;
unsigned int move;
@@ -217,7 +218,7 @@ static int menu_loop ( struct menu_ui *ui, struct menu_item **selected ) {
break;
default:
i = 0;
- list_for_each_entry ( item, &ui->menu->items,
+ list_for_each_entry ( item, &ui->dynui->items,
list ) {
if ( ! ( item->shortcut &&
( item->shortcut == key ) ) ) {
@@ -238,7 +239,7 @@ static int menu_loop ( struct menu_ui *ui, struct menu_item **selected ) {
/* Move selection, if applicable */
while ( move ) {
move = jump_scroll_move ( &ui->scroll, move );
- item = menu_item ( ui->menu, ui->scroll.current );
+ item = menu_item ( ui->dynui, ui->scroll.current );
if ( item->name )
break;
}
@@ -252,7 +253,7 @@ static int menu_loop ( struct menu_ui *ui, struct menu_item **selected ) {
}
/* Record selection */
- item = menu_item ( ui->menu, ui->scroll.current );
+ item = menu_item ( ui->dynui, ui->scroll.current );
assert ( item != NULL );
assert ( item->name != NULL );
*selected = item;
@@ -265,14 +266,14 @@ static int menu_loop ( struct menu_ui *ui, struct menu_item **selected ) {
/**
* Show menu
*
- * @v menu Menu
+ * @v dynui Dynamic user interface
* @v timeout Timeout period, in ticks (0=indefinite)
* @ret selected Selected item
* @ret rc Return status code
*/
-int show_menu ( struct menu *menu, unsigned long timeout,
- const char *select, struct menu_item **selected ) {
- struct menu_item *item;
+int show_menu ( struct dynamic_ui *dynui, unsigned long timeout,
+ const char *select, struct dynamic_item **selected ) {
+ struct dynamic_item *item;
struct menu_ui ui;
char buf[ MENU_COLS + 1 /* NUL */ ];
int named_count = 0;
@@ -280,10 +281,10 @@ int show_menu ( struct menu *menu, unsigned long timeout,
/* Initialise UI */
memset ( &ui, 0, sizeof ( ui ) );
- ui.menu = menu;
+ ui.dynui = dynui;
ui.scroll.rows = MENU_ROWS;
ui.timeout = timeout;
- list_for_each_entry ( item, &menu->items, list ) {
+ list_for_each_entry ( item, &dynui->items, list ) {
if ( item->name ) {
if ( ! named_count )
ui.scroll.current = ui.scroll.count;
@@ -315,7 +316,7 @@ int show_menu ( struct menu *menu, unsigned long timeout,
/* Draw initial content */
attron ( A_BOLD );
- snprintf ( buf, sizeof ( buf ), "%s", ui.menu->title );
+ snprintf ( buf, sizeof ( buf ), "%s", ui.dynui->title );
mvprintw ( TITLE_ROW, ( ( COLS - strlen ( buf ) ) / 2 ), "%s", buf );
attroff ( A_BOLD );
jump_scroll ( &ui.scroll );
diff --git a/src/include/ipxe/dynui.h b/src/include/ipxe/dynui.h
new file mode 100644
index 0000000..25124a3
--- /dev/null
+++ b/src/include/ipxe/dynui.h
@@ -0,0 +1,50 @@
+#ifndef _IPXE_DYNUI_H
+#define _IPXE_DYNUI_H
+
+/** @file
+ *
+ * Dynamic user interfaces
+ *
+ */
+
+FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
+
+#include <ipxe/list.h>
+
+/** A dynamic user interface */
+struct dynamic_ui {
+ /** List of dynamic user interfaces */
+ struct list_head list;
+ /** Name */
+ const char *name;
+ /** Title */
+ const char *title;
+ /** Dynamic user interface items */
+ struct list_head items;
+};
+
+/** A dynamic user interface item */
+struct dynamic_item {
+ /** List of dynamic user interface items */
+ struct list_head list;
+ /** Name */
+ const char *name;
+ /** Text */
+ const char *text;
+ /** Shortcut key */
+ int shortcut;
+ /** Is default item */
+ int is_default;
+};
+
+extern struct dynamic_ui * create_dynui ( const char *name, const char *title );
+extern struct dynamic_item * add_dynui_item ( struct dynamic_ui *dynui,
+ const char *name,
+ const char *text, int shortcut,
+ int is_default );
+extern void destroy_dynui ( struct dynamic_ui *dynui );
+extern struct dynamic_ui * find_dynui ( const char *name );
+extern int show_menu ( struct dynamic_ui *dynui, unsigned long timeout,
+ const char *select, struct dynamic_item **selected );
+
+#endif /* _IPXE_DYNUI_H */
diff --git a/src/include/ipxe/errfile.h b/src/include/ipxe/errfile.h
index a9ce656..d75661b 100644
--- a/src/include/ipxe/errfile.h
+++ b/src/include/ipxe/errfile.h
@@ -364,7 +364,7 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
#define ERRFILE_cms ( ERRFILE_OTHER | 0x002a0000 )
#define ERRFILE_imgtrust ( ERRFILE_OTHER | 0x002b0000 )
#define ERRFILE_menu_ui ( ERRFILE_OTHER | 0x002c0000 )
-#define ERRFILE_menu_cmd ( ERRFILE_OTHER | 0x002d0000 )
+#define ERRFILE_dynui_cmd ( ERRFILE_OTHER | 0x002d0000 )
#define ERRFILE_validator ( ERRFILE_OTHER | 0x002e0000 )
#define ERRFILE_ocsp ( ERRFILE_OTHER | 0x002f0000 )
#define ERRFILE_nslookup ( ERRFILE_OTHER | 0x00300000 )
diff --git a/src/include/ipxe/menu.h b/src/include/ipxe/menu.h
deleted file mode 100644
index d11a925..0000000
--- a/src/include/ipxe/menu.h
+++ /dev/null
@@ -1,49 +0,0 @@
-#ifndef _IPXE_MENU_H
-#define _IPXE_MENU_H
-
-/** @file
- *
- * Menu selection
- *
- */
-
-FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
-
-#include <ipxe/list.h>
-
-/** A menu */
-struct menu {
- /** List of menus */
- struct list_head list;
- /** Name */
- const char *name;
- /** Title */
- const char *title;
- /** Menu items */
- struct list_head items;
-};
-
-/** A menu item */
-struct menu_item {
- /** List of menu items */
- struct list_head list;
- /** Name */
- const char *name;
- /** Text */
- const char *text;
- /** Shortcut key */
- int shortcut;
- /** Is default item */
- int is_default;
-};
-
-extern struct menu * create_menu ( const char *name, const char *title );
-extern struct menu_item * add_menu_item ( struct menu *menu, const char *name,
- const char *text, int shortcut,
- int is_default );
-extern void destroy_menu ( struct menu *menu );
-extern struct menu * find_menu ( const char *name );
-extern int show_menu ( struct menu *menu, unsigned long timeout,
- const char *select, struct menu_item **selected );
-
-#endif /* _IPXE_MENU_H */
diff --git a/src/include/ipxe/parseopt.h b/src/include/ipxe/parseopt.h
index 61010f2..5c449cd 100644
--- a/src/include/ipxe/parseopt.h
+++ b/src/include/ipxe/parseopt.h
@@ -16,7 +16,7 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
struct net_device;
struct net_device_configurator;
-struct menu;
+struct dynamic_ui;
struct parameters;
/** A command-line option descriptor */
@@ -142,7 +142,7 @@ extern int parse_netdev ( char *text, struct net_device **netdev );
extern int
parse_netdev_configurator ( char *text,
struct net_device_configurator **configurator );
-extern int parse_menu ( char *text, struct menu **menu );
+extern int parse_dynui ( char *text, struct dynamic_ui **dynui );
extern int parse_flag ( char *text __unused, int *flag );
extern int parse_key ( char *text, unsigned int *key );
extern int parse_settings ( char *text, struct settings **settings );