diff options
author | Linus Torvalds <torvalds@ppc970.osdl.org> | 2005-05-21 11:04:19 -0700 |
---|---|---|
committer | Linus Torvalds <torvalds@ppc970.osdl.org> | 2005-05-21 11:04:19 -0700 |
commit | 3258c902e7f286d770ed6fba9219973b2b5bc01d (patch) | |
tree | 85ec256656a7839ca7a2067792b828c9b63c8711 /diff-tree.c | |
parent | da196b603e665a81943e5df4e8daa3d981846624 (diff) | |
download | git-3258c902e7f286d770ed6fba9219973b2b5bc01d.tar.gz |
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.
Diffstat (limited to 'diff-tree.c')
-rw-r--r-- | diff-tree.c | 19 |
1 files changed, 16 insertions, 3 deletions
diff --git a/diff-tree.c b/diff-tree.c index 233a250668..868404f7c4 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; } |