]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-storage: convert imapc to use container_of
authorJosef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
Mon, 28 Aug 2017 08:50:40 +0000 (11:50 +0300)
committerAki Tuomi <aki.tuomi@dovecot.fi>
Thu, 7 Sep 2017 07:43:55 +0000 (10:43 +0300)
src/lib-storage/index/imapc/imapc-mail-fetch.c
src/lib-storage/index/imapc/imapc-mail.c
src/lib-storage/index/imapc/imapc-save.c
src/lib-storage/index/imapc/imapc-search.c
src/lib-storage/index/imapc/imapc-storage.c
src/lib-storage/index/imapc/imapc-storage.h
src/lib-storage/index/imapc/imapc-sync.c

index edfcf7dcc1aa5ddc1c943483f57c429eee82042f..8ad6a7db4a64a38bd7eb0468ee093062df5c1b15 100644 (file)
@@ -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;
index a5cbd4807a870e34b81cb910d2102f0d754300b8..d4f6f94dbef2096fbd4e6d4b0a475e52aa9ee544 100644 (file)
@@ -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;
 
index 47fcee8dafca0292a2ea197cc89a7636be6d680c..2d81c867075768c25840f4d27bf6c642099cdc3f 100644 (file)
@@ -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;
 
index 0af49cda2596e7bd340852cc12d9ba995a518ed8..13b223edb3ff6e32a94d8d363f681c9001d17e68 100644 (file)
@@ -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;
index bba9ce76a518861f271b21293e9c491b9d0a6528..4776e564b84c58d551be101b5f885d572de0a073 100644 (file)
@@ -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))
index 85f4029c233732f8956a79bf2f633dcceb2550a1..442891e129d590c0cbbc95712889c82e892360cf 100644 (file)
@@ -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,
index 52092f31d1140c91599383696b56c1bf52651b02..4cda5e0552764a4cb4948a7cf8f2afe7a48dae45 100644 (file)
@@ -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);