From 9c8a25f04ba7b2ac58da52cd5ed6e2faa0f946bb Mon Sep 17 00:00:00 2001 From: Stephan Bosch <stephan@rename-it.nl> Date: Tue, 29 Dec 2009 23:24:15 +0100 Subject: [PATCH] Renamed sieve_callbacks to sieve_environment and restructured settings API. --- src/lib-sieve-tool/sieve-tool.c | 8 +++--- src/lib-sieve-tool/sieve-tool.h | 4 +-- .../plugins/include/ext-include-common.c | 6 ++-- .../plugins/subaddress/ext-subaddress.c | 3 +- src/lib-sieve/sieve-common.h | 2 +- src/lib-sieve/sieve-settings.c | 24 ++++++++-------- src/lib-sieve/sieve-settings.h | 28 +++++++++---------- src/lib-sieve/sieve-types.h | 2 +- src/lib-sieve/sieve.c | 10 +++---- src/lib-sieve/sieve.h | 2 +- src/plugins/lda-sieve/lda-sieve-plugin.c | 4 +-- src/testsuite/testsuite.c | 4 +-- 12 files changed, 49 insertions(+), 48 deletions(-) diff --git a/src/lib-sieve-tool/sieve-tool.c b/src/lib-sieve-tool/sieve-tool.c index a14d6c059..7b3e28dd4 100644 --- a/src/lib-sieve-tool/sieve-tool.c +++ b/src/lib-sieve-tool/sieve-tool.c @@ -43,7 +43,7 @@ const char *sieve_tool_get_homedir return getenv("HOME"); } -const struct sieve_callbacks sieve_tool_callbacks = { +const struct sieve_environment sieve_tool_sieve_env = { sieve_tool_get_homedir, sieve_tool_get_setting }; @@ -74,7 +74,7 @@ static void sig_die(const siginfo_t *si, void *context ATTR_UNUSED) /* HACK */ static bool _init_lib = FALSE; -void sieve_tool_init(const struct sieve_callbacks *callbacks, bool init_lib) +void sieve_tool_init(const struct sieve_environment *env, bool init_lib) { _init_lib = init_lib; @@ -90,9 +90,9 @@ void sieve_tool_init(const struct sieve_callbacks *callbacks, bool init_lib) lib_signals_ignore(SIGALRM, FALSE); } - if ( callbacks == NULL ) callbacks = &sieve_tool_callbacks; + if ( env == NULL ) env = &sieve_tool_sieve_env; - if ( (sieve_instance=sieve_init(callbacks, NULL)) == NULL ) + if ( (sieve_instance=sieve_init(env, NULL)) == NULL ) i_fatal("failed to initialize sieve implementation\n"); } diff --git a/src/lib-sieve-tool/sieve-tool.h b/src/lib-sieve-tool/sieve-tool.h index 0958aa2c4..0820b7705 100644 --- a/src/lib-sieve-tool/sieve-tool.h +++ b/src/lib-sieve-tool/sieve-tool.h @@ -17,13 +17,13 @@ struct sieve_instance *sieve_instance; const char *sieve_tool_get_setting(void *context, const char *identifier); const char *sieve_tool_get_homedir(void *context); -const struct sieve_callbacks sieve_tool_callbacks; +const struct sieve_environment sieve_tool_env; /* * Initialization */ -void sieve_tool_init(const struct sieve_callbacks *callbacks, bool init_lib); +void sieve_tool_init(const struct sieve_environment *env, bool init_lib); void sieve_tool_deinit(void); /* diff --git a/src/lib-sieve/plugins/include/ext-include-common.c b/src/lib-sieve/plugins/include/ext-include-common.c index 9f9ba6742..925078956 100644 --- a/src/lib-sieve/plugins/include/ext-include-common.c +++ b/src/lib-sieve/plugins/include/ext-include-common.c @@ -77,9 +77,9 @@ const char *ext_include_get_script_directory switch ( location ) { case EXT_INCLUDE_LOCATION_PERSONAL: - sieve_dir = sieve_get_setting(svinst, "sieve_dir"); + sieve_dir = sieve_setting_get(svinst, "sieve_dir"); - home = sieve_get_homedir(svinst); + home = sieve_environment_get_homedir(svinst); if ( sieve_dir == NULL ) { if ( home == NULL ) { @@ -97,7 +97,7 @@ const char *ext_include_get_script_directory break; case EXT_INCLUDE_LOCATION_GLOBAL: - sieve_dir = sieve_get_setting(svinst, "sieve_global_dir"); + sieve_dir = sieve_setting_get(svinst, "sieve_global_dir"); if (sieve_dir == NULL) { sieve_sys_error( diff --git a/src/lib-sieve/plugins/subaddress/ext-subaddress.c b/src/lib-sieve/plugins/subaddress/ext-subaddress.c index 17de8d5e1..a1fce1581 100644 --- a/src/lib-sieve/plugins/subaddress/ext-subaddress.c +++ b/src/lib-sieve/plugins/subaddress/ext-subaddress.c @@ -70,7 +70,8 @@ static bool ext_subaddress_load (const struct sieve_extension *ext, void **context) { struct ext_subaddress_config *config; - const char *delim = sieve_get_setting(ext->svinst, "recipient_delimiter"); + const char *delim = sieve_setting_get + (ext->svinst, "recipient_delimiter"); if ( delim == NULL ) delim = SUBADDRESS_DEFAULT_DELIM; diff --git a/src/lib-sieve/sieve-common.h b/src/lib-sieve/sieve-common.h index 2eed4e839..9c16ce7d1 100644 --- a/src/lib-sieve/sieve-common.h +++ b/src/lib-sieve/sieve-common.h @@ -140,7 +140,7 @@ struct sieve_instance { pool_t pool; /* Callbacks */ - const struct sieve_callbacks *callbacks; + const struct sieve_environment *env; void *context; /* Extension registry */ diff --git a/src/lib-sieve/sieve-settings.c b/src/lib-sieve/sieve-settings.c index 3c834a8c4..f882caaa1 100644 --- a/src/lib-sieve/sieve-settings.c +++ b/src/lib-sieve/sieve-settings.c @@ -10,14 +10,14 @@ #include <stdlib.h> #include <ctype.h> -bool sieve_get_uint_setting -(struct sieve_instance *svinst, const char *identifier, +bool sieve_setting_get_uint_value +(struct sieve_instance *svinst, const char *setting, unsigned long long int *value_r) { const char *str_value; char *endp; - str_value = sieve_get_setting(svinst, identifier); + str_value = sieve_setting_get(svinst, setting); if ( str_value == NULL || *str_value == '\0' ) return FALSE; @@ -26,21 +26,21 @@ bool sieve_get_uint_setting if ( *endp != '\0' ) { sieve_sys_warning("invalid unsigned integer value for setting '%s': '%s'", - identifier, str_value); + setting, str_value); return FALSE; } return TRUE; } -bool sieve_get_int_setting -(struct sieve_instance *svinst, const char *identifier, +bool sieve_setting_get_int_value +(struct sieve_instance *svinst, const char *setting, long long int *value_r) { const char *str_value; char *endp; - str_value = sieve_get_setting(svinst, identifier); + str_value = sieve_setting_get(svinst, setting); if ( str_value == NULL || *str_value == '\0' ) return FALSE; @@ -49,7 +49,7 @@ bool sieve_get_int_setting if ( *endp != '\0' ) { sieve_sys_warning("invalid integer value for setting '%s': '%s'", - identifier, str_value); + setting, str_value); return FALSE; } @@ -57,15 +57,15 @@ bool sieve_get_int_setting return TRUE; } -bool sieve_get_size_setting -(struct sieve_instance *svinst, const char *identifier, +bool sieve_setting_get_size_value +(struct sieve_instance *svinst, const char *setting, size_t *value_r) { const char *str_value; unsigned long long int value, multiply = 1; char *endp; - str_value = sieve_get_setting(svinst, identifier); + str_value = sieve_setting_get(svinst, setting); if ( str_value == NULL || *str_value == '\0' ) return FALSE; @@ -93,7 +93,7 @@ bool sieve_get_size_setting break; default: sieve_sys_warning("invalid unsigned integer value for setting '%s': '%s'", - identifier, str_value); + setting, str_value); return FALSE; } diff --git a/src/lib-sieve/sieve-settings.h b/src/lib-sieve/sieve-settings.h index debab0edf..9e9ad192c 100644 --- a/src/lib-sieve/sieve-settings.h +++ b/src/lib-sieve/sieve-settings.h @@ -10,42 +10,42 @@ * Settings */ -static inline const char *sieve_get_setting +static inline const char *sieve_setting_get (struct sieve_instance *svinst, const char *identifier) { - const struct sieve_callbacks *callbacks = svinst->callbacks; + const struct sieve_environment *env = svinst->env; - if ( callbacks == NULL || callbacks->get_setting == NULL ) + if ( env == NULL || env->get_setting == NULL ) return NULL; - return callbacks->get_setting(svinst->context, identifier); + return env->get_setting(svinst->context, identifier); } -bool sieve_get_uint_setting -(struct sieve_instance *svinst, const char *identifier, +bool sieve_setting_get_uint_value +(struct sieve_instance *svinst, const char *setting, unsigned long long int *value_r); -bool sieve_get_int_setting -(struct sieve_instance *svinst, const char *identifier, +bool sieve_setting_get_int_value +(struct sieve_instance *svinst, const char *setting, long long int *value_r); -bool sieve_get_size_setting -(struct sieve_instance *svinst, const char *identifier, +bool sieve_setting_get_size_value +(struct sieve_instance *svinst, const char *setting, size_t *value_r); /* * Home directory */ -static inline const char *sieve_get_homedir +static inline const char *sieve_environment_get_homedir (struct sieve_instance *svinst) { - const struct sieve_callbacks *callbacks = svinst->callbacks; + const struct sieve_environment *env = svinst->env; - if ( callbacks == NULL || callbacks->get_homedir == NULL ) + if ( env == NULL || env->get_homedir == NULL ) return NULL; - return callbacks->get_homedir(svinst->context); + return env->get_homedir(svinst->context); } #endif /* __SIEVE_SETTINGS_H */ diff --git a/src/lib-sieve/sieve-types.h b/src/lib-sieve/sieve-types.h index 519d2354d..291aa85d3 100644 --- a/src/lib-sieve/sieve-types.h +++ b/src/lib-sieve/sieve-types.h @@ -29,7 +29,7 @@ struct sieve_exec_status; * Callbacks */ -struct sieve_callbacks { +struct sieve_environment { const char *(*get_homedir)(void *context); const char *(*get_setting)(void *context, const char *identifier); }; diff --git a/src/lib-sieve/sieve.c b/src/lib-sieve/sieve.c index 755c0e328..9b3ca195c 100644 --- a/src/lib-sieve/sieve.c +++ b/src/lib-sieve/sieve.c @@ -38,7 +38,7 @@ */ struct sieve_instance *sieve_init -(const struct sieve_callbacks *callbacks, void *context) +(const struct sieve_environment *env, void *context) { struct sieve_instance *svinst; unsigned long long int uint_setting; @@ -49,7 +49,7 @@ struct sieve_instance *sieve_init pool = pool_alloconly_create("sieve", 8192); svinst = p_new(pool, struct sieve_instance, 1); svinst->pool = pool; - svinst->callbacks = callbacks; + svinst->env = env; svinst->context = context; /* Read limits from configuration */ @@ -58,17 +58,17 @@ struct sieve_instance *sieve_init svinst->max_actions = SIEVE_DEFAULT_MAX_ACTIONS; svinst->max_redirects = SIEVE_DEFAULT_MAX_REDIRECTS; - if ( sieve_get_size_setting + if ( sieve_setting_get_size_value (svinst, "sieve_max_script_size", &size_setting) ) { svinst->max_script_size = size_setting; } - if ( sieve_get_uint_setting + if ( sieve_setting_get_uint_value (svinst, "sieve_max_actions", &uint_setting) ) { svinst->max_actions = (unsigned int) uint_setting; } - if ( sieve_get_uint_setting + if ( sieve_setting_get_uint_value (svinst, "sieve_max_redirects", &uint_setting) ) { svinst->max_redirects = (unsigned int) uint_setting; } diff --git a/src/lib-sieve/sieve.h b/src/lib-sieve/sieve.h index 2967b33b9..f132fcb75 100644 --- a/src/lib-sieve/sieve.h +++ b/src/lib-sieve/sieve.h @@ -22,7 +22,7 @@ struct sieve_binary; * is used. */ struct sieve_instance *sieve_init - (const struct sieve_callbacks *callbacks, void *context); + (const struct sieve_environment *env, void *context); /* sieve_deinit(): * Frees all memory allocated by the sieve engine. diff --git a/src/plugins/lda-sieve/lda-sieve-plugin.c b/src/plugins/lda-sieve/lda-sieve-plugin.c index 60e7b8324..e056a1527 100644 --- a/src/plugins/lda-sieve/lda-sieve-plugin.c +++ b/src/plugins/lda-sieve/lda-sieve-plugin.c @@ -65,7 +65,7 @@ static const char *lda_sieve_get_setting return mail_user_plugin_getenv(mail_user, identifier); } -static const struct sieve_callbacks lda_sieve_callbacks = { +static const struct sieve_environment lda_sieve_env = { lda_sieve_get_homedir, lda_sieve_get_setting }; @@ -524,7 +524,7 @@ static int lda_sieve_run *storage_r = NULL; /* Initialize Sieve engine */ - svinst = sieve_init(&lda_sieve_callbacks, mdctx->dest_user); + svinst = sieve_init(&lda_sieve_env, mdctx->dest_user); extensions = mail_user_plugin_getenv (mdctx->dest_user, "sieve_extensions"); diff --git a/src/testsuite/testsuite.c b/src/testsuite/testsuite.c index 4e5b638bb..6ac1668cb 100644 --- a/src/testsuite/testsuite.c +++ b/src/testsuite/testsuite.c @@ -50,7 +50,7 @@ const struct sieve_script_env *testsuite_scriptenv; * Testsuite initialization */ -static const struct sieve_callbacks testsuite_sieve_callbacks = { +static const struct sieve_environment testsuite_sieve_env = { sieve_tool_get_homedir, testsuite_setting_get }; @@ -59,7 +59,7 @@ static void testsuite_tool_init(const char *extensions) { testsuite_settings_init(); - sieve_tool_init(&testsuite_sieve_callbacks, FALSE); + sieve_tool_init(&testsuite_sieve_env, FALSE); sieve_extensions_set_string(sieve_instance, extensions); -- GitLab