X-Git-Url: https://ruderich.org/simon/gitweb/?p=coloredstderr%2Fcoloredstderr.git;a=blobdiff_plain;f=src%2Fcoloredstderr.c;h=10b83be2db01d074bb5b5f5255ecbc5aeda1a805;hp=3e5dac2c770ca1f44481529911effab60a7b092c;hb=96710bc3fa919e221338ef96686e80ba590d3b77;hpb=7d4d8e0784059412a7ab3dfdfe3ad011b894a6e4 diff --git a/src/coloredstderr.c b/src/coloredstderr.c index 3e5dac2..10b83be 100644 --- a/src/coloredstderr.c +++ b/src/coloredstderr.c @@ -42,6 +42,8 @@ static size_t (*real_fwrite)(const void *, size_t, size_t, FILE *); /* Did we already (try to) parse the environment and setup the necessary * variables? */ static int initialized; +/* Force hooked writes even when not writing to a tty. Used for tests. */ +static int force_write_to_non_tty; #include "constants.h" @@ -56,16 +58,17 @@ static int initialized; /* Should the "action" handler be invoked for this file descriptor? */ static int check_handle_fd(int fd) { - /* Never touch anything not going to a terminal. */ - if (!isatty(fd)) { - return 0; - } - /* Load state from environment. Only necessary once per process. */ if (!initialized) { init_from_environment(); } + /* Never touch anything not going to a terminal - unless we are explicitly + * asked to do so. */ + if (!force_write_to_non_tty && !isatty(fd)) { + return 0; + } + if (tracked_fds_count == 0) { return 0; }