README
======
-coloredstderr is a small library which uses 'LD_PRELOAD' to color stderr.
+coloredstderr is a small library which uses 'LD_PRELOAD' to color stderr. It
+``follows'' dups, has minimal performance overhead and can ignore certain
+binaries (requires /proc).
Like all solutions using 'LD_PRELOAD' it only works with dynamically linked
Most other existing solutions use a second process which colors its input and
pipe stderr to it. However this creates different runtime behaviour resulting
in a different ordering of the output. Partial lines (no newline) also often
-cause problems.
+cause problems. coloredstderr handles these cases correctly.
+
+coloredstderr is licensed under GPL 3 (or later).
DEPENDENCIES
------------
- 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
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
+Fix `reset`; its writes to the terminal must be unaltered. `reset` is a
symbolic-link to `tset` on some systems, adapt as necessary:
COLORED_STDERR_IGNORED_BINARIES=/usr/bin/tset
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 for this reason on FreeBSD.
-- 'COLORED_STDERR_IGNORED_BINARIES' requries the `/proc` file system.
+- Test `test_stdio.sh` fails on FreeBSD because FreeBSD 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.
+- Output of `strace` is not always colored correctly as the output from
+ `coloredstderr` is traced and displayed as well.
BUGS