Update cui_run_cmd() to setup a process that uses 'raw_stdout' so that
output is displayed on the screen instead of being caught in the log.
Also update cui_run_cmd() to take a more generic list of arguments, and
add a cui_run_cmd_from_item() wrapper for the existing user.
Signed-off-by: Samuel Mendoza-Jonas <sam@mendozajonas.com>
* cui_run_cmd - A generic cb to run the supplied command.
*/
* 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;
- 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();
nc_scr_status_printf(cui->current, _("Running %s..."), cmd_argv[0]);
def_prog_mode();
- result = process_run_simple_argv(item, cmd_argv);
+ result = process_run_sync(process);
redrawwin(cui->current->main_ncw);
if (result) {
redrawwin(cui->current->main_ncw);
if (result) {
+ process_release(process);
+
+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.
*/
/**
* cui_boot - A generic cb to run kexec.
*/
void cui_resize(struct cui *cui);
void cui_on_exit(struct pmenu *menu);
void cui_on_open(struct pmenu *menu);
void cui_resize(struct cui *cui);
void cui_on_exit(struct pmenu *menu);
void cui_on_open(struct pmenu *menu);
-int cui_run_cmd(struct pmenu_item *item);
+int cui_run_cmd(struct cui *cui, const char **cmd_argv);
+int cui_run_cmd_from_item(struct pmenu_item *item);
static inline struct cui *cui_from_arg(void *arg)
{
static inline struct cui *cui_from_arg(void *arg)
{