}
};
-void mailbox_list_index_backend_init_mailbox(struct mailbox *box)
+void mailbox_list_index_backend_init_mailbox(struct mailbox *box,
+ struct mailbox_vfuncs *v)
{
if (strcmp(box->list->name, MAILBOX_LIST_NAME_INDEX) != 0)
return;
- box->v.create_box = index_list_mailbox_create;
- box->v.update_box = index_list_mailbox_update;
- box->v.exists = index_list_mailbox_exists;
- box->v.open = index_list_mailbox_open;
+ v->create_box = index_list_mailbox_create;
+ v->update_box = index_list_mailbox_update;
+ v->exists = index_list_mailbox_exists;
+ v->open = index_list_mailbox_open;
}
*flags |= MAILBOX_UNMARKED;
}
-void mailbox_list_index_status_init_mailbox(struct mailbox *box)
+void mailbox_list_index_status_init_mailbox(struct mailbox_vfuncs *v)
{
- box->v.exists = index_list_exists;
- box->v.get_status = index_list_get_status;
- box->v.get_metadata = index_list_get_metadata;
- box->v.sync_deinit = index_list_sync_deinit;
- box->v.transaction_commit = index_list_transaction_commit;
+ v->exists = index_list_exists;
+ v->get_status = index_list_get_status;
+ v->get_metadata = index_list_get_metadata;
+ v->sync_deinit = index_list_sync_deinit;
+ v->transaction_commit = index_list_transaction_commit;
}
void mailbox_list_index_status_init_finish(struct mailbox_list *list)
static void mailbox_list_index_mailbox_allocated(struct mailbox *box)
{
+ struct mailbox_vfuncs *v = box->vlast;
struct mailbox_list_index *ilist = INDEX_LIST_CONTEXT(box->list);
struct index_list_mailbox *ibox;
return;
ibox = p_new(box->pool, struct index_list_mailbox, 1);
- ibox->module_ctx.super = box->v;
+ ibox->module_ctx.super = *v;
+ box->vlast = &ibox->module_ctx.super;
MODULE_CONTEXT_SET(box, index_list_storage_module, ibox);
/* for layout=index these get overridden */
- box->v.create_box = mailbox_list_index_create_mailbox;
- box->v.update_box = mailbox_list_index_update_mailbox;
+ v->create_box = mailbox_list_index_create_mailbox;
+ v->update_box = mailbox_list_index_update_mailbox;
- mailbox_list_index_status_init_mailbox(box);
- mailbox_list_index_backend_init_mailbox(box);
+ mailbox_list_index_status_init_mailbox(v);
+ mailbox_list_index_backend_init_mailbox(box, v);
}
static struct mail_storage_hooks mailbox_list_index_hooks = {
struct mail_index_view;
struct mailbox_index_vsize;
+struct mailbox_vfuncs;
/* stored in mail_index_record.flags: */
enum mailbox_list_index_flags {
void (*callback)(void *context),
void *context);
-void mailbox_list_index_status_init_mailbox(struct mailbox *box);
-void mailbox_list_index_backend_init_mailbox(struct mailbox *box);
+void mailbox_list_index_status_init_mailbox(struct mailbox_vfuncs *v);
+void mailbox_list_index_backend_init_mailbox(struct mailbox *box,
+ struct mailbox_vfuncs *v);
void mailbox_list_index_status_init_finish(struct mailbox_list *list);
#endif