From: Josef 'Jeff' Sipek Date: Fri, 1 Sep 2017 12:09:00 +0000 (+0300) Subject: lib-storage: convert dbox-single to use container_of X-Git-Tag: 2.3.0.rc1~1088 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=df3963075d67f76ade66b6a74764f4eae31d9c87;p=thirdparty%2Fdovecot%2Fcore.git lib-storage: convert dbox-single to use container_of --- diff --git a/src/lib-storage/index/dbox-single/sdbox-copy.c b/src/lib-storage/index/dbox-single/sdbox-copy.c index 4362f228dd..f21358ed39 100644 --- a/src/lib-storage/index/dbox-single/sdbox-copy.c +++ b/src/lib-storage/index/dbox-single/sdbox-copy.c @@ -93,15 +93,14 @@ static int sdbox_copy_hardlink(struct mail_save_context *_ctx, struct mail *mail) { struct dbox_save_context *ctx = DBOX_SAVECTX(_ctx); - struct sdbox_mailbox *dest_mbox = - (struct sdbox_mailbox *)_ctx->transaction->box; + struct sdbox_mailbox *dest_mbox = SDBOX_MAILBOX(_ctx->transaction->box); struct sdbox_mailbox *src_mbox; struct dbox_file *src_file, *dest_file; const char *src_path, *dest_path; int ret; if (strcmp(mail->box->storage->name, SDBOX_STORAGE_NAME) == 0) - src_mbox = (struct sdbox_mailbox *)mail->box; + src_mbox = SDBOX_MAILBOX(mail->box); else { /* Source storage isn't sdbox, can't hard link */ return 0; diff --git a/src/lib-storage/index/dbox-single/sdbox-mail.c b/src/lib-storage/index/dbox-single/sdbox-mail.c index 535ea940fe..7702d80ff7 100644 --- a/src/lib-storage/index/dbox-single/sdbox-mail.c +++ b/src/lib-storage/index/dbox-single/sdbox-mail.c @@ -30,7 +30,7 @@ static void sdbox_mail_set_expunged(struct dbox_mail *mail) static int sdbox_mail_file_set(struct dbox_mail *mail) { struct mail *_mail = &mail->imail.mail.mail; - struct sdbox_mailbox *mbox = (struct sdbox_mailbox *)_mail->box; + struct sdbox_mailbox *mbox = SDBOX_MAILBOX(_mail->box); bool deleted; int ret; @@ -64,7 +64,7 @@ static int sdbox_mail_get_special(struct mail *_mail, enum mail_fetch_field field, const char **value_r) { - struct sdbox_mailbox *mbox = (struct sdbox_mailbox *)_mail->box; + struct sdbox_mailbox *mbox = SDBOX_MAILBOX(_mail->box); struct dbox_mail *mail = DBOX_MAIL(_mail); struct stat st; diff --git a/src/lib-storage/index/dbox-single/sdbox-save.c b/src/lib-storage/index/dbox-single/sdbox-save.c index 14311e25ea..4a3333650b 100644 --- a/src/lib-storage/index/dbox-single/sdbox-save.c +++ b/src/lib-storage/index/dbox-single/sdbox-save.c @@ -33,11 +33,12 @@ struct sdbox_save_context { ARRAY(struct dbox_file *) files; }; +#define SDBOX_SAVECTX(s) container_of(DBOX_SAVECTX(s), struct sdbox_save_context, ctx) + struct dbox_file * sdbox_save_file_get_file(struct mailbox_transaction_context *t, uint32_t seq) { - struct sdbox_save_context *ctx = - (struct sdbox_save_context *)t->save_ctx; + struct sdbox_save_context *ctx = SDBOX_SAVECTX(t->save_ctx); struct dbox_file *const *files, *file; unsigned int count; @@ -55,9 +56,8 @@ sdbox_save_file_get_file(struct mailbox_transaction_context *t, uint32_t seq) struct mail_save_context * sdbox_save_alloc(struct mailbox_transaction_context *t) { - struct sdbox_mailbox *mbox = (struct sdbox_mailbox *)t->box; - struct sdbox_save_context *ctx = - (struct sdbox_save_context *)t->save_ctx; + struct sdbox_mailbox *mbox = SDBOX_MAILBOX(t->box); + struct sdbox_save_context *ctx = SDBOX_SAVECTX(t->save_ctx); i_assert((t->flags & MAILBOX_TRANSACTION_FLAG_EXTERNAL) != 0); @@ -81,7 +81,7 @@ sdbox_save_alloc(struct mailbox_transaction_context *t) void sdbox_save_add_file(struct mail_save_context *_ctx, struct dbox_file *file) { - struct sdbox_save_context *ctx = (struct sdbox_save_context *)_ctx; + struct sdbox_save_context *ctx = SDBOX_SAVECTX(_ctx); struct dbox_file *const *files; unsigned int count; @@ -99,7 +99,7 @@ void sdbox_save_add_file(struct mail_save_context *_ctx, struct dbox_file *file) int sdbox_save_begin(struct mail_save_context *_ctx, struct istream *input) { - struct sdbox_save_context *ctx = (struct sdbox_save_context *)_ctx; + struct sdbox_save_context *ctx = SDBOX_SAVECTX(_ctx); struct dbox_file *file; int ret; @@ -298,7 +298,7 @@ static void dbox_save_unref_files(struct sdbox_save_context *ctx) int sdbox_transaction_save_commit_pre(struct mail_save_context *_ctx) { - struct sdbox_save_context *ctx = (struct sdbox_save_context *)_ctx; + struct sdbox_save_context *ctx = SDBOX_SAVECTX(_ctx); struct mailbox_transaction_context *_t = _ctx->transaction; const struct mail_index_header *hdr; @@ -344,7 +344,7 @@ int sdbox_transaction_save_commit_pre(struct mail_save_context *_ctx) void sdbox_transaction_save_commit_post(struct mail_save_context *_ctx, struct mail_index_transaction_commit_result *result) { - struct sdbox_save_context *ctx = (struct sdbox_save_context *)_ctx; + struct sdbox_save_context *ctx = SDBOX_SAVECTX(_ctx); struct mail_storage *storage = _ctx->transaction->box->storage; _ctx->transaction = NULL; /* transaction is already freed */ @@ -373,7 +373,7 @@ void sdbox_transaction_save_commit_post(struct mail_save_context *_ctx, void sdbox_transaction_save_rollback(struct mail_save_context *_ctx) { - struct sdbox_save_context *ctx = (struct sdbox_save_context *)_ctx; + struct sdbox_save_context *ctx = SDBOX_SAVECTX(_ctx); if (!ctx->ctx.finished) sdbox_save_cancel(_ctx); diff --git a/src/lib-storage/index/dbox-single/sdbox-storage.c b/src/lib-storage/index/dbox-single/sdbox-storage.c index 3085d79ff7..57f43a9aab 100644 --- a/src/lib-storage/index/dbox-single/sdbox-storage.c +++ b/src/lib-storage/index/dbox-single/sdbox-storage.c @@ -134,7 +134,7 @@ sdbox_mailbox_alloc(struct mail_storage *storage, struct mailbox_list *list, ibox->index_flags |= MAIL_INDEX_OPEN_FLAG_KEEP_BACKUPS | MAIL_INDEX_OPEN_FLAG_NEVER_IN_MEMORY; - mbox->storage = (struct sdbox_storage *)storage; + mbox->storage = SDBOX_STORAGE(storage); return &mbox->box; } @@ -216,7 +216,7 @@ int sdbox_mailbox_create_indexes(struct mailbox *box, const struct mailbox_update *update, struct mail_index_transaction *trans) { - struct sdbox_mailbox *mbox = (struct sdbox_mailbox *)box; + struct sdbox_mailbox *mbox = SDBOX_MAILBOX(box); struct mail_index_transaction *new_trans = NULL; const struct mail_index_header *hdr; uint32_t uid_validity, uid_next; @@ -291,7 +291,7 @@ sdbox_get_attachment_path_suffix(struct dbox_file *_file) void sdbox_set_mailbox_corrupted(struct mailbox *box) { - struct sdbox_mailbox *mbox = (struct sdbox_mailbox *)box; + struct sdbox_mailbox *mbox = SDBOX_MAILBOX(box); struct sdbox_index_header hdr; bool need_resize; @@ -329,7 +329,7 @@ static int sdbox_mailbox_alloc_index(struct sdbox_mailbox *mbox) static int sdbox_mailbox_open(struct mailbox *box) { - struct sdbox_mailbox *mbox = (struct sdbox_mailbox *)box; + struct sdbox_mailbox *mbox = SDBOX_MAILBOX(box); struct sdbox_index_header hdr; bool need_resize; time_t path_ctime; @@ -369,7 +369,7 @@ static int sdbox_mailbox_open(struct mailbox *box) static void sdbox_mailbox_close(struct mailbox *box) { - struct sdbox_mailbox *mbox = (struct sdbox_mailbox *)box; + struct sdbox_mailbox *mbox = SDBOX_MAILBOX(box); if (mbox->corrupted_rebuild_count != 0) (void)sdbox_sync(mbox, 0); @@ -380,7 +380,7 @@ static int sdbox_mailbox_create(struct mailbox *box, const struct mailbox_update *update, bool directory) { - struct sdbox_mailbox *mbox = (struct sdbox_mailbox *)box; + struct sdbox_mailbox *mbox = SDBOX_MAILBOX(box); struct sdbox_index_header hdr; bool need_resize; @@ -407,7 +407,7 @@ sdbox_mailbox_get_metadata(struct mailbox *box, enum mailbox_metadata_items items, struct mailbox_metadata *metadata_r) { - struct sdbox_mailbox *mbox = (struct sdbox_mailbox *)box; + struct sdbox_mailbox *mbox = SDBOX_MAILBOX(box); if (index_mailbox_get_metadata(box, items, metadata_r) < 0) return -1; diff --git a/src/lib-storage/index/dbox-single/sdbox-storage.h b/src/lib-storage/index/dbox-single/sdbox-storage.h index 8c0f7c5b7f..66d08daedc 100644 --- a/src/lib-storage/index/dbox-single/sdbox-storage.h +++ b/src/lib-storage/index/dbox-single/sdbox-storage.h @@ -33,6 +33,9 @@ struct sdbox_mailbox { guid_128_t mailbox_guid; }; +#define SDBOX_STORAGE(s) container_of(DBOX_STORAGE(s), struct sdbox_storage, storage) +#define SDBOX_MAILBOX(s) container_of(s, struct sdbox_mailbox, box) + extern struct mail_vfuncs sdbox_mail_vfuncs; int sdbox_mail_open(struct dbox_mail *mail, uoff_t *offset_r, diff --git a/src/lib-storage/index/dbox-single/sdbox-sync-rebuild.c b/src/lib-storage/index/dbox-single/sdbox-sync-rebuild.c index eb6281e65f..317253136c 100644 --- a/src/lib-storage/index/dbox-single/sdbox-sync-rebuild.c +++ b/src/lib-storage/index/dbox-single/sdbox-sync-rebuild.c @@ -68,7 +68,7 @@ static int sdbox_sync_add_file(struct index_rebuild_context *ctx, const char *fname, bool primary) { - struct sdbox_mailbox *mbox = (struct sdbox_mailbox *)ctx->box; + struct sdbox_mailbox *mbox = SDBOX_MAILBOX(ctx->box); struct dbox_file *file; uint32_t uid; int ret; @@ -136,7 +136,7 @@ static int sdbox_sync_index_rebuild_dir(struct index_rebuild_context *ctx, static void sdbox_sync_update_header(struct index_rebuild_context *ctx) { - struct sdbox_mailbox *mbox = (struct sdbox_mailbox *)ctx->box; + struct sdbox_mailbox *mbox = SDBOX_MAILBOX(ctx->box); struct sdbox_index_header hdr; bool need_resize; diff --git a/src/lib-storage/index/dbox-single/sdbox-sync.c b/src/lib-storage/index/dbox-single/sdbox-sync.c index 58409bcaa4..ba6f9d2c70 100644 --- a/src/lib-storage/index/dbox-single/sdbox-sync.c +++ b/src/lib-storage/index/dbox-single/sdbox-sync.c @@ -309,7 +309,7 @@ int sdbox_sync(struct sdbox_mailbox *mbox, enum sdbox_sync_flags flags) struct mailbox_sync_context * sdbox_storage_sync_init(struct mailbox *box, enum mailbox_sync_flags flags) { - struct sdbox_mailbox *mbox = (struct sdbox_mailbox *)box; + struct sdbox_mailbox *mbox = SDBOX_MAILBOX(box); enum sdbox_sync_flags sdbox_sync_flags = 0; int ret = 0;