summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorSergey Poznyakoff <gray@gnu.org.ua>2002-11-12 16:27:47 +0000
committerSergey Poznyakoff <gray@gnu.org.ua>2002-11-12 16:27:47 +0000
commit2233fe22de4e6ff71d711b833cff595bd98b2b09 (patch)
tree16120b9787ed52f41dd868e26f70d88d988ed987 /include
parent0ba30cb1092adadc9cfef3bb9217f13fe272f612 (diff)
downloadmailutils-2233fe22de4e6ff71d711b833cff595bd98b2b09.tar.gz
mailutils-2233fe22de4e6ff71d711b833cff595bd98b2b09.tar.bz2
Added basic code generation and debugging
Diffstat (limited to 'include')
-rw-r--r--include/mailutils/libsieve.h34
1 files changed, 28 insertions, 6 deletions
diff --git a/include/mailutils/libsieve.h b/include/mailutils/libsieve.h
index bb99c3581..064e7176c 100644
--- a/include/mailutils/libsieve.h
+++ b/include/mailutils/libsieve.h
@@ -16,11 +16,15 @@
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
#include <sys/types.h>
+#include <stdarg.h>
#include <mailutils/mailutils.h>
typedef struct sieve_machine sieve_machine_t;
-typedef int (*sieve_instr_t) __P((sieve_machine_t *mach, list_t *args));
+typedef int (*sieve_handler_t) __P((sieve_machine_t *mach,
+ list_t args, list_t tags));
+typedef int (*sieve_printf_t) __P((void *data, const char *fmt, va_list ap));
+typedef int (*sieve_vprintf_t) __P((void *data, const char *fmt, va_list ap));
typedef enum {
SVT_VOID,
@@ -32,12 +36,15 @@ typedef enum {
SVT_VALUE_LIST
} sieve_data_type;
+typedef struct sieve_runtime_tag sieve_runtime_tag_t;
+
typedef struct {
sieve_data_type type;
union {
char *string;
long number;
list_t list;
+ sieve_runtime_tag_t *tag;
} v;
} sieve_value_t;
@@ -47,10 +54,15 @@ typedef struct {
sieve_data_type argtype;
} sieve_tag_def_t;
+struct sieve_runtime_tag {
+ int tag;
+ sieve_value_t *arg;
+};
+
typedef struct {
char *name;
int required;
- sieve_instr_t instr;
+ sieve_handler_t handler;
int num_req_args;
sieve_data_type *req_args;
int num_tags;
@@ -59,18 +71,28 @@ typedef struct {
void *sieve_alloc __P((size_t size));
-int sieve_open_source __P((const char *name));
-int sieve_parse __P((const char *name));
+void *sieve_palloc __P((list_t *pool, size_t size));
+void *sieve_prealloc __P((list_t *pool, void *ptr, size_t size));
+void sieve_pfree __P((list_t *pool, void *ptr));
+char *sieve_pstrdup __P((list_t *pool, const char *str));
+
+int sieve_compile __P((sieve_machine_t *mach, const char *name, void *data,
+ sieve_printf_t errfn));
+void sieve_set_debug __P((sieve_machine_t *mach, sieve_printf_t debug,
+ int level));
+
sieve_value_t * sieve_value_create __P((sieve_data_type type, void *data));
sieve_register_t *sieve_test_lookup __P((const char *name));
sieve_register_t *sieve_action_lookup __P((const char *name));
-int sieve_register_test __P((const char *name, sieve_instr_t instr,
+int sieve_register_test __P((const char *name, sieve_handler_t handler,
sieve_data_type *arg_types,
sieve_tag_def_t *tags, int required));
-int sieve_register_action __P((const char *name, sieve_instr_t instr,
+int sieve_register_action __P((const char *name, sieve_handler_t handler,
sieve_data_type *arg_types,
sieve_tag_def_t *tags, int required));
void sieve_slist_destroy __P((list_t *plist));
void sieve_require __P((list_t slist));
+
+void sieve_abort __P((sieve_machine_t *mach));

Return to:

Send suggestions and report system problems to the System administrator.