int capture_output(FileView *view, const char cmd[], int user_sh, menu_data_t *m, int custom_view, int very_custom_view) { if(custom_view || very_custom_view) { reset_menu_data(m); output_to_custom_flist(view, cmd, very_custom_view, 0); return 0; } return capture_output_to_menu(view, cmd, user_sh, m->state); }
int run_ext_command(const char cmd[], MacroFlags flags, int bg, int *save_msg) { if(bg && flags != MF_NONE && flags != MF_NO_TERM_MUX && flags != MF_IGNORE) { status_bar_errorf("\"%s\" macro can't be combined with \" &\"", macros_to_str(flags)); *save_msg = 1; return -1; } if(flags == MF_STATUSBAR_OUTPUT) { output_to_statusbar(cmd); *save_msg = 1; return -1; } else if(flags == MF_IGNORE) { *save_msg = 0; if(bg) { int error; setup_shellout_env(); error = (start_background_job(cmd, 1) != 0); cleanup_shellout_env(); if(error) { status_bar_errorf("Failed to start in bg: %s", cmd); *save_msg = 1; } } else { output_to_nowhere(cmd); } return -1; } else if(flags == MF_MENU_OUTPUT || flags == MF_MENU_NAV_OUTPUT) { const int navigate = flags == MF_MENU_NAV_OUTPUT; setup_shellout_env(); *save_msg = show_user_menu(curr_view, cmd, navigate) != 0; cleanup_shellout_env(); } else if(flags == MF_SPLIT && curr_stats.term_multiplexer != TM_NONE) { run_in_split(curr_view, cmd); } else if(flags == MF_CUSTOMVIEW_OUTPUT || flags == MF_VERYCUSTOMVIEW_OUTPUT) { const int very = flags == MF_VERYCUSTOMVIEW_OUTPUT; output_to_custom_flist(curr_view, cmd, very); } else { return 0; } return 1; }