/** * kexec_load - kexec load helper. */ static int kexec_load(struct boot_task *boot_task) { int result; const char *argv[7]; const char **p; char *s_initrd = NULL; char *s_dtb = NULL; char *s_args = NULL; p = argv; *p++ = pb_system_apps.kexec; /* 1 */ *p++ = "-l"; /* 2 */ if (boot_task->local_initrd) { s_initrd = talloc_asprintf(boot_task, "--initrd=%s", boot_task->local_initrd); assert(s_initrd); *p++ = s_initrd; /* 3 */ } if (boot_task->local_dtb) { s_dtb = talloc_asprintf(boot_task, "--dtb=%s", boot_task->local_dtb); assert(s_dtb); *p++ = s_dtb; /* 4 */ } if (boot_task->args) { s_args = talloc_asprintf(boot_task, "--append=%s", boot_task->args); assert(s_args); *p++ = s_args; /* 5 */ } *p++ = boot_task->local_image; /* 6 */ *p++ = NULL; /* 7 */ result = process_run_simple_argv(boot_task, argv); if (result) pb_log("%s: failed: (%d)\n", __func__, result); return result; }
int cui_run_cmd(struct pmenu_item *item) { int result; struct cui *cui = cui_from_item(item); const char **cmd_argv = item->data; nc_scr_status_printf(cui->current, _("Running %s..."), cmd_argv[0]); def_prog_mode(); result = process_run_simple_argv(item, cmd_argv); reset_prog_mode(); redrawwin(cui->current->main_ncw); if (result) { pb_log("%s: failed: '%s'\n", __func__, cmd_argv[0]); nc_scr_status_printf(cui->current, _("Failed: %s"), cmd_argv[0]); } return result; }