From 697c1f4fa93ac971c487725e9e53fc211cd3c670 Mon Sep 17 00:00:00 2001 From: Jim Meyering Date: Mon, 8 Aug 2016 18:50:15 -0700 Subject: [PATCH] diff: disable colorization for TERM=dumb * src/diff.c (main): With --color or --color=auto, when TERM is "dumb", disable colorization. Suggested by Daniel Colascione. * NEWS (Bug fixes): Mention it. * tests/colors: Add a test that would fail without this change, yet passes with it. --- NEWS | 4 ++++ src/diff.c | 7 +++++++ tests/colors | 5 +++++ 3 files changed, 16 insertions(+) diff --git a/NEWS b/NEWS index add082b..9a8d2e1 100644 --- a/NEWS +++ b/NEWS @@ -2,6 +2,10 @@ GNU diffutils NEWS -*- outline -*- * Noteworthy changes in release ?.? (????-??-??) [?] +** Bug fixes + + diff --color no longer colorizes when TERM=dumb + * Noteworthy changes in release 3.4 (2016-08-08) [stable] diff --git a/src/diff.c b/src/diff.c index 9bc1d96..686945e 100644 --- a/src/diff.c +++ b/src/diff.c @@ -656,6 +656,13 @@ main (int argc, char **argv) prev = c; } + if (colors_style == AUTO) + { + char const *t = getenv ("TERM"); + if (t && STREQ (t, "dumb")) + colors_style = NEVER; + } + if (output_style == OUTPUT_UNSPECIFIED) { if (show_c_function) diff --git a/tests/colors b/tests/colors index 3ad2206..8651a5b 100755 --- a/tests/colors +++ b/tests/colors @@ -86,6 +86,11 @@ test $? = 1 || fail=1 gen_exp_default > exp || framework_failure_ compare exp out || fail=1 +TERM=dumb diff ---presume-output-tty --color=auto a b > out +test $? = 1 || fail=1 +gen_exp_default > exp || framework_failure_ +compare exp out || fail=1 + diff --color=never a b > out test $? = 1 || fail=1 gen_exp_default > exp || framework_failure_ -- 2.7.4