21 |
|
|
22 |
typedef struct sieve_machine *sieve_machine_t; |
typedef struct sieve_machine *sieve_machine_t; |
23 |
|
|
24 |
typedef int (*sieve_handler_t) __P((sieve_machine_t mach, |
typedef int (*sieve_handler_t) __PMT((sieve_machine_t mach, |
25 |
list_t args, list_t tags)); |
list_t args, list_t tags)); |
26 |
typedef int (*sieve_printf_t) __P((void *data, const char *fmt, va_list ap)); |
typedef int (*sieve_printf_t) __PMT((void *data, const char *fmt, va_list ap)); |
27 |
typedef int (*sieve_parse_error_t) __P((void *data, |
typedef int (*sieve_parse_error_t) __PMT((void *data, |
28 |
const char *filename, int lineno, |
const char *filename, int lineno, |
29 |
const char *fmt, va_list ap)); |
const char *fmt, va_list ap)); |
30 |
typedef void (*sieve_action_log_t) __P((void *data, |
typedef void (*sieve_action_log_t) __PMT((void *data, |
31 |
const char *script, |
const char *script, |
32 |
size_t msgno, message_t msg, |
size_t msgno, message_t msg, |
33 |
const char *action, |
const char *action, |
34 |
const char *fmt, va_list ap)); |
const char *fmt, va_list ap)); |
35 |
|
|
36 |
|
typedef int (*sieve_comparator_t) __PMT((const char *, const char *)); |
37 |
|
typedef int (*sieve_retrieve_t) __PMT((void *item, void *data, char **pval)); |
38 |
|
|
39 |
|
|
40 |
typedef enum { |
typedef enum { |
41 |
SVT_VOID, |
SVT_VOID, |
80 |
sieve_tag_def_t *tags; |
sieve_tag_def_t *tags; |
81 |
} sieve_register_t; |
} sieve_register_t; |
82 |
|
|
83 |
|
#define MU_SIEVE_MATCH_IS 1 |
84 |
|
#define MU_SIEVE_MATCH_CONTAINS 2 |
85 |
|
#define MU_SIEVE_MATCH_MATCHES 3 |
86 |
|
#define MU_SIEVE_MATCH_REGEX 4 |
87 |
|
#define MU_SIEVE_MATCH_LAST 5 |
88 |
|
|
89 |
/* Debugging levels */ |
/* Debugging levels */ |
90 |
#define MU_SIEVE_DEBUG_TRACE 0x0001 |
#define MU_SIEVE_DEBUG_TRACE 0x0001 |
91 |
#define MU_SIEVE_DEBUG_INSTR 0x0002 |
#define MU_SIEVE_DEBUG_INSTR 0x0002 |
149 |
sieve_value_t *sieve_value_get __P((list_t vlist, size_t index)); |
sieve_value_t *sieve_value_get __P((list_t vlist, size_t index)); |
150 |
|
|
151 |
int sieve_is_dry_run __P((sieve_machine_t mach)); |
int sieve_is_dry_run __P((sieve_machine_t mach)); |
152 |
|
|
153 |
|
int sieve_vlist_do __P((sieve_value_t *val, list_action_t *ac, void *data)); |
154 |
|
int sieve_vlist_compare __P((sieve_value_t *a, sieve_value_t *b, |
155 |
|
sieve_comparator_t comp, sieve_retrieve_t ac, |
156 |
|
void *data)); |
157 |
|
|
158 |
|
|
159 |
|
int sieve_register_comparator __P((const char *name, |
160 |
|
int required, |
161 |
|
sieve_comparator_t is, |
162 |
|
sieve_comparator_t contains, |
163 |
|
sieve_comparator_t matches, |
164 |
|
sieve_comparator_t regex)); |
165 |
|
sieve_comparator_t sieve_comparator_lookup __P((const char *name, |
166 |
|
int matchtype)); |
167 |
|
|
168 |
|
sieve_comparator_t sieve_get_comparator __P((list_t tags)); |