Coverage Report

Created: 2026-06-09 06:49

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/pigeonhole/src/lib-sieve/sieve-common.h
Line
Count
Source
1
#ifndef SIEVE_COMMON_H
2
#define SIEVE_COMMON_H
3
4
#include "lib.h"
5
6
#include "sieve.h"
7
#ifndef SETTINGS_PLUGIN
8
#include "sieve-settings.h"
9
#endif
10
11
#include <sys/types.h>
12
13
/*
14
 * Types
15
 */
16
17
typedef size_t sieve_size_t;
18
typedef uint32_t sieve_offset_t;
19
typedef uint64_t sieve_number_t;
20
21
0
#define SIEVE_MAX_NUMBER ((sieve_number_t)-1)
22
#define SIEVE_PRI_NUMBER PRIu64
23
24
/*
25
 * Forward declarations
26
 */
27
28
/* sieve-error.h */
29
struct sieve_error_handler;
30
31
/* sieve-ast.h */
32
enum sieve_ast_argument_type;
33
34
struct sieve_ast;
35
struct sieve_ast_node;
36
struct sieve_ast_argument;
37
38
/* sieve-commands.h */
39
struct sieve_argument;
40
struct sieve_argument_def;
41
struct sieve_command;
42
struct sieve_command_def;
43
struct sieve_command_context;
44
struct sieve_command_registration;
45
46
/* sieve-stringlist.h */
47
struct sieve_stringlist;
48
49
/* sieve-code.h */
50
struct sieve_operation_extension;
51
52
/* sieve-lexer.h */
53
struct sieve_lexer;
54
55
/* sieve-parser.h */
56
struct sieve_parser;
57
58
/* sieve-validator.h */
59
struct sieve_validator;
60
61
/* sieve-generator.h */
62
struct sieve_jumplist;
63
struct sieve_generator;
64
struct sieve_codegen_env;
65
66
/* sieve-runtime.h */
67
struct sieve_runtime_env;
68
69
/* sieve-interpreter.h */
70
struct sieve_interpreter;
71
72
/* sieve-dump.h */
73
struct sieve_dumptime_env;
74
75
/* sieve-binary-dumper.h */
76
struct sieve_binary_dumper;
77
78
/* sieve-code-dumper.h */
79
struct sieve_code_dumper;
80
81
/* sieve-extension.h */
82
struct sieve_extension;
83
struct sieve_extension_def;
84
struct sieve_extension_objects;
85
86
/* sieve-code.h */
87
struct sieve_operand;
88
struct sieve_operand_def;
89
struct sieve_operand_class;
90
struct sieve_operation;
91
struct sieve_coded_stringlist;
92
93
/* sieve-binary.h */
94
struct sieve_binary;
95
struct sieve_binary_block;
96
struct sieve_binary_debug_writer;
97
struct sieve_binary_debug_reader;
98
99
/* sieve-execute.h */
100
struct sieve_execute;
101
102
/* sieve-objects.h */
103
struct sieve_object_def;
104
struct sieve_object;
105
106
/* sieve-comparator.h */
107
struct sieve_comparator;
108
109
/* sieve-match-types.h */
110
struct sieve_match_type;
111
112
/* sieve-match.h */
113
struct sieve_match_context;
114
115
/* sieve-address.h */
116
struct sieve_address_list;
117
118
/* sieve-address-parts.h */
119
struct sieve_address_part_def;
120
struct sieve_address_part;
121
122
/* sieve-result.h */
123
struct sieve_result;
124
struct sieve_side_effects_list;
125
struct sieve_result_print_env;
126
127
/* sieve-actions.h */
128
struct sieve_action_exec_env;
129
struct sieve_action;
130
struct sieve_action_def;
131
struct sieve_side_effect;
132
struct sieve_side_effect_def;
133
134
/* sieve-script.h */
135
struct sieve_script;
136
struct sieve_script_sequence;
137
138
/* sieve-storage.h */
139
struct sieve_storage_class_registry;
140
struct sieve_storage;
141
142
/* sieve-message.h */
143
struct sieve_message_context;
144
struct sieve_message_override;
145
struct sieve_message_override_def;
146
147
/* sieve-plugins.h */
148
struct sieve_plugin;
149
150
/* sieve.c */
151
struct sieve_ast *
152
sieve_parse(struct sieve_script *script, struct sieve_error_handler *ehandler,
153
      enum sieve_error *error_code_r);
154
bool sieve_validate(struct sieve_ast *ast, struct sieve_error_handler *ehandler,
155
        enum sieve_compile_flags flags,
156
        enum sieve_error *error_code_r);
157
158
/*
159
 * Parent category
160
 */
161
162
extern struct event_category event_category_sieve;
163
164
/*
165
 * Sieve engine instance
166
 */
167
168
struct sieve_instance {
169
  /* Main engine pool */
170
  pool_t pool;
171
172
  /* System environment */
173
  const char *hostname;
174
  const char *domainname;
175
  const char *base_dir;
176
  const char *temp_dir;
177
178
  /* User environment */
179
  const char *username;
180
  const char *home_dir;
181
182
  /* Flags */
183
  enum sieve_flag flags;
184
185
  /* Callbacks */
186
  const struct sieve_callbacks *callbacks;
187
  void *context;
188
189
  /* Logging, events, and debug */
190
  struct event *event;
191
  bool debug;
192
193
  /* Extension registry */
194
  struct sieve_extension_registry *ext_reg;
195
196
  /* Storage class registry */
197
  struct sieve_storage_class_registry *storage_reg;
198
199
  /* Plugin modules */
200
  struct sieve_plugin *plugins;
201
  enum sieve_env_location env_location;
202
  enum sieve_delivery_phase delivery_phase;
203
204
  /* Settings */
205
  const struct sieve_settings *set;
206
  const struct smtp_address *user_email_implicit;
207
};
208
209
/*
210
 * Errors
211
 */
212
213
void sieve_error_args_init(enum sieve_error **error_code_r,
214
         const char ***error_r);
215
216
void sieve_error_create_internal(enum sieve_error *error_code_r,
217
         const char **error_r);
218
void sieve_error_create_script_not_found(const char *script_name,
219
           enum sieve_error *error_code_r,
220
           const char **error_r);
221
222
/*
223
 * Script trace log
224
 */
225
226
void sieve_trace_log_write_line(struct sieve_trace_log *trace_log,
227
        const string_t *line);
228
229
/*
230
 * User e-mail address
231
 */
232
233
const struct smtp_address *sieve_get_user_email (struct sieve_instance *svinst);
234
235
/*
236
 * Postmaster address
237
 */
238
239
const struct message_address *
240
sieve_get_postmaster(const struct sieve_script_env *senv);
241
const struct smtp_address *
242
sieve_get_postmaster_smtp(const struct sieve_script_env *senv);
243
const char *sieve_get_postmaster_address(const struct sieve_script_env *senv);
244
245
/*
246
 * Home directory
247
 */
248
249
static inline const char *
250
sieve_environment_get_homedir(struct sieve_instance *svinst)
251
0
{
252
0
  const struct sieve_callbacks *callbacks = svinst->callbacks;
253
254
0
  if (svinst->home_dir != NULL)
255
0
    return svinst->home_dir;
256
0
  if (callbacks == NULL || callbacks->get_homedir == NULL)
257
0
    return NULL;
258
259
0
  return callbacks->get_homedir(svinst, svinst->context);
260
0
}
Unexecuted instantiation: testsuite-common.c:sieve_environment_get_homedir
Unexecuted instantiation: testsuite-settings.c:sieve_environment_get_homedir
Unexecuted instantiation: testsuite-objects.c:sieve_environment_get_homedir
Unexecuted instantiation: testsuite-substitutions.c:sieve_environment_get_homedir
Unexecuted instantiation: testsuite-variables.c:sieve_environment_get_homedir
Unexecuted instantiation: testsuite-arguments.c:sieve_environment_get_homedir
Unexecuted instantiation: testsuite-message.c:sieve_environment_get_homedir
Unexecuted instantiation: testsuite-log.c:sieve_environment_get_homedir
Unexecuted instantiation: testsuite-script.c:sieve_environment_get_homedir
Unexecuted instantiation: testsuite-result.c:sieve_environment_get_homedir
Unexecuted instantiation: testsuite-smtp.c:sieve_environment_get_homedir
Unexecuted instantiation: testsuite-mailstore.c:sieve_environment_get_homedir
Unexecuted instantiation: testsuite-binary.c:sieve_environment_get_homedir
Unexecuted instantiation: cmd-test.c:sieve_environment_get_homedir
Unexecuted instantiation: cmd-test-fail.c:sieve_environment_get_homedir
Unexecuted instantiation: cmd-test-config.c:sieve_environment_get_homedir
Unexecuted instantiation: cmd-test-set.c:sieve_environment_get_homedir
Unexecuted instantiation: cmd-test-result.c:sieve_environment_get_homedir
Unexecuted instantiation: cmd-test-message.c:sieve_environment_get_homedir
Unexecuted instantiation: cmd-test-mailbox.c:sieve_environment_get_homedir
Unexecuted instantiation: cmd-test-binary.c:sieve_environment_get_homedir
Unexecuted instantiation: cmd-test-imap-metadata.c:sieve_environment_get_homedir
Unexecuted instantiation: tst-test-script-compile.c:sieve_environment_get_homedir
Unexecuted instantiation: tst-test-script-run.c:sieve_environment_get_homedir
Unexecuted instantiation: tst-test-multiscript.c:sieve_environment_get_homedir
Unexecuted instantiation: tst-test-error.c:sieve_environment_get_homedir
Unexecuted instantiation: tst-test-result-action.c:sieve_environment_get_homedir
Unexecuted instantiation: tst-test-result-execute.c:sieve_environment_get_homedir
Unexecuted instantiation: ext-testsuite.c:sieve_environment_get_homedir
Unexecuted instantiation: fuzzsuite.c:sieve_environment_get_homedir
Unexecuted instantiation: sieve-message.c:sieve_environment_get_homedir
Unexecuted instantiation: sieve-script.c:sieve_environment_get_homedir
Unexecuted instantiation: sieve-storage.c:sieve_environment_get_homedir
Unexecuted instantiation: sieve-storage-settings.c:sieve_environment_get_homedir
Unexecuted instantiation: sieve-storage-sync.c:sieve_environment_get_homedir
Unexecuted instantiation: sieve-ast.c:sieve_environment_get_homedir
Unexecuted instantiation: sieve-binary.c:sieve_environment_get_homedir
Unexecuted instantiation: sieve-binary-file.c:sieve_environment_get_homedir
Unexecuted instantiation: sieve-binary-code.c:sieve_environment_get_homedir
Unexecuted instantiation: sieve-validator.c:sieve_environment_get_homedir
Unexecuted instantiation: sieve-generator.c:sieve_environment_get_homedir
Unexecuted instantiation: sieve-execute.c:sieve_environment_get_homedir
Unexecuted instantiation: sieve-interpreter.c:sieve_environment_get_homedir
Unexecuted instantiation: sieve-runtime-trace.c:sieve_environment_get_homedir
Unexecuted instantiation: sieve-code-dumper.c:sieve_environment_get_homedir
Unexecuted instantiation: sieve-binary-dumper.c:sieve_environment_get_homedir
Unexecuted instantiation: sieve-result.c:sieve_environment_get_homedir
Unexecuted instantiation: sieve-error.c:sieve_environment_get_homedir
Unexecuted instantiation: sieve-objects.c:sieve_environment_get_homedir
Unexecuted instantiation: sieve-comparators.c:sieve_environment_get_homedir
Unexecuted instantiation: sieve-match-types.c:sieve_environment_get_homedir
Unexecuted instantiation: sieve-address-parts.c:sieve_environment_get_homedir
Unexecuted instantiation: sieve-address-source.c:sieve_environment_get_homedir
Unexecuted instantiation: sieve-match.c:sieve_environment_get_homedir
Unexecuted instantiation: sieve-commands.c:sieve_environment_get_homedir
Unexecuted instantiation: sieve-code.c:sieve_environment_get_homedir
Unexecuted instantiation: sieve-actions.c:sieve_environment_get_homedir
Unexecuted instantiation: sieve-extensions.c:sieve_environment_get_homedir
Unexecuted instantiation: cmp-i-octet.c:sieve_environment_get_homedir
Unexecuted instantiation: cmp-i-ascii-casemap.c:sieve_environment_get_homedir
Unexecuted instantiation: cmp-i-unicode-casemap.c:sieve_environment_get_homedir
Unexecuted instantiation: mcht-is.c:sieve_environment_get_homedir
Unexecuted instantiation: mcht-contains.c:sieve_environment_get_homedir
Unexecuted instantiation: mcht-matches.c:sieve_environment_get_homedir
Unexecuted instantiation: tst-truefalse.c:sieve_environment_get_homedir
Unexecuted instantiation: tst-not.c:sieve_environment_get_homedir
Unexecuted instantiation: tst-anyof.c:sieve_environment_get_homedir
Unexecuted instantiation: tst-allof.c:sieve_environment_get_homedir
Unexecuted instantiation: tst-address.c:sieve_environment_get_homedir
Unexecuted instantiation: tst-header.c:sieve_environment_get_homedir
Unexecuted instantiation: tst-exists.c:sieve_environment_get_homedir
Unexecuted instantiation: tst-size.c:sieve_environment_get_homedir
Unexecuted instantiation: cmd-require.c:sieve_environment_get_homedir
Unexecuted instantiation: cmd-stop.c:sieve_environment_get_homedir
Unexecuted instantiation: cmd-if.c:sieve_environment_get_homedir
Unexecuted instantiation: cmd-keep.c:sieve_environment_get_homedir
Unexecuted instantiation: cmd-redirect.c:sieve_environment_get_homedir
Unexecuted instantiation: cmd-discard.c:sieve_environment_get_homedir
Unexecuted instantiation: ext-fileinto.c:sieve_environment_get_homedir
Unexecuted instantiation: ext-reject.c:sieve_environment_get_homedir
Unexecuted instantiation: ext-envelope.c:sieve_environment_get_homedir
Unexecuted instantiation: ext-encoded-character.c:sieve_environment_get_homedir
Unexecuted instantiation: sieve.c:sieve_environment_get_homedir
Unexecuted instantiation: sieve-data-script.c:sieve_environment_get_homedir
Unexecuted instantiation: sieve-data-storage.c:sieve_environment_get_homedir
Unexecuted instantiation: sieve-file-script.c:sieve_environment_get_homedir
Unexecuted instantiation: sieve-file-storage-active.c:sieve_environment_get_homedir
Unexecuted instantiation: sieve-file-storage-settings.c:sieve_environment_get_homedir
Unexecuted instantiation: sieve-file-storage.c:sieve_environment_get_homedir
Unexecuted instantiation: sieve-dict-storage.c:sieve_environment_get_homedir
Unexecuted instantiation: ext-vacation-seconds.c:sieve_environment_get_homedir
Unexecuted instantiation: ext-vacation.c:sieve_environment_get_homedir
Unexecuted instantiation: ext-subaddress.c:sieve_environment_get_homedir
Unexecuted instantiation: ext-cmp-i-ascii-numeric.c:sieve_environment_get_homedir
Unexecuted instantiation: ext-relational.c:sieve_environment_get_homedir
Unexecuted instantiation: mcht-count.c:sieve_environment_get_homedir
Unexecuted instantiation: mcht-value.c:sieve_environment_get_homedir
Unexecuted instantiation: ext-regex.c:sieve_environment_get_homedir
Unexecuted instantiation: mcht-regex.c:sieve_environment_get_homedir
Unexecuted instantiation: ext-copy.c:sieve_environment_get_homedir
Unexecuted instantiation: ext-imap4flags.c:sieve_environment_get_homedir
Unexecuted instantiation: tag-flags.c:sieve_environment_get_homedir
Unexecuted instantiation: tst-hasflag.c:sieve_environment_get_homedir
Unexecuted instantiation: ext-include-settings.c:sieve_environment_get_homedir
Unexecuted instantiation: ext-include.c:sieve_environment_get_homedir
Unexecuted instantiation: ext-body.c:sieve_environment_get_homedir
Unexecuted instantiation: tst-body.c:sieve_environment_get_homedir
Unexecuted instantiation: ext-variables-namespaces.c:sieve_environment_get_homedir
Unexecuted instantiation: ext-variables.c:sieve_environment_get_homedir
Unexecuted instantiation: tst-string.c:sieve_environment_get_homedir
Unexecuted instantiation: ext-enotify.c:sieve_environment_get_homedir
Unexecuted instantiation: tst-notify-method-capability.c:sieve_environment_get_homedir
Unexecuted instantiation: tst-valid-notify-method.c:sieve_environment_get_homedir
Unexecuted instantiation: vmodf-encodeurl.c:sieve_environment_get_homedir
Unexecuted instantiation: ext-environment.c:sieve_environment_get_homedir
Unexecuted instantiation: tst-environment.c:sieve_environment_get_homedir
Unexecuted instantiation: ext-mailbox.c:sieve_environment_get_homedir
Unexecuted instantiation: tag-mailbox-create.c:sieve_environment_get_homedir
Unexecuted instantiation: tst-mailboxexists.c:sieve_environment_get_homedir
Unexecuted instantiation: ext-date.c:sieve_environment_get_homedir
Unexecuted instantiation: tst-date.c:sieve_environment_get_homedir
Unexecuted instantiation: ext-spamvirustest.c:sieve_environment_get_homedir
Unexecuted instantiation: tst-spamvirustest.c:sieve_environment_get_homedir
Unexecuted instantiation: ext-ihave.c:sieve_environment_get_homedir
Unexecuted instantiation: tst-ihave.c:sieve_environment_get_homedir
Unexecuted instantiation: ext-editheader.c:sieve_environment_get_homedir
Unexecuted instantiation: ext-duplicate.c:sieve_environment_get_homedir
Unexecuted instantiation: tst-duplicate.c:sieve_environment_get_homedir
Unexecuted instantiation: ext-index.c:sieve_environment_get_homedir
Unexecuted instantiation: tag-index.c:sieve_environment_get_homedir
Unexecuted instantiation: ext-metadata.c:sieve_environment_get_homedir
Unexecuted instantiation: tst-metadata.c:sieve_environment_get_homedir
Unexecuted instantiation: tst-metadataexists.c:sieve_environment_get_homedir
Unexecuted instantiation: ext-extracttext.c:sieve_environment_get_homedir
Unexecuted instantiation: ext-foreverypart.c:sieve_environment_get_homedir
Unexecuted instantiation: ext-mime.c:sieve_environment_get_homedir
Unexecuted instantiation: tag-mime.c:sieve_environment_get_homedir
Unexecuted instantiation: ext-special-use.c:sieve_environment_get_homedir
Unexecuted instantiation: tag-specialuse.c:sieve_environment_get_homedir
Unexecuted instantiation: tst-specialuse-exists.c:sieve_environment_get_homedir
Unexecuted instantiation: ext-extlists-settings.c:sieve_environment_get_homedir
Unexecuted instantiation: ext-extlists.c:sieve_environment_get_homedir
Unexecuted instantiation: mcht-list.c:sieve_environment_get_homedir
Unexecuted instantiation: tag-redirect-list.c:sieve_environment_get_homedir
Unexecuted instantiation: tst-valid-ext-list.c:sieve_environment_get_homedir
Unexecuted instantiation: ext-debug.c:sieve_environment_get_homedir
Unexecuted instantiation: ext-vnd-environment.c:sieve_environment_get_homedir
Unexecuted instantiation: ext-vnd-report.c:sieve_environment_get_homedir
Unexecuted instantiation: sieve-smtp.c:sieve_environment_get_homedir
Unexecuted instantiation: sieve-binary-debug.c:sieve_environment_get_homedir
Unexecuted instantiation: sieve-parser.c:sieve_environment_get_homedir
Unexecuted instantiation: sieve-address.c:sieve_environment_get_homedir
Unexecuted instantiation: sieve-stringlist.c:sieve_environment_get_homedir
Unexecuted instantiation: sieve-plugins.c:sieve_environment_get_homedir
Unexecuted instantiation: sieve-file-script-sequence.c:sieve_environment_get_homedir
Unexecuted instantiation: sieve-file-storage-list.c:sieve_environment_get_homedir
Unexecuted instantiation: sieve-file-storage-quota.c:sieve_environment_get_homedir
Unexecuted instantiation: sieve-file-storage-save.c:sieve_environment_get_homedir
Unexecuted instantiation: sieve-dict-script.c:sieve_environment_get_homedir
Unexecuted instantiation: cmd-vacation.c:sieve_environment_get_homedir
Unexecuted instantiation: ext-vacation-common.c:sieve_environment_get_homedir
Unexecuted instantiation: ext-relational-common.c:sieve_environment_get_homedir
Unexecuted instantiation: ext-regex-common.c:sieve_environment_get_homedir
Unexecuted instantiation: cmd-flag.c:sieve_environment_get_homedir
Unexecuted instantiation: ext-imap4flags-common.c:sieve_environment_get_homedir
Unexecuted instantiation: cmd-global.c:sieve_environment_get_homedir
Unexecuted instantiation: cmd-include.c:sieve_environment_get_homedir
Unexecuted instantiation: cmd-return.c:sieve_environment_get_homedir
Unexecuted instantiation: ext-include-binary.c:sieve_environment_get_homedir
Unexecuted instantiation: ext-include-common.c:sieve_environment_get_homedir
Unexecuted instantiation: ext-include-variables.c:sieve_environment_get_homedir
Unexecuted instantiation: ext-body-common.c:sieve_environment_get_homedir
Unexecuted instantiation: cmd-set.c:sieve_environment_get_homedir
Unexecuted instantiation: ext-variables-arguments.c:sieve_environment_get_homedir
Unexecuted instantiation: ext-variables-common.c:sieve_environment_get_homedir
Unexecuted instantiation: ext-variables-dump.c:sieve_environment_get_homedir
Unexecuted instantiation: ext-variables-modifiers.c:sieve_environment_get_homedir
Unexecuted instantiation: ext-variables-name.c:sieve_environment_get_homedir
Unexecuted instantiation: ext-variables-operands.c:sieve_environment_get_homedir
Unexecuted instantiation: cmd-notify.c:sieve_environment_get_homedir
Unexecuted instantiation: ext-enotify-common.c:sieve_environment_get_homedir
Unexecuted instantiation: ntfy-mailto.c:sieve_environment_get_homedir
Unexecuted instantiation: uri-mailto.c:sieve_environment_get_homedir
Unexecuted instantiation: ext-environment-common.c:sieve_environment_get_homedir
Unexecuted instantiation: ext-date-common.c:sieve_environment_get_homedir
Unexecuted instantiation: ext-spamvirustest-common.c:sieve_environment_get_homedir
Unexecuted instantiation: cmd-error.c:sieve_environment_get_homedir
Unexecuted instantiation: ext-ihave-binary.c:sieve_environment_get_homedir
Unexecuted instantiation: ext-ihave-common.c:sieve_environment_get_homedir
Unexecuted instantiation: cmd-addheader.c:sieve_environment_get_homedir
Unexecuted instantiation: cmd-deleteheader.c:sieve_environment_get_homedir
Unexecuted instantiation: ext-editheader-common.c:sieve_environment_get_homedir
Unexecuted instantiation: ext-duplicate-common.c:sieve_environment_get_homedir
Unexecuted instantiation: cmd-break.c:sieve_environment_get_homedir
Unexecuted instantiation: cmd-extracttext.c:sieve_environment_get_homedir
Unexecuted instantiation: cmd-foreverypart.c:sieve_environment_get_homedir
Unexecuted instantiation: ext-mime-common.c:sieve_environment_get_homedir
Unexecuted instantiation: ext-special-use-common.c:sieve_environment_get_homedir
Unexecuted instantiation: ext-extlists-common.c:sieve_environment_get_homedir
Unexecuted instantiation: cmd-debug-log.c:sieve_environment_get_homedir
Unexecuted instantiation: ext-vnd-environment-items.c:sieve_environment_get_homedir
Unexecuted instantiation: ext-vnd-environment-variables.c:sieve_environment_get_homedir
Unexecuted instantiation: cmd-report.c:sieve_environment_get_homedir
Unexecuted instantiation: ext-vnd-report-common.c:sieve_environment_get_homedir
Unexecuted instantiation: sieve-lexer.c:sieve_environment_get_homedir
Unexecuted instantiation: sieve-tool.c:sieve_environment_get_homedir
261
262
#endif