add -E option
implement err.h

valgrind reported invalid reads/writes with glibc err[x]|warn[x] (in
glibc printf) when stdio had been redirected in between.
Revert "don't use warnx with socket io"

This reverts commit 3c2f8ba57a032d930358a48d59675066a03a85ef.