summaryrefslogtreecommitdiffstats
path: root/pigeonhole/src/lib-sieve/plugins/environment/sieve-ext-environment.h
diff options
context:
space:
mode:
Diffstat (limited to 'pigeonhole/src/lib-sieve/plugins/environment/sieve-ext-environment.h')
-rw-r--r--pigeonhole/src/lib-sieve/plugins/environment/sieve-ext-environment.h54
1 files changed, 54 insertions, 0 deletions
diff --git a/pigeonhole/src/lib-sieve/plugins/environment/sieve-ext-environment.h b/pigeonhole/src/lib-sieve/plugins/environment/sieve-ext-environment.h
new file mode 100644
index 0000000..8ae0d18
--- /dev/null
+++ b/pigeonhole/src/lib-sieve/plugins/environment/sieve-ext-environment.h
@@ -0,0 +1,54 @@
+#ifndef SIEVE_EXT_ENVIRONMENT_H
+#define SIEVE_EXT_ENVIRONMENT_H
+
+#include "sieve-common.h"
+
+/*
+ * Environment extension
+ */
+
+/* FIXME: this is not suitable for future plugin support */
+
+extern const struct sieve_extension_def environment_extension;
+
+static inline const struct sieve_extension *
+sieve_ext_environment_get_extension
+(struct sieve_instance *svinst)
+{
+ return sieve_extension_register
+ (svinst, &environment_extension, FALSE);
+}
+
+static inline const struct sieve_extension *
+sieve_ext_environment_require_extension
+(struct sieve_instance *svinst)
+{
+ return sieve_extension_require
+ (svinst, &environment_extension, TRUE);
+}
+
+bool sieve_ext_environment_is_active
+ (const struct sieve_extension *env_ext,
+ struct sieve_interpreter *interp);
+
+/*
+ * Environment item
+ */
+
+struct sieve_environment_item {
+ const char *name;
+ bool prefix;
+
+ const char *value;
+ const char *(*get_value)
+ (const struct sieve_runtime_env *renv, const char *name);
+};
+
+void sieve_environment_item_register
+ (const struct sieve_extension *env_ext, struct sieve_interpreter *interp,
+ const struct sieve_environment_item *item);
+const char *ext_environment_item_get_value
+ (const struct sieve_extension *env_ext,
+ const struct sieve_runtime_env *renv, const char *name);
+
+#endif