X-Git-Url: http://git.marmaro.de/?p=mmh;a=blobdiff_plain;f=sbr%2Ferror.c;h=1841ce4047379dc46db6cdb958f144ee64e6a11a;hp=1c150067b103eeffc088b63060c5dbb76727edff;hb=HEAD;hpb=a485ed478abbd599d8c9aab48934e7a26733ecb1 diff --git a/sbr/error.c b/sbr/error.c index 1c15006..1841ce4 100644 --- a/sbr/error.c +++ b/sbr/error.c @@ -1,141 +1,95 @@ /* - * 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. - */ +** 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 - -#ifdef HAVE_WRITEV -# include -# include -#endif - #include +#include /* - * print out error message - */ +** print out error message +*/ void -advise (char *what, char *fmt, ...) +advise(char *what, char *fmt, ...) { va_list ap; va_start(ap, fmt); - advertise (what, NULL, fmt, ap); + advertise(what, NULL, fmt, ap); va_end(ap); } /* - * print out error message and exit - */ +** print out error message and exit +*/ void -adios (char *what, char *fmt, ...) +adios(int status, char *what, char *fmt, ...) { va_list ap; va_start(ap, fmt); - advertise (what, NULL, fmt, ap); + advertise(what, NULL, fmt, ap); va_end(ap); - done (1); + exit(status); } /* - * admonish the user - */ +** admonish the user +*/ void -admonish (char *what, char *fmt, ...) +admonish(char *what, char *fmt, ...) { va_list ap; va_start(ap, fmt); - advertise (what, "continuing...", fmt, ap); + advertise(what, "continuing...", fmt, ap); va_end(ap); } /* - * main routine for printing error messages. - * - * Use writev() if available, for slightly better performance. - * Why? Well, there are a couple of reasons. Primarily, it - * gives a smoother output... More importantly though, it's a - * sexy syscall()... - */ +** main routine for printing error messages. +** +** Until 2011-11-01, this routine used writev(). In order to remove +** ``sexy'' syscalls, in favor for mainstream programming, I removed +** it. But I want to preserve the following comment: +** +** Use writev() if available, for slightly better performance. +** Why? Well, there are a couple of reasons. Primarily, it +** gives a smoother output... More importantly though, it's a +** sexy syscall()... +** +** advertise() does *not* use writev() anymore, and that's good so. +** -- meillo@marmaro.de +*/ void -advertise (char *what, char *tail, char *fmt, va_list ap) +advertise(char *what, char *tail, char *fmt, va_list ap) { int eindex = errno; -#ifdef HAVE_WRITEV - char buffer[BUFSIZ], err[BUFSIZ]; - struct iovec iob[20], *iov; -#endif - - fflush (stdout); - -#ifdef HAVE_WRITEV - fflush (stderr); - iov = iob; - - if (invo_name && *invo_name) { - iov->iov_len = strlen (iov->iov_base = invo_name); - iov++; - iov->iov_len = strlen (iov->iov_base = ": "); - iov++; - } - - vsnprintf (buffer, sizeof(buffer), fmt, ap); - iov->iov_len = strlen (iov->iov_base = buffer); - iov++; - if (what) { - if (*what) { - iov->iov_len = strlen (iov->iov_base = " "); - iov++; - iov->iov_len = strlen (iov->iov_base = what); - iov++; - iov->iov_len = strlen (iov->iov_base = ": "); - iov++; - } - if (!(iov->iov_base = strerror (eindex))) { - /* this shouldn't happen, but we'll test for it just in case */ - snprintf (err, sizeof(err), "Error %d", eindex); - iov->iov_base = err; - } - iov->iov_len = strlen (iov->iov_base); - iov++; - } - if (tail && *tail) { - iov->iov_len = strlen (iov->iov_base = ", "); - iov++; - iov->iov_len = strlen (iov->iov_base = tail); - iov++; - } - iov->iov_len = strlen (iov->iov_base = "\n"); - iov++; - writev (fileno (stderr), iob, iov - iob); -#else + fflush(stdout); if (invo_name && *invo_name) - fprintf (stderr, "%s: ", invo_name); - vfprintf (stderr, fmt, ap); + fprintf(stderr, "%s: ", invo_name); + vfprintf(stderr, fmt, ap); if (what) { char *s; if (*what) - fprintf (stderr, " %s: ", what); + fprintf(stderr, " %s: ", what); if ((s = strerror(eindex))) - fprintf (stderr, "%s", s); + fprintf(stderr, "%s", s); else - fprintf (stderr, "Error %d", eindex); + fprintf(stderr, "Error %d", eindex); } if (tail) - fprintf (stderr, ", %s", tail); - fputc ('\n', stderr); -#endif + fprintf(stderr, ", %s", tail); + fputc('\n', stderr); }