1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108
|
--- qpopper-2.53/pop_dropcopy.c.orig Sun Mar 12 17:22:41 2000
+++ qpopper-2.53/pop_dropcopy.c Sun May 14 12:50:19 2000
@@ -284,6 +284,7 @@
int uidl_found;
int expecting_trailer;
int content_length, content_nchar, cont_len;
+ int nldelim;
char buffer[MAXLINELEN]; /* Read buffer */
MD5_CTX mdContext;
unsigned char digest[16];
@@ -329,6 +330,7 @@
newline = 1;
rewind(p->drop);
+ nldelim = 1;
inheader = 0;
msg_num = 0;
uidl_found = 0;
@@ -347,7 +349,7 @@
for (mp=p->mlp - 1; fgets(buffer, MAXMSGLINELEN, p->drop);) {
nchar = strlen(buffer);
- if ((content_nchar >= content_length) &&
+ if (nldelim && (content_nchar >= content_length) &&
(p->mmdf_separator ? !strcmp(p->mmdf_separator, buffer) :
isfromline(buffer))) {
@@ -411,7 +413,7 @@
continue; /* Don't count message separator in total size */
}
- if (inheader) {
+ if (nldelim && inheader) {
if (*buffer == '\n') {
inheader = 0;
content_length = cont_len;
@@ -473,14 +475,15 @@
mp->orig_retr_state = TRUE;
}
}
- } else {
+ } else if (!inheader) {
content_nchar += nchar;
- mp->body_lines++;
+ if (nchar > 0 && buffer[nchar - 1] == '\n') mp->body_lines++;
}
+ nldelim = (nchar > 0 && buffer[nchar - 1] == '\n');
mp->length += nchar + 1;
p->drop_size += nchar + 1;
- mp->lines++;
+ if (nldelim) mp->lines++;
}
p->msg_count = msg_num;
@@ -506,6 +509,7 @@
int nchar; /* Bytes written/read */
int inheader; /* Header section flag */
int uidl_found; /* UIDL header flag */
+ int nldelim;
int msg_num;
int expecting_trailer;
int content_length, content_nchar, cont_len;
@@ -548,6 +552,7 @@
/* Scan the file, loading the message information list with
information about each message */
+ nldelim = 1;
inheader = 0;
uidl_found = 0;
expecting_trailer = 0;
@@ -579,7 +584,7 @@
p->temp_drop, errno);
}
- if ((content_nchar >= content_length) &&
+ if (nldelim && (content_nchar >= content_length) &&
(p->mmdf_separator ? !strcmp(p->mmdf_separator, buffer) :
isfromline(buffer))) {
@@ -644,7 +649,7 @@
continue; /* Do not include From separator in message size */
}
- if (inheader) {
+ if (nldelim && inheader) {
if (*buffer == '\n') {
inheader = 0;
mp->body_lines = 1;
@@ -710,14 +715,15 @@
mp->orig_retr_state = TRUE;
}
}
- } else {
+ } else if (!inheader) {
content_nchar += nchar;
- mp->body_lines++;
+ if (nchar > 0 && buffer[nchar - 1] == '\n') mp->body_lines++;
}
+ nldelim = (nchar > 0 && buffer[nchar - 1] == '\n');
mp->length += nchar + 1;
p->drop_size += nchar + 1;
- mp->lines++;
+ if (nldelim) mp->lines++;
}
p->msg_count = msg_num;
|