Remove RCS keywords, since they no longer work after git migration.
[mmh] / uip / rcvdist.c
index 9eb9916..9038d5f 100644 (file)
@@ -2,14 +2,17 @@
 /*
  * 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.
  */
 
 #include <h/mh.h>
 #include <h/fmt_scan.h>
 #include <h/rcvmail.h>
 #include <h/tws.h>
-#include <mts/generic/mts.h>
+#include <h/mts.h>
+#include <h/utils.h>
 
 static struct swit switches[] = {
 #define        FORMSW       0
@@ -29,7 +32,7 @@ static char tmpfil[BUFSIZ] = "";
  * prototypes
  */
 static void rcvdistout (FILE *, char *, char *);
-int done (int);
+static void unlink_done (int) NORETURN;
 
 
 int
@@ -39,7 +42,10 @@ 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;
 
 #ifdef LOCALE
     setlocale(LC_ALL, "");
@@ -87,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);
 
@@ -177,8 +189,7 @@ rcvdistout (FILE *inb, char *form, char *addrs)
     *--savecomp = 0;
 
     for (i = ncomps; i--;)
-       if (!(*nxtbuf++ = malloc (SBUFSIZ)))
-           adios (NULL, "unable to allocate component buffer");
+       *nxtbuf++ = mh_xmalloc (SBUFSIZ);
     nxtbuf = compbuffers;
     tmpbuf = *nxtbuf++;
 
@@ -198,7 +209,7 @@ rcvdistout (FILE *inb, char *form, char *addrs)
            case FLDPLUS: 
                if ((cptr = wantcomp[CHASH (name)]))
                    do {
-                       if (!strcasecmp (name, cptr->c_name)) {
+                       if (!mh_strcasecmp (name, cptr->c_name)) {
                            char_read += msg_count;
                            if (!cptr->c_text) {
                                cptr->c_text = tmpbuf;
@@ -244,7 +255,7 @@ rcvdistout (FILE *inb, char *form, char *addrs)
 finished: ;
 
     i = format_len + char_read + 256;
-    scanl = malloc ((size_t) i + 2);
+    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);
@@ -264,8 +275,8 @@ finished: ;
 }
 
 
-int
-done (int status)
+static void
+unlink_done (int status)
 {
     if (backup[0])
        unlink (backup);
@@ -275,5 +286,4 @@ done (int status)
        unlink (tmpfil);
 
     exit (status ? RCV_MBX : RCV_MOK);
-    return 1;  /* dead code to satisfy the compiler */
 }