]> git.ozlabs.org Git - petitboot/blobdiff - ui/ncurses/nc-cui.c
ui/ncurses: Display sysinfo type & identifier
[petitboot] / ui / ncurses / nc-cui.c
index 0dc8d4b9f378dbe8456b1f1498f178a09be55862..35c9debfbe1113ff315eb0e9cc610b50641aea24 100644 (file)
@@ -81,13 +81,13 @@ int cui_run_cmd(struct pmenu_item *item)
 {
        int result;
        struct cui *cui = cui_from_item(item);
-       const char *const *cmd_argv = item->data;
+       const char **cmd_argv = item->data;
 
        nc_scr_status_printf(cui->current, "Running %s...", cmd_argv[0]);
 
        def_prog_mode();
 
-       result = pb_run_cmd(cmd_argv, 1, 0);
+       result = process_run_simple_argv(item, cmd_argv);
 
        reset_prog_mode();
        redrawwin(cui->current->main_ncw);
@@ -473,11 +473,34 @@ static void cui_update_status(struct boot_status *status, void *arg)
 
 }
 
+static void cui_update_mm_title(struct cui *cui)
+{
+       struct nc_frame *frame = &cui->main->scr.frame;
+
+       talloc_free(frame->rtitle);
+
+       frame->rtitle = talloc_strdup(cui->main, cui->sysinfo->type);
+       if (cui->sysinfo->identifier)
+               frame->rtitle = talloc_asprintf_append(frame->rtitle,
+                               " %s", cui->sysinfo->identifier);
+
+       if (cui->current == &cui->main->scr)
+               cui->current->post(cui->current);
+}
+
+static void cui_update_sysinfo(struct system_info *sysinfo, void *arg)
+{
+       struct cui *cui = cui_from_arg(arg);
+       cui->sysinfo = talloc_steal(cui, sysinfo);
+       cui_update_mm_title(cui);
+}
+
 static struct discover_client_ops cui_client_ops = {
        .device_add = NULL,
        .boot_option_add = cui_boot_option_add,
        .device_remove = cui_device_remove,
        .update_status = cui_update_status,
+       .update_sysinfo = cui_update_sysinfo,
 };
 
 /**
@@ -508,7 +531,7 @@ struct cui *cui_init(void* platform_info,
        cui->platform_info = platform_info;
        cui->waitset = waitset_create(cui);
 
-       process_init(cui, cui->waitset);
+       process_init(cui, cui->waitset, false);
 
        setlocale(LC_ALL, "");
 
@@ -529,7 +552,7 @@ retry_start:
 
                start_deamon = 0;
 
-               result = pb_start_daemon();
+               result = pb_start_daemon(cui);
 
                if (!result)
                        goto retry_start;