15 |
along with this program; if not, write to the Free Software |
along with this program; if not, write to the Free Software |
16 |
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ |
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ |
17 |
|
|
18 |
|
#ifndef _MAILUTILS_LIBSIEVE_H |
19 |
|
#define _MAILUTILS_LIBSIEVE_H |
20 |
|
|
21 |
#include <sys/types.h> |
#include <sys/types.h> |
22 |
#include <stdarg.h> |
#include <stdarg.h> |
23 |
#include <mailutils/mailutils.h> |
#include <mailutils/mailutils.h> |
24 |
|
|
25 |
|
#ifdef __cplusplus |
26 |
|
extern "C" { |
27 |
|
#endif |
28 |
|
|
29 |
typedef struct sieve_machine *sieve_machine_t; |
typedef struct sieve_machine *sieve_machine_t; |
30 |
|
|
31 |
typedef int (*sieve_handler_t) __PMT((sieve_machine_t mach, |
typedef int (*sieve_handler_t) __PMT((sieve_machine_t mach, |
107 |
|
|
108 |
extern int sieve_yydebug; |
extern int sieve_yydebug; |
109 |
|
|
110 |
|
/* Memory allocation functions */ |
111 |
void *sieve_alloc __P((size_t size)); |
void *sieve_alloc __P((size_t size)); |
112 |
void *sieve_palloc __P((list_t *pool, size_t size)); |
void *sieve_palloc __P((list_t *pool, size_t size)); |
113 |
void *sieve_prealloc __P((list_t *pool, void *ptr, size_t size)); |
void *sieve_prealloc __P((list_t *pool, void *ptr, size_t size)); |
114 |
void sieve_pfree __P((list_t *pool, void *ptr)); |
void sieve_pfree __P((list_t *pool, void *ptr)); |
115 |
char *sieve_pstrdup __P((list_t *pool, const char *str)); |
char *sieve_pstrdup __P((list_t *pool, const char *str)); |
116 |
|
|
117 |
int sieve_compile __P((sieve_machine_t mach, const char *name)); |
sieve_value_t *sieve_value_create __P((sieve_data_type type, void *data)); |
118 |
|
void sieve_slist_destroy __P((list_t *plist)); |
|
sieve_value_t * sieve_value_create __P((sieve_data_type type, void *data)); |
|
119 |
|
|
120 |
|
/* Symbol space functions */ |
121 |
sieve_register_t *sieve_test_lookup __P((const char *name)); |
sieve_register_t *sieve_test_lookup __P((const char *name)); |
122 |
sieve_register_t *sieve_action_lookup __P((const char *name)); |
sieve_register_t *sieve_action_lookup __P((const char *name)); |
123 |
int sieve_register_test __P((const char *name, sieve_handler_t handler, |
int sieve_register_test __P((const char *name, sieve_handler_t handler, |
126 |
int sieve_register_action __P((const char *name, sieve_handler_t handler, |
int sieve_register_action __P((const char *name, sieve_handler_t handler, |
127 |
sieve_data_type *arg_types, |
sieve_data_type *arg_types, |
128 |
sieve_tag_group_t *tags, int required)); |
sieve_tag_group_t *tags, int required)); |
129 |
|
int sieve_register_comparator __P((const char *name, |
130 |
|
int required, |
131 |
|
sieve_comparator_t is, |
132 |
|
sieve_comparator_t contains, |
133 |
|
sieve_comparator_t matches, |
134 |
|
sieve_comparator_t regex)); |
135 |
|
sieve_comparator_t sieve_comparator_lookup __P((const char *name, |
136 |
|
int matchtype)); |
137 |
|
|
138 |
void sieve_slist_destroy __P((list_t *plist)); |
sieve_comparator_t sieve_get_comparator __P((list_t tags)); |
139 |
void sieve_require __P((list_t slist)); |
void sieve_require __P((list_t slist)); |
140 |
|
|
141 |
void sieve_abort __P((sieve_machine_t mach)); |
/* Operations in value lists */ |
142 |
|
sieve_value_t *sieve_value_get __P((list_t vlist, size_t index)); |
143 |
|
int sieve_vlist_do __P((sieve_value_t *val, list_action_t *ac, void *data)); |
144 |
|
int sieve_vlist_compare __P((sieve_value_t *a, sieve_value_t *b, |
145 |
|
sieve_comparator_t comp, sieve_retrieve_t ac, |
146 |
|
void *data)); |
147 |
|
|
148 |
|
/* Functions to create and destroy sieve machine */ |
149 |
|
int sieve_machine_init __P((sieve_machine_t *mach, void *data)); |
150 |
|
void sieve_machine_destroy __P((sieve_machine_t *pmach)); |
151 |
|
int sieve_machine_add_destructor __P((sieve_machine_t mach, |
152 |
|
sieve_destructor_t destr, |
153 |
|
void *ptr)); |
154 |
|
|
155 |
|
/* Functions for accessing sieve machine internals */ |
156 |
void *sieve_get_data __P((sieve_machine_t mach)); |
void *sieve_get_data __P((sieve_machine_t mach)); |
157 |
message_t sieve_get_message __P((sieve_machine_t mach)); |
message_t sieve_get_message __P((sieve_machine_t mach)); |
158 |
size_t sieve_get_message_num __P((sieve_machine_t mach)); |
size_t sieve_get_message_num __P((sieve_machine_t mach)); |
159 |
int sieve_get_debug_level __P((sieve_machine_t mach)); |
int sieve_get_debug_level __P((sieve_machine_t mach)); |
160 |
ticket_t sieve_get_ticket __P((sieve_machine_t mach)); |
ticket_t sieve_get_ticket __P((sieve_machine_t mach)); |
161 |
|
mailer_t sieve_get_mailer __P((sieve_machine_t mach)); |
162 |
|
char *sieve_get_daemon_email __P((sieve_machine_t mach)); |
163 |
|
|
164 |
|
void sieve_set_error __P((sieve_machine_t mach, sieve_printf_t error_printer)); |
165 |
|
void sieve_set_parse_error __P((sieve_machine_t mach, sieve_parse_error_t p)); |
166 |
|
void sieve_set_debug __P((sieve_machine_t mach, sieve_printf_t debug)); |
167 |
|
void sieve_set_debug_level __P((sieve_machine_t mach, mu_debug_t dbg, |
168 |
|
int level)); |
169 |
|
void sieve_set_logger __P((sieve_machine_t mach, sieve_action_log_t logger)); |
170 |
|
void sieve_set_ticket __P((sieve_machine_t mach, ticket_t ticket)); |
171 |
|
void sieve_set_mailer __P((sieve_machine_t mach, mailer_t mailer)); |
172 |
|
void sieve_set_daemon_email __P((sieve_machine_t mach, const char *email)); |
173 |
|
|
174 |
|
/* Logging and diagnostic functions */ |
175 |
|
|
176 |
void sieve_error __P((sieve_machine_t mach, const char *fmt, ...)); |
void sieve_error __P((sieve_machine_t mach, const char *fmt, ...)); |
177 |
void sieve_debug __P((sieve_machine_t mach, const char *fmt, ...)); |
void sieve_debug __P((sieve_machine_t mach, const char *fmt, ...)); |
178 |
void sieve_log_action __P((sieve_machine_t mach, const char *action, |
void sieve_log_action __P((sieve_machine_t mach, const char *action, |
179 |
const char *fmt, ...)); |
const char *fmt, ...)); |
180 |
|
void sieve_abort __P((sieve_machine_t mach)); |
181 |
|
|
|
int sieve_mailbox __P((sieve_machine_t mach, mailbox_t mbox)); |
|
|
int sieve_disass __P((sieve_machine_t mach)); |
|
|
|
|
|
int sieve_machine_init __P((sieve_machine_t *mach, void *data)); |
|
|
void sieve_machine_destroy __P((sieve_machine_t *pmach)); |
|
|
int sieve_machine_add_destructor __P((sieve_machine_t mach, |
|
|
sieve_destructor_t destr, |
|
|
void *ptr)); |
|
|
|
|
|
void sieve_machine_set_error __P((sieve_machine_t mach, |
|
|
sieve_printf_t error_printer)); |
|
|
void sieve_machine_set_parse_error __P((sieve_machine_t mach, |
|
|
sieve_parse_error_t p)); |
|
|
void sieve_machine_set_debug __P((sieve_machine_t mach, |
|
|
sieve_printf_t debug)); |
|
|
void sieve_machine_set_debug_level __P((sieve_machine_t mach, |
|
|
mu_debug_t dbg, |
|
|
int level)); |
|
|
void sieve_machine_set_logger __P((sieve_machine_t mach, |
|
|
sieve_action_log_t logger)); |
|
|
void sieve_machine_set_ticket __P((sieve_machine_t mach, |
|
|
ticket_t ticket)); |
|
|
sieve_value_t *sieve_value_get __P((list_t vlist, size_t index)); |
|
182 |
|
|
183 |
int sieve_is_dry_run __P((sieve_machine_t mach)); |
int sieve_is_dry_run __P((sieve_machine_t mach)); |
184 |
|
const char *sieve_type_str __P((sieve_data_type type)); |
185 |
|
|
186 |
int sieve_vlist_do __P((sieve_value_t *val, list_action_t *ac, void *data)); |
/* Principal entry points */ |
|
int sieve_vlist_compare __P((sieve_value_t *a, sieve_value_t *b, |
|
|
sieve_comparator_t comp, sieve_retrieve_t ac, |
|
|
void *data)); |
|
|
|
|
187 |
|
|
188 |
int sieve_register_comparator __P((const char *name, |
int sieve_compile __P((sieve_machine_t mach, const char *name)); |
189 |
int required, |
int sieve_mailbox __P((sieve_machine_t mach, mailbox_t mbox)); |
190 |
sieve_comparator_t is, |
int sieve_message __P((sieve_machine_t mach, message_t message)); |
191 |
sieve_comparator_t contains, |
int sieve_disass __P((sieve_machine_t mach)); |
|
sieve_comparator_t matches, |
|
|
sieve_comparator_t regex)); |
|
|
sieve_comparator_t sieve_comparator_lookup __P((const char *name, |
|
|
int matchtype)); |
|
192 |
|
|
193 |
sieve_comparator_t sieve_get_comparator __P((list_t tags)); |
#ifdef __cplusplus |
194 |
|
} |
195 |
|
#endif |
196 |
|
|
197 |
const char *sieve_type_str __P((sieve_data_type type)); |
#endif |