commit 57ee5d5084c5c07c321352b7412a51d2f89ef298 from: Stefan Sperling date: Fri Feb 08 14:10:49 2019 UTC allow callers of diff3 code to detect merge conflicts commit - a551f2158d980464de9ecc41bab55ff7143103d7 commit + 57ee5d5084c5c07c321352b7412a51d2f89ef298 blob - 2d7faf8152fa2b3018861ac5e044c4f355e049ed blob + 9e996be8927905881cbb34dd4115ed38a682c390 --- lib/diff3.c +++ lib/diff3.c @@ -263,8 +263,8 @@ done: * For merge(1). */ const struct got_error * -got_merge_diff3(int outfd, const char *p1, const char *p2, const char *p3, - const char *label1, const char *label3) +got_merge_diff3(int *overlapcnt, int outfd, const char *p1, const char *p2, + const char *p3, const char *label1, const char *label3) { const struct got_error *err = NULL; char *dp13, *dp23, *path1, *path2, *path3; @@ -275,6 +275,8 @@ got_merge_diff3(int outfd, const char *p1, const char struct diff3_state *d3s; int i; + *overlapcnt = 0; + SLIST_INIT(&temp_files); d3s = calloc(1, sizeof(*d3s)); @@ -399,11 +401,12 @@ out: if (d3s->fp[i]) fclose(d3s->fp[i]); } - free(d3s); if (err == NULL && diffb) { if (buf_write_fd(diffb, outfd) < 0) err = got_error_from_errno(); + *overlapcnt = d3s->overlapcnt; } + free(d3s); buf_free(diffb); return err; } blob - 0db51712a8cb4d20389103e6179247b5213af4ed blob + 66906a1b1f3beff3ef0f12437995a1d63c08ed99 --- lib/got_lib_diff.h +++ lib/got_lib_diff.h @@ -140,5 +140,5 @@ const struct got_error *got_diff_blob_lines_changed(st struct got_blob_object *, struct got_blob_object *); void got_diff_free_changes(struct got_diff_changes *); -const struct got_error *got_merge_diff3(int, const char *, const char *, +const struct got_error *got_merge_diff3(int *, int, const char *, const char *, const char *, const char *, const char *);