Improve color terminal escape usage.
authorBob Proulx <bob@proulx.com>
Mon, 29 Oct 2007 11:10:23 +0000 (05:10 -0600)
committerBob Proulx <bob@proulx.com>
Mon, 29 Oct 2007 11:10:23 +0000 (05:10 -0600)
* build-aux/check.mk (am__tty_colors): Use 'tput' to deduce
terminal color capabilities.

ChangeLog
build-aux/check.mk

index d9a05e6..786055e 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2007-10-29  Bob Proulx  <bob@proulx.com>
+
+       Improve color terminal escape usage.
+       * build-aux/check.mk (am__tty_colors): Use 'tput' to deduce
+       terminal color capabilities.
+
 2007-10-29  Jim Meyering  <meyering@redhat.com>
 
        Don't try to colorize a dumb terminal.
index 862b3e5..fd6fb2b 100644 (file)
@@ -56,23 +56,27 @@ END {                                                               \
   print line;                                                  \
 }'
 
-# If stdout is a tty, use colors.  If test -t is not supported, then
-# this fails; a conservative approach.  Of course do not redirect
-# stdout here, just stderr...
+# If stdout is a tty and TERM is smart then use colors.  If test -t or
+# tput are not supported then this fails; a conservative approach.  Of
+# course do not redirect stdout here, just stderr...
 am__tty_colors =                               \
-if test -t 1 2>/dev/null && test -n "$$TERM" && test "$$TERM" != dumb; then \
-  red='\e[0;31m';                               \
-  grn='\e[0;32m';                               \
-  lgn='\e[1;32m';                               \
-  blu='\e[1;34m';                               \
-  std='\e[m';                                   \
-else                                           \
-  red=;                                                \
-  grn=;                                                \
-  lgn=;                                                \
-  blu=;                                                \
-  std=;                                                \
-fi
+red=;                                          \
+grn=;                                          \
+lgn=;                                          \
+blu=;                                          \
+std=;                                          \
+test "X$$TERM" != Xdumb &&                     \
+test -t 1 2>/dev/null &&                       \
+tput bold 1 >/dev/null 2>&1 &&                 \
+tput setaf 1 >/dev/null 2>&1 &&                        \
+tput sgr0 >/dev/null 2>&1 &&                   \
+{                                              \
+    red=$$(tput setaf 1);                      \
+    grn=$$(tput setaf 2);                      \
+    lgn=$$(tput bold)$$(tput setaf 2);         \
+    blu=$$(tput setaf 4);                      \
+    std=$$(tput sgr0);                         \
+}
 
 # To be inserted before the command running the test.  Creates the
 # directory for the log if needed.  Stores in $dir the directory