diff options
| author | Simon Rettberg | 2018-05-28 17:33:36 +0200 |
|---|---|---|
| committer | Simon Rettberg | 2018-05-28 17:33:36 +0200 |
| commit | 0ccbe0bc2248f4467d8af979618a866cb98c7215 (patch) | |
| tree | 3ec4a94c2fb53e1828b218b1c050b507bf1c308d /src/core | |
| parent | [console] Add option to update margins and bg-image of vesa mode console (diff) | |
| download | ipxe-0ccbe0bc2248f4467d8af979618a866cb98c7215.tar.gz ipxe-0ccbe0bc2248f4467d8af979618a866cb98c7215.tar.xz ipxe-0ccbe0bc2248f4467d8af979618a866cb98c7215.zip | |
[menu] Add --hidden option to create hotkey-only entries
Diffstat (limited to 'src/core')
| -rw-r--r-- | src/core/menu.c | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/src/core/menu.c b/src/core/menu.c index ab5b0c7f5..abad59999 100644 --- a/src/core/menu.c +++ b/src/core/menu.c @@ -80,6 +80,7 @@ struct menu * create_menu ( const char *name, const char *title ) { strcpy ( title_copy, title ); menu->title = title_copy; INIT_LIST_HEAD ( &menu->items ); + INIT_LIST_HEAD ( &menu->hidden_items ); /* Add to list of menus */ list_add_tail ( &menu->list, &menus ); @@ -102,7 +103,7 @@ struct menu * create_menu ( const char *name, const char *title ) { */ struct menu_item * add_menu_item ( struct menu *menu, const char *label, const char *text, int shortcut, - int is_default ) { + int is_default, int is_hidden ) { size_t label_len; size_t text_len; size_t len; @@ -135,7 +136,11 @@ struct menu_item * add_menu_item ( struct menu *menu, const char *label, item->is_default = is_default; /* Add to list of items */ - list_add_tail ( &item->list, &menu->items ); + if ( is_hidden ) { + list_add_tail ( &item->list, &menu->hidden_items ); + } else { + list_add_tail ( &item->list, &menu->items ); + } return item; } @@ -157,6 +162,10 @@ void destroy_menu ( struct menu *menu ) { list_del ( &item->list ); free ( item ); } + list_for_each_entry_safe ( item, tmp, &menu->hidden_items, list ) { + list_del ( &item->list ); + free ( item ); + } /* Free menu */ free ( menu ); |
