diff options
Diffstat (limited to 'mail/popper/files/patch-ad')
-rw-r--r-- | mail/popper/files/patch-ad | 215 |
1 files changed, 0 insertions, 215 deletions
diff --git a/mail/popper/files/patch-ad b/mail/popper/files/patch-ad deleted file mode 100644 index 620e4d77c1bd..000000000000 --- a/mail/popper/files/patch-ad +++ /dev/null @@ -1,215 +0,0 @@ -These paths translate From_ lines into Return-Path: in unix style mailboxes. -If the mailbox is in MMDF format, it does nothing (since MMDF has already -done the Return-Path: translation while writing the message out. - -WARNING: Do not merge these patches in with other patch files. - Keep them separate (Andrey, I mean you). - -- Paul Traina - 17-Feb-1997 - -With old variant of this patch message size was counted incorrectly, -"rpath" variable can be referenced without initialization, second -Return-Path not skipped, fixed now. - -- Andrey Chernov - 8-Oct-1997 - -This patch hits again: wrong mbox size calculation and Return-Path was never -writted out - -- Andrey Chernov - 30-Jun-1998 - -*** pop_dropcopy.c.orig Thu Nov 20 00:20:38 1997 ---- pop_dropcopy.c Tue Jun 30 10:19:40 1998 -*************** -*** 155,160 **** ---- 155,191 ---- - return(ti != 0); - } - -+ char * -+ return_path (const char *unixfrom) -+ { -+ static char tmpbuf[MAXLINELEN]; -+ int fromlen = sizeof("From ") - 1; -+ const char *fp, *hp, *cp, *ep; -+ -+ /* if it doesn't start with a From_, it's not */ -+ if (strncmp(unixfrom, "From ", fromlen)) -+ return NULL; -+ -+ fp = unixfrom + fromlen; -+ hp = cp = strchr(fp, ' '); -+ while (hp = strchr(++hp, 'r')) -+ if (!strncmp(hp, "remote from", sizeof("remote from") - 1)) { -+ hp = strrchr(hp, ' '); -+ break; -+ } -+ -+ if (hp) { -+ ep = strrchr(++hp, '\n'); -+ snprintf(tmpbuf, sizeof(tmpbuf)-2, "Return-Path: %.*s!%.*s", -+ ep - hp, hp, -+ cp - fp, fp); -+ } else -+ snprintf(tmpbuf, sizeof(tmpbuf)-2, "Return-Path: %.*s", -+ cp - fp, fp); -+ strcat(tmpbuf, "\n"); -+ return tmpbuf; -+ } -+ - /* Hashing to a spool directory helps reduce the lookup time for sites - * with thousands of mail spool files. Unix uses a linear list to - * save directory information and the following methods attempt to -*************** -*** 279,284 **** ---- 310,316 ---- - char buffer[MAXLINELEN]; /* Read buffer */ - MD5_CTX mdContext; - unsigned char digest[16]; -+ char *rpath = NULL; - - #ifdef DEBUG - if(p->debug) -*************** -*** 343,348 **** ---- 375,383 ---- - (p->mmdf_separator ? !strcmp(p->mmdf_separator, buffer) : - isfromline(buffer))) { - -+ if (!p->mmdf_separator) -+ rpath = return_path(buffer); -+ - if (expecting_trailer) { - /* skip over the MMDF trailer */ - expecting_trailer = 0; -*************** -*** 388,393 **** ---- 423,435 ---- - mp->retr_flag = FALSE; - mp->orig_retr_state = FALSE; - mp->uidl_str = "\n"; -+ mp->return_path = rpath ? strdup(rpath) : NULL; -+ if (rpath) { -+ int i = strlen(rpath) + 1; -+ mp->length += i; -+ p->drop_size += i; -+ mp->lines++; -+ } - #ifdef DEBUG - if(p->debug) - pop_log(p,POP_DEBUG, "Msg %d being added to list", mp->number); -*************** -*** 466,471 **** ---- 508,515 ---- - mp->retr_flag = TRUE; - mp->orig_retr_state = TRUE; - } -+ } else if (rpath && (strncasecmp(buffer,"Return-Path:",12) == 0)) { -+ continue; - } - } else { - content_nchar += nchar; -*************** -*** 505,510 **** ---- 549,555 ---- - int content_length, content_nchar, cont_len; - MD5_CTX mdContext; - unsigned char digest[16]; -+ char *rpath = NULL; - - FILE *mail_drop; /* Streams for fids */ - -*************** -*** 577,582 **** ---- 622,630 ---- - (p->mmdf_separator ? !strcmp(p->mmdf_separator, buffer) : - isfromline(buffer))) { - -+ if (!p->mmdf_separator) -+ rpath = return_path(buffer); -+ - if (expecting_trailer) { - expecting_trailer = 0; - continue; -*************** -*** 622,628 **** - mp->retr_flag = FALSE; - mp->orig_retr_state = FALSE; - mp->uidl_str = "\n"; -! - #ifdef DEBUG - if(p->debug) - pop_log(p,POP_DEBUG, "Msg %d being added to list", mp->number); ---- 670,682 ---- - mp->retr_flag = FALSE; - mp->orig_retr_state = FALSE; - mp->uidl_str = "\n"; -! mp->return_path = rpath ? strdup(rpath) : NULL; -! if (rpath) { -! int i = strlen(rpath) + 1; -! mp->length += i; -! p->drop_size += i; -! mp->lines++; -! } - #ifdef DEBUG - if(p->debug) - pop_log(p,POP_DEBUG, "Msg %d being added to list", mp->number); -*************** -*** 705,710 **** ---- 759,766 ---- - mp->retr_flag = TRUE; - mp->orig_retr_state = TRUE; - } -+ } else if (rpath && (strncasecmp(buffer,"Return-Path:",12) == 0)) { -+ continue; - } - } else { - content_nchar += nchar; ---- popper.h Mon Feb 17 13:15:44 1997 -+++ popper.h Mon Feb 17 13:35:48 1997 -@@ -260,6 +263,8 @@ - Used for RSET cmd. */ - char *uidl_str; /* Cache of the UIDL str for - faster access */ -+ char *return_path; /* Cache of the rpath str for -+ faster access */ - } MsgInfoList; - - typedef struct { /* POP parameter block */ -*** pop_send.c.old Thu Nov 20 00:20:38 1997 ---- pop_send.c Tue Jun 30 10:06:23 1998 -*************** -*** 38,43 **** ---- 38,44 ---- - register int msg_num; - register int msg_lines; - register int uidl_sent = 0; -+ register int rpath_sent = 0; - char buffer[MAXMSGLINELEN]; - - /* Convert the first parameter into an integer */ -*************** -*** 86,91 **** ---- 87,93 ---- - /* Send the header of the message followed by a blank line */ - while (fgets(buffer, MAXMSGLINELEN, p->drop)) { - if (!strncasecmp(buffer, "Content-Length:", 15) || -+ (mp->return_path && !strncasecmp(buffer,"Return-Path:",12)) || - !strncasecmp(buffer, "X-UIDL:", 7)) { /* Skip UIDLs */ - continue; /* Content-Length is MTA dependent, don't send to MUA */ - } -*************** -*** 96,101 **** ---- 98,109 ---- - sprintf(uidl_buf, "%s %s", "X-UIDL:", mp->uidl_str); - pop_sendline(p, uidl_buf); - uidl_sent++; -+ } -+ if (mp->return_path && !rpath_sent && (*buffer=='\n' || -+ !strncasecmp(buffer,"Status:",7) || -+ !strncasecmp(buffer,"Received:",9))) { -+ pop_sendline(p, mp->return_path); -+ rpath_sent++; - } - - pop_sendline(p, buffer); |