------------
- C99 compiler (variable length arrays)
-- dynamic linker/loader which supports 'LD_PRELOAD' (e.g. GNU/Linux's ld.so)
+- dynamic linker/loader which supports 'LD_PRELOAD' (e.g. GNU/Linux's or
+ FreeBSD's ld.so)
INSTALLATION
If set to an non-empty value add pre/post strings even when not writing to a
terminal, e.g. when writing to a file. By default, only writes to a terminal
are colored.
+- 'COLORED_STDERR_IGNORED_BINARIES'
+ Comma separated list of binary names/paths which should not be tracked
+ (including their children). Useful for `reset` which writes to the terminal
+ but fails to work if the output is colored. See below for an example.
All environment variables starting with 'COLORED_STDERR_PRIVATE_*' are
internal variables used by the implementation and should not be set manually.
Bourne shell:
esc=`printf '\033'`
- COLORED_STDERR_PRE="${esc}[91m" # red
+ COLORED_STDERR_PRE="${esc}[91m" # bright red
COLORED_STDERR_POST="${esc}[0m" # default
export COLORED_STDERR_PRE COLORED_STDERR_POST
+Fix `reset`; its writes to the terminal must be unaltered. `reset` is
+symbolic-link to `tset` on some systems, adapt as necessary:
+
+ COLORED_STDERR_IGNORED_BINARIES=/usr/bin/tset
+ export COLORED_STDERR_IGNORED_BINARIES
+
DEBUG
-----
KNOWN ISSUES
------------
-- `{fputc,putc,putchar}_unlocked()` are not hooked when writing to stdout
- (which might be redirected to stderr). Can't be fixed as the compiler
+- `{fputc,putc,putchar}_unlocked()` are not hooked with glibc when writing to
+ stdout (which might be redirected to stderr). Can't be fixed as the compiler
inlines the code into the program without calling any function.
+- Test `test_stdio.sh` fails on FreeBSD because it does handle the above
+ correctly (no inlining), but the test is designed for GNU/Linux.
+- 'COLORED_STDERR_IGNORED_BINARIES' requires the `/proc` file system.
+ Suggestions welcome.
BUGS