From 891fb523a23a33a8e3832319877159753bfd057a Mon Sep 17 00:00:00 2001 From: "Jason A. Donenfeld" Date: Mon, 20 Apr 2020 22:52:35 -0600 Subject: terminal: specialize color_mode to stdout only By specializing this to stdout, we can cache the isatty result. Signed-off-by: Jason A. Donenfeld --- src/terminal.c | 23 +++++++---------------- 1 file changed, 7 insertions(+), 16 deletions(-) (limited to 'src/terminal.c') diff --git a/src/terminal.c b/src/terminal.c index ba88597..bea27ba 100644 --- a/src/terminal.c +++ b/src/terminal.c @@ -12,7 +12,7 @@ #include #include -static bool color_mode(FILE *file) +static bool color_mode(void) { static int mode = -1; const char *var; @@ -25,17 +25,17 @@ static bool color_mode(FILE *file) else if (var && !strcmp(var, "never")) mode = false; else - return isatty(fileno(file)); + mode = isatty(fileno(stdout)); return mode; } -static void filter_ansi(FILE *file, const char *fmt, va_list args) +static void filter_ansi(const char *fmt, va_list args) { char *str = NULL; size_t len, i, j; - if (color_mode(file)) { - vfprintf(file, fmt, args); + if (color_mode()) { + vfprintf(stdout, fmt, args); return; } @@ -55,7 +55,7 @@ static void filter_ansi(FILE *file, const char *fmt, va_list args) } } for (i = 0; i < len; i = j) { - fputs(&str[i], file); + fputs(&str[i], stdout); for (j = i + strlen(&str[i]); j < len; ++j) { if (str[j] != '\0') break; @@ -70,15 +70,6 @@ void terminal_printf(const char *fmt, ...) va_list args; va_start(args, fmt); - filter_ansi(stdout, fmt, args); - va_end(args); -} - -void terminal_fprintf(FILE *file, const char *fmt, ...) -{ - va_list args; - - va_start(args, fmt); - filter_ansi(file, fmt, args); + filter_ansi(fmt, args); va_end(args); } -- cgit v1.2.3-59-g8ed1b