]> diplodocus.org Git - nmh/blobdiff - uip/replsbr.c
pending-release-notes: add mhshow's "-prefer", and mh-format's %(kibi/kilo)
[nmh] / uip / replsbr.c
index 46ae7dc3368ebd7225d7b69c8eeae81cf6cb0847..c4ca0c4b2f86d23b3ad3b9ae1040a8db4c2065d7 100644 (file)
@@ -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;
     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;
     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;
        }
     }
     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;
     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;
     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);
     if (badaddrs) {
        fputs ("\nrepl: bad addresses:\n", out);
        fputs ( badaddrs, out);
@@ -241,7 +242,7 @@ finished:
     fclose (out);
 
     /* return dynamically allocated buffers */
     fclose (out);
 
     /* return dynamically allocated buffers */
-    free (scanl);
+    charstring_free (scanl);
     fmt_free(fmt, 1);
 }
 
     fmt_free(fmt, 1);
 }
 
@@ -400,8 +401,6 @@ insert (struct mailname *np)
        return 0;
 
     if (querysw) {
        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;
        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);
 
            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: 
            _exit (-1);
 
        default: