X-Git-Url: http://git.marmaro.de/?a=blobdiff_plain;f=uip%2Frcvdist.c;h=4061735505a4692fa6d9b7eb2a6018381b20ce80;hb=832f687b6c2afdb9dd09e0c5bbc249e1bf22f433;hp=7ee47fd92e0ce748b48f75bba9ec99716b43287d;hpb=25c0bc3f1c034964421f8007e5802c647c5dc908;p=mmh diff --git a/uip/rcvdist.c b/uip/rcvdist.c index 7ee47fd..4061735 100644 --- a/uip/rcvdist.c +++ b/uip/rcvdist.c @@ -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))