Lines Matching refs:_mail
14 static bool imapc_mail_get_cached_guid(struct mail *_mail);
33 static bool imapc_mail_is_expunged(struct mail *_mail)
35 struct imapc_mailbox *mbox = IMAPC_MAILBOX(_mail->box);
46 if (!mail_index_lookup_seq(mbox->sync_view, _mail->uid, &lseq))
52 if (!imapc_msgmap_uid_to_rseq(msgmap, _mail->uid, &rseq))
63 return !imapc_msgmap_uid_to_rseq(msgmap, _mail->uid, &rseq);
98 static uint64_t imapc_mail_get_modseq(struct mail *_mail)
100 struct imapc_mailbox *mbox = IMAPC_MAILBOX(_mail->box);
107 return index_mail_get_modseq(_mail);
110 if (imapc_msgmap_uid_to_rseq(msgmap, _mail->uid, &rseq)) {
118 static int imapc_mail_get_received_date(struct mail *_mail, time_t *date_r)
120 struct index_mail *mail = INDEX_MAIL(_mail);
123 if (index_mail_get_received_date(_mail, date_r) == 0)
127 if (imapc_mail_fetch(_mail, MAIL_FETCH_RECEIVED_DATE, NULL) < 0)
130 if (imapc_mail_failed(_mail, "INTERNALDATE") < 0)
141 static int imapc_mail_get_save_date(struct mail *_mail, time_t *date_r)
143 struct index_mail *mail = INDEX_MAIL(_mail);
148 return imapc_mail_get_received_date(_mail, date_r);
154 static int imapc_mail_get_physical_size(struct mail *_mail, uoff_t *size_r)
156 struct imapc_mailbox *mbox = IMAPC_MAILBOX(_mail->box);
157 struct index_mail *mail = INDEX_MAIL(_mail);
164 (void)index_mail_get_physical_size(_mail, size_r);
173 if (imapc_mail_fetch(_mail, MAIL_FETCH_PHYSICAL_SIZE, NULL) < 0)
176 if (imapc_mail_failed(_mail, "RFC822.SIZE") < 0)
187 if (mail_get_stream(_mail, NULL, NULL, &input) < 0)
196 mail_set_critical(_mail, "imapc: stat(%s) failed: %m",
204 static int imapc_mail_get_virtual_size(struct mail *_mail, uoff_t *size_r)
206 struct index_mail *mail = INDEX_MAIL(_mail);
209 if (imapc_mail_get_physical_size(_mail, size_r) < 0)
216 imapc_mail_get_header_stream(struct mail *_mail,
220 struct imapc_mail *mail = IMAPC_MAIL(_mail);
221 struct imapc_mailbox *mbox = IMAPC_MAILBOX(_mail->box);
222 enum mail_lookup_abort old_abort = _mail->lookup_abort;
228 return index_mail_get_header_stream(_mail, headers, stream_r);
232 _mail->lookup_abort = MAIL_LOOKUP_ABORT_READ_MAIL;
233 ret = index_mail_get_header_stream(_mail, headers, stream_r);
234 _mail->lookup_abort = old_abort;
239 if (imapc_mail_fetch(_mail, 0, headers->name) < 0)
242 return index_mail_get_header_stream(_mail, headers, stream_r);
246 imapc_mail_get_headers(struct mail *_mail, const char *field,
258 headers = mailbox_header_lookup_init(_mail->box, header_names);
259 ret = mail_get_header_stream(_mail, headers, &input);
267 return index_mail_get_headers(_mail, field, decode_to_utf8, value_r);
271 imapc_mail_get_first_header(struct mail *_mail, const char *field,
277 ret = imapc_mail_get_headers(_mail, field, decode_to_utf8, &values);
285 imapc_mail_get_stream(struct mail *_mail, bool get_body,
289 struct imapc_mail *mail = IMAPC_MAIL(_mail);
310 mail_set_aborted(_mail);
313 if (_mail->expunged) {
316 mail_set_expunged(_mail);
322 if (imapc_mail_fetch(_mail, fetch_field, NULL) < 0)
326 if (imapc_mail_failed(_mail, "BODY[]") < 0)
344 struct mail *_mail = &mail->mail.mail;
348 if (mail_cache_field_exists(_mail->transaction->cache_view,
349 _mail->seq, headers->idx[i]) <= 0)
357 struct mail *_mail = &mail->mail.mail;
358 struct imapc_mailbox *mbox = IMAPC_MAILBOX(_mail->box);
366 (void)index_mail_get_received_date(_mail, &date);
368 if (index_mail_get_save_date(_mail, &date) < 0) {
369 (void)index_mail_get_received_date(_mail, &date);
375 if (index_mail_get_physical_size(_mail, &size) < 0 &&
380 (void)imapc_mail_get_cached_guid(_mail);
397 header_ctx = mailbox_header_lookup_init(_mail->box,
405 static void imapc_mail_set_seq(struct mail *_mail, uint32_t seq, bool saving)
407 struct imapc_mail *imail = IMAPC_MAIL(_mail);
410 index_mail_set_seq(_mail, seq, saving);
414 if (!mail->search_mail && !_mail->saving)
415 (void)imapc_mail_prefetch(_mail);
419 imapc_mail_add_temp_wanted_fields(struct mail *_mail,
423 struct index_mail *mail = INDEX_MAIL(_mail);
425 index_mail_add_temp_wanted_fields(_mail, fields, headers);
426 if (_mail->seq != 0)
430 static void imapc_mail_close(struct mail *_mail)
432 struct imapc_mail *mail = IMAPC_MAIL(_mail);
433 struct imapc_mailbox *mbox = IMAPC_MAILBOX(_mail->box);
442 index_mail_close(_mail);
447 cache->uid = _mail->uid;
492 static bool imapc_mail_get_cached_guid(struct mail *_mail)
494 struct index_mail *imail = INDEX_MAIL(_mail);
500 if (mail_cache_field_can_add(_mail->transaction->cache_trans,
501 _mail->seq, cache_idx)) {
510 if (mail_cache_lookup_field(_mail->transaction->cache_view,
518 static int imapc_mail_get_guid(struct mail *_mail, const char **value_r)
520 struct index_mail *imail = INDEX_MAIL(_mail);
521 struct imapc_mailbox *mbox = IMAPC_MAILBOX(_mail->box);
525 if (imapc_mail_get_cached_guid(_mail)) {
532 if (imapc_mail_fetch(_mail, MAIL_FETCH_GUID, NULL) < 0)
535 (void)imapc_mail_failed(_mail, mbox->guid_fetch_field_name);
551 imapc_mail_get_special(struct mail *_mail, enum mail_fetch_field field,
554 struct imapc_mailbox *mbox = IMAPC_MAILBOX(_mail->box);
555 struct index_mail *imail = INDEX_MAIL(_mail);
566 return imapc_mail_get_guid(_mail, value_r);
570 if (imapc_mail_get_guid(_mail, value_r) < 0)
573 mail_set_critical(_mail,
587 if (imapc_mail_fetch(_mail, field, NULL) < 0)
590 (void)imapc_mail_failed(_mail, "BODY");
601 if (imapc_mail_fetch(_mail, field, NULL) < 0)
604 (void)imapc_mail_failed(_mail, "BODYSTRUCTURE");
613 return index_mail_get_special(_mail, field, value_r);