commit - 5d731149d3ea6345b1d5f305211e91eee9f038cd
commit + a551f2158d980464de9ecc41bab55ff7143103d7
blob - 651456af4f82ad11248ecc83188c87ddc546029f
blob + 2d7faf8152fa2b3018861ac5e044c4f355e049ed
--- lib/diff3.c
+++ lib/diff3.c
static void separate(const char *, struct diff3_state *);
static const struct got_error *increase(struct diff3_state *);
static const struct got_error *diff3_internal(char *, char *, char *,
- char *, char *, const char *, const char *, struct diff3_state *);
+ char *, char *, const char *, const char *, struct diff3_state *,
+ const char *, const char *);
static const struct got_error *
diff_output(BUF *diffbuf, const char *fmt, ...)
goto done;
}
- err = got_opentemp_named(&outpath, &outfile, "/tmp/got-diff");
+ err = got_opentemp_named(&outpath, &outfile, "/tmp/got-diffreg");
if (err)
goto done;
if (err)
goto done;
+ fflush(outfile);
+
*d = buf_load(outpath);
if (*d == NULL)
err = got_error_from_errno();
done:
- free(outpath);
+ if (outpath) {
+ unlink(outpath);
+ free(outpath);
+ }
if (outfile)
fclose(outfile);
if (f1)
* For merge(1).
*/
const struct got_error *
-got_merge_diff3(int outfd, const char *p1, const char *p2, const char *p3)
+got_merge_diff3(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;
d2 = NULL;
d3s->diffbuf = diffb;
- err = diff3_internal(dp13, dp23, path1, path2, path3, p1, p3,
- d3s);
+ err = diff3_internal(dp13, dp23, path1, path2, path3,
+ label1, label3, d3s, label1, label3);
if (err) {
buf_free(diffb);
diffb = NULL;
static const struct got_error *
diff3_internal(char *dp13, char *dp23, char *path1, char *path2, char *path3,
- const char *fmark, const char *rmark, struct diff3_state *d3s)
+ const char *fmark, const char *rmark, struct diff3_state *d3s,
+ const char *label1, const char *label3)
{
const struct got_error *err = NULL;
ssize_t m, n;
int i;
- i = snprintf(d3s->f1mark, sizeof(d3s->f1mark), "<<<<<<< %s", fmark);
+ i = snprintf(d3s->f1mark, sizeof(d3s->f1mark), "<<<<<<< %s", label1);
if (i < 0 || i >= (int)sizeof(d3s->f1mark))
return got_error(GOT_ERR_NO_SPACE);
- i = snprintf(d3s->f3mark, sizeof(d3s->f3mark), ">>>>>>> %s", rmark);
+ i = snprintf(d3s->f3mark, sizeof(d3s->f3mark), ">>>>>>> %s", label3);
if (i < 0 || i >= (int)sizeof(d3s->f3mark))
return got_error(GOT_ERR_NO_SPACE);
blob - cb4b54557f2386890197a86fa4ed3bcbe29241ff
blob + 0db51712a8cb4d20389103e6179247b5213af4ed
--- lib/got_lib_diff.h
+++ lib/got_lib_diff.h
void got_diff_free_changes(struct got_diff_changes *);
const struct got_error *got_merge_diff3(int, const char *, const char *,
- const char *);
+ const char *, const char *, const char *);