From: Jeremy Kerr Date: Thu, 18 Sep 2014 11:21:00 +0000 (+0800) Subject: ui/ncurses: Fix clearing a boot device UUID X-Git-Tag: v1.0.0~110 X-Git-Url: http://git.ozlabs.org/?a=commitdiff_plain;h=29f9a3a7e503f731fe891d21bedf29c08a20383f;p=petitboot ui/ncurses: Fix clearing a boot device UUID Currently, we have a bug where we can't clear a boot device UUID, as we only update config->boot_device if we're in AUTOBOOT_ONE state. This means that the config UI can't be used to change out of "autoboot from a single device" mode. This sets the autoboot device unconditionally, allowing it to be cleared. Signed-off-by: Jeremy Kerr --- diff --git a/ui/ncurses/nc-config.c b/ui/ncurses/nc-config.c index 4b1a58f..f6d544d 100644 --- a/ui/ncurses/nc-config.c +++ b/ui/ncurses/nc-config.c @@ -188,8 +188,8 @@ static int screen_process_form(struct config_screen *screen) const struct system_info *sysinfo = screen->cui->sysinfo; enum net_conf_type net_conf_type; struct interface_config *iface; + char *str, *end, *uuid; struct config *config; - char *str, *end; int rc, idx; config = config_copy(screen, screen->cui->config); @@ -199,8 +199,9 @@ static int screen_process_form(struct config_screen *screen) config->autoboot_enabled = screen->autoboot_type != AUTOBOOT_DISABLED; + uuid = NULL; if (screen->autoboot_type == AUTOBOOT_ONE) { - char mac[20], *uuid = NULL; + char mac[20]; /* if idx is -1 here, we have an unknown UUID selected. * Otherwise, it's a blockdev index (idx <= n_blockdevs) or an @@ -216,13 +217,11 @@ static int screen_process_form(struct config_screen *screen) } else if (idx != -1) { uuid = sysinfo->blockdevs[idx]->uuid; } - - if (uuid) { - talloc_free(config->boot_device); - config->boot_device = talloc_strdup(config, uuid); - } } + talloc_free(config->boot_device); + config->boot_device = uuid ? talloc_strdup(config, uuid) : NULL; + str = widget_textbox_get_value(screen->widgets.timeout_f); if (str) { unsigned long x;