From 3258c902e7f286d770ed6fba9219973b2b5bc01d Mon Sep 17 00:00:00 2001 From: Linus Torvalds Date: Sat, 21 May 2005 11:04:19 -0700 Subject: [PATCH] diff-tree: prettify output slightly Make the commit explanation buffer larger, and make sure that if we truncate it, we put a "..." marker there to visually tell people about the truncation (tested with a much smaller buffer to make sure it looks sane). Also make sure that the explanation is properly line-terminated, and add an extra newline iff we have a diff. --- diff-tree.c | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/diff-tree.c b/diff-tree.c index 233a25066..868404f7c 100644 --- a/diff-tree.c +++ b/diff-tree.c @@ -332,7 +332,7 @@ static int add_author_info(char *buf, const char *line, int len) static char *generate_header(const char *commit, const char *parent, const char *msg, unsigned long len) { - static char this_header[1000]; + static char this_header[16384]; int offset; offset = sprintf(this_header, "%s%s (from %s)\n", header_prefix, commit, parent); @@ -345,8 +345,16 @@ static char *generate_header(const char *commit, const char *parent, const char if (!linelen) break; - if (offset + linelen + 10 > sizeof(this_header)) + + /* + * We want some slop for indentation and a possible + * final "...". Thus the "+ 20". + */ + if (offset + linelen + 20 > sizeof(this_header)) { + memcpy(this_header + offset, " ...\n", 8); + offset += 8; break; + } msg += linelen; len -= linelen; @@ -361,7 +369,12 @@ static char *generate_header(const char *commit, const char *parent, const char memcpy(this_header + offset + 4, line, linelen); offset += linelen + 4; } - this_header[offset++] = '\n'; + /* Make sure there is an EOLN */ + if (this_header[offset-1] != '\n') + this_header[offset++] = '\n'; + /* Add _another_ EOLN if we are doing diff output */ + if (!silent) + this_header[offset++] = '\n'; this_header[offset] = 0; } -- 2.30.2