X-Git-Url: http://git.marmaro.de/?p=mmh;a=blobdiff_plain;f=uip%2Fslocal.c;h=086fac313811102847f352ad51bc74b8f890830a;hp=d97af9084ba3442a7667ac9bee7c19b067c34c5f;hb=fc71710f8695ea07d852284286b058ecb3955317;hpb=83e04675b53374a1436029a367283d6d4ee05a07 diff --git a/uip/slocal.c b/uip/slocal.c index d97af90..086fac3 100644 --- a/uip/slocal.c +++ b/uip/slocal.c @@ -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; npw_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)) {