From 0e936fd05b33d1d53dadce0ace18a59cfa482a20 Mon Sep 17 00:00:00 2001 From: Stephan Bosch <stephan.bosch@open-xchange.com> Date: Wed, 6 Mar 2024 02:37:08 +0100 Subject: [PATCH] lib-sieve: sieve - Add sieve instance parameter to callbacks --- src/lib-sieve-tool/sieve-tool.c | 10 +++++++--- src/lib-sieve-tool/sieve-tool.h | 3 ++- src/lib-sieve/sieve-settings.old.h | 4 ++-- src/lib-sieve/sieve-types.h | 7 +++++-- src/managesieve/managesieve-capabilities.c | 4 +++- src/managesieve/managesieve-client.c | 3 ++- src/plugins/doveadm-sieve/doveadm-sieve-cmd.c | 3 ++- src/plugins/doveadm-sieve/doveadm-sieve-sync.c | 3 ++- src/plugins/imap-filter-sieve/imap-filter-sieve.c | 3 ++- src/plugins/imapsieve/imap-sieve.c | 3 ++- src/plugins/lda-sieve/lda-sieve-plugin.c | 3 ++- src/testsuite/testsuite-settings.c | 7 +++++-- 12 files changed, 36 insertions(+), 17 deletions(-) diff --git a/src/lib-sieve-tool/sieve-tool.c b/src/lib-sieve-tool/sieve-tool.c index 286a68e1f..37be1cc44 100644 --- a/src/lib-sieve-tool/sieve-tool.c +++ b/src/lib-sieve-tool/sieve-tool.c @@ -68,12 +68,14 @@ struct sieve_tool *sieve_tool; */ static const char * -sieve_tool_sieve_get_setting(void *context, const char *identifier) +sieve_tool_sieve_get_setting(struct sieve_instance *svinst, void *context, + const char *identifier) { struct sieve_tool *tool = (struct sieve_tool *)context; if (tool->setting_callback != NULL) { - return tool->setting_callback(tool->setting_callback_context, + return tool->setting_callback(svinst, + tool->setting_callback_context, identifier); } @@ -83,7 +85,9 @@ sieve_tool_sieve_get_setting(void *context, const char *identifier) return mail_user_plugin_getenv(tool->mail_user_dovecot, identifier); } -static const char *sieve_tool_sieve_get_homedir(void *context) +static const char * +sieve_tool_sieve_get_homedir(struct sieve_instance *svinst ATTR_UNUSED, + void *context) { struct sieve_tool *tool = (struct sieve_tool *)context; diff --git a/src/lib-sieve-tool/sieve-tool.h b/src/lib-sieve-tool/sieve-tool.h index 49241ea4f..bf2f96557 100644 --- a/src/lib-sieve-tool/sieve-tool.h +++ b/src/lib-sieve-tool/sieve-tool.h @@ -8,7 +8,8 @@ */ typedef const char * -(*sieve_tool_setting_callback_t)(void *context, const char *identifier); +(*sieve_tool_setting_callback_t)(struct sieve_instance *svinst, + void *context, const char *identifier); /* * Global variables diff --git a/src/lib-sieve/sieve-settings.old.h b/src/lib-sieve/sieve-settings.old.h index 371e9676a..a5457ec93 100644 --- a/src/lib-sieve/sieve-settings.old.h +++ b/src/lib-sieve/sieve-settings.old.h @@ -15,7 +15,7 @@ sieve_setting_get(struct sieve_instance *svinst, const char *identifier) if (callbacks == NULL || callbacks->get_setting == NULL) return NULL; - return callbacks->get_setting(svinst->context, identifier); + return callbacks->get_setting(svinst, svinst->context, identifier); } bool sieve_setting_get_uint_value(struct sieve_instance *svinst, @@ -51,7 +51,7 @@ sieve_environment_get_homedir(struct sieve_instance *svinst) if (callbacks == NULL || callbacks->get_homedir == NULL) return NULL; - return callbacks->get_homedir(svinst->context); + return callbacks->get_homedir(svinst, svinst->context); } #endif diff --git a/src/lib-sieve/sieve-types.h b/src/lib-sieve/sieve-types.h index 7bc21d7a4..bb1cb8571 100644 --- a/src/lib-sieve/sieve-types.h +++ b/src/lib-sieve/sieve-types.h @@ -77,8 +77,11 @@ struct sieve_environment { */ struct sieve_callbacks { - const char *(*get_homedir)(void *context); - const char *(*get_setting)(void *context, const char *identifier); + const char * + (*get_homedir)(struct sieve_instance *svinst, void *context); + const char * + (*get_setting)(struct sieve_instance *svinst, void *context, + const char *identifier); }; /* diff --git a/src/managesieve/managesieve-capabilities.c b/src/managesieve/managesieve-capabilities.c index cc70e521a..8558e1981 100644 --- a/src/managesieve/managesieve-capabilities.c +++ b/src/managesieve/managesieve-capabilities.c @@ -43,7 +43,9 @@ plugin_settings_get(const struct plugin_settings *set, const char *identifier) * Sieve environment */ -static const char *sieve_get_setting(void *context, const char *identifier) +static const char * +sieve_get_setting(struct sieve_instance *svinst ATTR_UNUSED, void *context, + const char *identifier) { const struct plugin_settings *set = context; diff --git a/src/managesieve/managesieve-client.c b/src/managesieve/managesieve-client.c index 8676a8b51..725946108 100644 --- a/src/managesieve/managesieve-client.c +++ b/src/managesieve/managesieve-client.c @@ -35,7 +35,8 @@ struct client *managesieve_clients = NULL; unsigned int managesieve_client_count = 0; static const char * -managesieve_sieve_get_setting(void *context, const char *identifier) +managesieve_sieve_get_setting(struct sieve_instance *svinst ATTR_UNUSED, + void *context, const char *identifier) { struct mail_user *mail_user = (struct mail_user *) context; diff --git a/src/plugins/doveadm-sieve/doveadm-sieve-cmd.c b/src/plugins/doveadm-sieve/doveadm-sieve-cmd.c index 7d98d1e02..53127b90b 100644 --- a/src/plugins/doveadm-sieve/doveadm-sieve-cmd.c +++ b/src/plugins/doveadm-sieve/doveadm-sieve-cmd.c @@ -62,7 +62,8 @@ void doveadm_sieve_cmd_failed_storage(struct doveadm_sieve_cmd_context *ctx, } static const char * -doveadm_sieve_cmd_get_setting(void *context, const char *identifier) +doveadm_sieve_cmd_get_setting(struct sieve_instance *svinst ATTR_UNUSED, + void *context, const char *identifier) { struct doveadm_sieve_cmd_context *ctx = (struct doveadm_sieve_cmd_context *)context; diff --git a/src/plugins/doveadm-sieve/doveadm-sieve-sync.c b/src/plugins/doveadm-sieve/doveadm-sieve-sync.c index 2bf277a7f..2b1cae32f 100644 --- a/src/plugins/doveadm-sieve/doveadm-sieve-sync.c +++ b/src/plugins/doveadm-sieve/doveadm-sieve-sync.c @@ -45,7 +45,8 @@ static MODULE_CONTEXT_DEFINE_INIT(sieve_user_module, &mail_user_module_register); static const char * -mail_sieve_get_setting(void *context, const char *identifier) +mail_sieve_get_setting(struct sieve_instance *svinst ATTR_UNUSED, void *context, + const char *identifier) { struct mail_user *mail_user = context; diff --git a/src/plugins/imap-filter-sieve/imap-filter-sieve.c b/src/plugins/imap-filter-sieve/imap-filter-sieve.c index eb2c9caa0..cc3cb51ab 100644 --- a/src/plugins/imap-filter-sieve/imap-filter-sieve.c +++ b/src/plugins/imap-filter-sieve/imap-filter-sieve.c @@ -59,7 +59,8 @@ static MODULE_CONTEXT_DEFINE_INIT(imap_filter_sieve_user_module, */ static const char * -imap_filter_sieve_get_setting(void *context, const char *identifier) +imap_filter_sieve_get_setting(struct sieve_instance *svinst ATTR_UNUSED, + void *context, const char *identifier) { struct imap_filter_sieve_user *ifsuser = context; struct mail_user *user = ifsuser->client->user; diff --git a/src/plugins/imapsieve/imap-sieve.c b/src/plugins/imapsieve/imap-sieve.c index 8bb20c33c..da669675c 100644 --- a/src/plugins/imapsieve/imap-sieve.c +++ b/src/plugins/imapsieve/imap-sieve.c @@ -48,7 +48,8 @@ struct imap_sieve { }; static const char * -mail_sieve_get_setting(void *context, const char *identifier) +mail_sieve_get_setting(struct sieve_instance *svinst ATTR_UNUSED, void *context, + const char *identifier) { struct imap_sieve *isieve = context; struct mail_user *user = isieve->client->user; diff --git a/src/plugins/lda-sieve/lda-sieve-plugin.c b/src/plugins/lda-sieve/lda-sieve-plugin.c index 804d5baaf..0868badee 100644 --- a/src/plugins/lda-sieve/lda-sieve-plugin.c +++ b/src/plugins/lda-sieve/lda-sieve-plugin.c @@ -45,7 +45,8 @@ static deliver_mail_func_t *next_deliver_mail; */ static const char * -lda_sieve_get_setting(void *context, const char *identifier) +lda_sieve_get_setting(struct sieve_instance *svinst ATTR_UNUSED, void *context, + const char *identifier) { struct mail_deliver_context *mdctx = (struct mail_deliver_context *)context; diff --git a/src/testsuite/testsuite-settings.c b/src/testsuite/testsuite-settings.c index 5f2625f10..51d7d3eeb 100644 --- a/src/testsuite/testsuite-settings.c +++ b/src/testsuite/testsuite-settings.c @@ -20,7 +20,9 @@ struct testsuite_setting { static HASH_TABLE(const char *, struct testsuite_setting *) settings; -static const char *testsuite_setting_get(void *context, const char *identifier); +static const char * +testsuite_setting_get(struct sieve_instance *svinst, void *context, + const char *identifier); void testsuite_settings_init(void) { @@ -49,7 +51,8 @@ void testsuite_settings_deinit(void) } static const char * -testsuite_setting_get(void *context ATTR_UNUSED, const char *identifier) +testsuite_setting_get(struct sieve_instance *svinst ATTR_UNUSED, + void *context ATTR_UNUSED, const char *identifier) { struct testsuite_setting *setting; struct mail_user *user; -- GitLab