summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJeremy Kerr <jk@ozlabs.org>2014-09-18 19:21:00 +0800
committerJeremy Kerr <jk@ozlabs.org>2014-09-18 19:21:00 +0800
commit29f9a3a7e503f731fe891d21bedf29c08a20383f (patch)
tree130aaf215a02078cd5f4e6be86d06947ad3d7364
parent3c173e909de0db1b2dd96b1d57851abb35bbdbc4 (diff)
downloadtalos-petitboot-29f9a3a7e503f731fe891d21bedf29c08a20383f.tar.gz
talos-petitboot-29f9a3a7e503f731fe891d21bedf29c08a20383f.zip
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 <jk@ozlabs.org>
-rw-r--r--ui/ncurses/nc-config.c13
1 files changed, 6 insertions, 7 deletions
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;
OpenPOWER on IntegriCloud