diff options
author | Johannes Schindelin <johannes.schindelin@gmx.de> | 2016-06-22 17:01:49 +0200 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2016-06-24 14:25:49 -0700 |
commit | 0a7b357737e3352ce1b0385313c1efc1b2564dbb (patch) | |
tree | 3b0d15499717c6210c81fe7e42caf93865f2471a | |
parent | c61008fdfb59aff00ec546be6bc6cf3bd8869165 (diff) | |
download | git-0a7b357737e3352ce1b0385313c1efc1b2564dbb.tar.gz git-0a7b357737e3352ce1b0385313c1efc1b2564dbb.tar.xz |
shortlog: support outputting to streams other than stdout
This will be needed to avoid freopen() in `git format-patch`.
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r-- | builtin/shortlog.c | 13 | ||||
-rw-r--r-- | shortlog.h | 1 |
2 files changed, 9 insertions, 5 deletions
diff --git a/builtin/shortlog.c b/builtin/shortlog.c index bfc082e58..39d74fe23 100644 --- a/builtin/shortlog.c +++ b/builtin/shortlog.c @@ -229,6 +229,7 @@ void shortlog_init(struct shortlog *log) log->wrap = DEFAULT_WRAPLEN; log->in1 = DEFAULT_INDENT1; log->in2 = DEFAULT_INDENT2; + log->file = stdout; } int cmd_shortlog(int argc, const char **argv, const char *prefix) @@ -310,22 +311,24 @@ void shortlog_output(struct shortlog *log) for (i = 0; i < log->list.nr; i++) { const struct string_list_item *item = &log->list.items[i]; if (log->summary) { - printf("%6d\t%s\n", (int)UTIL_TO_INT(item), item->string); + fprintf(log->file, "%6d\t%s\n", + (int)UTIL_TO_INT(item), item->string); } else { struct string_list *onelines = item->util; - printf("%s (%d):\n", item->string, onelines->nr); + fprintf(log->file, "%s (%d):\n", + item->string, onelines->nr); for (j = onelines->nr - 1; j >= 0; j--) { const char *msg = onelines->items[j].string; if (log->wrap_lines) { strbuf_reset(&sb); add_wrapped_shortlog_msg(&sb, msg, log); - fwrite(sb.buf, sb.len, 1, stdout); + fwrite(sb.buf, sb.len, 1, log->file); } else - printf(" %s\n", msg); + fprintf(log->file, " %s\n", msg); } - putchar('\n'); + putc('\n', log->file); onelines->strdup_strings = 1; string_list_clear(onelines, 0); free(onelines); diff --git a/shortlog.h b/shortlog.h index de4f86fb9..5a326c686 100644 --- a/shortlog.h +++ b/shortlog.h @@ -17,6 +17,7 @@ struct shortlog { char *common_repo_prefix; int email; struct string_list mailmap; + FILE *file; }; void shortlog_init(struct shortlog *log); |