From 160ac4c0cf90a70985d1027f857abc113be50439 Mon Sep 17 00:00:00 2001 From: Stephan Bosch <stephan@rename-it.nl> Date: Sun, 24 Jan 2010 22:01:07 +0100 Subject: [PATCH] Added boolean settings parser. --- src/lib-sieve/sieve-settings.c | 27 +++++++++++++++++++++++++++ src/lib-sieve/sieve-settings.h | 17 +++++++++-------- 2 files changed, 36 insertions(+), 8 deletions(-) diff --git a/src/lib-sieve/sieve-settings.c b/src/lib-sieve/sieve-settings.c index d26e392d7..4dc8efb50 100644 --- a/src/lib-sieve/sieve-settings.c +++ b/src/lib-sieve/sieve-settings.c @@ -102,3 +102,30 @@ bool sieve_setting_get_size_value return TRUE; } + +bool sieve_setting_get_bool_value +(struct sieve_instance *svinst, const char *setting, + bool *value_r) +{ + const char *str_value; + char *endp; + + str_value = sieve_setting_get(svinst, setting); + + if ( str_value == NULL || *str_value == '\0' ) + return FALSE; + + if ( strcasecmp(str_value, "yes" ) == 0) { + *value_r = TRUE; + return TRUE; + } + + if ( strcasecmp(str_value, "no" ) == 0) { + *value_r = FALSE; + return TRUE; + } + + sieve_sys_warning("invalid boolean value for setting '%s': '%s'", + setting, str_value); + return FALSE; +} diff --git a/src/lib-sieve/sieve-settings.h b/src/lib-sieve/sieve-settings.h index 1adb35692..93507b7aa 100644 --- a/src/lib-sieve/sieve-settings.h +++ b/src/lib-sieve/sieve-settings.h @@ -22,16 +22,17 @@ static inline const char *sieve_setting_get } bool sieve_setting_get_uint_value -(struct sieve_instance *svinst, const char *setting, - unsigned long long int *value_r); - + (struct sieve_instance *svinst, const char *setting, + unsigned long long int *value_r); bool sieve_setting_get_int_value -(struct sieve_instance *svinst, const char *setting, - long long int *value_r); - + (struct sieve_instance *svinst, const char *setting, + long long int *value_r); bool sieve_setting_get_size_value -(struct sieve_instance *svinst, const char *setting, - size_t *value_r); + (struct sieve_instance *svinst, const char *setting, + size_t *value_r); +bool sieve_setting_get_bool_value + (struct sieve_instance *svinst, const char *setting, + bool *value_r); /* * Home directory -- GitLab