X-Git-Url: https://ruderich.org/simon/gitweb/?a=blobdiff_plain;f=src%2Fcoloredstderr.c;h=247bd06ecc0d78cfd085574a7665a53b3a40b328;hb=34b3b931362c8d0fce96e390bb8b1ea94d6a4101;hp=eb9d92cc3c1148d6160e87c4aade4171d8fd2c91;hpb=1068648718dad86471451266fcdf4248bb79f3fe;p=coloredstderr%2Fcoloredstderr.git diff --git a/src/coloredstderr.c b/src/coloredstderr.c index eb9d92c..247bd06 100644 --- a/src/coloredstderr.c +++ b/src/coloredstderr.c @@ -38,6 +38,9 @@ #include #include +#ifdef HAVE_ERR_H +# include +#endif #ifdef HAVE_ERROR_H # include #endif @@ -265,6 +268,33 @@ HOOK_FD2(int, __overflow, f->_fileno, _IO_FILE *, f, int, ch) HOOK_VOID1(void, perror, STDERR_FILENO, char const *, s) +/* err(3), non standard BSD extension */ +#ifdef HAVE_ERR_H +HOOK_VAR_VOID2(void, err, STDERR_FILENO, verr, + int, eval, char const *, fmt) +HOOK_VAR_VOID2(void, errx, STDERR_FILENO, verrx, + int, eval, char const *, fmt) +HOOK_VAR_VOID1(void, warn, STDERR_FILENO, vwarn, + char const *, fmt) +HOOK_VAR_VOID1(void, warnx, STDERR_FILENO, vwarnx, + char const *, fmt) +HOOK_FUNC_SIMPLE3(void, verr, int, eval, const char *, fmt, va_list, args) { + /* Can't use verr() directly as it terminates the process which prevents + * the post string from being printed. */ + vwarn(fmt, args); + exit(eval); +} +HOOK_FUNC_SIMPLE3(void, verrx, int, eval, const char *, fmt, va_list, args) { + /* See verr(). */ + vwarnx(fmt, args); + exit(eval); +} +HOOK_VOID2(void, vwarn, STDERR_FILENO, + char const *, fmt, va_list, args) +HOOK_VOID2(void, vwarnx, STDERR_FILENO, + char const *, fmt, va_list, args) +#endif + /* error(3), non-standard GNU extension */ #ifdef HAVE_ERROR_H static void error_vararg(int status, int errnum,