X-Git-Url: https://ruderich.org/simon/gitweb/?a=blobdiff_plain;f=src%2Fcoloredstderr.c;h=77f318aac1fca49080992340cc67fa3785f75212;hb=a63fef43c2d1e9c111f3da0fc3f8deb7f1b3024d;hp=34d329366bbec558db68bdb4bab0feb154dc14fa;hpb=217e8c8bc5fa8c22221514a320d6edeb1c2a101f;p=coloredstderr%2Fcoloredstderr.git diff --git a/src/coloredstderr.c b/src/coloredstderr.c index 34d3293..77f318a 100644 --- a/src/coloredstderr.c +++ b/src/coloredstderr.c @@ -36,8 +36,12 @@ #include #include #include +#include #include +#ifdef HAVE_ERR_H +# include +#endif #ifdef HAVE_ERROR_H # include #endif @@ -265,7 +269,34 @@ HOOK_FD2(int, __overflow, f->_fileno, _IO_FILE *, f, int, ch) HOOK_VOID1(void, perror, STDERR_FILENO, char const *, s) -/* error(3) */ +/* 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, char const *filename, unsigned int linenum,