X-Git-Url: https://diplodocus.org/git/nmh/blobdiff_plain/401de08a88c0837c4c7fff0da0b8689160e6488b..6345e60c392bbf92b3d7ca2bba473f9da5c073ff:/sbr/error.c diff --git a/sbr/error.c b/sbr/error.c index 8057302a..fc5c6afa 100644 --- a/sbr/error.c +++ b/sbr/error.c @@ -1,21 +1,21 @@ - -/* - * error.c -- main error handling routines +/* error.c -- main error handling routines * * This code is Copyright (c) 2002, by the authors of nmh. See the * COPYRIGHT file in the root directory of the nmh distribution for * complete copyright information. */ -#include +#include "h/mh.h" +#include "error.h" #include #include - +#include "h/done.h" /* inform calls advertise() with no what and no tail. * Thus the simple "[invo_name: ]fmt\n" results. */ -void inform(char *fmt, ...) +void +inform(char *fmt, ...) { va_list ap; @@ -47,7 +47,7 @@ advise (const char *what, const char *fmt, ...) * straightforward, e.g. longjmp(3), but it must not return to adios(). * If it does then it's a bug and adios() will abort(3) as callers do * not expect execution to continue. */ -void +void NORETURN adios (const char *what, const char *fmt, ...) { va_list ap; @@ -60,6 +60,21 @@ adios (const char *what, const char *fmt, ...) } +/* die is the same as adios(), but without the what as that's commonly + * NULL. */ +void NORETURN +die(const char *fmt, ...) +{ + va_list ap; + + va_start(ap, fmt); + advertise(NULL, NULL, fmt, ap); + va_end(ap); + done(1); + abort(); +} + + /* admonish calls advertise() with a tail indicating the program * continues. * Thus "[invo_name: ]fmt[[ what]: errno], continuing...\n" results. */ @@ -85,7 +100,7 @@ void advertise (const char *what, char *tail, const char *fmt, va_list ap) { int eindex = errno; - char buffer[NMH_BUFSIZ], errbuf[NMH_BUFSIZ], *err; + char buffer[NMH_BUFSIZ], *err; struct iovec iob[10], *iov; size_t niov; @@ -113,11 +128,6 @@ advertise (const char *what, char *tail, const char *fmt, va_list ap) } ADD_LITERAL(": "); err = strerror(eindex); - if (!err) { - /* this shouldn't happen, but we'll test for it just in case */ - snprintf(errbuf, sizeof(errbuf), "Error %d", eindex); - err = errbuf; - } ADD_VAR(err); } if (tail && *tail) {