aboutsummaryrefslogtreecommitdiff
path: root/core.c
diff options
context:
space:
mode:
Diffstat (limited to 'core.c')
-rw-r--r--core.c15
1 files changed, 10 insertions, 5 deletions
diff --git a/core.c b/core.c
index de9cc64..c3685d4 100644
--- a/core.c
+++ b/core.c
@@ -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);
}