Mercurial > dovecot > original-hg > dovecot-1.2
annotate src/lib-index/mbox/mbox-append.c @ 289:c020e1168cc3 HEAD
Ignore empty lines at beginning of mbox file.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Sun, 22 Sep 2002 12:27:21 +0300 |
parents | 54b3b82bd73e |
children | 3dcc2275b4ca |
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 | |
207 | 11 static MailIndexRecord *mail_index_record_append_begin(MailIndex *index, |
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; | |
207 | 20 if (!index->append_begin(index, &rec)) |
0 | 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; |
232
9277e893304e
s/io_buffer_read_data/io_buffer_read_data_blocking/ and fixed the various
Timo Sirainen <tss@iki.fi>
parents:
207
diff
changeset
|
34 while (io_buffer_read_data_blocking(inbuf, &msg, &size, startpos) > 0) { |
22
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 |
232
9277e893304e
s/io_buffer_read_data/io_buffer_read_data_blocking/ and fixed the various
Timo Sirainen <tss@iki.fi>
parents:
207
diff
changeset
|
56 startpos = i < 7 ? i : 7; |
9277e893304e
s/io_buffer_read_data/io_buffer_read_data_blocking/ and fixed the various
Timo Sirainen <tss@iki.fi>
parents:
207
diff
changeset
|
57 i -= startpos; |
22
a946ce1f09b7
mbox fixes, not fully working yet but almost :)
Timo Sirainen <tss@iki.fi>
parents:
10
diff
changeset
|
58 |
232
9277e893304e
s/io_buffer_read_data/io_buffer_read_data_blocking/ and fixed the various
Timo Sirainen <tss@iki.fi>
parents:
207
diff
changeset
|
59 io_buffer_skip(inbuf, i); |
0 | 60 } |
61 | |
78 | 62 if (lastmsg && startpos > 0) { |
76 | 63 /* 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
|
64 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
|
65 if (size == startpos) { |
d1407cb2b39b
more fix fixes (maybe i should test these before committing :)
Timo Sirainen <tss@iki.fi>
parents:
78
diff
changeset
|
66 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
|
67 startpos--; |
d1407cb2b39b
more fix fixes (maybe i should test these before committing :)
Timo Sirainen <tss@iki.fi>
parents:
78
diff
changeset
|
68 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
|
69 startpos--; |
d1407cb2b39b
more fix fixes (maybe i should test these before committing :)
Timo Sirainen <tss@iki.fi>
parents:
78
diff
changeset
|
70 } |
76 | 71 } |
72 | |
22
a946ce1f09b7
mbox fixes, not fully working yet but almost :)
Timo Sirainen <tss@iki.fi>
parents:
10
diff
changeset
|
73 io_buffer_skip(inbuf, startpos); |
0 | 74 } |
75 | |
22
a946ce1f09b7
mbox fixes, not fully working yet but almost :)
Timo Sirainen <tss@iki.fi>
parents:
10
diff
changeset
|
76 static int mbox_index_append_next(MailIndex *index, IOBuffer *inbuf) |
0 | 77 { |
78 MailIndexRecord *rec; | |
79 MailIndexUpdate *update; | |
22
a946ce1f09b7
mbox fixes, not fully working yet but almost :)
Timo Sirainen <tss@iki.fi>
parents:
10
diff
changeset
|
80 MboxHeaderContext ctx; |
0 | 81 time_t internal_date; |
82 | 82 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
|
83 unsigned char *data, md5_digest[16]; |
184 | 84 size_t size, pos; |
196
95d21ab87eeb
X-IMAPbase is now parsed correctly.
Timo Sirainen <tss@iki.fi>
parents:
184
diff
changeset
|
85 int failed; |
22
a946ce1f09b7
mbox fixes, not fully working yet but almost :)
Timo Sirainen <tss@iki.fi>
parents:
10
diff
changeset
|
86 |
a946ce1f09b7
mbox fixes, not fully working yet but almost :)
Timo Sirainen <tss@iki.fi>
parents:
10
diff
changeset
|
87 /* get the From-line */ |
a946ce1f09b7
mbox fixes, not fully working yet but almost :)
Timo Sirainen <tss@iki.fi>
parents:
10
diff
changeset
|
88 pos = 0; |
232
9277e893304e
s/io_buffer_read_data/io_buffer_read_data_blocking/ and fixed the various
Timo Sirainen <tss@iki.fi>
parents:
207
diff
changeset
|
89 while (io_buffer_read_data_blocking(inbuf, &data, &size, pos) > 0) { |
22
a946ce1f09b7
mbox fixes, not fully working yet but almost :)
Timo Sirainen <tss@iki.fi>
parents:
10
diff
changeset
|
90 for (; pos < size; pos++) { |
a946ce1f09b7
mbox fixes, not fully working yet but almost :)
Timo Sirainen <tss@iki.fi>
parents:
10
diff
changeset
|
91 if (data[pos] == '\n') |
a946ce1f09b7
mbox fixes, not fully working yet but almost :)
Timo Sirainen <tss@iki.fi>
parents:
10
diff
changeset
|
92 break; |
a946ce1f09b7
mbox fixes, not fully working yet but almost :)
Timo Sirainen <tss@iki.fi>
parents:
10
diff
changeset
|
93 } |
0 | 94 |
22
a946ce1f09b7
mbox fixes, not fully working yet but almost :)
Timo Sirainen <tss@iki.fi>
parents:
10
diff
changeset
|
95 if (pos < size) |
a946ce1f09b7
mbox fixes, not fully working yet but almost :)
Timo Sirainen <tss@iki.fi>
parents:
10
diff
changeset
|
96 break; |
a946ce1f09b7
mbox fixes, not fully working yet but almost :)
Timo Sirainen <tss@iki.fi>
parents:
10
diff
changeset
|
97 } |
a946ce1f09b7
mbox fixes, not fully working yet but almost :)
Timo Sirainen <tss@iki.fi>
parents:
10
diff
changeset
|
98 |
a946ce1f09b7
mbox fixes, not fully working yet but almost :)
Timo Sirainen <tss@iki.fi>
parents:
10
diff
changeset
|
99 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
|
100 /* 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
|
101 b) not a From-line */ |
a946ce1f09b7
mbox fixes, not fully working yet but almost :)
Timo Sirainen <tss@iki.fi>
parents:
10
diff
changeset
|
102 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
|
103 "From-line not found where expected", |
a946ce1f09b7
mbox fixes, not fully working yet but almost :)
Timo Sirainen <tss@iki.fi>
parents:
10
diff
changeset
|
104 index->mbox_path); |
a946ce1f09b7
mbox fixes, not fully working yet but almost :)
Timo Sirainen <tss@iki.fi>
parents:
10
diff
changeset
|
105 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
|
106 return FALSE; |
a946ce1f09b7
mbox fixes, not fully working yet but almost :)
Timo Sirainen <tss@iki.fi>
parents:
10
diff
changeset
|
107 } |
a946ce1f09b7
mbox fixes, not fully working yet but almost :)
Timo Sirainen <tss@iki.fi>
parents:
10
diff
changeset
|
108 |
a946ce1f09b7
mbox fixes, not fully working yet but almost :)
Timo Sirainen <tss@iki.fi>
parents:
10
diff
changeset
|
109 /* parse the From-line */ |
a946ce1f09b7
mbox fixes, not fully working yet but almost :)
Timo Sirainen <tss@iki.fi>
parents:
10
diff
changeset
|
110 internal_date = mbox_from_parse_date(data, size); |
0 | 111 if (internal_date <= 0) |
112 internal_date = ioloop_time; | |
113 | |
22
a946ce1f09b7
mbox fixes, not fully working yet but almost :)
Timo Sirainen <tss@iki.fi>
parents:
10
diff
changeset
|
114 io_buffer_skip(inbuf, pos+1); |
82 | 115 abs_start_offset = inbuf->start_offset + inbuf->offset; |
0 | 116 |
22
a946ce1f09b7
mbox fixes, not fully working yet but almost :)
Timo Sirainen <tss@iki.fi>
parents:
10
diff
changeset
|
117 /* 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
|
118 mbox_read_message(inbuf); |
22
a946ce1f09b7
mbox fixes, not fully working yet but almost :)
Timo Sirainen <tss@iki.fi>
parents:
10
diff
changeset
|
119 stop_offset = inbuf->offset; |
0 | 120 |
22
a946ce1f09b7
mbox fixes, not fully working yet but almost :)
Timo Sirainen <tss@iki.fi>
parents:
10
diff
changeset
|
121 /* add message to index */ |
207 | 122 rec = mail_index_record_append_begin(index, internal_date); |
0 | 123 if (rec == NULL) |
124 return FALSE; | |
125 | |
126 update = index->update_begin(index, rec); | |
127 | |
104
a6d7ed739926
added index->lookup_field_raw() and update_field_raw(), changed mbox to save
Timo Sirainen <tss@iki.fi>
parents:
82
diff
changeset
|
128 /* 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
|
129 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
|
130 &abs_start_offset, sizeof(uoff_t)); |
0 | 131 |
22
a946ce1f09b7
mbox fixes, not fully working yet but almost :)
Timo Sirainen <tss@iki.fi>
parents:
10
diff
changeset
|
132 /* 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
|
133 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
|
134 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
|
135 side effects?) */ |
180
38341ad6a9db
partial changes to add X-IMAPbase parser update custom flags
Timo Sirainen <tss@iki.fi>
parents:
160
diff
changeset
|
136 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
|
137 |
a946ce1f09b7
mbox fixes, not fully working yet but almost :)
Timo Sirainen <tss@iki.fi>
parents:
10
diff
changeset
|
138 old_size = inbuf->size; |
a946ce1f09b7
mbox fixes, not fully working yet but almost :)
Timo Sirainen <tss@iki.fi>
parents:
10
diff
changeset
|
139 inbuf->size = stop_offset; |
82 | 140 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
|
141 |
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
|
142 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
|
143 |
a946ce1f09b7
mbox fixes, not fully working yet but almost :)
Timo Sirainen <tss@iki.fi>
parents:
10
diff
changeset
|
144 inbuf->size = old_size; |
a946ce1f09b7
mbox fixes, not fully working yet but almost :)
Timo Sirainen <tss@iki.fi>
parents:
10
diff
changeset
|
145 io_buffer_seek(inbuf, stop_offset); |
a946ce1f09b7
mbox fixes, not fully working yet but almost :)
Timo Sirainen <tss@iki.fi>
parents:
10
diff
changeset
|
146 |
a946ce1f09b7
mbox fixes, not fully working yet but almost :)
Timo Sirainen <tss@iki.fi>
parents:
10
diff
changeset
|
147 /* save MD5 */ |
a946ce1f09b7
mbox fixes, not fully working yet but almost :)
Timo Sirainen <tss@iki.fi>
parents:
10
diff
changeset
|
148 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
|
149 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
|
150 md5_digest, sizeof(md5_digest)); |
0 | 151 |
206 | 152 if (!index->update_end(update)) |
196
95d21ab87eeb
X-IMAPbase is now parsed correctly.
Timo Sirainen <tss@iki.fi>
parents:
184
diff
changeset
|
153 failed = TRUE; |
206 | 154 else { |
196
95d21ab87eeb
X-IMAPbase is now parsed correctly.
Timo Sirainen <tss@iki.fi>
parents:
184
diff
changeset
|
155 /* save message flags */ |
95d21ab87eeb
X-IMAPbase is now parsed correctly.
Timo Sirainen <tss@iki.fi>
parents:
184
diff
changeset
|
156 rec->msg_flags = ctx.flags; |
95d21ab87eeb
X-IMAPbase is now parsed correctly.
Timo Sirainen <tss@iki.fi>
parents:
184
diff
changeset
|
157 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
|
158 failed = FALSE; |
206 | 159 |
207 | 160 if (!index->append_end(index, rec)) |
161 failed = TRUE; | |
0 | 162 } |
163 | |
196
95d21ab87eeb
X-IMAPbase is now parsed correctly.
Timo Sirainen <tss@iki.fi>
parents:
184
diff
changeset
|
164 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
|
165 |
196
95d21ab87eeb
X-IMAPbase is now parsed correctly.
Timo Sirainen <tss@iki.fi>
parents:
184
diff
changeset
|
166 return !failed; |
0 | 167 } |
168 | |
22
a946ce1f09b7
mbox fixes, not fully working yet but almost :)
Timo Sirainen <tss@iki.fi>
parents:
10
diff
changeset
|
169 int mbox_index_append(MailIndex *index, IOBuffer *inbuf) |
0 | 170 { |
289
c020e1168cc3
Ignore empty lines at beginning of mbox file.
Timo Sirainen <tss@iki.fi>
parents:
267
diff
changeset
|
171 if (inbuf->offset == inbuf->size) { |
0 | 172 /* no new data */ |
173 return TRUE; | |
174 } | |
175 | |
176 if (!index->set_lock(index, MAIL_LOCK_EXCLUSIVE)) | |
177 return FALSE; | |
178 | |
22
a946ce1f09b7
mbox fixes, not fully working yet but almost :)
Timo Sirainen <tss@iki.fi>
parents:
10
diff
changeset
|
179 for (;;) { |
80 | 180 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
|
181 /* 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
|
182 skip it */ |
a946ce1f09b7
mbox fixes, not fully working yet but almost :)
Timo Sirainen <tss@iki.fi>
parents:
10
diff
changeset
|
183 if (!mbox_skip_crlf(inbuf)) { |
a946ce1f09b7
mbox fixes, not fully working yet but almost :)
Timo Sirainen <tss@iki.fi>
parents:
10
diff
changeset
|
184 index_set_error(index, |
a946ce1f09b7
mbox fixes, not fully working yet but almost :)
Timo Sirainen <tss@iki.fi>
parents:
10
diff
changeset
|
185 "Error indexing mbox file %s: " |
a946ce1f09b7
mbox fixes, not fully working yet but almost :)
Timo Sirainen <tss@iki.fi>
parents:
10
diff
changeset
|
186 "LF not found where expected", |
a946ce1f09b7
mbox fixes, not fully working yet but almost :)
Timo Sirainen <tss@iki.fi>
parents:
10
diff
changeset
|
187 index->mbox_path); |
a946ce1f09b7
mbox fixes, not fully working yet but almost :)
Timo Sirainen <tss@iki.fi>
parents:
10
diff
changeset
|
188 |
a946ce1f09b7
mbox fixes, not fully working yet but almost :)
Timo Sirainen <tss@iki.fi>
parents:
10
diff
changeset
|
189 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
|
190 return FALSE; |
a946ce1f09b7
mbox fixes, not fully working yet but almost :)
Timo Sirainen <tss@iki.fi>
parents:
10
diff
changeset
|
191 } |
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 if (inbuf->offset == inbuf->size) |
a946ce1f09b7
mbox fixes, not fully working yet but almost :)
Timo Sirainen <tss@iki.fi>
parents:
10
diff
changeset
|
195 break; |
a946ce1f09b7
mbox fixes, not fully working yet but almost :)
Timo Sirainen <tss@iki.fi>
parents:
10
diff
changeset
|
196 |
a946ce1f09b7
mbox fixes, not fully working yet but almost :)
Timo Sirainen <tss@iki.fi>
parents:
10
diff
changeset
|
197 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
|
198 return FALSE; |
0 | 199 } |
200 | |
22
a946ce1f09b7
mbox fixes, not fully working yet but almost :)
Timo Sirainen <tss@iki.fi>
parents:
10
diff
changeset
|
201 return TRUE; |
0 | 202 } |