X-Git-Url: http://git.ozlabs.org/?p=petitboot;a=blobdiff_plain;f=ui%2Fncurses%2Fnc-cui.c;h=09b63b053f25638176b1837332b88dab387be110;hp=a2de48e75f3e71c8bf94571896ce4d6d327196b9;hb=86c9d34380b0074dab1ba89a569a94280d6999c4;hpb=bbaa3ac16e14b1f386d70d14f16d0164d163017e diff --git a/ui/ncurses/nc-cui.c b/ui/ncurses/nc-cui.c index a2de48e..09b63b0 100644 --- a/ui/ncurses/nc-cui.c +++ b/ui/ncurses/nc-cui.c @@ -83,6 +83,7 @@ static void cui_start(void) define_key("OF", KEY_END); define_key("\x1b\x5b\x41", KEY_UP); define_key("\x1b\x5b\x42", KEY_DOWN); + define_key("\x1b\x5b\x33\x7e", KEY_DC); while (getch() != ERR) /* flush stdin */ (void)0; @@ -423,11 +424,16 @@ static int cui_process_key(void *arg) if (c == ERR) break; - if (!cui->has_input && cui->client) { - pb_log("UI input received (key = %d), aborting " - "default boot\n", c); - discover_client_cancel_default(cui->client); + if (!cui->has_input) { cui->has_input = true; + if (cui->client) { + pb_log("UI input received (key = %d), aborting " + "default boot\n", c); + discover_client_cancel_default(cui->client); + } else { + pb_log("UI input received (key = %d), aborting " + "once server connects\n", c); + } } if (process_global_keys(cui, c)) @@ -537,6 +543,7 @@ static int cui_boot_option_add(struct device *dev, struct boot_option *opt, cod->bd->initrd = talloc_strdup(cod->bd, opt->initrd_file); cod->bd->dtb = talloc_strdup(cod->bd, opt->dtb_file); cod->bd->args = talloc_strdup(cod->bd, opt->boot_args); + cod->bd->args_sig_file = talloc_strdup(cod->bd, opt->args_sig_file); /* This disconnects items array from menu. */ result = set_menu_items(cui->main->ncm, NULL); @@ -560,6 +567,7 @@ static int cui_boot_option_add(struct device *dev, struct boot_option *opt, pb_log(" image '%s'\n", cod->bd->image); pb_log(" initrd '%s'\n", cod->bd->initrd); pb_log(" args '%s'\n", cod->bd->args); + pb_log(" argsig '%s'\n", cod->bd->args_sig_file); /* Re-attach the items array. */ result = set_menu_items(cui->main->ncm, cui->main->items); @@ -927,6 +935,11 @@ static int cui_server_wait(void *arg) } else { nc_scr_status_printf(cui->current, "Info: Connected to server!"); talloc_steal(cui, cui->client); + + if (cui->has_input) { + pb_log("Aborting default boot on server connect\n"); + discover_client_cancel_default(cui->client); + } } return 0;