diff.c: emit_diff_symbol learns DIFF_SYMBOL_NO_LF_EOF
Signed-off-by: Stefan Beller <sbeller@google.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Stefan Beller committed
Jun 29, 2017 at 17:06 UTC
b9cbfde6b12f1a8f5341a5be624bd41e12e5dea3
1 file changed
+11
-8
diff.c
+11
-8
@@ -561,6 +561,7 @@ static void emit_line(struct diff_options *o, const char *set, const char *reset
561
}
562
563
enum diff_symbol {
564
+ DIFF_SYMBOL_NO_LF_EOF,
565
DIFF_SYMBOL_CONTEXT_FRAGINFO,
566
DIFF_SYMBOL_CONTEXT_MARKER,
567
DIFF_SYMBOL_SEPARATOR
@@ -569,8 +570,16 @@ enum diff_symbol {
570
static void emit_diff_symbol(struct diff_options *o, enum diff_symbol s,
571
const char *line, int len)
572
{
573
+ static const char *nneof = " No newline at end of file\n";
574
const char *context, *reset;
575
switch (s) {
576
+ case DIFF_SYMBOL_NO_LF_EOF:
577
+ context = diff_get_color_opt(o, DIFF_CONTEXT);
578
+ reset = diff_get_color_opt(o, DIFF_RESET);
579
+ putc('\n', o->file);
580
+ emit_line_0(o, context, reset, '\\',
581
+ nneof, strlen(nneof));
582
+ break;
583
case DIFF_SYMBOL_CONTEXT_FRAGINFO:
584
emit_line(o, "", "", line, len);
585
break;
@@ -751,7 +760,6 @@ static void emit_rewrite_lines(struct emit_callback *ecb,
760
int prefix, const char *data, int size)
761
{
762
const char *endp = NULL;
754
- static const char *nneof = " No newline at end of file\n";
763
const char *reset = diff_get_color(ecb->color_diff, DIFF_RESET);
764
765
while (0 < size) {
@@ -769,13 +777,8 @@ static void emit_rewrite_lines(struct emit_callback *ecb,
777
size -= len;
778
data += len;
779
}
772
- if (!endp) {
773
- const char *context = diff_get_color(ecb->color_diff,
774
- DIFF_CONTEXT);
775
- putc('\n', ecb->opt->file);
776
- emit_line_0(ecb->opt, context, reset, '\\',
777
- nneof, strlen(nneof));
778
- }
780
+ if (!endp)
781
+ emit_diff_symbol(ecb->opt, DIFF_SYMBOL_NO_LF_EOF, NULL, 0);
782
}
783
784
static void emit_rewrite_diff(const char *name_a,