merge-recursive: move the global obuf to struct merge_options
authorMiklos Vajna <vmiklos@frugalware.org>
Wed, 3 Sep 2008 00:30:03 +0000 (02:30 +0200)
committerJunio C Hamano <gitster@pobox.com>
Fri, 5 Sep 2008 05:50:43 +0000 (22:50 -0700)
Signed-off-by: Miklos Vajna <vmiklos@frugalware.org>
merge-recursive.c
merge-recursive.h

index c426589d1172ddc6b693e117f9b175ad0e861425..d4f12d0a4d6b19be704c210b994cc97adddbeb5e 100644 (file)
@@ -80,18 +80,16 @@ struct stage_data
 static struct string_list current_file_set = {NULL, 0, 0, 1};
 static struct string_list current_directory_set = {NULL, 0, 0, 1};
 
-static struct strbuf obuf = STRBUF_INIT;
-
 static int show(struct merge_options *o, int v)
 {
        return (!o->call_depth && o->verbosity >= v) || o->verbosity >= 5;
 }
 
-static void flush_output(void)
+static void flush_output(struct merge_options *o)
 {
-       if (obuf.len) {
-               fputs(obuf.buf, stdout);
-               strbuf_reset(&obuf);
+       if (o->obuf.len) {
+               fputs(o->obuf.buf, stdout);
+               strbuf_reset(&o->obuf);
        }
 }
 
@@ -103,35 +101,35 @@ static void output(struct merge_options *o, int v, const char *fmt, ...)
        if (!show(o, v))
                return;
 
-       strbuf_grow(&obuf, o->call_depth * 2 + 2);
-       memset(obuf.buf + obuf.len, ' ', o->call_depth * 2);
-       strbuf_setlen(&obuf, obuf.len + o->call_depth * 2);
+       strbuf_grow(&o->obuf, o->call_depth * 2 + 2);
+       memset(o->obuf.buf + o->obuf.len, ' ', o->call_depth * 2);
+       strbuf_setlen(&o->obuf, o->obuf.len + o->call_depth * 2);
 
        va_start(ap, fmt);
-       len = vsnprintf(obuf.buf + obuf.len, strbuf_avail(&obuf), fmt, ap);
+       len = vsnprintf(o->obuf.buf + o->obuf.len, strbuf_avail(&o->obuf), fmt, ap);
        va_end(ap);
 
        if (len < 0)
                len = 0;
-       if (len >= strbuf_avail(&obuf)) {
-               strbuf_grow(&obuf, len + 2);
+       if (len >= strbuf_avail(&o->obuf)) {
+               strbuf_grow(&o->obuf, len + 2);
                va_start(ap, fmt);
-               len = vsnprintf(obuf.buf + obuf.len, strbuf_avail(&obuf), fmt, ap);
+               len = vsnprintf(o->obuf.buf + o->obuf.len, strbuf_avail(&o->obuf), fmt, ap);
                va_end(ap);
-               if (len >= strbuf_avail(&obuf)) {
+               if (len >= strbuf_avail(&o->obuf)) {
                        die("this should not happen, your snprintf is broken");
                }
        }
-       strbuf_setlen(&obuf, obuf.len + len);
-       strbuf_add(&obuf, "\n", 1);
+       strbuf_setlen(&o->obuf, o->obuf.len + len);
+       strbuf_add(&o->obuf, "\n", 1);
        if (!o->buffer_output)
-               flush_output();
+               flush_output(o);
 }
 
 static void output_commit_title(struct merge_options *o, struct commit *commit)
 {
        int i;
-       flush_output();
+       flush_output(o);
        for (i = o->call_depth; i--;)
                fputs("  ", stdout);
        if (commit->util)
@@ -1289,7 +1287,7 @@ int merge_recursive(struct merge_options *o,
                commit_list_insert(h1, &(*result)->parents);
                commit_list_insert(h2, &(*result)->parents->next);
        }
-       flush_output();
+       flush_output(o);
        return clean;
 }
 
@@ -1375,4 +1373,5 @@ void init_merge_options(struct merge_options *o)
                        strtol(getenv("GIT_MERGE_VERBOSITY"), NULL, 10);
        if (o->verbosity >= 5)
                o->buffer_output = 0;
+       strbuf_init(&o->obuf, 0);
 }
index 4f5537417e3b290544138edaec9c32469c19e477..be84d9bb32d4bf9e39e7bf2cf42f17383cb8fc5c 100644 (file)
@@ -10,6 +10,7 @@ struct merge_options {
        int diff_rename_limit;
        int merge_rename_limit;
        int call_depth;
+       struct strbuf obuf;
 };
 
 /* merge_trees() but with recursive ancestor consolidation */