diff options
Diffstat (limited to '')
-rw-r--r-- | pigeonhole/src/lib-sieve/sieve-address.h | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/pigeonhole/src/lib-sieve/sieve-address.h b/pigeonhole/src/lib-sieve/sieve-address.h new file mode 100644 index 0000000..3779a07 --- /dev/null +++ b/pigeonhole/src/lib-sieve/sieve-address.h @@ -0,0 +1,67 @@ +#ifndef SIEVE_ADDRESS_H +#define SIEVE_ADDRESS_H + +#include "lib.h" +#include "strfuncs.h" +#include "smtp-address.h" + +#include "sieve-common.h" +#include "sieve-stringlist.h" + +/* + * Address list API + */ + +struct sieve_address_list { + struct sieve_stringlist strlist; + + int (*next_item)(struct sieve_address_list *_addrlist, + struct smtp_address *addr_r, string_t **unparsed_r); +}; + +static inline int +sieve_address_list_next_item(struct sieve_address_list *addrlist, + struct smtp_address *addr_r, string_t **unparsed_r) +{ + return addrlist->next_item(addrlist, addr_r, unparsed_r); +} + +static inline void +sieve_address_list_reset(struct sieve_address_list *addrlist) +{ + sieve_stringlist_reset(&addrlist->strlist); +} + +static inline int +sieve_address_list_get_length(struct sieve_address_list *addrlist) +{ + return sieve_stringlist_get_length(&addrlist->strlist); +} + +static inline void +sieve_address_list_set_trace(struct sieve_address_list *addrlist, bool trace) +{ + sieve_stringlist_set_trace(&addrlist->strlist, trace); +} + +/* + * Header address list + */ + +struct sieve_address_list * +sieve_header_address_list_create(const struct sieve_runtime_env *renv, + struct sieve_stringlist *field_values); + +/* + * Sieve address parsing/validatin + */ + +const struct smtp_address * +sieve_address_parse(const char *address, const char **error_r); +const struct smtp_address * +sieve_address_parse_str(string_t *address, const char **error_r); + +bool sieve_address_validate(const char *address, const char **error_r); +bool sieve_address_validate_str(string_t *address, const char **error_r); + +#endif |