Lines Matching refs:mail

7 #include "index-mail.h"
12 #include "dbox-mail.h"
15 struct mail *
20 struct dbox_mail *mail;
23 pool = pool_alloconly_create("mail", 2048);
24 mail = p_new(pool, struct dbox_mail, 1);
25 mail->imail.mail.pool = pool;
27 index_mail_init(&mail->imail, t, wanted_fields, wanted_headers);
28 return &mail->imail.mail.mail;
31 void dbox_mail_close(struct mail *_mail)
33 struct dbox_mail *mail = DBOX_MAIL(_mail);
38 if (mail->open_file != NULL)
39 dbox_file_unref(&mail->open_file);
42 int dbox_mail_metadata_read(struct dbox_mail *mail, struct dbox_file **file_r)
45 DBOX_STORAGE(mail->imail.mail.mail.box->storage);
48 if (storage->v.mail_open(mail, &offset, file_r) < 0)
56 if (mail->imail.data.stream != NULL) {
57 /* we just messed up mail's input stream by reading metadata */
59 i_stream_sync(mail->imail.data.stream);
65 dbox_mail_metadata_get(struct dbox_mail *mail, enum dbox_metadata_key key,
70 if (dbox_mail_metadata_read(mail, &file) < 0)
77 int dbox_mail_get_physical_size(struct mail *_mail, uoff_t *size_r)
79 struct dbox_mail *mail = DBOX_MAIL(_mail);
80 struct index_mail_data *data = &mail->imail.data;
86 if (dbox_mail_metadata_read(mail, &file) < 0)
94 int dbox_mail_get_virtual_size(struct mail *_mail, uoff_t *size_r)
96 struct dbox_mail *mail = DBOX_MAIL(_mail);
97 struct index_mail_data *data = &mail->imail.data;
101 if (index_mail_get_cached_virtual_size(&mail->imail, size_r))
104 if (dbox_mail_metadata_get(mail, DBOX_METADATA_VIRTUAL_SIZE,
117 int dbox_mail_get_received_date(struct mail *_mail, time_t *date_r)
119 struct dbox_mail *mail = DBOX_MAIL(_mail);
120 struct index_mail_data *data = &mail->imail.data;
127 if (dbox_mail_metadata_get(mail, DBOX_METADATA_RECEIVED_TIME,
140 int dbox_mail_get_save_date(struct mail *_mail, time_t *date_r)
143 struct dbox_mail *mail = DBOX_MAIL(_mail);
144 struct index_mail_data *data = &mail->imail.data;
152 if (storage->v.mail_open(mail, &offset, &file) < 0)
166 dbox_get_cached_metadata(struct dbox_mail *mail, enum dbox_metadata_key key,
170 struct index_mail *imail = &mail->imail;
172 INDEX_STORAGE_CONTEXT(imail->mail.mail.box);
177 str = str_new(imail->mail.data_pool, 64);
178 if (mail_cache_lookup_field(imail->mail.mail.transaction->cache_view,
179 str, imail->mail.mail.seq,
199 if (dbox_mail_metadata_get(mail, key, &value) < 0)
222 int dbox_mail_get_special(struct mail *_mail, enum mail_fetch_field field,
225 struct dbox_mail *mail = DBOX_MAIL(_mail);
229 mail files and read the metadata. same for GUIDs if they're
237 ret = dbox_get_cached_metadata(mail, DBOX_METADATA_POP3_UIDL,
240 index_pop3_uidl_update_exists(&mail->imail.mail.mail,
251 return dbox_get_cached_metadata(mail, DBOX_METADATA_POP3_ORDER,
254 return dbox_get_cached_metadata(mail, DBOX_METADATA_GUID,
264 get_mail_stream(struct dbox_mail *mail, uoff_t offset,
267 struct mail_private *pmail = &mail->imail.mail;
268 struct dbox_file *file = mail->open_file;
278 if (pmail->v.istream_opened(&pmail->mail, stream_r) < 0)
287 int dbox_mail_get_stream(struct mail *_mail, bool get_body ATTR_UNUSED,
293 struct dbox_mail *mail = DBOX_MAIL(_mail);
294 struct index_mail_data *data = &mail->imail.data;
300 if (storage->v.mail_open(mail, &offset, &mail->open_file) < 0)
303 ret = get_mail_stream(mail, offset, &input);
307 dbox_file_set_corrupted(mail->open_file,
317 return index_mail_init_stream(&mail->imail, hdr_size, body_size,