From 26a11c8671153271ac1a036752714768f64b0bc4 Mon Sep 17 00:00:00 2001 From: Stephan Bosch <stephan.bosch@open-xchange.com> Date: Wed, 3 Apr 2024 02:14:54 +0200 Subject: [PATCH] lib-sieve: storage: file: Use container_of() --- .../storage/file/sieve-file-script-sequence.c | 8 +-- .../storage/file/sieve-file-script.c | 54 ++++++++++++------- .../storage/file/sieve-file-storage-active.c | 8 +-- .../storage/file/sieve-file-storage-list.c | 10 ++-- .../storage/file/sieve-file-storage-quota.c | 2 +- .../storage/file/sieve-file-storage-save.c | 22 ++++---- .../storage/file/sieve-file-storage.c | 14 ++--- 7 files changed, 67 insertions(+), 51 deletions(-) diff --git a/src/lib-sieve/storage/file/sieve-file-script-sequence.c b/src/lib-sieve/storage/file/sieve-file-script-sequence.c index 277b521a8..ed777872b 100644 --- a/src/lib-sieve/storage/file/sieve-file-script-sequence.c +++ b/src/lib-sieve/storage/file/sieve-file-script-sequence.c @@ -128,7 +128,7 @@ sieve_file_storage_get_script_sequence(struct sieve_storage *storage, enum sieve_error *error_code_r) { struct sieve_file_storage *fstorage = - (struct sieve_file_storage *)storage; + container_of(storage, struct sieve_file_storage, storage); struct sieve_file_script_sequence *fseq = NULL; const char *name = storage->script_name; const char *file; @@ -201,9 +201,9 @@ sieve_file_script_sequence_next(struct sieve_script_sequence *sseq, enum sieve_error *error_code_r) { struct sieve_file_script_sequence *fseq = - (struct sieve_file_script_sequence *)sseq; + container_of(sseq, struct sieve_file_script_sequence, seq); struct sieve_file_storage *fstorage = - (struct sieve_file_storage *)sseq->storage; + container_of(sseq->storage, struct sieve_file_storage, storage); struct sieve_file_script *fscript; const char *const *files; unsigned int count; @@ -242,7 +242,7 @@ sieve_file_script_sequence_next(struct sieve_script_sequence *sseq, void sieve_file_script_sequence_destroy(struct sieve_script_sequence *sseq) { struct sieve_file_script_sequence *fseq = - (struct sieve_file_script_sequence *)sseq; + container_of(sseq, struct sieve_file_script_sequence, seq); if (array_is_created(&fseq->script_files)) array_free(&fseq->script_files); diff --git a/src/lib-sieve/storage/file/sieve-file-script.c b/src/lib-sieve/storage/file/sieve-file-script.c index b437a92be..c76c84844 100644 --- a/src/lib-sieve/storage/file/sieve-file-script.c +++ b/src/lib-sieve/storage/file/sieve-file-script.c @@ -299,10 +299,11 @@ static int sieve_file_script_open(struct sieve_script *script, enum sieve_error *error_code_r) { - struct sieve_file_script *fscript = (struct sieve_file_script *)script; + struct sieve_file_script *fscript = + container_of(script, struct sieve_file_script, script); struct sieve_storage *storage = script->storage; struct sieve_file_storage *fstorage = - (struct sieve_file_storage *)storage; + container_of(storage, struct sieve_file_storage, storage); pool_t pool = script->pool; const char *filename, *name, *path; const char *dirpath, *basename, *binpath, *binprefix; @@ -436,7 +437,8 @@ sieve_file_script_get_stream(struct sieve_script *script, struct istream **stream_r, enum sieve_error *error_code_r) { - struct sieve_file_script *fscript = (struct sieve_file_script *)script; + struct sieve_file_script *fscript = + container_of(script, struct sieve_file_script, script); struct stat st; struct istream *result; int fd; @@ -492,7 +494,8 @@ sieve_file_script_binary_read_metadata(struct sieve_script *script, struct sieve_binary_block *sblock, sieve_size_t *offset ATTR_UNUSED) { - struct sieve_file_script *fscript = (struct sieve_file_script *)script; + struct sieve_file_script *fscript = + container_of(script, struct sieve_file_script, script); struct sieve_instance *svinst = script->storage->svinst; struct sieve_binary *sbin = sieve_binary_block_get_binary(sblock); const struct stat *sstat, *bstat; @@ -532,7 +535,8 @@ static struct sieve_binary * sieve_file_script_binary_load(struct sieve_script *script, enum sieve_error *error_code_r) { - struct sieve_file_script *fscript = (struct sieve_file_script *)script; + struct sieve_file_script *fscript = + container_of(script, struct sieve_file_script, script); struct sieve_instance *svinst = script->storage->svinst; return sieve_binary_open(svinst, fscript->binpath, script, @@ -545,7 +549,8 @@ sieve_file_script_binary_save(struct sieve_script *script, enum sieve_error *error_code_r) { struct sieve_storage *storage = script->storage; - struct sieve_file_script *fscript = (struct sieve_file_script *)script; + struct sieve_file_script *fscript = + container_of(script, struct sieve_file_script, script); if (storage->bin_dir != NULL && sieve_storage_setup_bindir(storage, 0700) < 0) @@ -560,7 +565,8 @@ sieve_file_script_binary_save(struct sieve_script *script, static const char * sieve_file_script_binary_get_prefix(struct sieve_script *script) { - struct sieve_file_script *fscript = (struct sieve_file_script *)script; + struct sieve_file_script *fscript = + container_of(script, struct sieve_file_script, script); return fscript->binprefix; } @@ -571,9 +577,11 @@ sieve_file_script_binary_get_prefix(struct sieve_script *script) static int sieve_file_storage_script_is_active(struct sieve_script *script) { - struct sieve_file_script *fscript = (struct sieve_file_script *) script; + struct sieve_file_script *fscript = + container_of(script, struct sieve_file_script, script); struct sieve_file_storage *fstorage = - (struct sieve_file_storage *)script->storage; + container_of(script->storage, struct sieve_file_storage, + storage); const char *afile; int ret = 0; @@ -592,7 +600,8 @@ static int sieve_file_storage_script_is_active(struct sieve_script *script) static int sieve_file_storage_script_delete(struct sieve_script *script) { - struct sieve_file_script *fscript = (struct sieve_file_script *)script; + struct sieve_file_script *fscript = + container_of(script, struct sieve_file_script, script); int ret = 0; if (sieve_file_storage_pre_modify(script->storage) < 0) @@ -619,7 +628,7 @@ _sieve_file_storage_script_activate(struct sieve_file_script *fscript) struct sieve_script *script = &fscript->script; struct sieve_storage *storage = script->storage; struct sieve_file_storage *fstorage = - (struct sieve_file_storage *)storage; + container_of(storage, struct sieve_file_storage, storage); struct stat st; const char *link_path, *afile; int activated = 0; @@ -679,7 +688,8 @@ _sieve_file_storage_script_activate(struct sieve_file_script *fscript) static int sieve_file_storage_script_activate(struct sieve_script *script) { - struct sieve_file_script *fscript = (struct sieve_file_script *)script; + struct sieve_file_script *fscript = + container_of(script, struct sieve_file_script, script); int ret; if (sieve_file_storage_pre_modify(script->storage) < 0) @@ -696,10 +706,11 @@ static int sieve_file_storage_script_rename(struct sieve_script *script, const char *newname) { - struct sieve_file_script *fscript = (struct sieve_file_script *)script; + struct sieve_file_script *fscript = + container_of(script, struct sieve_file_script, script); struct sieve_storage *storage = script->storage; struct sieve_file_storage *fstorage = - (struct sieve_file_storage *)storage; + container_of(storage, struct sieve_file_storage, storage); const char *newpath, *newfile, *link_path; int ret = 0; @@ -785,7 +796,8 @@ sieve_file_storage_script_rename(struct sieve_script *script, static int sieve_file_script_get_size(const struct sieve_script *script, uoff_t *size_r) { - struct sieve_file_script *fscript = (struct sieve_file_script *)script; + const struct sieve_file_script *fscript = + container_of(script, const struct sieve_file_script, script); *size_r = fscript->st.st_size; return 1; @@ -793,7 +805,8 @@ sieve_file_script_get_size(const struct sieve_script *script, uoff_t *size_r) const char *sieve_file_script_get_dirpath(const struct sieve_script *script) { - struct sieve_file_script *fscript = (struct sieve_file_script *)script; + const struct sieve_file_script *fscript = + container_of(script, const struct sieve_file_script, script); if (script->driver_name != sieve_file_script.driver_name) return NULL; @@ -803,7 +816,8 @@ const char *sieve_file_script_get_dirpath(const struct sieve_script *script) const char *sieve_file_script_get_path(const struct sieve_script *script) { - struct sieve_file_script *fscript = (struct sieve_file_script *)script; + const struct sieve_file_script *fscript = + container_of(script, const struct sieve_file_script, script); if (script->driver_name != sieve_file_script.driver_name) return NULL; @@ -819,8 +833,10 @@ static bool sieve_file_script_equals(const struct sieve_script *script, const struct sieve_script *other) { - struct sieve_file_script *fscript = (struct sieve_file_script *)script; - struct sieve_file_script *fother = (struct sieve_file_script *)other; + const struct sieve_file_script *fscript = + container_of(script, const struct sieve_file_script, script); + const struct sieve_file_script *fother = + container_of(other, const struct sieve_file_script, script); if (!script->open || !other->open) { struct sieve_storage *storage = script->storage; diff --git a/src/lib-sieve/storage/file/sieve-file-storage-active.c b/src/lib-sieve/storage/file/sieve-file-storage-active.c index 4509e427e..d7b2e9a66 100644 --- a/src/lib-sieve/storage/file/sieve-file-storage-active.c +++ b/src/lib-sieve/storage/file/sieve-file-storage-active.c @@ -207,7 +207,7 @@ int sieve_file_storage_active_script_get_name(struct sieve_storage *storage, const char **name_r) { struct sieve_file_storage *fstorage = - (struct sieve_file_storage *)storage; + container_of(storage, struct sieve_file_storage, storage); const char *link; int ret; @@ -237,7 +237,7 @@ struct sieve_script * sieve_file_storage_active_script_open(struct sieve_storage *storage) { struct sieve_file_storage *fstorage = - (struct sieve_file_storage *)storage; + container_of(storage, struct sieve_file_storage, storage); struct sieve_file_script *fscript; const char *scriptfile, *link; int ret; @@ -298,7 +298,7 @@ int sieve_file_storage_active_script_get_last_change( struct sieve_storage *storage, time_t *last_change_r) { struct sieve_file_storage *fstorage = - (struct sieve_file_storage *)storage; + container_of(storage, struct sieve_file_storage, storage); struct stat st; /* Try direct lstat first */ @@ -378,7 +378,7 @@ bool sieve_file_storage_active_rescue_regular( int sieve_file_storage_deactivate(struct sieve_storage *storage) { struct sieve_file_storage *fstorage = - (struct sieve_file_storage *)storage; + container_of(storage, struct sieve_file_storage, storage); int ret; if (sieve_file_storage_pre_modify(storage) < 0) diff --git a/src/lib-sieve/storage/file/sieve-file-storage-list.c b/src/lib-sieve/storage/file/sieve-file-storage-list.c index 7efab9eef..c2bd44a93 100644 --- a/src/lib-sieve/storage/file/sieve-file-storage-list.c +++ b/src/lib-sieve/storage/file/sieve-file-storage-list.c @@ -26,7 +26,7 @@ struct sieve_storage_list_context * sieve_file_storage_list_init(struct sieve_storage *storage) { struct sieve_file_storage *fstorage = - (struct sieve_file_storage *)storage; + container_of(storage, struct sieve_file_storage, storage); struct sieve_file_list_context *flctx; const char *active = NULL; pool_t pool; @@ -88,9 +88,9 @@ sieve_file_storage_list_next(struct sieve_storage_list_context *lctx, bool *active) { struct sieve_file_list_context *flctx = - (struct sieve_file_list_context *)lctx; + container_of(lctx, struct sieve_file_list_context, context); const struct sieve_file_storage *fstorage = - (const struct sieve_file_storage *)lctx->storage; + container_of(lctx->storage, struct sieve_file_storage, storage); struct dirent *dp; const char *scriptname; @@ -125,9 +125,9 @@ sieve_file_storage_list_next(struct sieve_storage_list_context *lctx, int sieve_file_storage_list_deinit(struct sieve_storage_list_context *lctx) { struct sieve_file_list_context *flctx = - (struct sieve_file_list_context *)lctx; + container_of(lctx, struct sieve_file_list_context, context); const struct sieve_file_storage *fstorage = - (const struct sieve_file_storage *)lctx->storage; + container_of(lctx->storage, struct sieve_file_storage, storage); if (closedir(flctx->dirp) < 0) { e_error(lctx->storage->event, diff --git a/src/lib-sieve/storage/file/sieve-file-storage-quota.c b/src/lib-sieve/storage/file/sieve-file-storage-quota.c index 966d7a3e6..627e1ba84 100644 --- a/src/lib-sieve/storage/file/sieve-file-storage-quota.c +++ b/src/lib-sieve/storage/file/sieve-file-storage-quota.c @@ -20,7 +20,7 @@ int sieve_file_storage_quota_havespace(struct sieve_storage *storage, uint64_t *limit_r) { struct sieve_file_storage *fstorage = - (struct sieve_file_storage *)storage; + container_of(storage, struct sieve_file_storage, storage); struct dirent *dp; DIR *dirp; uint64_t script_count = 1; diff --git a/src/lib-sieve/storage/file/sieve-file-storage-save.c b/src/lib-sieve/storage/file/sieve-file-storage-save.c index 0852fbf9f..d4468b4d8 100644 --- a/src/lib-sieve/storage/file/sieve-file-storage-save.c +++ b/src/lib-sieve/storage/file/sieve-file-storage-save.c @@ -210,9 +210,9 @@ int sieve_file_storage_save_init(struct sieve_storage_save_context *sctx, { struct sieve_storage *storage = sctx->storage; struct sieve_file_storage *fstorage = - (struct sieve_file_storage *)storage; + container_of(storage, struct sieve_file_storage, storage); struct sieve_file_save_context *fsctx = - (struct sieve_file_save_context *)sctx; + container_of(sctx, struct sieve_file_save_context, context); pool_t pool = sctx->pool; const char *path; int fd, ret = 0; @@ -264,7 +264,7 @@ int sieve_file_storage_save_init(struct sieve_storage_save_context *sctx, int sieve_file_storage_save_continue(struct sieve_storage_save_context *sctx) { struct sieve_file_save_context *fsctx = - (struct sieve_file_save_context *)sctx; + container_of(sctx, struct sieve_file_save_context, context); switch (o_stream_send_istream(fsctx->output, sctx->input)) { case OSTREAM_SEND_ISTREAM_RESULT_FINISHED: @@ -290,7 +290,7 @@ int sieve_file_storage_save_continue(struct sieve_storage_save_context *sctx) int sieve_file_storage_save_finish(struct sieve_storage_save_context *sctx) { struct sieve_file_save_context *fsctx = - (struct sieve_file_save_context *)sctx; + container_of(sctx, struct sieve_file_save_context, context); struct sieve_storage *storage = sctx->storage; int output_errno; @@ -346,9 +346,9 @@ struct sieve_script * sieve_file_storage_save_get_tempscript(struct sieve_storage_save_context *sctx) { struct sieve_file_save_context *fsctx = - (struct sieve_file_save_context *)sctx; + container_of(sctx, struct sieve_file_save_context, context); struct sieve_file_storage *fstorage = - (struct sieve_file_storage *)sctx->storage; + container_of(sctx->storage, struct sieve_file_storage, storage); struct sieve_file_script *tmpscript; enum sieve_error error_code; const char *scriptname; @@ -407,10 +407,10 @@ sieve_file_storage_update_mtime(struct sieve_storage *storage, const char *path, int sieve_file_storage_save_commit(struct sieve_storage_save_context *sctx) { struct sieve_file_save_context *fsctx = - (struct sieve_file_save_context *)sctx; + container_of(sctx, struct sieve_file_save_context, context); struct sieve_storage *storage = sctx->storage; struct sieve_file_storage *fstorage = - (struct sieve_file_storage *)sctx->storage; + container_of(storage, struct sieve_file_storage, storage); const char *dest_path; bool failed = FALSE; @@ -434,7 +434,7 @@ int sieve_file_storage_save_commit(struct sieve_storage_save_context *sctx) void sieve_file_storage_save_cancel(struct sieve_storage_save_context *sctx) { struct sieve_file_save_context *fsctx = - (struct sieve_file_save_context *)sctx; + container_of(sctx, struct sieve_file_save_context, context); struct sieve_storage *storage = sctx->storage; if (fsctx->tmp_path != NULL && @@ -521,7 +521,7 @@ int sieve_file_storage_save_as(struct sieve_storage *storage, struct istream *input, const char *name) { struct sieve_file_storage *fstorage = - (struct sieve_file_storage *)storage; + container_of(storage, struct sieve_file_storage, storage); string_t *temp_path; const char *dest_path; @@ -542,7 +542,7 @@ int sieve_file_storage_save_as_active(struct sieve_storage *storage, struct istream *input, time_t mtime) { struct sieve_file_storage *fstorage = - (struct sieve_file_storage *)storage; + container_of(storage, struct sieve_file_storage, storage); string_t *temp_path; temp_path = t_str_new(256); diff --git a/src/lib-sieve/storage/file/sieve-file-storage.c b/src/lib-sieve/storage/file/sieve-file-storage.c index 8781cfeef..98fa2a6d4 100644 --- a/src/lib-sieve/storage/file/sieve-file-storage.c +++ b/src/lib-sieve/storage/file/sieve-file-storage.c @@ -509,7 +509,7 @@ sieve_file_storage_init(struct sieve_storage *storage, enum sieve_error *error_code_r) { struct sieve_file_storage *fstorage = - (struct sieve_file_storage *)storage; + container_of(storage, struct sieve_file_storage, storage); const char *storage_path = storage->location; const char *value, *active_path = ""; bool exists = FALSE; @@ -708,7 +708,7 @@ sieve_file_storage_init_default(struct sieve_instance *svinst, storage = sieve_storage_alloc(svinst, NULL, &sieve_file_storage, "", flags, TRUE); - fstorage = (struct sieve_file_storage *)storage; + fstorage = container_of(storage, struct sieve_file_storage, storage); T_BEGIN { if (sieve_file_storage_do_init_default(fstorage, active_path, @@ -732,7 +732,7 @@ sieve_file_storage_init_from_path(struct sieve_instance *svinst, storage = sieve_storage_alloc(svinst, NULL, &sieve_file_storage, "", flags, FALSE); - fstorage = (struct sieve_file_storage *)storage; + fstorage = container_of(storage, struct sieve_file_storage, storage); T_BEGIN { if (sieve_file_storage_init_common(fstorage, path, NULL, FALSE, @@ -748,7 +748,7 @@ sieve_file_storage_init_from_path(struct sieve_instance *svinst, static int sieve_file_storage_is_singular(struct sieve_storage *storage) { struct sieve_file_storage *fstorage = - (struct sieve_file_storage *)storage; + container_of(storage, struct sieve_file_storage, storage); struct stat st; if (fstorage->active_path == NULL) @@ -785,7 +785,7 @@ sieve_file_storage_get_last_change(struct sieve_storage *storage, time_t *last_change_r) { struct sieve_file_storage *fstorage = - (struct sieve_file_storage *)storage; + container_of(storage, struct sieve_file_storage, storage); struct stat st; if (fstorage->prev_mtime == (time_t)-1) { @@ -819,7 +819,7 @@ static void sieve_file_storage_set_modified(struct sieve_storage *storage, time_t mtime) { struct sieve_file_storage *fstorage = - (struct sieve_file_storage *)storage; + container_of(storage, struct sieve_file_storage, storage); struct utimbuf times; time_t cur_mtime; @@ -858,7 +858,7 @@ static struct sieve_script * sieve_file_storage_get_script(struct sieve_storage *storage, const char *name) { struct sieve_file_storage *fstorage = - (struct sieve_file_storage *)storage; + container_of(storage, struct sieve_file_storage, storage); struct sieve_file_script *fscript; T_BEGIN { -- GitLab