diff options
-rw-r--r-- | src/calcurse.c | 11 | ||||
-rw-r--r-- | src/calcurse.h | 3 | ||||
-rw-r--r-- | src/help.c | 3 | ||||
-rw-r--r-- | src/io.c | 6 | ||||
-rw-r--r-- | src/note.c | 7 | ||||
-rw-r--r-- | src/wins.c | 19 |
6 files changed, 20 insertions, 29 deletions
diff --git a/src/calcurse.c b/src/calcurse.c index cfe8298..e31770c 100644 --- a/src/calcurse.c +++ b/src/calcurse.c @@ -290,10 +290,13 @@ static inline void key_generic_reload(void) io_save_todo(path_todo_backup); io_save_mutex_unlock(); - wins_launch_external2(path_apts, path_apts_backup, - conf.mergetool); - wins_launch_external2(path_todo, path_todo_backup, - conf.mergetool); + const char *arg_apts[] = { conf.mergetool, path_apts, + path_apts_backup, NULL }; + wins_launch_external(arg_apts); + + const char *arg_todo[] = { conf.mergetool, path_todo, + path_todo_backup, NULL }; + wins_launch_external(arg_todo); xfree(path_apts_backup); xfree(path_todo_backup); diff --git a/src/calcurse.h b/src/calcurse.h index a1cf9bb..34e74b5 100644 --- a/src/calcurse.h +++ b/src/calcurse.h @@ -1124,8 +1124,7 @@ void wins_reset_noupdate(void); void wins_reset(void); void wins_prepare_external(void); void wins_unprepare_external(void); -void wins_launch_external(const char *, const char *); -void wins_launch_external2(const char *, const char *, const char *); +void wins_launch_external(const char *[]); void wins_status_bar(void); void wins_erase_status_bar(void); void wins_other_status_page(int); @@ -189,7 +189,8 @@ int display_help(const char *topic) } if (io_file_exists(path)) { - wins_launch_external(path, conf.pager); + const char *arg[] = { conf.pager, path, NULL }; + wins_launch_external(arg); return 1; } else { return 0; @@ -1175,8 +1175,10 @@ void io_log_display(struct io_file *log, const char *msg, child_wait(NULL, NULL, pid); } } else { - if (status_ask_bool(msg) == 1) - wins_launch_external(log->name, pager); + if (status_ask_bool(msg) == 1) { + const char *arg[] = { pager, log->name, NULL }; + wins_launch_external(arg); + } wins_erase_status_bar(); } } @@ -95,7 +95,8 @@ void edit_note(char **note, const char *editor) io_file_cp(notepath, tmppath); } - wins_launch_external(tmppath, editor); + const char *arg[] = { editor, tmppath, NULL }; + wins_launch_external(arg); if (io_file_is_empty(tmppath) > 0) { erase_note(note); @@ -119,7 +120,9 @@ void view_note(const char *note, const char *pager) if (note == NULL) return; snprintf(fullname, BUFSIZ, "%s%s", path_notes, note); - wins_launch_external(fullname, pager); + + const char *arg[] = { pager, fullname, NULL }; + wins_launch_external(arg); } /* Erase a note previously attached to an item. */ @@ -600,25 +600,8 @@ void wins_unprepare_external(void) * While inside interactive mode, launch the external command cmd on the given * file. */ -void wins_launch_external(const char *file, const char *cmd) +void wins_launch_external(const char *arg[]) { - const char *arg[] = { cmd, file, NULL }; - int pid; - - wins_prepare_external(); - if ((pid = shell_exec(NULL, NULL, *arg, arg))) - child_wait(NULL, NULL, pid); - wins_unprepare_external(); -} - -/* - * While inside interactive mode, launch the external command cmd on the given - * two files. - */ -void wins_launch_external2(const char *file1, const char *file2, - const char *cmd) -{ - const char *arg[] = { cmd, file1, file2, NULL }; int pid; wins_prepare_external(); |