From: Josef 'Jeff' Sipek Date: Mon, 28 Aug 2017 08:52:52 +0000 (+0300) Subject: lib-storage: convert cydir to use container_of X-Git-Tag: 2.3.0.rc1~1090 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=a97fdf205b182250b0fe56c0f6f418bc22fb09a3;p=thirdparty%2Fdovecot%2Fcore.git lib-storage: convert cydir to use container_of --- diff --git a/src/lib-storage/index/cydir/cydir-save.c b/src/lib-storage/index/cydir/cydir-save.c index cf20b27140..8669348563 100644 --- a/src/lib-storage/index/cydir/cydir-save.c +++ b/src/lib-storage/index/cydir/cydir-save.c @@ -34,6 +34,8 @@ struct cydir_save_context { bool finished:1; }; +#define CYDIR_SAVECTX(s) container_of(s, struct cydir_save_context, ctx) + static char *cydir_generate_tmp_filename(void) { static unsigned int create_count = 0; @@ -56,7 +58,7 @@ cydir_get_save_path(struct cydir_save_context *ctx, unsigned int num) struct mail_save_context * cydir_save_alloc(struct mailbox_transaction_context *t) { - struct cydir_mailbox *mbox = (struct cydir_mailbox *)t->box; + struct cydir_mailbox *mbox = CYDIR_MAILBOX(t->box); struct cydir_save_context *ctx; i_assert((t->flags & MAILBOX_TRANSACTION_FLAG_EXTERNAL) != 0); @@ -125,7 +127,7 @@ int cydir_save_begin(struct mail_save_context *_ctx, struct istream *input) int cydir_save_continue(struct mail_save_context *_ctx) { - struct cydir_save_context *ctx = (struct cydir_save_context *)_ctx; + struct cydir_save_context *ctx = CYDIR_SAVECTX(_ctx); if (ctx->failed) return -1; @@ -190,7 +192,7 @@ static int cydir_save_flush(struct cydir_save_context *ctx, const char *path) int cydir_save_finish(struct mail_save_context *_ctx) { - struct cydir_save_context *ctx = (struct cydir_save_context *)_ctx; + struct cydir_save_context *ctx = CYDIR_SAVECTX(_ctx); const char *path = cydir_get_save_path(ctx, ctx->mail_count); ctx->finished = TRUE; @@ -216,7 +218,7 @@ int cydir_save_finish(struct mail_save_context *_ctx) void cydir_save_cancel(struct mail_save_context *_ctx) { - struct cydir_save_context *ctx = (struct cydir_save_context *)_ctx; + struct cydir_save_context *ctx = CYDIR_SAVECTX(_ctx); ctx->failed = TRUE; (void)cydir_save_finish(_ctx); @@ -224,7 +226,7 @@ void cydir_save_cancel(struct mail_save_context *_ctx) int cydir_transaction_save_commit_pre(struct mail_save_context *_ctx) { - struct cydir_save_context *ctx = (struct cydir_save_context *)_ctx; + struct cydir_save_context *ctx = CYDIR_SAVECTX(_ctx); struct mailbox_transaction_context *_t = _ctx->transaction; const struct mail_index_header *hdr; struct seq_range_iter iter; @@ -280,7 +282,7 @@ int cydir_transaction_save_commit_pre(struct mail_save_context *_ctx) void cydir_transaction_save_commit_post(struct mail_save_context *_ctx, struct mail_index_transaction_commit_result *result) { - struct cydir_save_context *ctx = (struct cydir_save_context *)_ctx; + struct cydir_save_context *ctx = CYDIR_SAVECTX(_ctx); _ctx->transaction = NULL; /* transaction is already freed */ @@ -293,7 +295,7 @@ void cydir_transaction_save_commit_post(struct mail_save_context *_ctx, void cydir_transaction_save_rollback(struct mail_save_context *_ctx) { - struct cydir_save_context *ctx = (struct cydir_save_context *)_ctx; + struct cydir_save_context *ctx = CYDIR_SAVECTX(_ctx); if (!ctx->finished) cydir_save_cancel(&ctx->ctx); diff --git a/src/lib-storage/index/cydir/cydir-storage.c b/src/lib-storage/index/cydir/cydir-storage.c index ace0b97f2d..eec578abb5 100644 --- a/src/lib-storage/index/cydir/cydir-storage.c +++ b/src/lib-storage/index/cydir/cydir-storage.c @@ -54,7 +54,7 @@ cydir_mailbox_alloc(struct mail_storage *storage, struct mailbox_list *list, index_storage_mailbox_alloc(&mbox->box, vname, flags, MAIL_INDEX_PREFIX); - mbox->storage = (struct cydir_storage *)storage; + mbox->storage = CYDIR_STORAGE(storage); return &mbox->box; } diff --git a/src/lib-storage/index/cydir/cydir-storage.h b/src/lib-storage/index/cydir/cydir-storage.h index bc5643e4f8..6040f8d995 100644 --- a/src/lib-storage/index/cydir/cydir-storage.h +++ b/src/lib-storage/index/cydir/cydir-storage.h @@ -15,6 +15,9 @@ struct cydir_mailbox { struct cydir_storage *storage; }; +#define CYDIR_STORAGE(s) container_of(s, struct cydir_storage, storage) +#define CYDIR_MAILBOX(s) container_of(s, struct cydir_mailbox, box) + extern struct mail_vfuncs cydir_mail_vfuncs; struct mail_save_context * diff --git a/src/lib-storage/index/cydir/cydir-sync.c b/src/lib-storage/index/cydir/cydir-sync.c index 200601f167..6529be1e3f 100644 --- a/src/lib-storage/index/cydir/cydir-sync.c +++ b/src/lib-storage/index/cydir/cydir-sync.c @@ -163,7 +163,7 @@ static int cydir_sync(struct cydir_mailbox *mbox) struct mailbox_sync_context * cydir_storage_sync_init(struct mailbox *box, enum mailbox_sync_flags flags) { - struct cydir_mailbox *mbox = (struct cydir_mailbox *)box; + struct cydir_mailbox *mbox = CYDIR_MAILBOX(box); int ret = 0; if (index_mailbox_want_full_sync(&mbox->box, flags))