remove remnants of code for MMDF
[mmh] / uip / slocal.c
index ce806dc..275eedd 100644 (file)
@@ -3,6 +3,10 @@
  * 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.
  */
 
 /*
@@ -12,9 +16,6 @@
  *
  *  to their $HOME/.forward file.
  *
- *  Under MMDF-I, users should (symbolically) link
- *  /usr/local/nmh/lib/slocal to $HOME/bin/rcvmail.
- *
  */
 
 /* Changed to use getutent() and friends.  Assumes that when getutent() exists,
@@ -28,6 +29,7 @@
 #include <h/signals.h>
 #include <h/tws.h>
 #include <h/mts.h>
+#include <h/utils.h>
 
 #include <pwd.h>
 #include <signal.h>
 extern int  initgroups(char*, int);
 #endif
 
-
-#ifdef HAVE_DB1_NDBM_H
-#include <db1/ndbm.h>
-#else
-#include <ndbm.h>
+/* 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
+ * harmless.
+ */
+#define DB_DBM_HSEARCH 1
+#ifdef NDBM_HEADER
+#include NDBM_HEADER
 #endif
 
 #include <utmp.h>
@@ -452,7 +457,7 @@ localmail (int fd, char *mdlvr)
 static int
 usr_delivery (int fd, char *delivery, int su)
 {
-    int i, accept, status, won, vecp, next;
+    int i, accept, status=1, won, vecp, next;
     char *field, *pattern, *action, *result, *string;
     char buffer[BUFSIZ], tmpbuf[BUFSIZ];
     char *cp, *vec[NVEC];
@@ -656,6 +661,8 @@ usr_delivery (int fd, char *delivery, int su)
                break;
        }
 
+       if (status) next = 0;   /* action failed, mark for 'N' result */
+
        if (accept && status == 0)
            won++;
     }
@@ -950,9 +957,13 @@ logged_in (void)
     setutent();
 
     while ((utp = getutent()) != NULL) {
-        if (utp->ut_type == USER_PROCESS
-                && utp->ut_user[0] != 0
-                && strncmp (user, utp->ut_user, sizeof(utp->ut_user)) == 0) {
+        if (
+#ifdef HAVE_UTMP_UT_TYPE
+               utp->ut_type == USER_PROCESS
+                &&
+#endif
+               utp->ut_name[0] != 0
+                && strncmp (user, utp->ut_name, sizeof(utp->ut_name)) == 0) {
             if (debug)
                 continue;
             endutent();
@@ -1177,10 +1188,6 @@ usr_pipe (int fd, char *cmd, char *pgm, char **vec, int suppress)
                status = pidwait (child_id, 0);
                alarm (0);
 
-#ifdef MMDFI
-               if (status == RP_MOK || status == RP_OK)
-                   status = 0;
-#endif
                if (verbose) {
                    if (status == 0)
                        verbose_printf (", success.\n");