diff options
Diffstat (limited to 'pigeonhole/src/lib-sieve/plugins/date/ext-date-common.h')
-rw-r--r-- | pigeonhole/src/lib-sieve/plugins/date/ext-date-common.h | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/pigeonhole/src/lib-sieve/plugins/date/ext-date-common.h b/pigeonhole/src/lib-sieve/plugins/date/ext-date-common.h new file mode 100644 index 0000000..116af3e --- /dev/null +++ b/pigeonhole/src/lib-sieve/plugins/date/ext-date-common.h @@ -0,0 +1,80 @@ +#ifndef EXT_DATE_COMMON_H +#define EXT_DATE_COMMON_H + +#include "sieve-common.h" + +#include <time.h> + +/* + * Extension + */ + +extern const struct sieve_extension_def date_extension; + +bool ext_date_interpreter_load + (const struct sieve_extension *ext, const struct sieve_runtime_env *renv, + sieve_size_t *address ATTR_UNUSED); + +/* + * Tests + */ + +extern const struct sieve_command_def date_test; +extern const struct sieve_command_def currentdate_test; + +/* + * Operations + */ + +enum ext_date_opcode { + EXT_DATE_OPERATION_DATE, + EXT_DATE_OPERATION_CURRENTDATE +}; + +extern const struct sieve_operation_def date_operation; +extern const struct sieve_operation_def currentdate_operation; + +/* + * Zone string + */ + +bool ext_date_parse_timezone(const char *zone, int *zone_offset_r); + +/* + * Current date + */ + +time_t ext_date_get_current_date + (const struct sieve_runtime_env *renv, int *zone_offset_r); + +/* + * Date part + */ + +struct ext_date_part { + const char *identifier; + + const char *(*get_string)(struct tm *tm, int zone_offset); +}; + +const struct ext_date_part *ext_date_part_find(const char *part); + +const char *ext_date_part_extract + (const struct ext_date_part *dpart, struct tm *tm, int zone_offset); + +/* + * Date stringlist + */ + +enum ext_date_timezone_special { + EXT_DATE_TIMEZONE_LOCAL = 100, + EXT_DATE_TIMEZONE_ORIGINAL = 101 +}; + +struct sieve_stringlist *ext_date_stringlist_create +(const struct sieve_runtime_env *renv, struct sieve_stringlist *field_values, + int time_zone, const struct ext_date_part *dpart); + + + +#endif |