summaryrefslogtreecommitdiff
path: root/mail/popper/files/patch-ad
diff options
context:
space:
mode:
Diffstat (limited to 'mail/popper/files/patch-ad')
-rw-r--r--mail/popper/files/patch-ad215
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);