diff options
Diffstat (limited to 'core.c')
-rw-r--r-- | core.c | 15 |
1 files changed, 10 insertions, 5 deletions
@@ -72,12 +72,14 @@ void merge(char *update, char **index) { free(real_file); } -void show_diff(char *update) { +int show_diff(char *update) { extern struct configuration config; char *realfile = get_real_filename(update); char *esc_realfile = g_shell_quote(realfile); char *esc_update = g_shell_quote(update); char *cmd = (char *)calloc(strlen(config.diff_tool) + strlen(" % % | ") + strlen(esc_update) + strlen(esc_realfile) + strlen(config.pager) + 1, sizeof(char)); + int ret; + strcpy(cmd, config.diff_tool); strcat(cmd, " "); strcat(cmd, esc_realfile); @@ -87,25 +89,28 @@ void show_diff(char *update) { strcat(cmd, " | "); strcat(cmd, config.pager); } + ret = system(cmd); free(realfile); g_free(esc_realfile); g_free(esc_update); - system(cmd); free(cmd); + return ret; } -void edit_update(char *update) { +int edit_update(char *update) { extern struct configuration config; char *esc_update = g_shell_quote(update); char *cmd = calloc(strlen(config.edit_tool) + strlen(" ") + strlen(esc_update), sizeof(char)); + int ret; strcpy(cmd, config.edit_tool); strcat(cmd, " "); strcat(cmd, esc_update); - system(cmd); + ret = system(cmd); g_free(esc_update); free(cmd); + return ret; } char **merge_interactively(char *update, char **index) { @@ -168,6 +173,6 @@ void display_help() { "\tSelecting a directory will select all its updates\n"; - fprintf(stderr, str); + fprintf(stderr, "%s", str); exit(EXIT_SUCCESS); } |