X-Git-Url: http://git.marmaro.de/?p=mmh;a=blobdiff_plain;f=uip%2Fslocal.c;h=275eedd48d8bb7bbb1830a4b60906e15288bfdf6;hp=acbdf2e47ab15c44dc258d5385bdc2c5cb31686f;hb=1513f7668c494c4583141d6115669b7198c14556;hpb=522138c8d86c20435f045eaee0944a9b008b1c5a diff --git a/uip/slocal.c b/uip/slocal.c index acbdf2e..275eedd 100644 --- a/uip/slocal.c +++ b/uip/slocal.c @@ -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, @@ -26,8 +27,9 @@ #include #include #include -#include -#include +#include +#include +#include #include #include @@ -44,11 +46,14 @@ extern int initgroups(char*, int); #endif - -#ifdef HAVE_DB1_NDBM_H -#include -#else -#include +/* 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 @@ -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");