From a4176570c8fb6f823e450d7d126aa41711232a7d Mon Sep 17 00:00:00 2001
From: Stephan Bosch <stephan@rename-it.nl>
Date: Wed, 4 Feb 2009 22:43:33 +0100
Subject: [PATCH] Validator: added support for checking loaded extensions.

---
 src/lib-sieve/sieve-validator.c | 14 ++++++++++++++
 src/lib-sieve/sieve-validator.h |  3 +++
 2 files changed, 17 insertions(+)

diff --git a/src/lib-sieve/sieve-validator.c b/src/lib-sieve/sieve-validator.c
index f155cde6d..d3fd9cdc3 100644
--- a/src/lib-sieve/sieve-validator.c
+++ b/src/lib-sieve/sieve-validator.c
@@ -65,6 +65,8 @@ struct sieve_validator_extension_reg {
 	const struct sieve_validator_extension *val_ext;
 	struct sieve_ast_argument *arg;
 	void *context;
+
+	bool loaded;
 };
 
 /* 
@@ -543,6 +545,7 @@ const struct sieve_extension *sieve_validator_extension_load
 	if ( ext_id >= 0 ) {
 		reg = array_idx_modifiable(&valdtr->extensions, (unsigned int) ext_id);
 		reg->arg = ext_arg;
+		reg->loaded = TRUE;
 	}
 
 	return ext;
@@ -562,6 +565,17 @@ void sieve_validator_extension_register
 	reg->context = context;
 }
 
+bool sieve_validator_extension_loaded
+	(struct sieve_validator *valdtr, const struct sieve_extension *ext)
+{
+	int ext_id = SIEVE_EXT_ID(ext);
+	const struct sieve_validator_extension_reg *reg;
+
+	reg = array_idx(&valdtr->extensions, (unsigned int) ext_id);
+
+	return ( reg->loaded );
+}
+
 void sieve_validator_extension_set_context
 (struct sieve_validator *valdtr, const struct sieve_extension *ext, 
 	void *context)
diff --git a/src/lib-sieve/sieve-validator.h b/src/lib-sieve/sieve-validator.h
index 2b553be68..ca8b59fd3 100644
--- a/src/lib-sieve/sieve-validator.h
+++ b/src/lib-sieve/sieve-validator.h
@@ -134,6 +134,9 @@ const struct sieve_extension *sieve_validator_extension_load
 void sieve_validator_extension_register
 	(struct sieve_validator *valdtr, 
 		const struct sieve_validator_extension *val_ext, void *context);
+bool sieve_validator_extension_loaded
+    (struct sieve_validator *valdtr, const struct sieve_extension *ext);
+
 void sieve_validator_extension_set_context
 (struct sieve_validator *valdtr, const struct sieve_extension *ext, 
 	void *context);
-- 
GitLab