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