|
a/src/utils/idfile.cpp |
|
b/src/utils/idfile.cpp |
|
... |
|
... |
62 |
// not (for folder information). This forces us to look at many
|
62 |
// not (for folder information). This forces us to look at many
|
63 |
// lines and long ones
|
63 |
// lines and long ones
|
64 |
int lnum = 1;
|
64 |
int lnum = 1;
|
65 |
for (int loop = 1; loop < 200; loop++, lnum++) {
|
65 |
for (int loop = 1; loop < 200; loop++, lnum++) {
|
66 |
|
66 |
|
67 |
#define LL 1024
|
67 |
#define LL 2*1024
|
68 |
char cline[LL+1];
|
68 |
char cline[LL+1];
|
69 |
cline[LL] = 0;
|
69 |
cline[LL] = 0;
|
70 |
input.getline(cline, LL-1);
|
70 |
input.getline(cline, LL-1);
|
71 |
if (input.fail()) {
|
71 |
if (input.fail()) {
|
72 |
if (input.bad()) {
|
72 |
if (input.bad()) {
|
|
... |
|
... |
100 |
continue;
|
100 |
continue;
|
101 |
}
|
101 |
}
|
102 |
}
|
102 |
}
|
103 |
|
103 |
|
104 |
// emacs vm can insert VERY long header lines.
|
104 |
// emacs vm can insert VERY long header lines.
|
105 |
if (ll > 800) {
|
105 |
if (ll > LL - 20) {
|
106 |
LOGDEB2(("idFile: Line too long\n"));
|
106 |
LOGDEB2(("idFile: Line too long\n"));
|
107 |
return string();
|
107 |
return string();
|
108 |
}
|
108 |
}
|
109 |
|
109 |
|
110 |
// Check for mbox 'From ' line
|
110 |
// Check for mbox 'From ' line
|
111 |
if (lnum == 1 && !strncmp("From ", cline, 5)) {
|
111 |
if (lnum == 1 && !strncmp("From ", cline, 5)) {
|
112 |
if (treat_mbox_as_rfc822 == -1)
|
112 |
if (treat_mbox_as_rfc822 == -1) {
|
113 |
line1HasFrom = true;
|
113 |
line1HasFrom = true;
|
|
|
114 |
LOGDEB2(("idfile: line 1 has From_\n"));
|
|
|
115 |
}
|
114 |
continue;
|
116 |
continue;
|
115 |
}
|
117 |
}
|
116 |
|
118 |
|
117 |
// Except for a possible first line with 'From ', lines must
|
119 |
// Except for a possible first line with 'From ', lines must
|
118 |
// begin with whitespace or have a colon
|
120 |
// begin with whitespace or have a colon
|