aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/libeinfo.c16
1 files 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) \