X-Git-Url: https://diplodocus.org/git/nmh/blobdiff_plain/1e424a2249aa6b911fd3be973de00cee413342eb..c02f66668d32980a3770e450061c5b96b9f31690:/sbr/error.c diff --git a/sbr/error.c b/sbr/error.c index 5dc84e87..e4bc9e3f 100644 --- a/sbr/error.c +++ b/sbr/error.c @@ -69,8 +69,9 @@ void advertise (const char *what, char *tail, const char *fmt, va_list ap) { int eindex = errno; - char buffer[BUFSIZ], errbuf[BUFSIZ], *err; - struct iovec iob[20], *iov; + char buffer[NMH_BUFSIZ], errbuf[NMH_BUFSIZ], *err; + struct iovec iob[10], *iov; + size_t niov; iov = iob; @@ -112,9 +113,12 @@ advertise (const char *what, char *tail, const char *fmt, va_list ap) #undef ADD_LITERAL #undef ADD_VAR + niov = iov - iob; + assert(niov <= DIM(iob)); + fflush (stdout); fflush (stderr); - if (writev (fileno (stderr), iob, iov - iob) < 0) { + if (writev(fileno(stderr), iob, niov) == -1) { snprintf(buffer, sizeof buffer, "%s: write stderr failed: %d\n", invo_name && *invo_name ? invo_name : "nmh", errno); if (write(2, buffer, strlen(buffer)) == -1) {