Added argument to fmt_scan() to specify the buffer size.
[mmh] / uip / rcvdist.c
index 7ee47fd..4061735 100644 (file)
@@ -2,8 +2,6 @@
 /*
  * rcvdist.c -- asynchronously redistribute messages
  *
- * $Id$
- *
  * This code is Copyright (c) 2002, by the authors of nmh.  See the
  * COPYRIGHT file in the root directory of the nmh distribution for
  * complete copyright information.
@@ -44,7 +42,8 @@ main (int argc, char **argv)
     int i, vecp = 1;
     char *addrs = NULL, *cp, *form = NULL, buf[BUFSIZ];
     char **argp, **arguments, *vec[MAXARGS];
-    register FILE *fp;
+    FILE *fp;
+    char *tfile = NULL;
 
     done=unlink_done;
 
@@ -75,10 +74,10 @@ main (int argc, char **argv)
                        "%s [switches] [switches for postproc] address ...",
                        invo_name);
                    print_help (buf, switches, 1);
-                   done (1);
+                   done (0);
                case VERSIONSW:
                    print_version(invo_name);
-                   done (1);
+                   done (0);
 
                case FORMSW: 
                    if (!(form = *argp++) || *form == '-')
@@ -94,12 +93,18 @@ main (int argc, char **argv)
            invo_name);
 
     umask (~m_gmprot ());
-    strncpy (tmpfil, m_tmpfil (invo_name), sizeof(tmpfil));
-    if ((fp = fopen (tmpfil, "w+")) == NULL)
-       adios (tmpfil, "unable to create");
+
+    tfile = m_mktemp2(NULL, invo_name, NULL, &fp);
+    if (tfile == NULL) adios("rcvdist", "unable to create temporary file");
+    strncpy (tmpfil, tfile, sizeof(tmpfil));
+
     cpydata (fileno (stdin), fileno (fp), "message", tmpfil);
     fseek (fp, 0L, SEEK_SET);
-    strncpy (drft, m_tmpfil (invo_name), sizeof(drft));
+
+    tfile = m_mktemp2(NULL, invo_name, NULL, NULL);
+    if (tfile == NULL) adios("forw", "unable to create temporary file");
+    strncpy (drft, tfile, sizeof(tmpfil));
+
     rcvdistout (fp, form, addrs);
     fclose (fp);
 
@@ -109,6 +114,10 @@ main (int argc, char **argv)
     vec[0] = r1bindex (postproc, '/');
     vec[vecp++] = "-dist";
     vec[vecp++] = drft;
+    if ((cp = context_find ("mhlproc"))) {
+      vec[vecp++] = "-mhlproc";
+      vec[vecp++] = cp;
+    }
     vec[vecp] = NULL;
 
     for (i = 0; (child_id = fork()) == NOTOK && i < 5; i++)
@@ -253,7 +262,7 @@ finished: ;
     scanl = mh_xmalloc ((size_t) i + 2);
     dat[0] = dat[1] = dat[2] = dat[4] = 0;
     dat[3] = outputlinelen;
-    fmt_scan (fmt, scanl, i, dat);
+    fmt_scan (fmt, scanl, i + 1, i, dat);
     fputs (scanl, out);
 
     if (ferror (out))