aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/src/terminal.c
diff options
context:
space:
mode:
authorJason A. Donenfeld <Jason@zx2c4.com>2020-04-20 22:52:35 -0600
committerJason A. Donenfeld <Jason@zx2c4.com>2020-04-20 22:52:35 -0600
commit891fb523a23a33a8e3832319877159753bfd057a (patch)
tree6a3db35db998b93886685f15203b02e6c098e3fe /src/terminal.c
parentgit: add gitattributes so tarball doesn't have gitignore files (diff)
downloadwireguard-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>
Diffstat (limited to 'src/terminal.c')
-rw-r--r--src/terminal.c23
1 files changed, 7 insertions, 16 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);
}