]> diplodocus.org Git - nmh/blobdiff - sbr/error.c
Replace parallel MIME-preference arrays with struct array.
[nmh] / sbr / error.c
index 8057302aa61a81f85a52a9162295590fba6b6d52..5a5808c22f8552ee20fdc52707beac6bf90ac8be 100644 (file)
@@ -1,6 +1,4 @@
-
-/*
- * 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
@@ -47,7 +45,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 +58,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 +98,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 +126,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) {