X-Git-Url: https://diplodocus.org/git/nmh/blobdiff_plain/475fef2edee9db3c63fc089df76f8e93e3d598cd..7711f3fc00259e55f630cfe6104eff3083dc9d77:/uip/replsbr.c?ds=sidebyside diff --git a/uip/replsbr.c b/uip/replsbr.c index 46ae7dc3..c4ca0c4b 100644 --- a/uip/replsbr.c +++ b/uip/replsbr.c @@ -71,7 +71,8 @@ replout (FILE *inb, char *msg, char *drft, struct msgs *mp, int outputlinelen, struct format *fmt; register char **ap; int char_read = 0, format_len, mask; - char name[NAMESZ], *scanl, *cp; + char name[NAMESZ], *cp; + charstring_t scanl; static int dat[5]; /* aux. data for format routine */ m_getfld_state_t gstate = 0; struct fmt_callbacks cb; @@ -204,7 +205,7 @@ finished: } } i = format_len + char_read + 256; - scanl = mh_xmalloc ((size_t) i + 2); + scanl = charstring_create (i + 2); dat[0] = 0; dat[1] = 0; dat[2] = 0; @@ -213,8 +214,8 @@ finished: memset(&cb, 0, sizeof(cb)); cb.formataddr = replformataddr; cb.concataddr = replconcataddr; - fmt_scan (fmt, scanl, i + 1, i, dat, &cb); - fputs (scanl, out); + fmt_scan (fmt, scanl, i, dat, &cb); + fputs (charstring_buffer (scanl), out); if (badaddrs) { fputs ("\nrepl: bad addresses:\n", out); fputs ( badaddrs, out); @@ -241,7 +242,7 @@ finished: fclose (out); /* return dynamically allocated buffers */ - free (scanl); + charstring_free (scanl); fmt_free(fmt, 1); } @@ -400,8 +401,6 @@ insert (struct mailname *np) return 0; if (querysw) { - /* Don't change the "Reply to %s? " prompt format, so that - scripts can rely on it. */ snprintf (buffer, sizeof(buffer), "Reply to %s? ", adrformat (np)); if (!gans (buffer, anoyes)) return 0; @@ -470,11 +469,13 @@ replfilter (FILE *in, FILE *out, char *filter, int fmtproc) execvp (mhl, arglist); errstr = strerror(errno); - write(2, "unable to exec ", 15); - write(2, mhlproc, strlen(mhlproc)); - write(2, ": ", 2); - write(2, errstr, strlen(errstr)); - write(2, "\n", 1); + if (write(2, "unable to exec ", 15) < 0 || + write(2, mhlproc, strlen(mhlproc)) < 0 || + write(2, ": ", 2) < 0 || + write(2, errstr, strlen(errstr)) < 0 || + write(2, "\n", 1) < 0) { + advise ("stderr", "write"); + } _exit (-1); default: