From 52b6cd1c9be5b7c4c0ed16c69239ae2c6839fba0 Mon Sep 17 00:00:00 2001 From: Roy Marples Date: Mon, 3 Dec 2007 16:16:08 +0000 Subject: [PATCH] As ecolor does not take a tty, try and guess a valid one. --- src/libeinfo.c | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/src/libeinfo.c b/src/libeinfo.c index 9561028e..fdbf18bf 100644 --- a/src/libeinfo.c +++ b/src/libeinfo.c @@ -286,7 +286,7 @@ static const char *_ecolor (FILE *f, einfo_color_t color) if (! colour_terminal (f)) return (""); - + switch (color) { case ECOLOR_GOOD: if (! (col = getenv ("ECOLOR_GOOD"))) @@ -319,7 +319,19 @@ hidden_def(ecolor) const char *ecolor (einfo_color_t color) { - return (_ecolor (stdout, color)); + FILE *f = stdout; + + /* Try and guess a valid tty */ + if (! isatty (fileno (f))) { + f = stderr; + if (! isatty (fileno (f))) { + f = stdin; + if (! isatty (fileno (f))) + f = NULL; + } + } + + return (_ecolor (f, color)); } #define EINFOVN(_file, _color) \