Mercurial > dovecot > original-hg > dovecot-1.2
annotate src/lib-index/mbox/mbox-append.c @ 196:95d21ab87eeb HEAD
X-IMAPbase is now parsed correctly.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Mon, 09 Sep 2002 05:11:01 +0300 |
parents | 4223b9ed0c80 |
children | 0bb7bf7266ab |
rev | line source |
---|---|
0 | 1 /* Copyright (C) 2002 Timo Sirainen */ |
2 | |
3 #include "lib.h" | |
4 #include "ioloop.h" | |
22
a946ce1f09b7
mbox fixes, not fully working yet but almost :)
Timo Sirainen <tss@iki.fi>
parents:
10
diff
changeset
|
5 #include "iobuffer.h" |
a946ce1f09b7
mbox fixes, not fully working yet but almost :)
Timo Sirainen <tss@iki.fi>
parents:
10
diff
changeset
|
6 #include "hex-binary.h" |
a946ce1f09b7
mbox fixes, not fully working yet but almost :)
Timo Sirainen <tss@iki.fi>
parents:
10
diff
changeset
|
7 #include "md5.h" |
0 | 8 #include "mbox-index.h" |
9 #include "mail-index-util.h" | |
10 | |
160
ff05b320482c
Bigger changes.. full_virtual_size was removed from index record and
Timo Sirainen <tss@iki.fi>
parents:
127
diff
changeset
|
11 static MailIndexRecord *mail_index_record_append(MailIndex *index, |
ff05b320482c
Bigger changes.. full_virtual_size was removed from index record and
Timo Sirainen <tss@iki.fi>
parents:
127
diff
changeset
|
12 time_t internal_date) |
0 | 13 { |
14 MailIndexRecord trec, *rec; | |
15 | |
16 memset(&trec, 0, sizeof(MailIndexRecord)); | |
17 trec.internal_date = internal_date; | |
18 | |
19 rec = &trec; | |
20 if (!index->append(index, &rec)) | |
21 return NULL; | |
22 | |
23 return rec; | |
24 } | |
25 | |
160
ff05b320482c
Bigger changes.. full_virtual_size was removed from index record and
Timo Sirainen <tss@iki.fi>
parents:
127
diff
changeset
|
26 static void mbox_read_message(IOBuffer *inbuf) |
0 | 27 { |
22
a946ce1f09b7
mbox fixes, not fully working yet but almost :)
Timo Sirainen <tss@iki.fi>
parents:
10
diff
changeset
|
28 unsigned char *msg; |
184 | 29 size_t i, size, startpos; |
78 | 30 int lastmsg; |
0 | 31 |
22
a946ce1f09b7
mbox fixes, not fully working yet but almost :)
Timo Sirainen <tss@iki.fi>
parents:
10
diff
changeset
|
32 /* read until "[\r]\nFrom " is found */ |
160
ff05b320482c
Bigger changes.. full_virtual_size was removed from index record and
Timo Sirainen <tss@iki.fi>
parents:
127
diff
changeset
|
33 startpos = i = 0; lastmsg = TRUE; |
22
a946ce1f09b7
mbox fixes, not fully working yet but almost :)
Timo Sirainen <tss@iki.fi>
parents:
10
diff
changeset
|
34 while (io_buffer_read_data(inbuf, &msg, &size, startpos) >= 0) { |
a946ce1f09b7
mbox fixes, not fully working yet but almost :)
Timo Sirainen <tss@iki.fi>
parents:
10
diff
changeset
|
35 for (i = startpos; i < size; i++) { |
160
ff05b320482c
Bigger changes.. full_virtual_size was removed from index record and
Timo Sirainen <tss@iki.fi>
parents:
127
diff
changeset
|
36 if (msg[i] == ' ' && i >= 5) { |
22
a946ce1f09b7
mbox fixes, not fully working yet but almost :)
Timo Sirainen <tss@iki.fi>
parents:
10
diff
changeset
|
37 /* See if it's space after "From" */ |
a946ce1f09b7
mbox fixes, not fully working yet but almost :)
Timo Sirainen <tss@iki.fi>
parents:
10
diff
changeset
|
38 if (msg[i-5] == '\n' && msg[i-4] == 'F' && |
a946ce1f09b7
mbox fixes, not fully working yet but almost :)
Timo Sirainen <tss@iki.fi>
parents:
10
diff
changeset
|
39 msg[i-3] == 'r' && msg[i-2] == 'o' && |
a946ce1f09b7
mbox fixes, not fully working yet but almost :)
Timo Sirainen <tss@iki.fi>
parents:
10
diff
changeset
|
40 msg[i-1] == 'm') { |
a946ce1f09b7
mbox fixes, not fully working yet but almost :)
Timo Sirainen <tss@iki.fi>
parents:
10
diff
changeset
|
41 /* yes, see if we had \r too */ |
a946ce1f09b7
mbox fixes, not fully working yet but almost :)
Timo Sirainen <tss@iki.fi>
parents:
10
diff
changeset
|
42 i -= 5; |
a946ce1f09b7
mbox fixes, not fully working yet but almost :)
Timo Sirainen <tss@iki.fi>
parents:
10
diff
changeset
|
43 if (i > 0 && msg[i-1] == '\r') |
a946ce1f09b7
mbox fixes, not fully working yet but almost :)
Timo Sirainen <tss@iki.fi>
parents:
10
diff
changeset
|
44 i--; |
a946ce1f09b7
mbox fixes, not fully working yet but almost :)
Timo Sirainen <tss@iki.fi>
parents:
10
diff
changeset
|
45 break; |
a946ce1f09b7
mbox fixes, not fully working yet but almost :)
Timo Sirainen <tss@iki.fi>
parents:
10
diff
changeset
|
46 } |
a946ce1f09b7
mbox fixes, not fully working yet but almost :)
Timo Sirainen <tss@iki.fi>
parents:
10
diff
changeset
|
47 } |
a946ce1f09b7
mbox fixes, not fully working yet but almost :)
Timo Sirainen <tss@iki.fi>
parents:
10
diff
changeset
|
48 } |
0 | 49 |
22
a946ce1f09b7
mbox fixes, not fully working yet but almost :)
Timo Sirainen <tss@iki.fi>
parents:
10
diff
changeset
|
50 if (i < size) { |
a946ce1f09b7
mbox fixes, not fully working yet but almost :)
Timo Sirainen <tss@iki.fi>
parents:
10
diff
changeset
|
51 startpos = i; |
78 | 52 lastmsg = FALSE; |
22
a946ce1f09b7
mbox fixes, not fully working yet but almost :)
Timo Sirainen <tss@iki.fi>
parents:
10
diff
changeset
|
53 break; |
a946ce1f09b7
mbox fixes, not fully working yet but almost :)
Timo Sirainen <tss@iki.fi>
parents:
10
diff
changeset
|
54 } |
0 | 55 |
22
a946ce1f09b7
mbox fixes, not fully working yet but almost :)
Timo Sirainen <tss@iki.fi>
parents:
10
diff
changeset
|
56 if (i > 0) { |
a946ce1f09b7
mbox fixes, not fully working yet but almost :)
Timo Sirainen <tss@iki.fi>
parents:
10
diff
changeset
|
57 startpos = i < 7 ? i : 7; |
a946ce1f09b7
mbox fixes, not fully working yet but almost :)
Timo Sirainen <tss@iki.fi>
parents:
10
diff
changeset
|
58 i -= startpos; |
a946ce1f09b7
mbox fixes, not fully working yet but almost :)
Timo Sirainen <tss@iki.fi>
parents:
10
diff
changeset
|
59 |
a946ce1f09b7
mbox fixes, not fully working yet but almost :)
Timo Sirainen <tss@iki.fi>
parents:
10
diff
changeset
|
60 io_buffer_skip(inbuf, i); |
0 | 61 } |
62 } | |
63 | |
78 | 64 if (lastmsg && startpos > 0) { |
76 | 65 /* end of file, remove the last [\r]\n */ |
79
d1407cb2b39b
more fix fixes (maybe i should test these before committing :)
Timo Sirainen <tss@iki.fi>
parents:
78
diff
changeset
|
66 msg = io_buffer_get_data(inbuf, &size); |
d1407cb2b39b
more fix fixes (maybe i should test these before committing :)
Timo Sirainen <tss@iki.fi>
parents:
78
diff
changeset
|
67 if (size == startpos) { |
d1407cb2b39b
more fix fixes (maybe i should test these before committing :)
Timo Sirainen <tss@iki.fi>
parents:
78
diff
changeset
|
68 if (msg[startpos-1] == '\n') |
d1407cb2b39b
more fix fixes (maybe i should test these before committing :)
Timo Sirainen <tss@iki.fi>
parents:
78
diff
changeset
|
69 startpos--; |
d1407cb2b39b
more fix fixes (maybe i should test these before committing :)
Timo Sirainen <tss@iki.fi>
parents:
78
diff
changeset
|
70 if (startpos > 0 && msg[startpos-1] == '\r') |
d1407cb2b39b
more fix fixes (maybe i should test these before committing :)
Timo Sirainen <tss@iki.fi>
parents:
78
diff
changeset
|
71 startpos--; |
d1407cb2b39b
more fix fixes (maybe i should test these before committing :)
Timo Sirainen <tss@iki.fi>
parents:
78
diff
changeset
|
72 } |
76 | 73 } |
74 | |
22
a946ce1f09b7
mbox fixes, not fully working yet but almost :)
Timo Sirainen <tss@iki.fi>
parents:
10
diff
changeset
|
75 io_buffer_skip(inbuf, startpos); |
0 | 76 } |
77 | |
22
a946ce1f09b7
mbox fixes, not fully working yet but almost :)
Timo Sirainen <tss@iki.fi>
parents:
10
diff
changeset
|
78 static int mbox_index_append_next(MailIndex *index, IOBuffer *inbuf) |
0 | 79 { |
80 MailIndexRecord *rec; | |
81 MailIndexUpdate *update; | |
22
a946ce1f09b7
mbox fixes, not fully working yet but almost :)
Timo Sirainen <tss@iki.fi>
parents:
10
diff
changeset
|
82 MboxHeaderContext ctx; |
0 | 83 time_t internal_date; |
82 | 84 uoff_t abs_start_offset, stop_offset, old_size; |
22
a946ce1f09b7
mbox fixes, not fully working yet but almost :)
Timo Sirainen <tss@iki.fi>
parents:
10
diff
changeset
|
85 unsigned char *data, md5_digest[16]; |
184 | 86 size_t size, pos; |
196
95d21ab87eeb
X-IMAPbase is now parsed correctly.
Timo Sirainen <tss@iki.fi>
parents:
184
diff
changeset
|
87 int failed; |
22
a946ce1f09b7
mbox fixes, not fully working yet but almost :)
Timo Sirainen <tss@iki.fi>
parents:
10
diff
changeset
|
88 |
a946ce1f09b7
mbox fixes, not fully working yet but almost :)
Timo Sirainen <tss@iki.fi>
parents:
10
diff
changeset
|
89 /* get the From-line */ |
a946ce1f09b7
mbox fixes, not fully working yet but almost :)
Timo Sirainen <tss@iki.fi>
parents:
10
diff
changeset
|
90 pos = 0; |
a946ce1f09b7
mbox fixes, not fully working yet but almost :)
Timo Sirainen <tss@iki.fi>
parents:
10
diff
changeset
|
91 while (io_buffer_read_data(inbuf, &data, &size, pos) >= 0) { |
a946ce1f09b7
mbox fixes, not fully working yet but almost :)
Timo Sirainen <tss@iki.fi>
parents:
10
diff
changeset
|
92 for (; pos < size; pos++) { |
a946ce1f09b7
mbox fixes, not fully working yet but almost :)
Timo Sirainen <tss@iki.fi>
parents:
10
diff
changeset
|
93 if (data[pos] == '\n') |
a946ce1f09b7
mbox fixes, not fully working yet but almost :)
Timo Sirainen <tss@iki.fi>
parents:
10
diff
changeset
|
94 break; |
a946ce1f09b7
mbox fixes, not fully working yet but almost :)
Timo Sirainen <tss@iki.fi>
parents:
10
diff
changeset
|
95 } |
0 | 96 |
22
a946ce1f09b7
mbox fixes, not fully working yet but almost :)
Timo Sirainen <tss@iki.fi>
parents:
10
diff
changeset
|
97 if (pos < size) |
a946ce1f09b7
mbox fixes, not fully working yet but almost :)
Timo Sirainen <tss@iki.fi>
parents:
10
diff
changeset
|
98 break; |
a946ce1f09b7
mbox fixes, not fully working yet but almost :)
Timo Sirainen <tss@iki.fi>
parents:
10
diff
changeset
|
99 } |
a946ce1f09b7
mbox fixes, not fully working yet but almost :)
Timo Sirainen <tss@iki.fi>
parents:
10
diff
changeset
|
100 |
a946ce1f09b7
mbox fixes, not fully working yet but almost :)
Timo Sirainen <tss@iki.fi>
parents:
10
diff
changeset
|
101 if (pos == size || size <= 5 || strncmp(data, "From ", 5) != 0) { |
a946ce1f09b7
mbox fixes, not fully working yet but almost :)
Timo Sirainen <tss@iki.fi>
parents:
10
diff
changeset
|
102 /* a) no \n found, or line too long |
a946ce1f09b7
mbox fixes, not fully working yet but almost :)
Timo Sirainen <tss@iki.fi>
parents:
10
diff
changeset
|
103 b) not a From-line */ |
a946ce1f09b7
mbox fixes, not fully working yet but almost :)
Timo Sirainen <tss@iki.fi>
parents:
10
diff
changeset
|
104 index_set_error(index, "Error indexing mbox file %s: " |
a946ce1f09b7
mbox fixes, not fully working yet but almost :)
Timo Sirainen <tss@iki.fi>
parents:
10
diff
changeset
|
105 "From-line not found where expected", |
a946ce1f09b7
mbox fixes, not fully working yet but almost :)
Timo Sirainen <tss@iki.fi>
parents:
10
diff
changeset
|
106 index->mbox_path); |
a946ce1f09b7
mbox fixes, not fully working yet but almost :)
Timo Sirainen <tss@iki.fi>
parents:
10
diff
changeset
|
107 index->set_flags |= MAIL_INDEX_FLAG_FSCK; |
a946ce1f09b7
mbox fixes, not fully working yet but almost :)
Timo Sirainen <tss@iki.fi>
parents:
10
diff
changeset
|
108 return FALSE; |
a946ce1f09b7
mbox fixes, not fully working yet but almost :)
Timo Sirainen <tss@iki.fi>
parents:
10
diff
changeset
|
109 } |
a946ce1f09b7
mbox fixes, not fully working yet but almost :)
Timo Sirainen <tss@iki.fi>
parents:
10
diff
changeset
|
110 |
a946ce1f09b7
mbox fixes, not fully working yet but almost :)
Timo Sirainen <tss@iki.fi>
parents:
10
diff
changeset
|
111 /* parse the From-line */ |
a946ce1f09b7
mbox fixes, not fully working yet but almost :)
Timo Sirainen <tss@iki.fi>
parents:
10
diff
changeset
|
112 internal_date = mbox_from_parse_date(data, size); |
0 | 113 if (internal_date <= 0) |
114 internal_date = ioloop_time; | |
115 | |
22
a946ce1f09b7
mbox fixes, not fully working yet but almost :)
Timo Sirainen <tss@iki.fi>
parents:
10
diff
changeset
|
116 io_buffer_skip(inbuf, pos+1); |
82 | 117 abs_start_offset = inbuf->start_offset + inbuf->offset; |
0 | 118 |
22
a946ce1f09b7
mbox fixes, not fully working yet but almost :)
Timo Sirainen <tss@iki.fi>
parents:
10
diff
changeset
|
119 /* now, find the ending "[\r]\nFrom " */ |
160
ff05b320482c
Bigger changes.. full_virtual_size was removed from index record and
Timo Sirainen <tss@iki.fi>
parents:
127
diff
changeset
|
120 mbox_read_message(inbuf); |
22
a946ce1f09b7
mbox fixes, not fully working yet but almost :)
Timo Sirainen <tss@iki.fi>
parents:
10
diff
changeset
|
121 stop_offset = inbuf->offset; |
0 | 122 |
22
a946ce1f09b7
mbox fixes, not fully working yet but almost :)
Timo Sirainen <tss@iki.fi>
parents:
10
diff
changeset
|
123 /* add message to index */ |
160
ff05b320482c
Bigger changes.. full_virtual_size was removed from index record and
Timo Sirainen <tss@iki.fi>
parents:
127
diff
changeset
|
124 rec = mail_index_record_append(index, internal_date); |
0 | 125 if (rec == NULL) |
126 return FALSE; | |
127 | |
128 update = index->update_begin(index, rec); | |
129 | |
104
a6d7ed739926
added index->lookup_field_raw() and update_field_raw(), changed mbox to save
Timo Sirainen <tss@iki.fi>
parents:
82
diff
changeset
|
130 /* location = offset to beginning of headers in message */ |
a6d7ed739926
added index->lookup_field_raw() and update_field_raw(), changed mbox to save
Timo Sirainen <tss@iki.fi>
parents:
82
diff
changeset
|
131 index->update_field_raw(update, FIELD_TYPE_LOCATION, |
a6d7ed739926
added index->lookup_field_raw() and update_field_raw(), changed mbox to save
Timo Sirainen <tss@iki.fi>
parents:
82
diff
changeset
|
132 &abs_start_offset, sizeof(uoff_t)); |
0 | 133 |
22
a946ce1f09b7
mbox fixes, not fully working yet but almost :)
Timo Sirainen <tss@iki.fi>
parents:
10
diff
changeset
|
134 /* parse the header and cache wanted fields. get the message flags |
a946ce1f09b7
mbox fixes, not fully working yet but almost :)
Timo Sirainen <tss@iki.fi>
parents:
10
diff
changeset
|
135 from Status and X-Status fields. temporarily limit the buffer size |
a946ce1f09b7
mbox fixes, not fully working yet but almost :)
Timo Sirainen <tss@iki.fi>
parents:
10
diff
changeset
|
136 so the message body is parsed properly (FIXME: does this have |
a946ce1f09b7
mbox fixes, not fully working yet but almost :)
Timo Sirainen <tss@iki.fi>
parents:
10
diff
changeset
|
137 side effects?) */ |
180
38341ad6a9db
partial changes to add X-IMAPbase parser update custom flags
Timo Sirainen <tss@iki.fi>
parents:
160
diff
changeset
|
138 mbox_header_init_context(&ctx, index); |
22
a946ce1f09b7
mbox fixes, not fully working yet but almost :)
Timo Sirainen <tss@iki.fi>
parents:
10
diff
changeset
|
139 |
a946ce1f09b7
mbox fixes, not fully working yet but almost :)
Timo Sirainen <tss@iki.fi>
parents:
10
diff
changeset
|
140 old_size = inbuf->size; |
a946ce1f09b7
mbox fixes, not fully working yet but almost :)
Timo Sirainen <tss@iki.fi>
parents:
10
diff
changeset
|
141 inbuf->size = stop_offset; |
82 | 142 io_buffer_seek(inbuf, abs_start_offset - inbuf->start_offset); |
22
a946ce1f09b7
mbox fixes, not fully working yet but almost :)
Timo Sirainen <tss@iki.fi>
parents:
10
diff
changeset
|
143 |
25
55e09f36d23d
after a few times of trying to access uncached fields, they're cached the
Timo Sirainen <tss@iki.fi>
parents:
22
diff
changeset
|
144 mail_index_update_headers(update, inbuf, 0, mbox_header_func, &ctx); |
22
a946ce1f09b7
mbox fixes, not fully working yet but almost :)
Timo Sirainen <tss@iki.fi>
parents:
10
diff
changeset
|
145 |
a946ce1f09b7
mbox fixes, not fully working yet but almost :)
Timo Sirainen <tss@iki.fi>
parents:
10
diff
changeset
|
146 inbuf->size = old_size; |
a946ce1f09b7
mbox fixes, not fully working yet but almost :)
Timo Sirainen <tss@iki.fi>
parents:
10
diff
changeset
|
147 io_buffer_seek(inbuf, stop_offset); |
a946ce1f09b7
mbox fixes, not fully working yet but almost :)
Timo Sirainen <tss@iki.fi>
parents:
10
diff
changeset
|
148 |
a946ce1f09b7
mbox fixes, not fully working yet but almost :)
Timo Sirainen <tss@iki.fi>
parents:
10
diff
changeset
|
149 /* save MD5 */ |
a946ce1f09b7
mbox fixes, not fully working yet but almost :)
Timo Sirainen <tss@iki.fi>
parents:
10
diff
changeset
|
150 md5_final(&ctx.md5, md5_digest); |
160
ff05b320482c
Bigger changes.. full_virtual_size was removed from index record and
Timo Sirainen <tss@iki.fi>
parents:
127
diff
changeset
|
151 index->update_field_raw(update, FIELD_TYPE_MD5, |
ff05b320482c
Bigger changes.. full_virtual_size was removed from index record and
Timo Sirainen <tss@iki.fi>
parents:
127
diff
changeset
|
152 md5_digest, sizeof(md5_digest)); |
0 | 153 |
154 if (!index->update_end(update)) { | |
155 /* failed - delete the record */ | |
156 (void)index->expunge(index, rec, 0, FALSE); | |
196
95d21ab87eeb
X-IMAPbase is now parsed correctly.
Timo Sirainen <tss@iki.fi>
parents:
184
diff
changeset
|
157 failed = TRUE; |
95d21ab87eeb
X-IMAPbase is now parsed correctly.
Timo Sirainen <tss@iki.fi>
parents:
184
diff
changeset
|
158 } else { |
95d21ab87eeb
X-IMAPbase is now parsed correctly.
Timo Sirainen <tss@iki.fi>
parents:
184
diff
changeset
|
159 /* save message flags */ |
95d21ab87eeb
X-IMAPbase is now parsed correctly.
Timo Sirainen <tss@iki.fi>
parents:
184
diff
changeset
|
160 rec->msg_flags = ctx.flags; |
95d21ab87eeb
X-IMAPbase is now parsed correctly.
Timo Sirainen <tss@iki.fi>
parents:
184
diff
changeset
|
161 mail_index_mark_flag_changes(index, rec, 0, rec->msg_flags); |
95d21ab87eeb
X-IMAPbase is now parsed correctly.
Timo Sirainen <tss@iki.fi>
parents:
184
diff
changeset
|
162 failed = FALSE; |
0 | 163 } |
164 | |
196
95d21ab87eeb
X-IMAPbase is now parsed correctly.
Timo Sirainen <tss@iki.fi>
parents:
184
diff
changeset
|
165 mbox_header_free_context(&ctx); |
160
ff05b320482c
Bigger changes.. full_virtual_size was removed from index record and
Timo Sirainen <tss@iki.fi>
parents:
127
diff
changeset
|
166 |
196
95d21ab87eeb
X-IMAPbase is now parsed correctly.
Timo Sirainen <tss@iki.fi>
parents:
184
diff
changeset
|
167 return !failed; |
0 | 168 } |
169 | |
22
a946ce1f09b7
mbox fixes, not fully working yet but almost :)
Timo Sirainen <tss@iki.fi>
parents:
10
diff
changeset
|
170 int mbox_index_append(MailIndex *index, IOBuffer *inbuf) |
0 | 171 { |
22
a946ce1f09b7
mbox fixes, not fully working yet but almost :)
Timo Sirainen <tss@iki.fi>
parents:
10
diff
changeset
|
172 if (inbuf->offset == inbuf->size) { |
0 | 173 /* no new data */ |
174 return TRUE; | |
175 } | |
176 | |
177 if (!index->set_lock(index, MAIL_LOCK_EXCLUSIVE)) | |
178 return FALSE; | |
179 | |
22
a946ce1f09b7
mbox fixes, not fully working yet but almost :)
Timo Sirainen <tss@iki.fi>
parents:
10
diff
changeset
|
180 for (;;) { |
80 | 181 if (inbuf->start_offset + inbuf->offset != 0) { |
22
a946ce1f09b7
mbox fixes, not fully working yet but almost :)
Timo Sirainen <tss@iki.fi>
parents:
10
diff
changeset
|
182 /* we're at the [\r]\n before the From-line, |
a946ce1f09b7
mbox fixes, not fully working yet but almost :)
Timo Sirainen <tss@iki.fi>
parents:
10
diff
changeset
|
183 skip it */ |
a946ce1f09b7
mbox fixes, not fully working yet but almost :)
Timo Sirainen <tss@iki.fi>
parents:
10
diff
changeset
|
184 if (!mbox_skip_crlf(inbuf)) { |
a946ce1f09b7
mbox fixes, not fully working yet but almost :)
Timo Sirainen <tss@iki.fi>
parents:
10
diff
changeset
|
185 index_set_error(index, |
a946ce1f09b7
mbox fixes, not fully working yet but almost :)
Timo Sirainen <tss@iki.fi>
parents:
10
diff
changeset
|
186 "Error indexing mbox file %s: " |
a946ce1f09b7
mbox fixes, not fully working yet but almost :)
Timo Sirainen <tss@iki.fi>
parents:
10
diff
changeset
|
187 "LF not found where expected", |
a946ce1f09b7
mbox fixes, not fully working yet but almost :)
Timo Sirainen <tss@iki.fi>
parents:
10
diff
changeset
|
188 index->mbox_path); |
a946ce1f09b7
mbox fixes, not fully working yet but almost :)
Timo Sirainen <tss@iki.fi>
parents:
10
diff
changeset
|
189 |
a946ce1f09b7
mbox fixes, not fully working yet but almost :)
Timo Sirainen <tss@iki.fi>
parents:
10
diff
changeset
|
190 index->set_flags |= MAIL_INDEX_FLAG_FSCK; |
a946ce1f09b7
mbox fixes, not fully working yet but almost :)
Timo Sirainen <tss@iki.fi>
parents:
10
diff
changeset
|
191 return FALSE; |
a946ce1f09b7
mbox fixes, not fully working yet but almost :)
Timo Sirainen <tss@iki.fi>
parents:
10
diff
changeset
|
192 } |
a946ce1f09b7
mbox fixes, not fully working yet but almost :)
Timo Sirainen <tss@iki.fi>
parents:
10
diff
changeset
|
193 } |
a946ce1f09b7
mbox fixes, not fully working yet but almost :)
Timo Sirainen <tss@iki.fi>
parents:
10
diff
changeset
|
194 |
a946ce1f09b7
mbox fixes, not fully working yet but almost :)
Timo Sirainen <tss@iki.fi>
parents:
10
diff
changeset
|
195 if (inbuf->offset == inbuf->size) |
a946ce1f09b7
mbox fixes, not fully working yet but almost :)
Timo Sirainen <tss@iki.fi>
parents:
10
diff
changeset
|
196 break; |
a946ce1f09b7
mbox fixes, not fully working yet but almost :)
Timo Sirainen <tss@iki.fi>
parents:
10
diff
changeset
|
197 |
a946ce1f09b7
mbox fixes, not fully working yet but almost :)
Timo Sirainen <tss@iki.fi>
parents:
10
diff
changeset
|
198 if (!mbox_index_append_next(index, inbuf)) |
a946ce1f09b7
mbox fixes, not fully working yet but almost :)
Timo Sirainen <tss@iki.fi>
parents:
10
diff
changeset
|
199 return FALSE; |
0 | 200 } |
201 | |
22
a946ce1f09b7
mbox fixes, not fully working yet but almost :)
Timo Sirainen <tss@iki.fi>
parents:
10
diff
changeset
|
202 return TRUE; |
0 | 203 } |