Junio, On Tue, Jun 17, 2008 at 12:00:02AM +0200, SZEDER Gábor wrote: > I'm not sure about putting a newline unconditionally at the end of the > line, but this was the status quo before c1795bb0. we _must_ not print a newline when there was none, as it breaks "normal" colored diffs very badly. Since c1795bb0, for whatever reason, checkdiff_consume() first calls emit_line() to print only the first '+' character of the line, without trailing newline, and then calls check_and_emit_line() to print the rest of the line. Now if we restore the status quo prior to c1795bb0 regarding unconditional newlines in emit_line(), then there is always a newline between the the '+' and the rest of the line, which is bad, bad, bad. So this should be squashed to the previous patch. --- diff.c | 9 +++++++-- 1 files changed, 7 insertions(+), 2 deletions(-) diff --git a/diff.c b/diff.c index f23657b..722f577 100644 --- a/diff.c +++ b/diff.c @@ -514,13 +514,18 @@ const char *diff_get_color(int diff_use_color, enum color_diff ix) static void emit_line(FILE *file, const char *set, const char *reset, const char *line, int len) { - if (len > 0 && line[len-1] == '\n') + int trailing_newline = 0; + + if (len > 0 && line[len-1] == '\n') { len--; + trailing_newline = 1; + } fputs(set, file); fwrite(line, len, 1, file); fputs(reset, file); - fputc('\n', file); + if (trailing_newline) + fputc('\n', file); } static void emit_add_line(const char *reset, struct emit_callback *ecbdata, const char *line, int len) -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html