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

index 0baa65fa146c55d5ed3f5b8c7bceaa8c885d70f5..bd14699a113b0f9f3cc6b5c1f709377b027b5a01 100644 (file)
@@ -18,9 +18,8 @@
 
 static void mbox_prepare_resync(struct mail *mail)
 {
-       struct mbox_transaction_context *t =
-               (struct mbox_transaction_context *)mail->transaction;
-       struct mbox_mailbox *mbox = (struct mbox_mailbox *)mail->box;
+       struct mbox_transaction_context *t = MBOX_TRANSCTX(mail->transaction);
+       struct mbox_mailbox *mbox = MBOX_MAILBOX(mail->box);
 
        if (mbox->mbox_lock_type == F_RDLCK) {
                if (mbox->mbox_lock_id == t->read_lock_id)
@@ -32,10 +31,9 @@ static void mbox_prepare_resync(struct mail *mail)
 
 static int mbox_mail_seek(struct index_mail *mail)
 {
-       struct mbox_transaction_context *t =
-               (struct mbox_transaction_context *)mail->mail.mail.transaction;
        struct mail *_mail = &mail->mail.mail;
-       struct mbox_mailbox *mbox = (struct mbox_mailbox *)_mail->box;
+       struct mbox_transaction_context *t = MBOX_TRANSCTX(_mail->transaction);
+       struct mbox_mailbox *mbox = MBOX_MAILBOX(_mail->box);
        enum mbox_sync_flags sync_flags = 0;
        int ret, try;
        bool deleted;
@@ -115,7 +113,7 @@ 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_data *data = &mail->data;
-       struct mbox_mailbox *mbox = (struct mbox_mailbox *)_mail->box;
+       struct mbox_mailbox *mbox = MBOX_MAILBOX(_mail->box);
 
        if (index_mail_get_received_date(_mail, date_r) == 0)
                return 0;
@@ -156,7 +154,7 @@ mbox_mail_get_md5_header(struct index_mail *mail, const char **value_r)
        struct mail *_mail = &mail->mail.mail;
        static uint8_t empty_md5[16] =
                { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
-       struct mbox_mailbox *mbox = (struct mbox_mailbox *)_mail->box;
+       struct mbox_mailbox *mbox = MBOX_MAILBOX(_mail->box);
        const void *ext_data;
 
        if (mail->data.guid != NULL) {
@@ -184,7 +182,7 @@ 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 mbox_mailbox *mbox = (struct mbox_mailbox *)_mail->box;
+       struct mbox_mailbox *mbox = MBOX_MAILBOX(_mail->box);
        uoff_t offset;
        bool move_offset;
        int ret;
@@ -241,7 +239,7 @@ mbox_mail_get_special(struct mail *_mail, enum mail_fetch_field field,
 static int
 mbox_mail_get_next_offset(struct index_mail *mail, uoff_t *next_offset_r)
 {
-       struct mbox_mailbox *mbox = (struct mbox_mailbox *)mail->mail.mail.box;
+       struct mbox_mailbox *mbox = MBOX_MAILBOX(mail->mail.mail.box);
        struct mail_index_view *view;
        const struct mail_index_header *hdr;
        uint32_t seq;
@@ -291,7 +289,7 @@ 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_data *data = &mail->data;
-       struct mbox_mailbox *mbox = (struct mbox_mailbox *)_mail->box;
+       struct mbox_mailbox *mbox = MBOX_MAILBOX(_mail->box);
        struct istream *input;
        struct message_size hdr_size;
        uoff_t old_offset, body_offset, body_size, next_offset;
@@ -337,7 +335,7 @@ static int mbox_mail_get_physical_size(struct mail *_mail, uoff_t *size_r)
 
 static int mbox_mail_init_stream(struct index_mail *mail)
 {
-       struct mbox_mailbox *mbox = (struct mbox_mailbox *)mail->mail.mail.box;
+       struct mbox_mailbox *mbox = MBOX_MAILBOX(mail->mail.mail.box);
        struct istream *raw_stream;
        uoff_t hdr_offset, next_offset;
        int ret;
index 050653495f1f250785c5e844e08403bd61905363..1b7a63f39c5b3218927700be86d153317877ecf3 100644 (file)
@@ -56,6 +56,8 @@ struct mbox_save_context {
        bool finished:1;
 };
 
+#define MBOX_SAVECTX(s)                container_of(s, struct mbox_save_context, ctx)
+
 static void write_error(struct mbox_save_context *ctx)
 {
        mbox_set_syscall_error(ctx->mbox, "write()");
@@ -194,8 +196,8 @@ static int mbox_write_content_length(struct mbox_save_context *ctx)
 
 static void mbox_save_init_sync(struct mailbox_transaction_context *t)
 {
-       struct mbox_mailbox *mbox = (struct mbox_mailbox *)t->box;
-       struct mbox_save_context *ctx = (struct mbox_save_context *)t->save_ctx;
+       struct mbox_mailbox *mbox = MBOX_MAILBOX(t->box);
+       struct mbox_save_context *ctx = MBOX_SAVECTX(t->save_ctx);
        const struct mail_index_header *hdr;
        struct mail_index_view *view;
 
@@ -414,7 +416,7 @@ mbox_save_get_input_stream(struct mbox_save_context *ctx, struct istream *input)
 struct mail_save_context *
 mbox_save_alloc(struct mailbox_transaction_context *t)
 {
-       struct mbox_mailbox *mbox = (struct mbox_mailbox *)t->box;
+       struct mbox_mailbox *mbox = MBOX_MAILBOX(t->box);
        struct mbox_save_context *ctx;
 
        i_assert((t->flags & MAILBOX_TRANSACTION_FLAG_EXTERNAL) != 0);
@@ -434,10 +436,9 @@ mbox_save_alloc(struct mailbox_transaction_context *t)
 
 int mbox_save_begin(struct mail_save_context *_ctx, struct istream *input)
 {
-       struct mbox_save_context *ctx = (struct mbox_save_context *)_ctx;
+       struct mbox_save_context *ctx = MBOX_SAVECTX(_ctx);
        struct mail_save_data *mdata = &_ctx->data;
-       struct mbox_transaction_context *t =
-               (struct mbox_transaction_context *)_ctx->transaction;
+       struct mbox_transaction_context *t = MBOX_TRANSCTX(_ctx->transaction);
        enum mail_flags save_flags;
        uint64_t offset;
 
@@ -562,7 +563,7 @@ static int mbox_save_finish_headers(struct mbox_save_context *ctx)
 
 int mbox_save_continue(struct mail_save_context *_ctx)
 {
-       struct mbox_save_context *ctx = (struct mbox_save_context *)_ctx;
+       struct mbox_save_context *ctx = MBOX_SAVECTX(_ctx);
        const unsigned char *data;
        size_t i, size;
        ssize_t ret;
@@ -696,7 +697,7 @@ int mbox_save_finish(struct mail_save_context *_ctx)
 
 void mbox_save_cancel(struct mail_save_context *_ctx)
 {
-       struct mbox_save_context *ctx = (struct mbox_save_context *)_ctx;
+       struct mbox_save_context *ctx = MBOX_SAVECTX(_ctx);
 
        ctx->failed = TRUE;
        (void)mbox_save_finish(_ctx);
@@ -727,7 +728,7 @@ static void mbox_save_truncate(struct mbox_save_context *ctx)
 
 int mbox_transaction_save_commit_pre(struct mail_save_context *_ctx)
 {
-       struct mbox_save_context *ctx = (struct mbox_save_context *)_ctx;
+       struct mbox_save_context *ctx = MBOX_SAVECTX(_ctx);
        struct mailbox_transaction_context *_t = _ctx->transaction;
        struct mbox_mailbox *mbox = ctx->mbox;
        struct stat st;
@@ -796,7 +797,7 @@ int mbox_transaction_save_commit_pre(struct mail_save_context *_ctx)
 void mbox_transaction_save_commit_post(struct mail_save_context *_ctx,
                                       struct mail_index_transaction_commit_result *result ATTR_UNUSED)
 {
-       struct mbox_save_context *ctx = (struct mbox_save_context *)_ctx;
+       struct mbox_save_context *ctx = MBOX_SAVECTX(_ctx);
 
        i_assert(ctx->mbox->mbox_lock_type == F_WRLCK);
 
@@ -811,7 +812,7 @@ void mbox_transaction_save_commit_post(struct mail_save_context *_ctx,
 
 void mbox_transaction_save_rollback(struct mail_save_context *_ctx)
 {
-       struct mbox_save_context *ctx = (struct mbox_save_context *)_ctx;
+       struct mbox_save_context *ctx = MBOX_SAVECTX(_ctx);
 
        if (!ctx->finished)
                mbox_save_cancel(&ctx->ctx);
index b92ff9e767876dab76ac4f32f183290fb96d92f7..344591f557761f6597964ac5119900c0ddcd06a6 100644 (file)
@@ -149,7 +149,7 @@ static int
 mbox_storage_create(struct mail_storage *_storage, struct mail_namespace *ns,
                    const char **error_r)
 {
-       struct mbox_storage *storage = (struct mbox_storage *)_storage;
+       struct mbox_storage *storage = MBOX_STORAGE(_storage);
        struct stat st;
        const char *dir;
 
@@ -384,7 +384,7 @@ mbox_mailbox_alloc(struct mail_storage *storage, struct mailbox_list *list,
 
        index_storage_mailbox_alloc(&mbox->box, vname, flags, MAIL_INDEX_PREFIX);
 
-       mbox->storage = (struct mbox_storage *)storage;
+       mbox->storage = MBOX_STORAGE(storage);
        mbox->mbox_fd = -1;
        mbox->mbox_lock_type = F_UNLCK;
        mbox->mbox_list_index_ext_id = (uint32_t)-1;
@@ -455,7 +455,7 @@ static int mbox_mailbox_open_existing(struct mbox_mailbox *mbox)
 
 static bool mbox_storage_is_readonly(struct mailbox *box)
 {
-       struct mbox_mailbox *mbox = (struct mbox_mailbox *)box;
+       struct mbox_mailbox *mbox = MBOX_MAILBOX(box);
 
        if (index_storage_is_readonly(box))
                return TRUE;
@@ -471,7 +471,7 @@ static bool mbox_storage_is_readonly(struct mailbox *box)
 
 static int mbox_mailbox_open(struct mailbox *box)
 {
-       struct mbox_mailbox *mbox = (struct mbox_mailbox *)box;
+       struct mbox_mailbox *mbox = MBOX_MAILBOX(box);
        struct stat st;
        int ret;
 
@@ -507,7 +507,7 @@ static int mbox_mailbox_open(struct mailbox *box)
 static int
 mbox_mailbox_update(struct mailbox *box, const struct mailbox_update *update)
 {
-       struct mbox_mailbox *mbox = (struct mbox_mailbox *)box;
+       struct mbox_mailbox *mbox = MBOX_MAILBOX(box);
        int ret = 0;
 
        if (!box->opened) {
@@ -589,7 +589,7 @@ mbox_mailbox_create(struct mailbox *box, const struct mailbox_update *update,
 
 static void mbox_mailbox_close(struct mailbox *box)
 {
-       struct mbox_mailbox *mbox = (struct mbox_mailbox *)box;
+       struct mbox_mailbox *mbox = MBOX_MAILBOX(box);
        const struct mail_index_header *hdr;
        enum mbox_sync_flags sync_flags = 0;
 
@@ -658,7 +658,7 @@ mbox_mailbox_get_guid(struct mbox_mailbox *mbox, guid_128_t guid_r)
                i_assert(mbox->mbox_lock_type == F_UNLCK);
                box2 = mailbox_alloc(mbox->box.list, mbox->box.vname, 0);
                ret = mailbox_sync(box2, 0);
-               mbox2 = (struct mbox_mailbox *)box2;
+               mbox2 = MBOX_MAILBOX(box2);
                memcpy(guid_r, mbox2->mbox_hdr.mailbox_guid, GUID_128_SIZE);
                mailbox_free(&box2);
                return ret;
@@ -672,7 +672,7 @@ mbox_mailbox_get_metadata(struct mailbox *box,
                          enum mailbox_metadata_items items,
                          struct mailbox_metadata *metadata_r)
 {
-       struct mbox_mailbox *mbox = (struct mbox_mailbox *)box;
+       struct mbox_mailbox *mbox = MBOX_MAILBOX(box);
 
        if (index_mailbox_get_metadata(box, items, metadata_r) < 0)
                return -1;
@@ -685,7 +685,7 @@ mbox_mailbox_get_metadata(struct mailbox *box,
 
 static void mbox_notify_changes(struct mailbox *box)
 {
-       struct mbox_mailbox *mbox = (struct mbox_mailbox *)box;
+       struct mbox_mailbox *mbox = MBOX_MAILBOX(box);
 
        if (box->notify_callback == NULL)
                mailbox_watch_remove_all(box);
@@ -730,7 +730,7 @@ static struct mailbox_transaction_context *
 mbox_transaction_begin(struct mailbox *box,
                       enum mailbox_transaction_flags flags)
 {
-       struct mbox_mailbox *mbox = (struct mbox_mailbox *)box;
+       struct mbox_mailbox *mbox = MBOX_MAILBOX(box);
        struct mbox_transaction_context *mt;
 
        if ((flags & MAILBOX_TRANSACTION_FLAG_EXTERNAL) != 0)
@@ -745,7 +745,7 @@ static void
 mbox_transaction_unlock(struct mailbox *box, unsigned int lock_id1,
                        unsigned int lock_id2)
 {
-       struct mbox_mailbox *mbox = (struct mbox_mailbox *)box;
+       struct mbox_mailbox *mbox = MBOX_MAILBOX(box);
 
        if (lock_id1 != 0)
                mbox_unlock(mbox, lock_id1);
@@ -766,10 +766,9 @@ static int
 mbox_transaction_commit(struct mailbox_transaction_context *t,
                        struct mail_transaction_commit_changes *changes_r)
 {
-       struct mbox_transaction_context *mt =
-               (struct mbox_transaction_context *)t;
+       struct mbox_transaction_context *mt = MBOX_TRANSCTX(t);
        struct mailbox *box = t->box;
-       struct mbox_mailbox *mbox = (struct mbox_mailbox *)box;
+       struct mbox_mailbox *mbox = MBOX_MAILBOX(box);
        unsigned int read_lock_id = mt->read_lock_id;
        unsigned int write_lock_id = mt->write_lock_id;
        int ret;
@@ -787,10 +786,9 @@ mbox_transaction_commit(struct mailbox_transaction_context *t,
 static void
 mbox_transaction_rollback(struct mailbox_transaction_context *t)
 {
-       struct mbox_transaction_context *mt =
-               (struct mbox_transaction_context *)t;
+       struct mbox_transaction_context *mt = MBOX_TRANSCTX(t);
        struct mailbox *box = t->box;
-       struct mbox_mailbox *mbox = (struct mbox_mailbox *)box;
+       struct mbox_mailbox *mbox = MBOX_MAILBOX(box);
        unsigned int read_lock_id = mt->read_lock_id;
        unsigned int write_lock_id = mt->write_lock_id;
 
index b1be46744b058c2d3c44460c5c6d95c95d3c9f12..a64bb0f9fbb2c0ce23bc9e228395be613592d9fd 100644 (file)
@@ -79,6 +79,10 @@ struct mbox_transaction_context {
        unsigned int write_lock_id;
 };
 
+#define MBOX_STORAGE(s)                container_of(s, struct mbox_storage, storage)
+#define MBOX_MAILBOX(s)                container_of(s, struct mbox_mailbox, box)
+#define MBOX_TRANSCTX(s)       container_of(s, struct mbox_transaction_context, t)
+
 extern struct mail_vfuncs mbox_mail_vfuncs;
 extern const char *mbox_hide_headers[], *mbox_save_drop_headers[];
 extern unsigned int mbox_hide_headers_count, mbox_save_drop_headers_count;
index 91c8a8a9fd78484de7bdc8a136a6dd55b5d0d828..9f499aa72825718d135abe9f03cafdd30b68dc8a 100644 (file)
@@ -22,7 +22,7 @@ int mbox_list_index_has_changed(struct mailbox *box,
                                struct mail_index_view *list_view,
                                uint32_t seq, bool quick)
 {
-       struct mbox_mailbox *mbox = (struct mbox_mailbox *)box;
+       struct mbox_mailbox *mbox = MBOX_MAILBOX(box);
        const struct mbox_list_index_record *rec;
        const void *data;
        const char *path;
@@ -64,7 +64,7 @@ void mbox_list_index_update_sync(struct mailbox *box,
                                 struct mail_index_transaction *trans,
                                 uint32_t seq)
 {
-       struct mbox_mailbox *mbox = (struct mbox_mailbox *)box;
+       struct mbox_mailbox *mbox = MBOX_MAILBOX(box);
        struct mail_index_view *list_view;
        const struct mbox_index_header *mhdr = &mbox->mbox_hdr;
        const struct mbox_list_index_record *old_rec;
index 58a00e916e424fb556e3f4ff6d2aaeeabd676e8a..e5c8fef3db68191bbef42a35c97f4134cf934fd3 100644 (file)
@@ -2042,7 +2042,7 @@ int mbox_sync(struct mbox_mailbox *mbox, enum mbox_sync_flags flags)
 struct mailbox_sync_context *
 mbox_storage_sync_init(struct mailbox *box, enum mailbox_sync_flags flags)
 {
-       struct mbox_mailbox *mbox = (struct mbox_mailbox *)box;
+       struct mbox_mailbox *mbox = MBOX_MAILBOX(box);
        enum mbox_sync_flags mbox_sync_flags = 0;
        int ret = 0;