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

index 63fcd713e2ba62bae353450ff52523476793e84d..0cc0f3581218d03b6c7a7074c3bd8f69627151ba 100644 (file)
@@ -58,8 +58,7 @@ static int do_hardlink(struct maildir_mailbox *mbox, const char *path,
 static int
 maildir_copy_hardlink(struct mail_save_context *ctx, struct mail *mail)
 {
-       struct maildir_mailbox *dest_mbox =
-               (struct maildir_mailbox *)ctx->transaction->box;
+       struct maildir_mailbox *dest_mbox = MAILDIR_MAILBOX(ctx->transaction->box);
        struct maildir_mailbox *src_mbox;
        struct maildir_filename *mf;
        struct hardlink_ctx do_ctx;
@@ -68,7 +67,7 @@ maildir_copy_hardlink(struct mail_save_context *ctx, struct mail *mail)
        enum mail_lookup_abort old_abort;
 
        if (strcmp(mail->box->storage->name, MAILDIR_STORAGE_NAME) == 0)
-               src_mbox = (struct maildir_mailbox *)mail->box;
+               src_mbox = MAILDIR_MAILBOX(mail->box);
        else if (strcmp(mail->box->storage->name, "raw") == 0) {
                /* lda uses raw format */
                src_mbox = NULL;
@@ -125,7 +124,7 @@ maildir_copy_hardlink(struct mail_save_context *ctx, struct mail *mail)
 int maildir_copy(struct mail_save_context *ctx, struct mail *mail)
 {
        struct mailbox_transaction_context *_t = ctx->transaction;
-       struct maildir_mailbox *mbox = (struct maildir_mailbox *)_t->box;
+       struct maildir_mailbox *mbox = MAILDIR_MAILBOX(_t->box);
        int ret;
 
        i_assert((_t->flags & MAILBOX_TRANSACTION_FLAG_EXTERNAL) != 0);
index a104c294870e8358982668205db94c341fa7a11b..25c1bf1c042ae5c4440d2b5373a97c8d8c88360c 100644 (file)
@@ -103,7 +103,7 @@ maildir_open_mail(struct maildir_mailbox *mbox, struct mail *mail,
 
 static int maildir_mail_stat(struct mail *mail, struct stat *st_r)
 {
-       struct maildir_mailbox *mbox = (struct maildir_mailbox *)mail->box;
+       struct maildir_mailbox *mbox = MAILDIR_MAILBOX(mail->box);
        struct index_mail *imail = (struct index_mail *)mail;
        const char *path;
        int fd, ret;
@@ -289,7 +289,7 @@ static int maildir_quick_size_lookup(struct index_mail *mail, bool vsize,
                                     uoff_t *size_r)
 {
        struct mail *_mail = &mail->mail.mail;
-       struct maildir_mailbox *mbox = (struct maildir_mailbox *)_mail->box;
+       struct maildir_mailbox *mbox = MAILDIR_MAILBOX(_mail->box);
        enum maildir_uidlist_rec_ext_key key;
        const char *path, *fname, *value;
 
@@ -332,7 +332,7 @@ maildir_handle_size_caching(struct index_mail *mail, bool quick_check,
                            bool vsize)
 {
        struct mailbox *box = mail->mail.mail.box;
-       struct maildir_mailbox *mbox = (struct maildir_mailbox *)box;
+       struct maildir_mailbox *mbox = MAILDIR_MAILBOX(box);
        enum mail_fetch_field field;
        uoff_t size;
        int pop3_state;
@@ -379,7 +379,7 @@ maildir_handle_size_caching(struct index_mail *mail, bool quick_check,
 
 static int maildir_mail_get_virtual_size(struct mail *_mail, uoff_t *size_r)
 {
-       struct maildir_mailbox *mbox = (struct maildir_mailbox *)_mail->box;
+       struct maildir_mailbox *mbox = MAILDIR_MAILBOX(_mail->box);
        struct index_mail *mail = (struct index_mail *)_mail;
        struct index_mail_data *data = &mail->data;
        struct message_size hdr_size, body_size;
@@ -425,7 +425,7 @@ static int maildir_mail_get_virtual_size(struct mail *_mail, uoff_t *size_r)
 static int maildir_mail_get_physical_size(struct mail *_mail, uoff_t *size_r)
 {
        struct index_mail *mail = (struct index_mail *)_mail;
-       struct maildir_mailbox *mbox = (struct maildir_mailbox *)_mail->box;
+       struct maildir_mailbox *mbox = MAILDIR_MAILBOX(_mail->box);
        struct index_mail_data *data = &mail->data;
        struct stat st;
        struct message_size hdr_size, body_size;
@@ -493,7 +493,7 @@ 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 maildir_mailbox *mbox = (struct maildir_mailbox *)_mail->box;
+       struct maildir_mailbox *mbox = MAILDIR_MAILBOX(_mail->box);
        const char *path, *fname = NULL, *end, *guid, *uidl, *order;
        struct stat st;
 
@@ -598,7 +598,7 @@ maildir_mail_get_stream(struct mail *_mail, bool get_body ATTR_UNUSED,
                        struct istream **stream_r)
 {
        struct index_mail *mail = (struct index_mail *)_mail;
-       struct maildir_mailbox *mbox = (struct maildir_mailbox *)_mail->box;
+       struct maildir_mailbox *mbox = MAILDIR_MAILBOX(_mail->box);
        struct index_mail_data *data = &mail->data;
        bool deleted;
 
@@ -623,7 +623,7 @@ maildir_mail_get_stream(struct mail *_mail, bool get_body ATTR_UNUSED,
 
 static void maildir_update_pop3_uidl(struct mail *_mail, const char *uidl)
 {
-       struct maildir_mailbox *mbox = (struct maildir_mailbox *)_mail->box;
+       struct maildir_mailbox *mbox = MAILDIR_MAILBOX(_mail->box);
        const char *fname;
 
        if (maildir_mail_get_special(_mail, MAIL_FETCH_STORAGE_ID,
@@ -641,7 +641,7 @@ static void maildir_update_pop3_uidl(struct mail *_mail, const char *uidl)
 
 static void maildir_mail_remove_sizes_from_uidlist(struct mail *mail)
 {
-       struct maildir_mailbox *mbox = (struct maildir_mailbox *)mail->box;
+       struct maildir_mailbox *mbox = MAILDIR_MAILBOX(mail->box);
 
        if (maildir_uidlist_lookup_ext(mbox->uidlist, mail->uid,
                                       MAILDIR_UIDLIST_REC_EXT_VSIZE) != NULL) {
@@ -710,7 +710,7 @@ static void
 maildir_mail_remove_sizes_from_filename(struct mail *mail,
                                        enum mail_fetch_field field)
 {
-       struct maildir_mailbox *mbox = (struct maildir_mailbox *)mail->box;
+       struct maildir_mailbox *mbox = MAILDIR_MAILBOX(mail->box);
        struct mail_private *pmail = (struct mail_private *)mail;
        enum maildir_uidlist_rec_flag flags;
        const char *fname;
index 3266161a6a66067d2d364535cbda12cff7bba864..4d984c940b9c18223e004dba9fd891b2994c545c 100644 (file)
@@ -70,6 +70,8 @@ struct maildir_save_context {
        bool locked_uidlist_refresh:1;
 };
 
+#define MAILDIR_SAVECTX(s)     container_of(s, struct maildir_save_context, ctx)
+
 static int maildir_file_move(struct maildir_save_context *ctx,
                             struct maildir_filename *mf, const char *destname,
                             bool newdir)
@@ -116,7 +118,7 @@ static int maildir_file_move(struct maildir_save_context *ctx,
 static struct mail_save_context *
 maildir_save_transaction_init(struct mailbox_transaction_context *t)
 {
-       struct maildir_mailbox *mbox = (struct maildir_mailbox *)t->box;
+       struct maildir_mailbox *mbox = MAILDIR_MAILBOX(t->box);
        struct maildir_save_context *ctx;
        const char *path;
        pool_t pool;
@@ -146,7 +148,7 @@ struct maildir_filename *
 maildir_save_add(struct mail_save_context *_ctx, const char *tmp_fname,
                 struct mail *src_mail)
 {
-       struct maildir_save_context *ctx = (struct maildir_save_context *)_ctx;
+       struct maildir_save_context *ctx = MAILDIR_SAVECTX(_ctx);
        struct mail_save_data *mdata = &_ctx->data;
        struct maildir_filename *mf;
        struct istream *input;
@@ -230,7 +232,7 @@ void maildir_save_set_dest_basename(struct mail_save_context *_ctx,
                                    struct maildir_filename *mf,
                                    const char *basename)
 {
-       struct maildir_save_context *ctx = (struct maildir_save_context *)_ctx;
+       struct maildir_save_context *ctx = MAILDIR_SAVECTX(_ctx);
 
        mf->preserve_filename = TRUE;
        mf->dest_basename = p_strdup(ctx->pool, basename);
@@ -303,8 +305,7 @@ static const char *maildir_mf_get_path(struct maildir_save_context *ctx,
 static struct maildir_filename *
 maildir_save_get_mf(struct mailbox_transaction_context *t, uint32_t seq)
 {
-       struct maildir_save_context *save_ctx =
-               (struct maildir_save_context *)t->save_ctx;
+       struct maildir_save_context *save_ctx = MAILDIR_SAVECTX(t->save_ctx);
        struct maildir_filename *mf;
 
        i_assert(seq >= save_ctx->first_seq);
@@ -331,8 +332,7 @@ int maildir_save_file_get_size(struct mailbox_transaction_context *t,
 const char *maildir_save_file_get_path(struct mailbox_transaction_context *t,
                                       uint32_t seq)
 {
-       struct maildir_save_context *save_ctx =
-               (struct maildir_save_context *)t->save_ctx;
+       struct maildir_save_context *save_ctx = MAILDIR_SAVECTX(t->save_ctx);
        struct maildir_filename *mf = maildir_save_get_mf(t, seq);
 
        return maildir_mf_get_path(save_ctx, mf);
@@ -446,7 +446,7 @@ int maildir_save_begin(struct mail_save_context *_ctx, struct istream *input)
 
 int maildir_save_continue(struct mail_save_context *_ctx)
 {
-       struct maildir_save_context *ctx = (struct maildir_save_context *)_ctx;
+       struct maildir_save_context *ctx = MAILDIR_SAVECTX(_ctx);
 
        if (ctx->failed)
                return -1;
@@ -515,7 +515,7 @@ static void maildir_save_remove_last_filename(struct maildir_save_context *ctx)
 
 static int maildir_save_finish_real(struct mail_save_context *_ctx)
 {
-       struct maildir_save_context *ctx = (struct maildir_save_context *)_ctx;
+       struct maildir_save_context *ctx = MAILDIR_SAVECTX(_ctx);
        struct mail_storage *storage = &ctx->mbox->storage->storage;
        const char *path, *output_errstr;
        off_t real_size;
@@ -637,7 +637,7 @@ int maildir_save_finish(struct mail_save_context *ctx)
 
 void maildir_save_cancel(struct mail_save_context *_ctx)
 {
-       struct maildir_save_context *ctx = (struct maildir_save_context *)_ctx;
+       struct maildir_save_context *ctx = MAILDIR_SAVECTX(_ctx);
 
        ctx->failed = TRUE;
        (void)maildir_save_finish(_ctx);
@@ -1051,7 +1051,7 @@ int maildir_transaction_save_commit_pre(struct mail_save_context *_ctx)
 void maildir_transaction_save_commit_post(struct mail_save_context *_ctx,
                                          struct mail_index_transaction_commit_result *result ATTR_UNUSED)
 {
-       struct maildir_save_context *ctx = (struct maildir_save_context *)_ctx;
+       struct maildir_save_context *ctx = MAILDIR_SAVECTX(_ctx);
 
        _ctx->transaction = NULL; /* transaction is already freed */
 
@@ -1062,7 +1062,7 @@ void maildir_transaction_save_commit_post(struct mail_save_context *_ctx,
 
 void maildir_transaction_save_rollback(struct mail_save_context *_ctx)
 {
-       struct maildir_save_context *ctx = (struct maildir_save_context *)_ctx;
+       struct maildir_save_context *ctx = MAILDIR_SAVECTX(_ctx);
 
        i_assert(_ctx->data.output == NULL);
 
index f5ae59e8fa8cb6b0d802c772860c3bb9da4be795..f45d5e08d2125ad1aee27bb8cc325056b4dcf323 100644 (file)
@@ -47,7 +47,7 @@ static int
 maildir_storage_create(struct mail_storage *_storage, struct mail_namespace *ns,
                       const char **error_r ATTR_UNUSED)
 {
-       struct maildir_storage *storage = (struct maildir_storage *)_storage;
+       struct maildir_storage *storage = MAILDIR_STORAGE(_storage);
        struct mailbox_list *list = ns->list;
        const char *dir;
 
@@ -283,13 +283,13 @@ maildir_mailbox_alloc(struct mail_storage *storage, struct mailbox_list *list,
 
        index_storage_mailbox_alloc(&mbox->box, vname, flags, MAIL_INDEX_PREFIX);
 
-       mbox->storage = (struct maildir_storage *)storage;
+       mbox->storage = MAILDIR_STORAGE(storage);
        return &mbox->box;
 }
 
 static int maildir_mailbox_open_existing(struct mailbox *box)
 {
-       struct maildir_mailbox *mbox = (struct maildir_mailbox *)box;
+       struct maildir_mailbox *mbox = MAILDIR_MAILBOX(box);
 
        mbox->uidlist = maildir_uidlist_init(mbox);
        mbox->keywords = maildir_keywords_init(mbox);
@@ -313,7 +313,7 @@ static int maildir_mailbox_open_existing(struct mailbox *box)
 
 static bool maildir_storage_is_readonly(struct mailbox *box)
 {
-       struct maildir_mailbox *mbox = (struct maildir_mailbox *)box;
+       struct maildir_mailbox *mbox = MAILDIR_MAILBOX(box);
 
        if (index_storage_is_readonly(box))
                return TRUE;
@@ -425,7 +425,7 @@ static int maildir_create_shared(struct mailbox *box)
 static int
 maildir_mailbox_update(struct mailbox *box, const struct mailbox_update *update)
 {
-       struct maildir_mailbox *mbox = (struct maildir_mailbox *)box;
+       struct maildir_mailbox *mbox = MAILDIR_MAILBOX(box);
        struct maildir_uidlist *uidlist;
        bool locked = FALSE;
        int ret = 0;
@@ -543,7 +543,7 @@ maildir_mailbox_get_metadata(struct mailbox *box,
                             enum mailbox_metadata_items items,
                             struct mailbox_metadata *metadata_r)
 {
-       struct maildir_mailbox *mbox = (struct maildir_mailbox *)box;
+       struct maildir_mailbox *mbox = MAILDIR_MAILBOX(box);
 
        if (index_mailbox_get_metadata(box, items, metadata_r) < 0)
                return -1;
@@ -558,7 +558,7 @@ maildir_mailbox_get_metadata(struct mailbox *box,
 
 static void maildir_mailbox_close(struct mailbox *box)
 {
-       struct maildir_mailbox *mbox = (struct maildir_mailbox *)box;
+       struct maildir_mailbox *mbox = MAILDIR_MAILBOX(box);
 
        if (mbox->keep_lock_to != NULL) {
                maildir_uidlist_unlock(mbox->uidlist);
@@ -575,7 +575,7 @@ static void maildir_mailbox_close(struct mailbox *box)
 
 static void maildir_notify_changes(struct mailbox *box)
 {
-       struct maildir_mailbox *mbox = (struct maildir_mailbox *)box;
+       struct maildir_mailbox *mbox = MAILDIR_MAILBOX(box);
        const char *box_path = mailbox_get_path(box);
 
        if (box->notify_callback == NULL)
@@ -621,7 +621,7 @@ uint32_t maildir_get_uidvalidity_next(struct mailbox_list *list)
 
 static enum mail_flags maildir_get_private_flags_mask(struct mailbox *box)
 {
-       struct maildir_mailbox *mbox = (struct maildir_mailbox *)box;
+       struct maildir_mailbox *mbox = MAILDIR_MAILBOX(box);
        const char *path, *path2;
        struct stat st;
 
index de219aead373923e815fb5de81fd8158b2a95ae8..aabb6a362f4ebdd0281a0c6ae019a9d70538f871 100644 (file)
@@ -92,6 +92,9 @@ struct maildir_mailbox {
        bool sync_uidlist_refreshed:1;
 };
 
+#define MAILDIR_STORAGE(s)     container_of(s, struct maildir_storage, storage)
+#define MAILDIR_MAILBOX(s)     container_of(s, struct maildir_mailbox, box)
+
 extern struct mail_vfuncs maildir_mail_vfuncs;
 
 /* Return -1 = error, 0 = file not found, 1 = ok */
index 8e738b2cc3e4aa09b556092c62c80b9e2db18396..413871117cc041c21acc13e00e70bd97015e8938 100644 (file)
@@ -705,7 +705,7 @@ int maildir_list_index_has_changed(struct mailbox *box,
                                   struct mail_index_view *list_view,
                                   uint32_t seq, bool quick)
 {
-       struct maildir_mailbox *mbox = (struct maildir_mailbox *)box;
+       struct maildir_mailbox *mbox = MAILDIR_MAILBOX(box);
        const struct maildir_list_index_record *rec;
        const void *data;
        const char *root_dir, *new_dir, *cur_dir;
@@ -764,7 +764,7 @@ void maildir_list_index_update_sync(struct mailbox *box,
                                    struct mail_index_transaction *trans,
                                    uint32_t seq)
 {
-       struct maildir_mailbox *mbox = (struct maildir_mailbox *)box;
+       struct maildir_mailbox *mbox = MAILDIR_MAILBOX(box);
        struct mail_index_view *list_view;
        const struct maildir_index_header *mhdr = &mbox->maildir_hdr;
        const struct maildir_list_index_record *old_rec;
index b1f597471402b914baf1b5f3539f3edc1db84fc7..d847f0633738535db59b2bdec54817bad9f2cf6d 100644 (file)
@@ -1083,7 +1083,7 @@ int maildir_sync_refresh_flags_view(struct maildir_mailbox *mbox)
 struct mailbox_sync_context *
 maildir_storage_sync_init(struct mailbox *box, enum mailbox_sync_flags flags)
 {
-       struct maildir_mailbox *mbox = (struct maildir_mailbox *)box;
+       struct maildir_mailbox *mbox = MAILDIR_MAILBOX(box);
        bool lost_files, force_resync;
        int ret = 0;