static int cydir_mail_get_received_date(struct mail *_mail, time_t *date_r)
{
- struct index_mail *mail = (struct index_mail *)_mail;
+ struct index_mail *mail = INDEX_MAIL(_mail);
struct index_mail_data *data = &mail->data;
struct stat st;
static int cydir_mail_get_save_date(struct mail *_mail, time_t *date_r)
{
- struct index_mail *mail = (struct index_mail *)_mail;
+ struct index_mail *mail = INDEX_MAIL(_mail);
struct index_mail_data *data = &mail->data;
struct stat st;
static int cydir_mail_get_physical_size(struct mail *_mail, uoff_t *size_r)
{
- struct index_mail *mail = (struct index_mail *)_mail;
+ struct index_mail *mail = INDEX_MAIL(_mail);
struct index_mail_data *data = &mail->data;
struct stat st;
struct message_size *body_size,
struct istream **stream_r)
{
- struct index_mail *mail = (struct index_mail *)_mail;
+ struct index_mail *mail = INDEX_MAIL(_mail);
struct istream *input;
const char *path;
int fd;
static int imapc_mail_get_received_date(struct mail *_mail, time_t *date_r)
{
- struct index_mail *mail = (struct index_mail *)_mail;
+ struct index_mail *mail = INDEX_MAIL(_mail);
struct index_mail_data *data = &mail->data;
if (index_mail_get_received_date(_mail, date_r) == 0)
static int imapc_mail_get_save_date(struct mail *_mail, time_t *date_r)
{
- struct index_mail *mail = (struct index_mail *)_mail;
+ struct index_mail *mail = INDEX_MAIL(_mail);
struct index_mail_data *data = &mail->data;
if (data->save_date == (time_t)-1) {
static int imapc_mail_get_physical_size(struct mail *_mail, uoff_t *size_r)
{
struct imapc_mailbox *mbox = IMAPC_MAILBOX(_mail->box);
- struct index_mail *mail = (struct index_mail *)_mail;
+ struct index_mail *mail = INDEX_MAIL(_mail);
struct index_mail_data *data = &mail->data;
struct istream *input;
uoff_t old_offset;
static int imapc_mail_get_virtual_size(struct mail *_mail, uoff_t *size_r)
{
- struct index_mail *mail = (struct index_mail *)_mail;
+ struct index_mail *mail = INDEX_MAIL(_mail);
struct index_mail_data *data = &mail->data;
if (imapc_mail_get_physical_size(_mail, size_r) < 0)
enum mail_fetch_field fields,
struct mailbox_header_lookup_ctx *headers)
{
- struct index_mail *mail = (struct index_mail *)_mail;
+ struct index_mail *mail = INDEX_MAIL(_mail);
index_mail_add_temp_wanted_fields(_mail, fields, headers);
if (_mail->seq != 0)
static bool imapc_mail_get_cached_guid(struct mail *_mail)
{
- struct index_mail *imail = (struct index_mail *)_mail;
+ struct index_mail *imail = INDEX_MAIL(_mail);
const enum index_cache_field cache_idx =
imail->ibox->cache_fields[MAIL_CACHE_GUID].idx;
string_t *str;
static int imapc_mail_get_guid(struct mail *_mail, const char **value_r)
{
- struct index_mail *imail = (struct index_mail *)_mail;
+ struct index_mail *imail = INDEX_MAIL(_mail);
struct imapc_mailbox *mbox = IMAPC_MAILBOX(_mail->box);
const enum index_cache_field cache_idx =
imail->ibox->cache_fields[MAIL_CACHE_GUID].idx;
const char **value_r)
{
struct imapc_mailbox *mbox = IMAPC_MAILBOX(_mail->box);
- struct index_mail *imail = (struct index_mail *)_mail;
+ struct index_mail *imail = INDEX_MAIL(_mail);
uint64_t num;
switch (field) {
imapc_save_add_to_index(struct imapc_save_context *ctx, uint32_t uid)
{
struct mail *_mail = ctx->ctx.dest_mail;
- struct index_mail *imail = (struct index_mail *)_mail;
+ struct index_mail *imail = INDEX_MAIL(_mail);
uint32_t seq;
/* we'll temporarily append messages and at commit time expunge
binary_parts_update(struct binary_ctx *ctx, const struct message_part *part,
struct message_binary_part **msg_bin_parts)
{
- struct index_mail *mail = (struct index_mail *)ctx->mail;
+ struct index_mail *mail = INDEX_MAIL(ctx->mail);
struct binary_block *blocks;
struct message_binary_part bin_part;
unsigned int i, count;
static void binary_parts_cache(struct binary_ctx *ctx)
{
- struct index_mail *mail = (struct index_mail *)ctx->mail;
+ struct index_mail *mail = INDEX_MAIL(ctx->mail);
buffer_t *buf;
buf = buffer_create_dynamic(pool_datastack_create(), 128);
bool include_hdr, const char *reason,
bool *binary_r, bool *converted_r)
{
- struct index_mail *mail = (struct index_mail *)_mail;
+ struct index_mail *mail = INDEX_MAIL(_mail);
struct mail_binary_cache *cache = &_mail->box->storage->binary_cache;
struct binary_ctx ctx;
struct istream *is;
const struct message_part *part, bool include_hdr,
uoff_t *size_r, unsigned int *lines_r)
{
- struct index_mail *mail = (struct index_mail *)_mail;
+ struct index_mail *mail = INDEX_MAIL(_mail);
struct message_part *all_parts, *msg_part;
const struct message_binary_part *bin_part, *root_bin_part;
uoff_t size, end_offset;
unsigned int *lines_r, bool *binary_r,
struct istream **stream_r)
{
- struct index_mail *mail = (struct index_mail *)_mail;
+ struct index_mail *mail = INDEX_MAIL(_mail);
struct mail_binary_cache *cache = &_mail->box->storage->binary_cache;
struct istream *input;
bool binary, converted;
struct istream *
index_mail_cache_parse_init(struct mail *_mail, struct istream *input)
{
- struct index_mail *mail = (struct index_mail *)_mail;
+ struct index_mail *mail = INDEX_MAIL(_mail);
struct istream *input2;
i_assert(mail->data.tee_stream == NULL);
int index_mail_get_headers(struct mail *_mail, const char *field,
bool decode_to_utf8, const char *const **value_r)
{
- struct index_mail *mail = (struct index_mail *)_mail;
+ struct index_mail *mail = INDEX_MAIL(_mail);
bool retry = TRUE;
int ret;
int index_mail_get_first_header(struct mail *_mail, const char *field,
bool decode_to_utf8, const char **value_r)
{
- struct index_mail *mail = (struct index_mail *)_mail;
+ struct index_mail *mail = INDEX_MAIL(_mail);
const char *const *list;
bool retry = TRUE;
int ret;
struct mailbox_header_lookup_ctx *headers,
struct istream **stream_r)
{
- struct index_mail *mail = (struct index_mail *)_mail;
+ struct index_mail *mail = INDEX_MAIL(_mail);
struct istream *input;
string_t *dest;
buffer_t *part_buf;
const char *parts_str;
- if (get_serialized_parts((struct index_mail *)mail, &part_buf) <= 0)
+ if (get_serialized_parts(INDEX_MAIL(mail), &part_buf) <= 0)
parts_str = "";
else
parts_str = binary_to_hex(part_buf->data, part_buf->used);
uint64_t index_mail_get_modseq(struct mail *_mail)
{
- struct index_mail *mail = (struct index_mail *)_mail;
+ struct index_mail *mail = INDEX_MAIL(_mail);
if (mail->data.modseq != 0)
return mail->data.modseq;
uint64_t index_mail_get_pvt_modseq(struct mail *_mail)
{
- struct index_mail *mail = (struct index_mail *)_mail;
+ struct index_mail *mail = INDEX_MAIL(_mail);
if (mail->data.pvt_modseq != 0)
return mail->data.pvt_modseq;
const char *const *index_mail_get_keywords(struct mail *_mail)
{
- struct index_mail *mail = (struct index_mail *)_mail;
+ struct index_mail *mail = INDEX_MAIL(_mail);
struct index_mail_data *data = &mail->data;
const char *const *names;
const unsigned int *keyword_indexes;
const ARRAY_TYPE(keyword_indexes) *
index_mail_get_keyword_indexes(struct mail *_mail)
{
- struct index_mail *mail = (struct index_mail *)_mail;
+ struct index_mail *mail = INDEX_MAIL(_mail);
struct index_mail_data *data = &mail->data;
if (!array_is_created(&data->keyword_indexes)) {
int index_mail_get_parts(struct mail *_mail, struct message_part **parts_r)
{
- struct index_mail *mail = (struct index_mail *)_mail;
+ struct index_mail *mail = INDEX_MAIL(_mail);
struct index_mail_data *data = &mail->data;
data->cache_fetch_fields |= MAIL_FETCH_MESSAGE_PARTS;
int index_mail_get_received_date(struct mail *_mail, time_t *date_r)
{
- struct index_mail *mail = (struct index_mail *)_mail;
+ struct index_mail *mail = INDEX_MAIL(_mail);
struct index_mail_data *data = &mail->data;
data->cache_fetch_fields |= MAIL_FETCH_RECEIVED_DATE;
int index_mail_get_save_date(struct mail *_mail, time_t *date_r)
{
- struct index_mail *mail = (struct index_mail *)_mail;
+ struct index_mail *mail = INDEX_MAIL(_mail);
struct index_mail_data *data = &mail->data;
data->cache_fetch_fields |= MAIL_FETCH_SAVE_DATE;
int index_mail_get_date(struct mail *_mail, time_t *date_r, int *timezone_r)
{
- struct index_mail *mail = (struct index_mail *)_mail;
+ struct index_mail *mail = INDEX_MAIL(_mail);
struct index_mail_data *data = &mail->data;
struct mail_sent_date sentdate;
const uint32_t *index_mail_get_vsize_extension(struct mail *_mail)
{
- struct index_mail *mail = (struct index_mail *)_mail;
+ struct index_mail *mail = INDEX_MAIL(_mail);
const void *idata;
bool expunged ATTR_UNUSED;
int index_mail_get_virtual_size(struct mail *_mail, uoff_t *size_r)
{
- struct index_mail *mail = (struct index_mail *)_mail;
+ struct index_mail *mail = INDEX_MAIL(_mail);
struct index_mail_data *data = &mail->data;
struct message_size hdr_size, body_size;
struct istream *input;
int index_mail_get_physical_size(struct mail *_mail, uoff_t *size_r)
{
- struct index_mail *mail = (struct index_mail *)_mail;
+ struct index_mail *mail = INDEX_MAIL(_mail);
struct index_mail_data *data = &mail->data;
uoff_t size;
void index_mail_set_read_buffer_size(struct mail *_mail, struct istream *input)
{
- struct index_mail *mail = (struct index_mail *)_mail;
+ struct index_mail *mail = INDEX_MAIL(_mail);
unsigned int block_size;
i_stream_set_max_buffer_size(input, MAIL_READ_FULL_BLOCK_SIZE);
int index_mail_get_special(struct mail *_mail,
enum mail_fetch_field field, const char **value_r)
{
- struct index_mail *mail = (struct index_mail *)_mail;
+ struct index_mail *mail = INDEX_MAIL(_mail);
struct index_mail_data *data = &mail->data;
switch (field) {
void index_mail_close(struct mail *_mail)
{
- struct index_mail *mail = (struct index_mail *)_mail;
+ struct index_mail *mail = INDEX_MAIL(_mail);
if (mail->mail.mail.seq == 0) {
/* mail_set_seq*() hasn't been called yet, or is being called
void index_mail_update_access_parts_pre(struct mail *_mail)
{
- struct index_mail *mail = (struct index_mail *)_mail;
+ struct index_mail *mail = INDEX_MAIL(_mail);
struct index_mail_data *data = &mail->data;
struct mail_storage *storage = _mail->box->storage;
const struct mail_cache_field *cache_fields = mail->ibox->cache_fields;
void index_mail_update_access_parts_post(struct mail *_mail)
{
- struct index_mail *mail = (struct index_mail *)_mail;
+ struct index_mail *mail = INDEX_MAIL(_mail);
struct index_mail_data *data = &mail->data;
const struct mail_index_header *hdr;
struct istream *input;
void index_mail_set_seq(struct mail *_mail, uint32_t seq, bool saving)
{
- struct index_mail *mail = (struct index_mail *)_mail;
+ struct index_mail *mail = INDEX_MAIL(_mail);
if (mail->data.seq == seq) {
if (!saving)
bool index_mail_prefetch(struct mail *_mail)
{
- struct index_mail *mail = (struct index_mail *)_mail;
+ struct index_mail *mail = INDEX_MAIL(_mail);
/* HAVE_POSIX_FADVISE alone isn't enough for CentOS 4.9 */
#if defined(HAVE_POSIX_FADVISE) && defined(POSIX_FADV_WILLNEED)
struct mail_storage *storage = _mail->box->storage;
bool index_mail_set_uid(struct mail *_mail, uint32_t uid)
{
- struct index_mail *mail = (struct index_mail *)_mail;
+ struct index_mail *mail = INDEX_MAIL(_mail);
uint32_t seq;
if (mail_index_lookup_seq(_mail->transaction->view, uid, &seq)) {
enum mail_fetch_field fields,
struct mailbox_header_lookup_ctx *headers)
{
- struct index_mail *mail = (struct index_mail *)_mail;
+ struct index_mail *mail = INDEX_MAIL(_mail);
struct index_mail_data *data = &mail->data;
struct mailbox_header_lookup_ctx *new_wanted_headers;
ARRAY_TYPE(const_string) names;
void index_mail_set_uid_cache_updates(struct mail *_mail, bool set)
{
- struct index_mail *mail = (struct index_mail *)_mail;
+ struct index_mail *mail = INDEX_MAIL(_mail);
mail->data.no_caching = set || mail->data.forced_no_caching;
}
void index_mail_free(struct mail *_mail)
{
- struct index_mail *mail = (struct index_mail *)_mail;
+ struct index_mail *mail = INDEX_MAIL(_mail);
struct mailbox_header_lookup_ctx *headers_ctx =
(struct mailbox_header_lookup_ctx *)mail->mail.wanted_headers;
void index_mail_cache_parse_continue(struct mail *_mail)
{
- struct index_mail *mail = (struct index_mail *)_mail;
+ struct index_mail *mail = INDEX_MAIL(_mail);
struct message_block block;
while (message_parser_parse_next_block(mail->data.parser_ctx,
void index_mail_cache_parse_deinit(struct mail *_mail, time_t received_date,
bool success)
{
- struct index_mail *mail = (struct index_mail *)_mail;
+ struct index_mail *mail = INDEX_MAIL(_mail);
if (!success) {
/* we're going to delete this mail anyway,
void index_mail_update_keywords(struct mail *mail, enum modify_type modify_type,
struct mail_keywords *keywords)
{
- struct index_mail *imail = (struct index_mail *)mail;
+ struct index_mail *imail = INDEX_MAIL(mail);
if (array_is_created(&imail->data.keyword_indexes))
array_free(&imail->data.keyword_indexes);
static void index_mail_parse(struct mail *mail, bool parse_body)
{
- struct index_mail *imail = (struct index_mail *)mail;
+ struct index_mail *imail = INDEX_MAIL(mail);
imail->data.access_part |= PARSE_HDR;
if (index_mail_parse_headers(imail, NULL, "precache") == 0) {
void index_mail_precache(struct mail *mail)
{
- struct index_mail *imail = (struct index_mail *)mail;
+ struct index_mail *imail = INDEX_MAIL(mail);
enum mail_fetch_field cache;
time_t date;
uoff_t size;
enum mail_fetch_field field,
const char *reason)
{
- struct index_mail *imail = (struct index_mail *)mail;
+ struct index_mail *imail = INDEX_MAIL(mail);
const char *field_name;
switch ((int)field) {
void index_mail_save_finish(struct mail_save_context *ctx)
{
- struct index_mail *imail = (struct index_mail *)ctx->dest_mail;
+ struct index_mail *imail = INDEX_MAIL(ctx->dest_mail);
if (ctx->data.from_envelope != NULL &&
imail->data.from_envelope == NULL) {
bool freeing:1;
};
+#define INDEX_MAIL(s) container_of(s, struct index_mail, mail.mail)
+
struct mail *
index_mail_alloc(struct mailbox_transaction_context *t,
enum mail_fetch_field wanted_fields,
{
const enum message_header_parser_flags hdr_parser_flags =
MESSAGE_HEADER_PARSER_FLAG_CLEAN_ONELINE;
- struct index_mail *imail = (struct index_mail *)ctx->cur_mail;
+ struct index_mail *imail = INDEX_MAIL(ctx->cur_mail);
struct mail *real_mail;
struct istream *input = NULL;
struct mailbox_header_lookup_ctx *headers_ctx;
search_cur_mail_failed(ctx);
return -1;
}
- hdr_ctx.imail = (struct index_mail *)real_mail;
+ hdr_ctx.imail = INDEX_MAIL(real_mail);
hdr_ctx.custom_header = TRUE;
hdr_ctx.args = args;
array_free(&ctx->mail_ctx.module_contexts);
array_foreach_modifiable(&ctx->mails, mailp) {
- struct index_mail *imail = (struct index_mail *)*mailp;
+ struct index_mail *imail = INDEX_MAIL(*mailp);
imail->search_mail = FALSE;
mail_free(mailp);
{
struct mail_search_context *_ctx = &ctx->mail_ctx;
struct mailbox *box = _ctx->transaction->box;
- struct index_mail *imail = (struct index_mail *)mail;
+ struct index_mail *imail = INDEX_MAIL(mail);
unsigned long long cost1, cost2;
int match, ret;
mail = mail_alloc(ctx->mail_ctx.transaction,
ctx->mail_ctx.wanted_fields,
ctx->mail_ctx.wanted_headers);
- imail = (struct index_mail *)mail;
+ imail = INDEX_MAIL(mail);
imail->search_mail = TRUE;
ctx->mail_ctx.transaction->stats_track = TRUE;
int ret;
while ((ret = search_more_with_prefetching(ctx, mail_r)) > 0) {
- imail = (struct index_mail *)*mail_r;
+ imail = INDEX_MAIL(*mail_r);
if (imail->data.search_results == NULL)
break;
cached data from buffer, we'll do this optimization
to make quota plugin's work faster */
struct index_mail *imail =
- (struct index_mail *)ctx->dest_mail;
+ INDEX_MAIL(ctx->dest_mail);
uoff_t size;
i_assert(buf->used == sizeof(size));
index_copy_vsize_extension(struct mail_save_context *ctx,
struct mail *src_mail, uint32_t dest_seq)
{
- struct index_mail *src_imail = (struct index_mail *)src_mail;
+ struct index_mail *src_imail = INDEX_MAIL(src_mail);
unsigned int idx;
bool expunged ATTR_UNUSED;
void index_storage_save_abort_last(struct mail_save_context *ctx, uint32_t seq)
{
- struct index_mail *imail = (struct index_mail *)ctx->dest_mail;
+ struct index_mail *imail = INDEX_MAIL(ctx->dest_mail);
/* Close the mail before it's expunged. This allows it to be
reset cleanly. */
static int maildir_mail_stat(struct mail *mail, struct stat *st_r)
{
struct maildir_mailbox *mbox = MAILDIR_MAILBOX(mail->box);
- struct index_mail *imail = (struct index_mail *)mail;
+ struct index_mail *imail = INDEX_MAIL(mail);
const char *path;
int fd, ret;
static int maildir_mail_get_received_date(struct mail *_mail, time_t *date_r)
{
- struct index_mail *mail = (struct index_mail *)_mail;
+ struct index_mail *mail = INDEX_MAIL(_mail);
struct index_mail_data *data = &mail->data;
struct stat st;
static int maildir_mail_get_save_date(struct mail *_mail, time_t *date_r)
{
- struct index_mail *mail = (struct index_mail *)_mail;
+ struct index_mail *mail = INDEX_MAIL(_mail);
struct index_mail_data *data = &mail->data;
struct stat st;
static int maildir_mail_get_virtual_size(struct mail *_mail, uoff_t *size_r)
{
struct maildir_mailbox *mbox = MAILDIR_MAILBOX(_mail->box);
- struct index_mail *mail = (struct index_mail *)_mail;
+ struct index_mail *mail = INDEX_MAIL(_mail);
struct index_mail_data *data = &mail->data;
struct message_size hdr_size, body_size;
struct istream *input;
static int maildir_mail_get_physical_size(struct mail *_mail, uoff_t *size_r)
{
- struct index_mail *mail = (struct index_mail *)_mail;
+ struct index_mail *mail = INDEX_MAIL(_mail);
struct maildir_mailbox *mbox = MAILDIR_MAILBOX(_mail->box);
struct index_mail_data *data = &mail->data;
struct stat st;
maildir_mail_get_special(struct mail *_mail, enum mail_fetch_field field,
const char **value_r)
{
- struct index_mail *mail = (struct index_mail *)_mail;
+ struct index_mail *mail = INDEX_MAIL(_mail);
struct maildir_mailbox *mbox = MAILDIR_MAILBOX(_mail->box);
const char *path, *fname = NULL, *end, *guid, *uidl, *order;
struct stat st;
struct message_size *body_size,
struct istream **stream_r)
{
- struct index_mail *mail = (struct index_mail *)_mail;
+ struct index_mail *mail = INDEX_MAIL(_mail);
struct maildir_mailbox *mbox = MAILDIR_MAILBOX(_mail->box);
struct index_mail_data *data = &mail->data;
bool deleted;
if (_ctx->data.save_date != (time_t)-1) {
/* we can't change ctime, but we can add the date to cache */
- struct index_mail *mail = (struct index_mail *)_ctx->dest_mail;
+ struct index_mail *mail = INDEX_MAIL(_ctx->dest_mail);
uint32_t t = _ctx->data.save_date;
index_mail_cache_add(mail, MAIL_CACHE_SAVE_DATE, &t, sizeof(t));
static int mbox_mail_get_received_date(struct mail *_mail, time_t *date_r)
{
- struct index_mail *mail = (struct index_mail *)_mail;
+ struct index_mail *mail = INDEX_MAIL(_mail);
struct index_mail_data *data = &mail->data;
struct mbox_mailbox *mbox = MBOX_MAILBOX(_mail->box);
static int mbox_mail_get_save_date(struct mail *_mail, time_t *date_r)
{
- struct index_mail *mail = (struct index_mail *)_mail;
+ struct index_mail *mail = INDEX_MAIL(_mail);
struct index_mail_data *data = &mail->data;
if (index_mail_get_save_date(_mail, date_r) == 0)
mbox_mail_get_special(struct mail *_mail, enum mail_fetch_field field,
const char **value_r)
{
- struct index_mail *mail = (struct index_mail *)_mail;
+ struct index_mail *mail = INDEX_MAIL(_mail);
struct mbox_mailbox *mbox = MBOX_MAILBOX(_mail->box);
uoff_t offset;
bool move_offset;
static int mbox_mail_get_physical_size(struct mail *_mail, uoff_t *size_r)
{
- struct index_mail *mail = (struct index_mail *)_mail;
+ struct index_mail *mail = INDEX_MAIL(_mail);
struct index_mail_data *data = &mail->data;
struct mbox_mailbox *mbox = MBOX_MAILBOX(_mail->box);
struct istream *input;
struct message_size *body_size,
struct istream **stream_r)
{
- struct index_mail *mail = (struct index_mail *)_mail;
+ struct index_mail *mail = INDEX_MAIL(_mail);
if (mail->data.stream == NULL) {
if (mbox_mail_init_stream(mail) < 0)
static void mbox_mail_set_seq(struct mail *_mail, uint32_t seq, bool saving)
{
- struct index_mail *mail = (struct index_mail *)_mail;
+ struct index_mail *mail = INDEX_MAIL(_mail);
index_mail_set_seq(_mail, seq, saving);
mail->data.dont_cache_fetch_fields |= MAIL_FETCH_PHYSICAL_SIZE;
static bool mbox_mail_set_uid(struct mail *_mail, uint32_t uid)
{
- struct index_mail *mail = (struct index_mail *)_mail;
+ struct index_mail *mail = INDEX_MAIL(_mail);
bool ret;
ret = index_mail_set_uid(_mail, uid);
static int pop3c_mail_get_save_date(struct mail *_mail, time_t *date_r)
{
- struct index_mail *mail = (struct index_mail *)_mail;
+ struct index_mail *mail = INDEX_MAIL(_mail);
struct index_mail_data *data = &mail->data;
if (data->save_date == (time_t)-1) {
static int pop3c_mail_get_physical_size(struct mail *_mail, uoff_t *size_r)
{
- struct index_mail *mail = (struct index_mail *)_mail;
+ struct index_mail *mail = INDEX_MAIL(_mail);
struct pop3c_mailbox *mbox = POP3C_MAILBOX(_mail->box);
struct message_size hdr_size, body_size;
struct istream *input;
static int raw_mail_get_received_date(struct mail *_mail, time_t *date_r)
{
- struct index_mail *mail = (struct index_mail *)_mail;
+ struct index_mail *mail = INDEX_MAIL(_mail);
struct raw_mailbox *mbox = RAW_MAILBOX(_mail->box);
if (mbox->mtime == (time_t)-1) {
static int raw_mail_get_save_date(struct mail *_mail, time_t *date_r)
{
- struct index_mail *mail = (struct index_mail *)_mail;
+ struct index_mail *mail = INDEX_MAIL(_mail);
struct raw_mailbox *mbox = RAW_MAILBOX(_mail->box);
if (mbox->ctime == (time_t)-1) {
static int raw_mail_get_physical_size(struct mail *_mail, uoff_t *size_r)
{
- struct index_mail *mail = (struct index_mail *)_mail;
+ struct index_mail *mail = INDEX_MAIL(_mail);
struct raw_mailbox *mbox = RAW_MAILBOX(_mail->box);
if (mbox->size == (uoff_t)-1) {
struct message_size *hdr_size,
struct message_size *body_size, struct istream **stream_r)
{
- struct index_mail *mail = (struct index_mail *)_mail;
+ struct index_mail *mail = INDEX_MAIL(_mail);
if (mail->data.stream == NULL) {
/* we can't just reference mbox->input, because
t = mailbox_transaction_begin(box, 0);
mail = mail_alloc(t, 0, NULL);
- imail = (struct index_mail *)mail;
+ imail = INDEX_MAIL(mail);
field_idx = imail->ibox->cache_fields[MAIL_CACHE_POP3_UIDL].idx;
imap_map = array_get_modifiable(&mbox->imap_msg_map, &count);