summaryrefslogtreecommitdiffstats
path: root/pigeonhole/src/lib-sieve/sieve-execute.h
diff options
context:
space:
mode:
Diffstat (limited to 'pigeonhole/src/lib-sieve/sieve-execute.h')
-rw-r--r--pigeonhole/src/lib-sieve/sieve-execute.h42
1 files changed, 42 insertions, 0 deletions
diff --git a/pigeonhole/src/lib-sieve/sieve-execute.h b/pigeonhole/src/lib-sieve/sieve-execute.h
new file mode 100644
index 0000000..8af182b
--- /dev/null
+++ b/pigeonhole/src/lib-sieve/sieve-execute.h
@@ -0,0 +1,42 @@
+#ifndef SIEVE_EXECUTE_H
+#define SIEVE_EXECUTE_H
+
+#include "sieve-common.h"
+
+struct sieve_execute_state;
+
+struct sieve_execute_env {
+ struct sieve_instance *svinst;
+ pool_t pool;
+
+ enum sieve_execute_flags flags;
+ struct event *event;
+
+ const struct sieve_message_data *msgdata;
+ const struct sieve_script_env *scriptenv;
+
+ struct sieve_execute_state *state;
+ struct sieve_exec_status *exec_status;
+};
+
+void sieve_execute_init(struct sieve_execute_env *eenv,
+ struct sieve_instance *svinst, pool_t pool,
+ const struct sieve_message_data *msgdata,
+ const struct sieve_script_env *senv,
+ enum sieve_execute_flags flags);
+void sieve_execute_finish(struct sieve_execute_env *eenv, int status);
+void sieve_execute_deinit(struct sieve_execute_env *eenv);
+
+/*
+ * Checking for duplicates
+ */
+
+bool sieve_execute_duplicate_check_available(
+ const struct sieve_execute_env *eenv);
+int sieve_execute_duplicate_check(const struct sieve_execute_env *eenv,
+ const void *id, size_t id_size,
+ bool *duplicate_r);
+void sieve_execute_duplicate_mark(const struct sieve_execute_env *eenv,
+ const void *id, size_t id_size, time_t time);
+
+#endif