From: Josef 'Jeff' Sipek Date: Mon, 28 Aug 2017 08:50:40 +0000 (+0300) Subject: lib-storage: convert imapc to use container_of X-Git-Tag: 2.3.0.rc1~1093 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=7b0a52bf38f8a7ab0c262acf4c761d6a0f22a07c;p=thirdparty%2Fdovecot%2Fcore.git lib-storage: convert imapc to use container_of --- diff --git a/src/lib-storage/index/imapc/imapc-mail-fetch.c b/src/lib-storage/index/imapc/imapc-mail-fetch.c index edfcf7dcc1..8ad6a7db4a 100644 --- a/src/lib-storage/index/imapc/imapc-mail-fetch.c +++ b/src/lib-storage/index/imapc/imapc-mail-fetch.c @@ -18,8 +18,7 @@ static void imapc_mail_set_failure(struct imapc_mail *mail, const struct imapc_command_reply *reply) { - struct imapc_mailbox *mbox = - (struct imapc_mailbox *)mail->imail.mail.mail.box; + struct imapc_mailbox *mbox = IMAPC_MAILBOX(mail->imail.mail.mail.box); mail->last_fetch_reply = p_strdup(mail->imail.mail.pool, reply->text_full); @@ -68,7 +67,7 @@ imapc_mail_fetch_callback(const struct imapc_command_reply *reply, imapc_mail_set_failure(mail, reply); if (--mail->fetch_count == 0) mail->fetching_fields = 0; - mbox = (struct imapc_mailbox *)mail->imail.mail.mail.box; + mbox = IMAPC_MAILBOX(mail->imail.mail.mail.box); } i_assert(mbox != NULL); @@ -167,8 +166,7 @@ imapc_mail_try_merge_fetch(struct imapc_mailbox *mbox, string_t *str) static void imapc_mail_delayed_send_or_merge(struct imapc_mail *mail, string_t *str) { - struct imapc_mailbox *mbox = - (struct imapc_mailbox *)mail->imail.mail.mail.box; + struct imapc_mailbox *mbox = IMAPC_MAILBOX(mail->imail.mail.mail.box); if (mbox->pending_fetch_request != NULL && !imapc_mail_try_merge_fetch(mbox, str)) { @@ -207,7 +205,7 @@ imapc_mail_send_fetch(struct mail *_mail, enum mail_fetch_field fields, const char *const *headers) { struct imapc_mail *mail = (struct imapc_mail *)_mail; - struct imapc_mailbox *mbox = (struct imapc_mailbox *)_mail->box; + struct imapc_mailbox *mbox = IMAPC_MAILBOX(_mail->box); struct mail_index_view *view; string_t *str; uint32_t seq; @@ -332,8 +330,7 @@ static void imapc_mail_cache_get(struct imapc_mail *mail, static enum mail_fetch_field imapc_mail_get_wanted_fetch_fields(struct imapc_mail *mail) { - struct imapc_mailbox *mbox = - (struct imapc_mailbox *)mail->imail.mail.mail.box; + struct imapc_mailbox *mbox = IMAPC_MAILBOX(mail->imail.mail.mail.box); struct index_mail_data *data = &mail->imail.data; enum mail_fetch_field fields = 0; @@ -371,7 +368,7 @@ imapc_mail_get_wanted_fetch_fields(struct imapc_mail *mail) void imapc_mail_try_init_stream_from_cache(struct imapc_mail *mail) { struct mail *_mail = &mail->imail.mail.mail; - struct imapc_mailbox *mbox = (struct imapc_mailbox *)_mail->box; + struct imapc_mailbox *mbox = IMAPC_MAILBOX(_mail->box); if (mbox->prev_mail_cache.uid == _mail->uid) imapc_mail_cache_get(mail, &mbox->prev_mail_cache); @@ -561,7 +558,7 @@ void imapc_mail_init_stream(struct imapc_mail *mail) { struct index_mail *imail = &mail->imail; struct mail *_mail = &imail->mail.mail; - struct imapc_mailbox *mbox = (struct imapc_mailbox *)_mail->box; + struct imapc_mailbox *mbox = IMAPC_MAILBOX(_mail->box); struct istream *input; uoff_t size; int ret; @@ -797,8 +794,7 @@ void imapc_mail_fetch_update(struct imapc_mail *mail, const struct imapc_untagged_reply *reply, const struct imap_arg *args) { - struct imapc_mailbox *mbox = - (struct imapc_mailbox *)mail->imail.mail.mail.box; + struct imapc_mailbox *mbox = IMAPC_MAILBOX(mail->imail.mail.mail.box); const char *key, *value; unsigned int i; uoff_t size; diff --git a/src/lib-storage/index/imapc/imapc-mail.c b/src/lib-storage/index/imapc/imapc-mail.c index a5cbd4807a..d4f6f94dbe 100644 --- a/src/lib-storage/index/imapc/imapc-mail.c +++ b/src/lib-storage/index/imapc/imapc-mail.c @@ -32,7 +32,7 @@ imapc_mail_alloc(struct mailbox_transaction_context *t, static bool imapc_mail_is_expunged(struct mail *_mail) { - struct imapc_mailbox *mbox = (struct imapc_mailbox *)_mail->box; + struct imapc_mailbox *mbox = IMAPC_MAILBOX(_mail->box); struct imapc_msgmap *msgmap; uint32_t lseq, rseq; @@ -66,7 +66,7 @@ static bool imapc_mail_is_expunged(struct mail *_mail) static int imapc_mail_failed(struct mail *mail, const char *field) { struct imapc_mail *imail = (struct imapc_mail *)mail; - struct imapc_mailbox *mbox = (struct imapc_mailbox *)mail->box; + struct imapc_mailbox *mbox = IMAPC_MAILBOX(mail->box); bool fix_broken_mail = FALSE; if (mail->expunged || imapc_mail_is_expunged(mail)) { @@ -98,7 +98,7 @@ static int imapc_mail_failed(struct mail *mail, const char *field) static uint64_t imapc_mail_get_modseq(struct mail *_mail) { - struct imapc_mailbox *mbox = (struct imapc_mailbox *)_mail->box; + struct imapc_mailbox *mbox = IMAPC_MAILBOX(_mail->box); struct imapc_msgmap *msgmap; const uint64_t *modseqs; unsigned int count; @@ -154,7 +154,7 @@ static int imapc_mail_get_save_date(struct mail *_mail, time_t *date_r) static int imapc_mail_get_physical_size(struct mail *_mail, uoff_t *size_r) { - struct imapc_mailbox *mbox = (struct imapc_mailbox *)_mail->box; + struct imapc_mailbox *mbox = IMAPC_MAILBOX(_mail->box); struct index_mail *mail = (struct index_mail *)_mail; struct index_mail_data *data = &mail->data; struct istream *input; @@ -220,7 +220,7 @@ imapc_mail_get_header_stream(struct mail *_mail, struct istream **stream_r) { struct imapc_mail *mail = (struct imapc_mail *)_mail; - struct imapc_mailbox *mbox = (struct imapc_mailbox *)_mail->box; + struct imapc_mailbox *mbox = IMAPC_MAILBOX(_mail->box); enum mail_lookup_abort old_abort = _mail->lookup_abort; int ret; @@ -351,7 +351,7 @@ bool imapc_mail_has_headers_in_cache(struct index_mail *mail, void imapc_mail_update_access_parts(struct index_mail *mail) { struct mail *_mail = &mail->mail.mail; - struct imapc_mailbox *mbox = (struct imapc_mailbox *)_mail->box; + struct imapc_mailbox *mbox = IMAPC_MAILBOX(_mail->box); struct index_mail_data *data = &mail->data; struct mailbox_header_lookup_ctx *header_ctx; const char *str; @@ -426,7 +426,7 @@ imapc_mail_add_temp_wanted_fields(struct mail *_mail, static void imapc_mail_close(struct mail *_mail) { struct imapc_mail *mail = (struct imapc_mail *)_mail; - struct imapc_mailbox *mbox = (struct imapc_mailbox *)_mail->box; + struct imapc_mailbox *mbox = IMAPC_MAILBOX(_mail->box); struct imapc_mail_cache *cache = &mbox->prev_mail_cache; if (mail->fetch_count > 0) { @@ -519,7 +519,7 @@ static bool imapc_mail_get_cached_guid(struct mail *_mail) static int imapc_mail_get_guid(struct mail *_mail, const char **value_r) { struct index_mail *imail = (struct index_mail *)_mail; - struct imapc_mailbox *mbox = (struct imapc_mailbox *)_mail->box; + struct imapc_mailbox *mbox = IMAPC_MAILBOX(_mail->box); const enum index_cache_field cache_idx = imail->ibox->cache_fields[MAIL_CACHE_GUID].idx; @@ -552,7 +552,7 @@ static int imapc_mail_get_special(struct mail *_mail, enum mail_fetch_field field, const char **value_r) { - struct imapc_mailbox *mbox = (struct imapc_mailbox *)_mail->box; + struct imapc_mailbox *mbox = IMAPC_MAILBOX(_mail->box); struct index_mail *imail = (struct index_mail *)_mail; uint64_t num; diff --git a/src/lib-storage/index/imapc/imapc-save.c b/src/lib-storage/index/imapc/imapc-save.c index 47fcee8daf..2d81c86707 100644 --- a/src/lib-storage/index/imapc/imapc-save.c +++ b/src/lib-storage/index/imapc/imapc-save.c @@ -37,12 +37,14 @@ struct imapc_save_cmd_context { int ret; }; +#define IMAPC_SAVECTX(s) container_of(s, struct imapc_save_context, ctx) + void imapc_transaction_save_rollback(struct mail_save_context *_ctx); struct mail_save_context * imapc_save_alloc(struct mailbox_transaction_context *t) { - struct imapc_mailbox *mbox = (struct imapc_mailbox *)t->box; + struct imapc_mailbox *mbox = IMAPC_MAILBOX(t->box); struct imapc_save_context *ctx; i_assert((t->flags & MAILBOX_TRANSACTION_FLAG_EXTERNAL) != 0); @@ -60,7 +62,7 @@ imapc_save_alloc(struct mailbox_transaction_context *t) int imapc_save_begin(struct mail_save_context *_ctx, struct istream *input) { - struct imapc_save_context *ctx = (struct imapc_save_context *)_ctx; + struct imapc_save_context *ctx = IMAPC_SAVECTX(_ctx); struct mail_storage *storage = _ctx->transaction->box->storage; const char *path; @@ -90,7 +92,7 @@ int imapc_save_begin(struct mail_save_context *_ctx, struct istream *input) int imapc_save_continue(struct mail_save_context *_ctx) { - struct imapc_save_context *ctx = (struct imapc_save_context *)_ctx; + struct imapc_save_context *ctx = IMAPC_SAVECTX(_ctx); if (ctx->failed) return -1; @@ -266,7 +268,7 @@ static int imapc_save_append(struct imapc_save_context *ctx) int imapc_save_finish(struct mail_save_context *_ctx) { - struct imapc_save_context *ctx = (struct imapc_save_context *)_ctx; + struct imapc_save_context *ctx = IMAPC_SAVECTX(_ctx); struct mail_storage *storage = _ctx->transaction->box->storage; ctx->finished = TRUE; @@ -303,7 +305,7 @@ int imapc_save_finish(struct mail_save_context *_ctx) void imapc_save_cancel(struct mail_save_context *_ctx) { - struct imapc_save_context *ctx = (struct imapc_save_context *)_ctx; + struct imapc_save_context *ctx = IMAPC_SAVECTX(_ctx); ctx->failed = TRUE; (void)imapc_save_finish(_ctx); @@ -311,7 +313,7 @@ void imapc_save_cancel(struct mail_save_context *_ctx) int imapc_transaction_save_commit_pre(struct mail_save_context *_ctx) { - struct imapc_save_context *ctx = (struct imapc_save_context *)_ctx; + struct imapc_save_context *ctx = IMAPC_SAVECTX(_ctx); struct mail_transaction_commit_changes *changes = _ctx->transaction->changes; uint32_t i, last_seq; @@ -338,7 +340,7 @@ void imapc_transaction_save_commit_post(struct mail_save_context *_ctx, void imapc_transaction_save_rollback(struct mail_save_context *_ctx) { - struct imapc_save_context *ctx = (struct imapc_save_context *)_ctx; + struct imapc_save_context *ctx = IMAPC_SAVECTX(_ctx); /* FIXME: if we really want to rollback, we should expunge messages we already saved */ @@ -405,9 +407,9 @@ static void imapc_copy_callback(const struct imapc_command_reply *reply, int imapc_copy(struct mail_save_context *_ctx, struct mail *mail) { - struct imapc_save_context *ctx = (struct imapc_save_context *)_ctx; + struct imapc_save_context *ctx = IMAPC_SAVECTX(_ctx); struct mailbox_transaction_context *_t = _ctx->transaction; - struct imapc_mailbox *src_mbox = (struct imapc_mailbox *)mail->box; + struct imapc_mailbox *src_mbox = IMAPC_MAILBOX(mail->box); struct imapc_command *cmd; struct imapc_save_cmd_context sctx; diff --git a/src/lib-storage/index/imapc/imapc-search.c b/src/lib-storage/index/imapc/imapc-search.c index 0af49cda25..13b223edb3 100644 --- a/src/lib-storage/index/imapc/imapc-search.c +++ b/src/lib-storage/index/imapc/imapc-search.c @@ -183,8 +183,7 @@ static void imapc_search_callback(const struct imapc_command_reply *reply, void *context) { struct mail_search_context *ctx = context; - struct imapc_mailbox *mbox = - (struct imapc_mailbox *)ctx->transaction->box; + struct imapc_mailbox *mbox = IMAPC_MAILBOX(ctx->transaction->box); struct imapc_search_context *ictx = IMAPC_SEARCHCTX(ctx); ictx->finished = TRUE; @@ -207,7 +206,7 @@ imapc_search_init(struct mailbox_transaction_context *t, enum mail_fetch_field wanted_fields, struct mailbox_header_lookup_ctx *wanted_headers) { - struct imapc_mailbox *mbox = (struct imapc_mailbox *)t->box; + struct imapc_mailbox *mbox = IMAPC_MAILBOX(t->box); struct mail_search_context *ctx; struct imapc_search_context *ictx; struct imapc_command *cmd; diff --git a/src/lib-storage/index/imapc/imapc-storage.c b/src/lib-storage/index/imapc/imapc-storage.c index bba9ce76a5..4776e564b8 100644 --- a/src/lib-storage/index/imapc/imapc-storage.c +++ b/src/lib-storage/index/imapc/imapc-storage.c @@ -387,7 +387,7 @@ imapc_storage_create(struct mail_storage *_storage, struct mail_namespace *ns, const char **error_r) { - struct imapc_storage *storage = (struct imapc_storage *)_storage; + struct imapc_storage *storage = IMAPC_STORAGE(_storage); struct imapc_mailbox_list *imapc_list = NULL; storage->set = mail_namespace_get_driver_settings(ns, _storage); @@ -440,7 +440,7 @@ imapc_storage_create(struct mail_storage *_storage, static void imapc_storage_destroy(struct mail_storage *_storage) { - struct imapc_storage *storage = (struct imapc_storage *)_storage; + struct imapc_storage *storage = IMAPC_STORAGE(_storage); storage->client->destroying = TRUE; @@ -489,7 +489,7 @@ imapc_mailbox_alloc(struct mail_storage *storage, struct mailbox_list *list, index_storage_mailbox_alloc(&mbox->box, vname, flags, MAIL_INDEX_PREFIX); - mbox->storage = (struct imapc_storage *)storage; + mbox->storage = IMAPC_STORAGE(storage); p_array_init(&mbox->untagged_callbacks, pool, 16); p_array_init(&mbox->resp_text_callbacks, pool, 16); @@ -734,7 +734,7 @@ int imapc_mailbox_select(struct imapc_mailbox *mbox) static int imapc_mailbox_open(struct mailbox *box) { - struct imapc_mailbox *mbox = (struct imapc_mailbox *)box; + struct imapc_mailbox *mbox = IMAPC_MAILBOX(box); if (index_storage_mailbox_open(box, FALSE) < 0) return -1; @@ -775,7 +775,7 @@ void imapc_mail_cache_free(struct imapc_mail_cache *cache) static void imapc_mailbox_close(struct mailbox *box) { - struct imapc_mailbox *mbox = (struct imapc_mailbox *)box; + struct imapc_mailbox *mbox = IMAPC_MAILBOX(box); bool changes; (void)imapc_mailbox_commit_delayed_trans(mbox, &changes); @@ -799,7 +799,7 @@ imapc_mailbox_create(struct mailbox *box, const struct mailbox_update *update ATTR_UNUSED, bool directory) { - struct imapc_mailbox *mbox = (struct imapc_mailbox *)box; + struct imapc_mailbox *mbox = IMAPC_MAILBOX(box); struct imapc_command *cmd; struct imapc_simple_context sctx; const char *name = imapc_mailbox_get_remote_name(mbox); @@ -955,7 +955,7 @@ static int imapc_mailbox_run_status(struct mailbox *box, enum mailbox_status_items items, struct mailbox_status *status_r) { - struct imapc_mailbox *mbox = (struct imapc_mailbox *)box; + struct imapc_mailbox *mbox = IMAPC_MAILBOX(box); struct imapc_command *cmd; struct imapc_simple_context sctx; string_t *str; @@ -1001,7 +1001,7 @@ static int imapc_mailbox_get_status(struct mailbox *box, enum mailbox_status_items items, struct mailbox_status *status_r) { - struct imapc_mailbox *mbox = (struct imapc_mailbox *)box; + struct imapc_mailbox *mbox = IMAPC_MAILBOX(box); if (mbox->guid_fetch_field_name != NULL || IMAPC_BOX_HAS_FEATURE(mbox, IMAPC_FEATURE_GUID_FORCED)) @@ -1084,7 +1084,7 @@ static int imapc_mailbox_get_metadata(struct mailbox *box, enum mailbox_metadata_items items, struct mailbox_metadata *metadata_r) { - struct imapc_mailbox *mbox = (struct imapc_mailbox *)box; + struct imapc_mailbox *mbox = IMAPC_MAILBOX(box); const struct imapc_namespace *ns; if ((items & MAILBOX_METADATA_GUID) != 0) { @@ -1151,7 +1151,7 @@ static void imapc_idle_noop_callback(const struct imapc_command_reply *reply, static void imapc_notify_changes(struct mailbox *box) { - struct imapc_mailbox *mbox = (struct imapc_mailbox *)box; + struct imapc_mailbox *mbox = IMAPC_MAILBOX(box); const struct mail_storage_settings *set = box->storage->set; struct imapc_command *cmd; @@ -1181,7 +1181,7 @@ static void imapc_notify_changes(struct mailbox *box) static bool imapc_is_inconsistent(struct mailbox *box) { - struct imapc_mailbox *mbox = (struct imapc_mailbox *)box; + struct imapc_mailbox *mbox = IMAPC_MAILBOX(box); if (box->view != NULL && mail_index_view_is_inconsistent(box->view)) diff --git a/src/lib-storage/index/imapc/imapc-storage.h b/src/lib-storage/index/imapc/imapc-storage.h index 85f4029c23..442891e129 100644 --- a/src/lib-storage/index/imapc/imapc-storage.h +++ b/src/lib-storage/index/imapc/imapc-storage.h @@ -150,6 +150,9 @@ struct imapc_simple_context { int ret; }; +#define IMAPC_STORAGE(s) container_of(s, struct imapc_storage, storage) +#define IMAPC_MAILBOX(s) container_of(s, struct imapc_mailbox, box) + int imapc_storage_client_create(struct mail_namespace *ns, const struct imapc_settings *imapc_set, const struct mail_storage_settings *mail_set, diff --git a/src/lib-storage/index/imapc/imapc-sync.c b/src/lib-storage/index/imapc/imapc-sync.c index 52092f31d1..4cda5e0552 100644 --- a/src/lib-storage/index/imapc/imapc-sync.c +++ b/src/lib-storage/index/imapc/imapc-sync.c @@ -664,7 +664,7 @@ imapc_noop_if_needed(struct imapc_mailbox *mbox, enum mailbox_sync_flags flags) struct mailbox_sync_context * imapc_mailbox_sync_init(struct mailbox *box, enum mailbox_sync_flags flags) { - struct imapc_mailbox *mbox = (struct imapc_mailbox *)box; + struct imapc_mailbox *mbox = IMAPC_MAILBOX(box); struct imapc_mailbox_list *list = mbox->storage->client->_list; bool changes; int ret = 0; @@ -690,7 +690,7 @@ imapc_mailbox_sync_init(struct mailbox *box, enum mailbox_sync_flags flags) int imapc_mailbox_sync_deinit(struct mailbox_sync_context *ctx, struct mailbox_sync_status *status_r) { - struct imapc_mailbox *mbox = (struct imapc_mailbox *)ctx->box; + struct imapc_mailbox *mbox = IMAPC_MAILBOX(ctx->box); int ret; ret = index_mailbox_sync_deinit(ctx, status_r);