]> git.neil.brown.name Git - wiggle.git/commitdiff
Separate make_merger out from print_merge2
authorNeilBrown <neilb@suse.de>
Wed, 14 Nov 2012 01:45:23 +0000 (12:45 +1100)
committerNeilBrown <neilb@suse.de>
Wed, 14 Nov 2012 01:45:23 +0000 (12:45 +1100)
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 <neilb@suse.de>
merge2.c
wiggle.c
wiggle.h

index 14e35856d30cfaaa1d023cc6fb7ac80fca10de33..14f2cd4aaf2e8d4239012e158e7ee7cf86320e11 100644 (file)
--- 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;
 }
index a3cba3e534eed1186922a096d6184ec9f31f45a3..4483ccac1dbd55f96dc27eaa8bc31c8f68c03286 100644 (file)
--- 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",
index e0757e0f09f2aae633076e523a2549b878b399c4..a9b7bb6d1c3aedb9c6eb9abdce2d34074d84b238 100644 (file)
--- 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,