dbox-mail.c revision a81b240cfe84231eac64084efd5b0e1e91a9e817
32c2612514a404ebc226f32bb88f28d76ceb1db1Aki Tuomi/* Copyright (c) 2007-2010 Dovecot authors, see the included COPYING file */
32c2612514a404ebc226f32bb88f28d76ceb1db1Aki Tuomidbox_mail_alloc(struct mailbox_transaction_context *t,
32c2612514a404ebc226f32bb88f28d76ceb1db1Aki Tuomi index_mail_init(&mail->imail, t, wanted_fields, wanted_headers);
32c2612514a404ebc226f32bb88f28d76ceb1db1Aki Tuomi struct dbox_mail *mail = (struct dbox_mail *)_mail;
32c2612514a404ebc226f32bb88f28d76ceb1db1Aki Tuomiint dbox_mail_metadata_read(struct dbox_mail *mail, struct dbox_file **file_r)
32c2612514a404ebc226f32bb88f28d76ceb1db1Aki Tuomi (struct dbox_storage *)mail->imail.mail.mail.box->storage;
32c2612514a404ebc226f32bb88f28d76ceb1db1Aki Tuomi if (storage->v.mail_open(mail, &offset, file_r) < 0)
32c2612514a404ebc226f32bb88f28d76ceb1db1Aki Tuomi /* we just messed up mail's input stream by reading metadata */
32c2612514a404ebc226f32bb88f28d76ceb1db1Aki Tuomidbox_mail_metadata_get(struct dbox_mail *mail, enum dbox_metadata_key key,
32c2612514a404ebc226f32bb88f28d76ceb1db1Aki Tuomi const char **value_r)
32c2612514a404ebc226f32bb88f28d76ceb1db1Aki Tuomiint dbox_mail_get_physical_size(struct mail *_mail, uoff_t *size_r)
32c2612514a404ebc226f32bb88f28d76ceb1db1Aki Tuomi struct dbox_mail *mail = (struct dbox_mail *)_mail;
32c2612514a404ebc226f32bb88f28d76ceb1db1Aki Tuomi const char *value;
32c2612514a404ebc226f32bb88f28d76ceb1db1Aki Tuomi if (index_mail_get_physical_size(_mail, size_r) == 0)
32c2612514a404ebc226f32bb88f28d76ceb1db1Aki Tuomi /* see if we have it in metadata */
32c2612514a404ebc226f32bb88f28d76ceb1db1Aki Tuomi value = dbox_file_metadata_get(file, DBOX_METADATA_PHYSICAL_SIZE);
32c2612514a404ebc226f32bb88f28d76ceb1db1Aki Tuomi /* no. that means we can use the size in the header */
32c2612514a404ebc226f32bb88f28d76ceb1db1Aki Tuomiint dbox_mail_get_virtual_size(struct mail *_mail, uoff_t *size_r)
32c2612514a404ebc226f32bb88f28d76ceb1db1Aki Tuomi struct dbox_mail *mail = (struct dbox_mail *)_mail;
32c2612514a404ebc226f32bb88f28d76ceb1db1Aki Tuomi const char *value;
32c2612514a404ebc226f32bb88f28d76ceb1db1Aki Tuomi if (index_mail_get_cached_virtual_size(&mail->imail, size_r))
32c2612514a404ebc226f32bb88f28d76ceb1db1Aki Tuomi if (dbox_mail_metadata_get(mail, DBOX_METADATA_VIRTUAL_SIZE,
32c2612514a404ebc226f32bb88f28d76ceb1db1Aki Tuomi return index_mail_get_virtual_size(_mail, size_r);
32c2612514a404ebc226f32bb88f28d76ceb1db1Aki Tuomiint dbox_mail_get_received_date(struct mail *_mail, time_t *date_r)
32c2612514a404ebc226f32bb88f28d76ceb1db1Aki Tuomi struct dbox_mail *mail = (struct dbox_mail *)_mail;
32c2612514a404ebc226f32bb88f28d76ceb1db1Aki Tuomi const char *value;
32c2612514a404ebc226f32bb88f28d76ceb1db1Aki Tuomi if (index_mail_get_received_date(_mail, date_r) == 0)
32c2612514a404ebc226f32bb88f28d76ceb1db1Aki Tuomi if (dbox_mail_metadata_get(mail, DBOX_METADATA_RECEIVED_TIME,
&value) < 0)
const char **value_r)
const char *value;
const char **value_r)
switch (field) {
case MAIL_FETCH_UIDL_BACKEND:
case MAIL_FETCH_GUID:
int ret;
&input);
if (ret <= 0) {
if (ret < 0)
stream_r);