summaryrefslogtreecommitdiffstats
path: root/ui/ncurses/nc-cui.c
diff options
context:
space:
mode:
Diffstat (limited to 'ui/ncurses/nc-cui.c')
-rw-r--r--ui/ncurses/nc-cui.c28
1 files changed, 24 insertions, 4 deletions
diff --git a/ui/ncurses/nc-cui.c b/ui/ncurses/nc-cui.c
index fbc02b9..84e4bf0 100644
--- a/ui/ncurses/nc-cui.c
+++ b/ui/ncurses/nc-cui.c
@@ -155,19 +155,29 @@ void cui_on_exit(struct pmenu *menu)
* cui_run_cmd - A generic cb to run the supplied command.
*/
-int cui_run_cmd(struct pmenu_item *item)
+int cui_run_cmd(struct cui *cui, const char **cmd_argv)
{
+ struct process *process;
int result;
- struct cui *cui = cui_from_item(item);
- const char **cmd_argv = item->data;
+
+ process = process_create(cui);
+ if (!process)
+ return -1;
+
+ process->path = cmd_argv[0];
+ process->argv = cmd_argv;
+ process->raw_stdout = true;
nc_scr_status_printf(cui->current, _("Running %s..."), cmd_argv[0]);
def_prog_mode();
+ endwin();
- result = process_run_simple_argv(item, cmd_argv);
+ result = process_run_sync(process);
reset_prog_mode();
+ refresh();
+
redrawwin(cui->current->main_ncw);
if (result) {
@@ -176,9 +186,19 @@ int cui_run_cmd(struct pmenu_item *item)
cmd_argv[0]);
}
+ process_release(process);
+
return result;
}
+int cui_run_cmd_from_item(struct pmenu_item *item)
+{
+ struct cui *cui = cui_from_item(item);
+ const char **cmd_argv = item->data;
+
+ return cui_run_cmd(cui, cmd_argv);
+}
+
/**
* cui_boot - A generic cb to run kexec.
*/
OpenPOWER on IntegriCloud