graph: respect the diffopt.file setting
authorJohannes Schindelin <johannes.schindelin@gmx.de>
Wed, 22 Jun 2016 15:01:44 +0000 (17:01 +0200)
committerJunio C Hamano <gitster@pobox.com>
Fri, 24 Jun 2016 21:07:52 +0000 (14:07 -0700)
When the caller overrides diffopt.file (which defaults to stdout),
the diff machinery already redirects its output, and the graph display
should also write to that file.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
graph.c

diff --git a/graph.c b/graph.c
index 1350bdd..8ad8ba3 100644 (file)
--- a/graph.c
+++ b/graph.c
@@ -17,8 +17,8 @@
 static void graph_padding_line(struct git_graph *graph, struct strbuf *sb);
 
 /*
- * Print a strbuf to stdout.  If the graph is non-NULL, all lines but the
- * first will be prefixed with the graph output.
+ * Print a strbuf.  If the graph is non-NULL, all lines but the first will be
+ * prefixed with the graph output.
  *
  * If the strbuf ends with a newline, the output will end after this
  * newline.  A new graph line will not be printed after the final newline.
@@ -1193,9 +1193,10 @@ void graph_show_commit(struct git_graph *graph)
 
        while (!shown_commit_line && !graph_is_commit_finished(graph)) {
                shown_commit_line = graph_next_line(graph, &msgbuf);
-               fwrite(msgbuf.buf, sizeof(char), msgbuf.len, stdout);
+               fwrite(msgbuf.buf, sizeof(char), msgbuf.len,
+                       graph->revs->diffopt.file);
                if (!shown_commit_line)
-                       putchar('\n');
+                       putc('\n', graph->revs->diffopt.file);
                strbuf_setlen(&msgbuf, 0);
        }
 
@@ -1210,7 +1211,7 @@ void graph_show_oneline(struct git_graph *graph)
                return;
 
        graph_next_line(graph, &msgbuf);
-       fwrite(msgbuf.buf, sizeof(char), msgbuf.len, stdout);
+       fwrite(msgbuf.buf, sizeof(char), msgbuf.len, graph->revs->diffopt.file);
        strbuf_release(&msgbuf);
 }
 
@@ -1222,7 +1223,7 @@ void graph_show_padding(struct git_graph *graph)
                return;
 
        graph_padding_line(graph, &msgbuf);
-       fwrite(msgbuf.buf, sizeof(char), msgbuf.len, stdout);
+       fwrite(msgbuf.buf, sizeof(char), msgbuf.len, graph->revs->diffopt.file);
        strbuf_release(&msgbuf);
 }
 
@@ -1239,12 +1240,13 @@ int graph_show_remainder(struct git_graph *graph)
 
        for (;;) {
                graph_next_line(graph, &msgbuf);
-               fwrite(msgbuf.buf, sizeof(char), msgbuf.len, stdout);
+               fwrite(msgbuf.buf, sizeof(char), msgbuf.len,
+                       graph->revs->diffopt.file);
                strbuf_setlen(&msgbuf, 0);
                shown = 1;
 
                if (!graph_is_commit_finished(graph))
-                       putchar('\n');
+                       putc('\n', graph->revs->diffopt.file);
                else
                        break;
        }
@@ -1259,7 +1261,8 @@ static void graph_show_strbuf(struct git_graph *graph, struct strbuf const *sb)
        char *p;
 
        if (!graph) {
-               fwrite(sb->buf, sizeof(char), sb->len, stdout);
+               fwrite(sb->buf, sizeof(char), sb->len,
+                       graph->revs->diffopt.file);
                return;
        }
 
@@ -1277,7 +1280,7 @@ static void graph_show_strbuf(struct git_graph *graph, struct strbuf const *sb)
                } else {
                        len = (sb->buf + sb->len) - p;
                }
-               fwrite(p, sizeof(char), len, stdout);
+               fwrite(p, sizeof(char), len, graph->revs->diffopt.file);
                if (next_p && *next_p != '\0')
                        graph_show_oneline(graph);
                p = next_p;
@@ -1297,7 +1300,8 @@ void graph_show_commit_msg(struct git_graph *graph,
                 * CMIT_FMT_USERFORMAT are already missing a terminating
                 * newline.  All of the other formats should have it.
                 */
-               fwrite(sb->buf, sizeof(char), sb->len, stdout);
+               fwrite(sb->buf, sizeof(char), sb->len,
+                       graph->revs->diffopt.file);
                return;
        }
 
@@ -1318,7 +1322,7 @@ void graph_show_commit_msg(struct git_graph *graph,
                 * new line.
                 */
                if (!newline_terminated)
-                       putchar('\n');
+                       putc('\n', graph->revs->diffopt.file);
 
                graph_show_remainder(graph);
 
@@ -1326,6 +1330,6 @@ void graph_show_commit_msg(struct git_graph *graph,
                 * If sb ends with a newline, our output should too.
                 */
                if (newline_terminated)
-                       putchar('\n');
+                       putc('\n', graph->revs->diffopt.file);
        }
 }