summaryrefslogtreecommitdiffstats
path: root/src/hci/commands
diff options
context:
space:
mode:
authorMichael Brown2013-07-18 16:49:32 +0200
committerMichael Brown2013-07-22 17:39:20 +0200
commit7010b1049181b7da26748dfe31187ffd7c012339 (patch)
tree8f8996924ef0df93ca84aed95f1938eb96bb733e /src/hci/commands
parent[parseopt] Add parse_setting() (diff)
downloadipxe-7010b1049181b7da26748dfe31187ffd7c012339.tar.gz
ipxe-7010b1049181b7da26748dfe31187ffd7c012339.tar.xz
ipxe-7010b1049181b7da26748dfe31187ffd7c012339.zip
[settings] Eliminate call to storef_named_setting() in choose_exec()
Signed-off-by: Michael Brown <mcb30@ipxe.org>
Diffstat (limited to 'src/hci/commands')
-rw-r--r--src/hci/commands/menu_cmd.c17
1 files changed, 12 insertions, 5 deletions
diff --git a/src/hci/commands/menu_cmd.c b/src/hci/commands/menu_cmd.c
index 844ad703..0ad53dbd 100644
--- a/src/hci/commands/menu_cmd.c
+++ b/src/hci/commands/menu_cmd.c
@@ -228,9 +228,9 @@ 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;
- const char *setting;
int rc;
/* Parse options */
@@ -238,7 +238,9 @@ static int choose_exec ( int argc, char **argv ) {
goto err_parse_options;
/* Parse setting name */
- setting = argv[optind];
+ if ( ( rc = parse_autovivified_setting ( argv[optind],
+ &setting ) ) != 0 )
+ goto err_parse_setting;
/* Identify menu */
if ( ( rc = parse_menu ( opts.menu, &menu ) ) != 0 )
@@ -248,11 +250,15 @@ static int choose_exec ( int argc, char **argv ) {
if ( ( rc = show_menu ( menu, opts.timeout, opts.select, &item ) ) != 0)
goto err_show_menu;
+ /* Apply default type if necessary */
+ if ( ! setting.setting.type )
+ setting.setting.type = &setting_type_string;
+
/* Store setting */
- if ( ( rc = storef_named_setting ( setting, &setting_type_string,
- item->label ) ) != 0 ) {
+ if ( ( rc = storef_setting ( setting.settings, &setting.setting,
+ item->label ) ) != 0 ) {
printf ( "Could not store \"%s\": %s\n",
- setting, strerror ( rc ) );
+ setting.setting.name, strerror ( rc ) );
goto err_store;
}
@@ -265,6 +271,7 @@ static int choose_exec ( int argc, char **argv ) {
if ( ! opts.keep )
destroy_menu ( menu );
err_parse_menu:
+ err_parse_setting:
err_parse_options:
return rc;
}