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/hci/commands | |
| 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/hci/commands')
| -rw-r--r-- | src/hci/commands/menu_cmd.c | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/src/hci/commands/menu_cmd.c b/src/hci/commands/menu_cmd.c index 76bce8695..c8692f1a7 100644 --- a/src/hci/commands/menu_cmd.c +++ b/src/hci/commands/menu_cmd.c @@ -118,6 +118,8 @@ struct item_options { int is_default; /** Use as a separator */ int is_gap; + /** Don't show; hotkey only */ + int is_hidden; }; /** "item" option list */ @@ -130,6 +132,8 @@ static struct option_descriptor item_opts[] = { struct item_options, is_default, parse_flag ), OPTION_DESC ( "gap", 'g', no_argument, struct item_options, is_gap, parse_flag ), + OPTION_DESC ( "hidden", 'i', no_argument, + struct item_options, is_hidden, parse_flag ), }; /** "item" command descriptor */ @@ -160,6 +164,12 @@ static int item_exec ( int argc, char **argv ) { if ( ! opts.is_gap ) label = argv[optind++]; /* May be NULL */ + /* Hidden entry without label and shortcut is pointless */ + if ( opts.is_hidden && ( ! opts.key || ! label || ! *label ) ) { + rc = -EINVAL; + goto err_invalid_argument; + } + /* Parse text, if present */ if ( optind < argc ) { text = concat_args ( &argv[optind] ); @@ -175,7 +185,7 @@ static int item_exec ( int argc, char **argv ) { /* Add menu item */ item = add_menu_item ( menu, label, ( text ? text : "" ), - opts.key, opts.is_default ); + opts.key, opts.is_default, opts.is_hidden ); if ( ! item ) { rc = -ENOMEM; goto err_add_menu_item; @@ -188,6 +198,7 @@ static int item_exec ( int argc, char **argv ) { err_parse_menu: free ( text ); err_parse_text: + err_invalid_argument: err_parse_options: return rc; } |
