X-Git-Url: https://diplodocus.org/git/nmh/blobdiff_plain/61ccf1dbeea93978803303d2cd43efa5da2cc7d1..7711f3fc00259e55f630cfe6104eff3083dc9d77:/sbr/error.c diff --git a/sbr/error.c b/sbr/error.c index ca73329a..0b6d7777 100644 --- a/sbr/error.c +++ b/sbr/error.c @@ -9,10 +9,8 @@ #include -#ifdef HAVE_WRITEV -# include -# include -#endif +#include +#include /* @@ -60,25 +58,16 @@ admonish (char *what, char *fmt, ...) /* * 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()... */ void 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; @@ -117,24 +106,7 @@ advertise (char *what, char *tail, char *fmt, va_list ap) } iov->iov_len = strlen (iov->iov_base = "\n"); iov++; - writev (fileno (stderr), iob, iov - iob); -#else - if (invo_name && *invo_name) - fprintf (stderr, "%s: ", invo_name); - vfprintf (stderr, fmt, ap); - - if (what) { - char *s; - - if (*what) - fprintf (stderr, " %s: ", what); - if ((s = strerror(eindex))) - fprintf (stderr, "%s", s); - else - fprintf (stderr, "Error %d", eindex); + if (writev (fileno (stderr), iob, iov - iob) < 0) { + advise ("stderr", "writev"); } - if (tail) - fprintf (stderr, ", %s", tail); - fputc ('\n', stderr); -#endif }