blob: 116af3e05e2c17d0f9fe65ef45680107147caaf2 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
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
|