Improve the checks for where to find ndbm (dbm_open etc); should now
[mmh] / uip / slocal.c
index 8a3f5f7..0e77916 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.
  */
 
 /*
@@ -27,7 +31,7 @@
 #include <h/rcvmail.h>
 #include <h/signals.h>
 #include <h/tws.h>
-#include <mts/generic/mts.h>
+#include <h/mts.h>
 
 #include <pwd.h>
 #include <signal.h>
@@ -48,8 +52,17 @@ extern int  initgroups(char*, int);
 #ifdef HAVE_DB1_NDBM_H
 #include <db1/ndbm.h>
 #else
+#ifdef HAVE_GDBM_NDBM_H
+#include <gdbm/ndbm.h>
+#else
+#if defined(HAVE_DB_H)
+#define DB_DBM_HSEARCH 1
+#include <db.h>
+#else
 #include <ndbm.h>
 #endif
+#endif
+#endif
 
 #include <utmp.h>
 
@@ -452,7 +465,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 +669,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 +965,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();