From: NeilBrown Date: Wed, 14 Nov 2012 01:45:23 +0000 (+1100) Subject: Separate make_merger out from print_merge2 X-Git-Tag: v1.0~93 X-Git-Url: http://git.neil.brown.name/?a=commitdiff_plain;h=3b82e3f78a0299624ff3c523fbbf73458ca46e12;p=wiggle.git Separate make_merger out from print_merge2 Will want to print a 'merger' that we have modified. So don't call make_merger from print_merge, call it before hand and pass it in. Signed-off-by: NeilBrown --- diff --git a/merge2.c b/merge2.c index 14e3585..14f2cd4 100644 --- a/merge2.c +++ b/merge2.c @@ -482,15 +482,12 @@ static void printrange(FILE *out, struct file *f, int start, int len) } } -struct ci print_merge2(FILE *out, struct file *a, struct file *b, struct file *c, - struct csl *c1, struct csl *c2, - int words, int ignore_already, int show_wiggles) +void print_merge(FILE *out, struct file *a, struct file *b, struct file *c, + int words, struct merge *merger) { - struct ci rv = make_merger(*a, *b, *c, c1, c2, - words, ignore_already, show_wiggles); struct merge *m; - for (m = rv.merger; m->type != End ; m++) { + for (m = merger; m->type != End ; m++) { struct merge *cm; if (do_trace) printf("[%s: %d-%d,%d-%d,%d-%d%s(%d,%d)]\n", @@ -655,5 +652,4 @@ struct ci print_merge2(FILE *out, struct file *a, struct file *b, struct file *c assert(0); } } - return rv; } diff --git a/wiggle.c b/wiggle.c index a3cba3e..4483cca 100644 --- a/wiggle.c +++ b/wiggle.c @@ -553,9 +553,10 @@ static int do_merge(int argc, char *argv[], int obj, csl1 = diff(fl[0], fl[1]); csl2 = diff(fl[1], fl[2]); - ci = print_merge2(outfile, &fl[0], &fl[1], &fl[2], - csl1, csl2, obj == 'w', - ignore, show_wiggles); + ci = make_merger(fl[0], fl[1], fl[2], csl1, csl2, + obj == 'w', ignore, show_wiggles); + print_merge(outfile, &fl[0], &fl[1], &fl[2], + obj == 'w', ci.merger); if (!quiet && ci.conflicts) fprintf(stderr, "%d unresolved conflict%s found\n", diff --git a/wiggle.h b/wiggle.h index e0757e0..a9b7bb6 100644 --- a/wiggle.h +++ b/wiggle.h @@ -167,10 +167,9 @@ struct ci { int conflicts, wiggles, ignored; struct merge *merger; }; -extern struct ci print_merge2(FILE *out, - struct file *a, struct file *b, struct file *c, - struct csl *c1, struct csl *c2, - int words, int ignore_already, int show_wiggles); +extern void print_merge(FILE *out, + struct file *a, struct file *b, struct file *c, + int words, struct merge *merger); extern void printword(FILE *f, struct elmnt e); extern int isolate_conflicts(struct file af, struct file bf, struct file cf,