aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/src/terminal.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/terminal.c')
-rw-r--r--src/terminal.c30
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);
}