Warren Young <war...@etr-usa.com> writes: > On Oct 25, 2017, at 2:51 PM, Mathieu Lirzin <m...@gnu.org> wrote: >> >> Warren Young <war...@etr-usa.com> writes: >> >>> As for the portability of ANSI terminal escape codes, it’s still best >>> to delegate such things to curses or libraries like it, despite the >>> near ubiquity of ANSI-family terminal emulators. > > I didn’t quite finish that thought: “…because at the very least, you can then > say 'TERM=dumb myprogram’ to strip terminal escape codes on an ad hoc basis.” > >> Colors are already automatically used when possible [1] and can be >> disabled with the AM_COLOR_TESTS environment variable. > > Right on. > > Any reason it doesn’t back that up with “test -t 1”, though?
I think it does. :-) Here is a snippet from lib/check.am which handles the detection: --8<---------------cut here---------------start------------->8--- am__tty_colors_dummy = \ mgn= red= grn= lgn= blu= brg= std=; \ am__color_tests=no am__tty_colors = { \ $(am__tty_colors_dummy); \ if test "X$(AM_COLOR_TESTS)" = Xno; then \ am__color_tests=no; \ elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ am__color_tests=yes; \ ## If stdout is a non-dumb tty, use colors. If test -t is not supported, ## then this check fails; a conservative approach. Of course do not ## redirect stdout here, just stderr. elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ am__color_tests=yes; \ fi; \ if test $$am__color_tests = yes; then \ red='[0;31m'; \ grn='[0;32m'; \ lgn='[1;32m'; \ blu='[1;34m'; \ mgn='[0;35m'; \ brg='[1m'; \ std='[m'; \ fi; \ } --8<---------------cut here---------------end--------------->8--- -- Mathieu Lirzin GPG: F2A3 8D7E EB2B 6640 5761 070D 0ADE E100 9460 4D37