diff options
Diffstat (limited to 'src/terminal.c')
-rw-r--r-- | src/terminal.c | 30 |
1 files changed, 11 insertions, 19 deletions
diff --git a/src/terminal.c b/src/terminal.c index ba88597..d3e6611 100644 --- a/src/terminal.c +++ b/src/terminal.c @@ -1,9 +1,8 @@ -// SPDX-License-Identifier: GPL-2.0 +// SPDX-License-Identifier: GPL-2.0 OR MIT /* * Copyright (C) 2015-2020 Jason A. Donenfeld <Jason@zx2c4.com>. All Rights Reserved. */ -#include <ctype.h> #include <stdarg.h> #include <stddef.h> #include <stdio.h> @@ -11,8 +10,10 @@ #include <string.h> #include <stdbool.h> #include <unistd.h> +#include "ctype.h" +#include "terminal.h" -static bool color_mode(FILE *file) +static bool color_mode(void) { static int mode = -1; const char *var; @@ -25,17 +26,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; } @@ -46,7 +47,7 @@ static void filter_ansi(FILE *file, const char *fmt, va_list args) if (str[i] == '\x1b' && str[i + 1] == '[') { str[i] = str[i + 1] = '\0'; for (j = i + 2; j < len; ++j) { - if (isalpha(str[j])) + if (char_is_alpha(str[j])) break; str[j] = '\0'; } @@ -55,7 +56,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 +71,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); } |