Subject: diff: disable colorization for TERM=dumb

From: Jim Meyering <[email-masked]>
Date: Mon, 8 Aug 2016 18:54:51 -0700

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.
From 697c1f4fa93ac971c487725e9e53fc211cd3c670 Mon Sep 17 00:00:00 2001
From: Jim Meyering <[email-masked]>
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