X-Git-Url: http://git.ozlabs.org/?p=petitboot;a=blobdiff_plain;f=ui%2Fncurses%2Fnc-cui.c;h=d3e00aa03a0e6199f030b46209fe45194843092f;hp=3abeac3e2ff29d41a2ecfd34f552339d5637523e;hb=c4be9490a5d94b662370576157b6e0ed73f2fe77;hpb=7f5a99f015cb1f48f73acb921beced6daf9fa15d;ds=inline diff --git a/ui/ncurses/nc-cui.c b/ui/ncurses/nc-cui.c index 3abeac3..d3e00aa 100644 --- a/ui/ncurses/nc-cui.c +++ b/ui/ncurses/nc-cui.c @@ -219,6 +219,17 @@ void cui_on_exit(struct pmenu *menu) talloc_free(sh_cmd); } +/** + * cui_abort_on_exit - Force an exit of the main loop on menu exit. + * This is mainly for lockdown situations where + * the exit then triggers an expected reboot. + */ +void cui_abort_on_exit(struct pmenu *menu) +{ + struct cui *cui = cui_from_pmenu(menu); + cui->abort = 1; +} + /** * cui_run_cmd - A generic cb to run the supplied command. */ @@ -1298,7 +1309,7 @@ static struct pmenu *main_menu_init(struct cui *cui) int result; bool lockdown = lockdown_active(); - m = pmenu_init(cui, 9, cui_on_exit); + m = pmenu_init(cui, 9, lockdown ? cui_abort_on_exit : cui_on_exit); if (!m) { pb_log_fn("failed\n"); return NULL;