summaryrefslogtreecommitdiffstats
path: root/pigeonhole/src/lib-sieve/sieve-settings.h
diff options
context:
space:
mode:
Diffstat (limited to 'pigeonhole/src/lib-sieve/sieve-settings.h')
-rw-r--r--pigeonhole/src/lib-sieve/sieve-settings.h57
1 files changed, 57 insertions, 0 deletions
diff --git a/pigeonhole/src/lib-sieve/sieve-settings.h b/pigeonhole/src/lib-sieve/sieve-settings.h
new file mode 100644
index 0000000..f2dfca2
--- /dev/null
+++ b/pigeonhole/src/lib-sieve/sieve-settings.h
@@ -0,0 +1,57 @@
+#ifndef SIEVE_SETTINGS_H
+#define SIEVE_SETTINGS_H
+
+#include "sieve-common.h"
+
+/*
+ * Access to settings
+ */
+
+static inline const char *
+sieve_setting_get(struct sieve_instance *svinst, const char *identifier)
+{
+ const struct sieve_callbacks *callbacks = svinst->callbacks;
+
+ if (callbacks == NULL || callbacks->get_setting == NULL)
+ return NULL;
+
+ return callbacks->get_setting(svinst->context, identifier);
+}
+
+bool sieve_setting_get_uint_value(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);
+bool sieve_setting_get_size_value(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);
+bool sieve_setting_get_duration_value(struct sieve_instance *svinst,
+ const char *setting,
+ sieve_number_t *value_r);
+
+/*
+ * Main Sieve engine settings
+ */
+
+void sieve_settings_load(struct sieve_instance *svinst);
+
+/*
+ * Home directory
+ */
+
+static inline const char *
+sieve_environment_get_homedir(struct sieve_instance *svinst)
+{
+ const struct sieve_callbacks *callbacks = svinst->callbacks;
+
+ if (svinst->home_dir != NULL)
+ return svinst->home_dir;
+ if (callbacks == NULL || callbacks->get_homedir == NULL)
+ return NULL;
+
+ return callbacks->get_homedir(svinst->context);
+}
+
+#endif