summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--merge-recursive.c17
-rw-r--r--merge-recursive.h2
2 files changed, 14 insertions, 5 deletions
diff --git a/merge-recursive.c b/merge-recursive.c
index 99c963558b..ec50932210 100644
--- a/merge-recursive.c
+++ b/merge-recursive.c
@@ -25,7 +25,7 @@
static void flush_output(struct merge_options *o)
{
- if (o->obuf.len) {
+ if (o->buffer_output < 2 && o->obuf.len) {
fputs(o->obuf.buf, stdout);
strbuf_reset(&o->obuf);
}
@@ -35,12 +35,21 @@ static int err(struct merge_options *o, const char *err, ...)
{
va_list params;
- flush_output(o);
+ if (o->buffer_output < 2)
+ flush_output(o);
+ else {
+ strbuf_complete(&o->obuf, '\n');
+ strbuf_addstr(&o->obuf, "error: ");
+ }
va_start(params, err);
strbuf_vaddf(&o->obuf, err, params);
va_end(params);
- error("%s", o->obuf.buf);
- strbuf_reset(&o->obuf);
+ if (o->buffer_output > 1)
+ strbuf_addch(&o->obuf, '\n');
+ else {
+ error("%s", o->obuf.buf);
+ strbuf_reset(&o->obuf);
+ }
return -1;
}
diff --git a/merge-recursive.h b/merge-recursive.h
index d415724aea..735343b413 100644
--- a/merge-recursive.h
+++ b/merge-recursive.h
@@ -13,7 +13,7 @@ struct merge_options {
MERGE_RECURSIVE_THEIRS
} recursive_variant;
const char *subtree_shift;
- unsigned buffer_output : 1;
+ unsigned buffer_output; /* 1: output at end, 2: keep buffered */
unsigned renormalize : 1;
long xdl_opts;
int verbosity;