-#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