Switch from using RETSIGTYPE via autoconf to void.
[mmh] / uip / slocal.c
index d97af90..086fac3 100644 (file)
@@ -86,10 +86,6 @@ static struct swit switches[] = {
 };
 
 
-/* global maildelivery file */
-char *maildelivery = NMHETCDIR"/maildelivery";
-
-
 static int globbed = 0;  /* have we built "vars" table yet? */
 static int parsed = 0;  /* have we built header field table yet */
 static int utmped = 0;  /* have we scanned umtp(x) file yet */
@@ -179,7 +175,7 @@ static int timely(char *, char *);
 static int usr_file(int, char *);
 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, ...);
@@ -437,12 +433,15 @@ main(int argc, char **argv)
 static int
 localmail(int fd, char *mdlvr)
 {
+       char buf[BUFSIZ];
+
        /* delivery according to personal Maildelivery file */
        if (usr_delivery(fd, mdlvr ? mdlvr : ".maildelivery", 0) != -1) {
                return 0;
        }
        /* delivery according to global Maildelivery file */
-       if (usr_delivery(fd, maildelivery, 1) != -1) {
+       snprintf(buf, sizeof buf, "%s/%s", mhetcdir, "maildelivery");
+       if (usr_delivery(fd, buf, 1) != -1) {
                return 0;
        }
        if (verbose) {
@@ -1097,7 +1096,7 @@ usr_folder(int fd, char *string)
        vec[1] = folder;
        vec[2] = NULL;
 
-       return usr_pipe(fd, "rcvstore", rcvstoreproc, vec, 1);
+       return usr_pipe(fd, "rcvstore", "rcvstore", vec, 1);
 }
 
 /*
@@ -1107,8 +1106,9 @@ static int
 usr_pipe(int fd, char *cmd, char *pgm, char **vec, int suppress)
 {
        pid_t child_id;
-       int bytes, seconds, status;
+       int bytes, seconds, status, n;
        struct stat st;
+       char *path;
 
        if (verbose && !suppress) {
                verbose_printf("delivering to pipe \"%s\"", cmd);
@@ -1133,7 +1133,9 @@ usr_pipe(int fd, char *cmd, char *pgm, char **vec, int suppress)
                if (fd != 3) {
                        dup2(fd, 3);
                }
-               closefds(4);
+               for (n=4; n<OPEN_MAX; n++) {
+                       close(n);
+               }
 
 #ifdef TIOCNOTTY
                if ((fd = open("/dev/tty", O_RDWR)) != -1) {
@@ -1145,10 +1147,12 @@ usr_pipe(int fd, char *cmd, char *pgm, char **vec, int suppress)
                /* put in own process group */
                setpgid((pid_t) 0, getpid());
 
+               path = getenv("PATH");
                *environ = NULL;
                m_putenv("USER", pw->pw_name);
                m_putenv("HOME", pw->pw_dir);
                m_putenv("SHELL", pw->pw_shell);
+               m_putenv("PATH", path);
 
                execvp(pgm, vec);
                _exit(-1);
@@ -1160,7 +1164,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);
+                       kill(-child_id, SIGKILL);
                        if (verbose)
                                verbose_printf(", timed-out; terminated\n");
                        return -1;
@@ -1196,7 +1200,7 @@ usr_pipe(int fd, char *cmd, char *pgm, char **vec, int suppress)
 }
 
 
-static RETSIGTYPE
+static void
 alrmser(int i)
 {
 #ifndef RELIABLE_SIGNALS
@@ -1259,7 +1263,7 @@ copy_message(int qd, char *tmpfil, int fold)
        FILE *qfp, *ffp;
        char *tfile = NULL;
 
-       tfile = m_mktemp2(NULL, invo_name, &fd1, NULL);
+       tfile = m_mktemp2("/tmp/", invo_name, &fd1, NULL);
        if (tfile == NULL) return -1;
        fchmod(fd1, 0600);
        strncpy(tmpfil, tfile, BUFSIZ);
@@ -1318,27 +1322,12 @@ you_lose:
                if (first) {
                        first = 0;
                        if (strncmp(buffer, "From ", i)==0) {
-                               char *fp, *cp;
                                /*
                                ** get copy of envelope information
                                ** ("From " line)
                                */
                                envelope = getcpy(buffer);
 
-                               /*
-                               ** Now create a "Return-Path:" line
-                               ** from the "From " line.
-                               */
-                               cp = strchr(fp = envelope + i, ' ');
-                               snprintf(buffer, sizeof(buffer),
-                                               "Return-Path: %.*s\n",
-                                               (int)(cp - fp), fp);
-
-                               /* Add Return-Path header to message */
-                               fputs(buffer, ffp);
-                               if (ferror(ffp)) {
-                                       goto fputs_error;
-                               }
                                /* Put the delivery date in message */
                                fputs(ddate, ffp);
                                if (ferror(ffp)) {