diff options
author | Jason A. Donenfeld <Jason@zx2c4.com> | 2020-04-20 22:52:35 -0600 |
---|---|---|
committer | Jason A. Donenfeld <Jason@zx2c4.com> | 2020-04-20 22:52:35 -0600 |
commit | 891fb523a23a33a8e3832319877159753bfd057a (patch) | |
tree | 6a3db35db998b93886685f15203b02e6c098e3fe | |
parent | git: add gitattributes so tarball doesn't have gitignore files (diff) | |
download | wireguard-tools-891fb523a23a33a8e3832319877159753bfd057a.tar.xz wireguard-tools-891fb523a23a33a8e3832319877159753bfd057a.zip |
terminal: specialize color_mode to stdout only
By specializing this to stdout, we can cache the isatty result.
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
-rw-r--r-- | src/terminal.c | 23 | ||||
-rw-r--r-- | src/terminal.h | 1 |
2 files changed, 7 insertions, 17 deletions
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 <stdbool.h> #include <unistd.h> -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); } diff --git a/src/terminal.h b/src/terminal.h index e8cb570..58697fa 100644 --- a/src/terminal.h +++ b/src/terminal.h @@ -47,6 +47,5 @@ #define TERMINAL_CLEAR_ALL "\x1b[2J" void terminal_printf(const char *fmt, ...) __attribute__((format(printf, 1, 2))); -void terminal_fprintf(FILE *file, const char *fmt, ...) __attribute__((format(printf, 2, 3))); #endif |