Garbage collect autoconf support for checking for the header file for initgroups
[mmh] / uip / slocal.c
index 08a3e28..13d0511 100644 (file)
@@ -2,8 +2,6 @@
 /*
  * slocal.c -- asynchronously filter and deliver new mail
  *
- * $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 <sys/ioctl.h>
 #include <fcntl.h>
 
-#ifdef INITGROUPS_HEADER
-#include INITGROUPS_HEADER
-#else
-/* On AIX 4.1, initgroups() is defined and even documented (giving the parameter
-   types as char* and int), but doesn't have a prototype in any of the system
-   header files.  AIX 4.3, SunOS 4.1.3, and ULTRIX 4.2A have the same
-   problem. */
-extern int  initgroups(char*, int);
-#endif
-
 /* This define is needed for Berkeley db v2 and above to
  * make the header file expose the 'historical' ndbm APIs.
  * We define it unconditionally because this is simple and
@@ -192,7 +180,7 @@ static int timely (char *, char *);
 static int usr_file (int, char *, int);
 static int usr_pipe (int, char *, char *, char **, int);
 static int usr_folder (int, char *);
-static RETSIGTYPE alrmser (int);
+static void alrmser (int);
 static void get_sender (char *, char **);
 static int copy_message (int, char *, int);
 static void verbose_printf (char *fmt, ...);
@@ -412,7 +400,8 @@ main (int argc, char **argv)
     /* deliver the message */
     status = localmail (fd, mdlvr);
 
-    return done (status != -1 ? RCV_MOK : RCV_MBX);
+    done (status != -1 ? RCV_MOK : RCV_MBX);
+    return 1;
 }
 
 
@@ -440,11 +429,7 @@ localmail (int fd, char *mdlvr)
        verbose_printf ("(delivering to standard mail spool)\n");
 
     /* last resort - deliver to standard mail spool */
-#ifdef SLOCAL_MBOX
     return usr_file (fd, mbox, MBOX_FORMAT);
-#else
-    return usr_file (fd, mbox, MMDF_FORMAT);
-#endif
 }
 
 
@@ -958,7 +943,7 @@ logged_in (void)
 
     while ((utp = getutent()) != NULL) {
         if (
-#ifdef HAVE_UTMP_UT_TYPE
+#ifdef HAVE_STRUCT_UTMP_UT_TYPE
                utp->ut_type == USER_PROCESS
                 &&
 #endif
@@ -1066,7 +1051,11 @@ usr_file (int fd, char *mailbox, int mbx_style)
     }
 
     /* close and unlock file */
-    mbx_close (mailbox, md);
+    if (mbx_close (mailbox, md) == NOTOK) {
+        if (verbose)
+           adorn ("", "error closing:");
+        return -1;
+    }
 
     if (verbose)
        verbose_printf (", success.\n");
@@ -1203,7 +1192,7 @@ usr_pipe (int fd, char *cmd, char *pgm, char **vec, int suppress)
                 * Ruthlessly kill the child and anything
                 * else in its process group.
                 */
-               KILLPG(child_id, SIGKILL);
+               killpg(child_id, SIGKILL);
                if (verbose)
                    verbose_printf (", timed-out; terminated\n");
                return -1;
@@ -1212,13 +1201,9 @@ usr_pipe (int fd, char *cmd, char *pgm, char **vec, int suppress)
 }
 
 
-static RETSIGTYPE
+static void
 alrmser (int i)
 {
-#ifndef RELIABLE_SIGNALS
-    SIGNAL (SIGALRM, alrmser);
-#endif
-
     longjmp (myctx, DONE);
 }
 
@@ -1273,12 +1258,12 @@ copy_message (int qd, char *tmpfil, int fold)
     int i, first = 1, fd1, fd2;
     char buffer[BUFSIZ];
     FILE *qfp, *ffp;
+    char *tfile = NULL;
 
-    strcpy (tmpfil, m_tmpfil (invo_name));
-
-    /* open temporary file to put message in */
-    if ((fd1 = open (tmpfil, O_RDWR | O_CREAT | O_TRUNC, 0600)) == -1)
-       return -1;
+    tfile = m_mktemp2(NULL, invo_name, &fd1, NULL);
+    if (tfile == NULL) return -1;
+    fchmod(fd1, 0600);
+    strncpy (tmpfil, tfile, BUFSIZ);
 
     if (!fold) {
        while ((i = read (qd, buffer, sizeof(buffer))) > 0)
@@ -1332,9 +1317,6 @@ you_lose:
        if (first) {
            first = 0;
            if (!strncmp (buffer, "From ", i)) {
-#ifdef RPATHS
-               char *fp, *cp, *hp, *ep;
-#endif
                /* get copy of envelope information ("From " line) */
                envelope = getcpy (buffer);
 
@@ -1345,33 +1327,6 @@ you_lose:
                    goto fputs_error;
 #endif
 
-#ifdef RPATHS
-               /*
-                * Now create a "Return-Path:" line
-                * from the "From " line.
-                */
-               hp = cp = strchr(fp = envelope + i, ' ');
-               while ((hp = strchr(++hp, 'r')))
-                   if (uprf (hp, "remote from")) {
-                       hp = strrchr(hp, ' ');
-                       break;
-                   }
-               if (hp) {
-                   /* return path for UUCP style addressing */
-                   ep = strchr(++hp, '\n');
-                   snprintf (buffer, sizeof(buffer), "Return-Path: %.*s!%.*s\n",
-                       ep - hp, hp, cp - fp, fp);
-               } else {
-                   /* return path for standard domain addressing */
-                   snprintf (buffer, sizeof(buffer), "Return-Path: %.*s\n",
-                       cp - fp, fp);
-               }
-
-               /* Add Return-Path header to message */
-               fputs (buffer, ffp);
-               if (ferror (ffp))
-                   goto fputs_error;
-#endif
                /* Put the delivery date in message */
                fputs (ddate, ffp);
                if (ferror (ffp))