/src/pigeonhole/src/lib-sieve/sieve-binary.h
Line | Count | Source |
1 | | #ifndef SIEVE_BINARY_H |
2 | | #define SIEVE_BINARY_H |
3 | | |
4 | | #include "lib.h" |
5 | | |
6 | | #include "sieve-common.h" |
7 | | |
8 | | /* |
9 | | * Config |
10 | | */ |
11 | | |
12 | 0 | #define SIEVE_BINARY_VERSION_MAJOR 3 |
13 | 0 | #define SIEVE_BINARY_VERSION_MINOR 0 |
14 | | |
15 | 0 | #define SIEVE_BINARY_BASE_HEADER_SIZE 20 |
16 | | |
17 | | /* |
18 | | * Binary object |
19 | | */ |
20 | | |
21 | | struct sieve_binary; |
22 | | |
23 | | struct sieve_binary *sieve_binary_create_new(struct sieve_script *script); |
24 | | void sieve_binary_ref(struct sieve_binary *sbin); |
25 | | void sieve_binary_unref(struct sieve_binary **_sbin); |
26 | | |
27 | | void sieve_binary_close(struct sieve_binary **_sbin); |
28 | | |
29 | | /* |
30 | | * Resource usage |
31 | | */ |
32 | | |
33 | | void sieve_binary_get_resource_usage(struct sieve_binary *sbin, |
34 | | struct sieve_resource_usage *rusage_r); |
35 | | bool sieve_binary_record_resource_usage( |
36 | | struct sieve_binary *sbin, const struct sieve_resource_usage *rusage) |
37 | | ATTR_NULL(1); |
38 | | void sieve_binary_set_resource_usage(struct sieve_binary *sbin, |
39 | | const struct sieve_resource_usage *rusage); |
40 | | /* |
41 | | * Accessors |
42 | | */ |
43 | | |
44 | | pool_t sieve_binary_pool(struct sieve_binary *sbin); |
45 | | struct sieve_instance *sieve_binary_svinst(struct sieve_binary *sbin); |
46 | | const char *sieve_binary_path(struct sieve_binary *sbin); |
47 | | struct sieve_script *sieve_binary_script(struct sieve_binary *sbin); |
48 | | |
49 | | time_t sieve_binary_mtime(struct sieve_binary *sbin); |
50 | | const struct stat *sieve_binary_stat(struct sieve_binary *sbin); |
51 | | |
52 | | const char *sieve_binary_script_name(struct sieve_binary *sbin); |
53 | | const char *sieve_binary_script_location(struct sieve_binary *sbin); |
54 | | |
55 | | const char *sieve_binary_source(struct sieve_binary *sbin); |
56 | | bool sieve_binary_loaded(struct sieve_binary *sbin); |
57 | | bool sieve_binary_saved(struct sieve_binary *sbin); |
58 | | |
59 | | /* |
60 | | * Utility |
61 | | */ |
62 | | |
63 | | const char *sieve_binfile_from_name(const char *name); |
64 | | |
65 | | /* |
66 | | * Activation after code generation |
67 | | */ |
68 | | |
69 | | void sieve_binary_activate(struct sieve_binary *sbin); |
70 | | |
71 | | /* |
72 | | * Saving the binary |
73 | | */ |
74 | | |
75 | | int sieve_binary_save(struct sieve_binary *sbin, const char *path, bool update, |
76 | | mode_t save_mode, enum sieve_error *error_code_r); |
77 | | |
78 | | /* |
79 | | * Loading the binary |
80 | | */ |
81 | | |
82 | | int sieve_binary_open(struct sieve_instance *svinst, const char *path, |
83 | | struct sieve_script *script, struct sieve_binary **sbin_r, |
84 | | enum sieve_error *error_code_r); |
85 | | bool sieve_binary_up_to_date(struct sieve_binary *sbin, |
86 | | enum sieve_compile_flags cpflags); |
87 | | |
88 | | int sieve_binary_check_executable(struct sieve_binary *sbin, |
89 | | enum sieve_error *error_code_r, |
90 | | const char **client_error_r); |
91 | | |
92 | | /* |
93 | | * Block management |
94 | | */ |
95 | | |
96 | | enum sieve_binary_system_block { |
97 | | SBIN_SYSBLOCK_SCRIPT_DATA, |
98 | | SBIN_SYSBLOCK_EXTENSIONS, |
99 | | SBIN_SYSBLOCK_MAIN_PROGRAM, |
100 | | SBIN_SYSBLOCK_LAST |
101 | | }; |
102 | | |
103 | | struct sieve_binary_block *sieve_binary_block_create(struct sieve_binary *sbin); |
104 | | |
105 | | unsigned int sieve_binary_block_count(struct sieve_binary *sbin); |
106 | | |
107 | | struct sieve_binary_block * |
108 | | sieve_binary_block_get(struct sieve_binary *sbin, unsigned int id); |
109 | | |
110 | | void sieve_binary_block_clear(struct sieve_binary_block *sblock); |
111 | | |
112 | | size_t sieve_binary_block_get_size(const struct sieve_binary_block *sblock); |
113 | | |
114 | | struct sieve_binary * |
115 | | sieve_binary_block_get_binary(const struct sieve_binary_block *sblock); |
116 | | |
117 | | unsigned int sieve_binary_block_get_id(const struct sieve_binary_block *sblock); |
118 | | |
119 | | /* |
120 | | * Extension support |
121 | | */ |
122 | | |
123 | | struct sieve_binary_extension { |
124 | | const struct sieve_extension_def *extension; |
125 | | |
126 | | bool (*binary_pre_save)(const struct sieve_extension *ext, |
127 | | struct sieve_binary *sbin, void *context, |
128 | | enum sieve_error *error_code_r); |
129 | | bool (*binary_post_save)(const struct sieve_extension *ext, |
130 | | struct sieve_binary *sbin, void *context, |
131 | | enum sieve_error *error_code_r); |
132 | | bool (*binary_open)(const struct sieve_extension *ext, |
133 | | struct sieve_binary *sbin, void *context); |
134 | | |
135 | | void (*binary_free)(const struct sieve_extension *ext, |
136 | | struct sieve_binary *sbin, void *context); |
137 | | |
138 | | bool (*binary_up_to_date)(const struct sieve_extension *ext, |
139 | | struct sieve_binary *sbin, void *context, |
140 | | enum sieve_compile_flags cpflags); |
141 | | }; |
142 | | |
143 | | void sieve_binary_extension_set_context(struct sieve_binary *sbin, |
144 | | const struct sieve_extension *ext, |
145 | | void *context); |
146 | | const void * |
147 | | sieve_binary_extension_get_context(struct sieve_binary *sbin, |
148 | | const struct sieve_extension *ext); |
149 | | |
150 | | void sieve_binary_extension_set(struct sieve_binary *sbin, |
151 | | const struct sieve_extension *ext, |
152 | | const struct sieve_binary_extension *bext, |
153 | | void *context); |
154 | | |
155 | | struct sieve_binary_block * |
156 | | sieve_binary_extension_create_block(struct sieve_binary *sbin, |
157 | | const struct sieve_extension *ext); |
158 | | struct sieve_binary_block * |
159 | | sieve_binary_extension_get_block(struct sieve_binary *sbin, |
160 | | const struct sieve_extension *ext); |
161 | | |
162 | | int sieve_binary_extension_link(struct sieve_binary *sbin, |
163 | | const struct sieve_extension *ext); |
164 | | const struct sieve_extension * |
165 | | sieve_binary_extension_get_by_index(struct sieve_binary *sbin, int index); |
166 | | int sieve_binary_extension_get_index(struct sieve_binary *sbin, |
167 | | const struct sieve_extension *ext); |
168 | | int sieve_binary_extensions_count(struct sieve_binary *sbin); |
169 | | |
170 | | /* |
171 | | * Code emission |
172 | | */ |
173 | | |
174 | | /* Low-level emission functions */ |
175 | | |
176 | | sieve_size_t sieve_binary_emit_data(struct sieve_binary_block *sblock, |
177 | | const void *data, sieve_size_t size); |
178 | | sieve_size_t sieve_binary_emit_byte(struct sieve_binary_block *sblock, |
179 | | uint8_t byte); |
180 | | void sieve_binary_update_data(struct sieve_binary_block *sblock, |
181 | | sieve_size_t address, const void *data, |
182 | | sieve_size_t size); |
183 | | |
184 | | /* Offset emission functions */ |
185 | | |
186 | | sieve_size_t sieve_binary_emit_offset(struct sieve_binary_block *sblock, |
187 | | sieve_offset_t offset); |
188 | | void sieve_binary_resolve_offset(struct sieve_binary_block *sblock, |
189 | | sieve_size_t address); |
190 | | |
191 | | /* Literal emission functions */ |
192 | | |
193 | | sieve_size_t sieve_binary_emit_integer(struct sieve_binary_block *sblock, |
194 | | sieve_number_t integer); |
195 | | sieve_size_t sieve_binary_emit_string(struct sieve_binary_block *sblock, |
196 | | const string_t *str); |
197 | | sieve_size_t sieve_binary_emit_cstring(struct sieve_binary_block *sblock, |
198 | | const char *str); |
199 | | |
200 | | static inline sieve_size_t |
201 | | sieve_binary_emit_unsigned(struct sieve_binary_block *sblock, |
202 | | unsigned int count) |
203 | 0 | { |
204 | 0 | return sieve_binary_emit_integer(sblock, count); |
205 | 0 | } Unexecuted instantiation: testsuite-common.c:sieve_binary_emit_unsigned Unexecuted instantiation: testsuite-objects.c:sieve_binary_emit_unsigned Unexecuted instantiation: testsuite-substitutions.c:sieve_binary_emit_unsigned Unexecuted instantiation: testsuite-variables.c:sieve_binary_emit_unsigned Unexecuted instantiation: testsuite-script.c:sieve_binary_emit_unsigned Unexecuted instantiation: testsuite-binary.c:sieve_binary_emit_unsigned Unexecuted instantiation: cmd-test.c:sieve_binary_emit_unsigned Unexecuted instantiation: cmd-test-fail.c:sieve_binary_emit_unsigned Unexecuted instantiation: cmd-test-config.c:sieve_binary_emit_unsigned Unexecuted instantiation: cmd-test-result.c:sieve_binary_emit_unsigned Unexecuted instantiation: cmd-test-message.c:sieve_binary_emit_unsigned Unexecuted instantiation: cmd-test-mailbox.c:sieve_binary_emit_unsigned Unexecuted instantiation: cmd-test-binary.c:sieve_binary_emit_unsigned Unexecuted instantiation: cmd-test-imap-metadata.c:sieve_binary_emit_unsigned Unexecuted instantiation: tst-test-script-compile.c:sieve_binary_emit_unsigned Unexecuted instantiation: tst-test-script-run.c:sieve_binary_emit_unsigned Unexecuted instantiation: tst-test-multiscript.c:sieve_binary_emit_unsigned Unexecuted instantiation: tst-test-error.c:sieve_binary_emit_unsigned Unexecuted instantiation: tst-test-result-action.c:sieve_binary_emit_unsigned Unexecuted instantiation: tst-test-result-execute.c:sieve_binary_emit_unsigned Unexecuted instantiation: fuzzsuite.c:sieve_binary_emit_unsigned Unexecuted instantiation: sieve-script.c:sieve_binary_emit_unsigned Unexecuted instantiation: sieve-binary.c:sieve_binary_emit_unsigned Unexecuted instantiation: sieve-binary-file.c:sieve_binary_emit_unsigned Unexecuted instantiation: sieve-binary-code.c:sieve_binary_emit_unsigned Unexecuted instantiation: sieve-generator.c:sieve_binary_emit_unsigned Unexecuted instantiation: sieve-interpreter.c:sieve_binary_emit_unsigned Unexecuted instantiation: sieve-runtime-trace.c:sieve_binary_emit_unsigned Unexecuted instantiation: sieve-code-dumper.c:sieve_binary_emit_unsigned Unexecuted instantiation: sieve-binary-dumper.c:sieve_binary_emit_unsigned Unexecuted instantiation: sieve-objects.c:sieve_binary_emit_unsigned Unexecuted instantiation: sieve-comparators.c:sieve_binary_emit_unsigned Unexecuted instantiation: sieve-match-types.c:sieve_binary_emit_unsigned Unexecuted instantiation: sieve-address-parts.c:sieve_binary_emit_unsigned Unexecuted instantiation: sieve-match.c:sieve_binary_emit_unsigned Unexecuted instantiation: sieve-commands.c:sieve_binary_emit_unsigned Unexecuted instantiation: sieve-code.c:sieve_binary_emit_unsigned Unexecuted instantiation: sieve-actions.c:sieve_binary_emit_unsigned Unexecuted instantiation: tst-truefalse.c:sieve_binary_emit_unsigned Unexecuted instantiation: tst-anyof.c:sieve_binary_emit_unsigned Unexecuted instantiation: tst-allof.c:sieve_binary_emit_unsigned Unexecuted instantiation: cmd-if.c:sieve_binary_emit_unsigned Unexecuted instantiation: ext-fileinto.c:sieve_binary_emit_unsigned Unexecuted instantiation: ext-reject.c:sieve_binary_emit_unsigned Unexecuted instantiation: sieve.c:sieve_binary_emit_unsigned Unexecuted instantiation: sieve-data-script.c:sieve_binary_emit_unsigned Unexecuted instantiation: sieve-file-script.c:sieve_binary_emit_unsigned Unexecuted instantiation: ext-include.c:sieve_binary_emit_unsigned Unexecuted instantiation: ext-body.c:sieve_binary_emit_unsigned Unexecuted instantiation: tst-body.c:sieve_binary_emit_unsigned Unexecuted instantiation: ext-variables-namespaces.c:sieve_binary_emit_unsigned Unexecuted instantiation: ext-variables.c:sieve_binary_emit_unsigned Unexecuted instantiation: ext-environment.c:sieve_binary_emit_unsigned Unexecuted instantiation: ext-date.c:sieve_binary_emit_unsigned Unexecuted instantiation: ext-ihave.c:sieve_binary_emit_unsigned Unexecuted instantiation: ext-editheader.c:sieve_binary_emit_unsigned Unexecuted instantiation: ext-duplicate.c:sieve_binary_emit_unsigned Unexecuted instantiation: ext-index.c:sieve_binary_emit_unsigned Unexecuted instantiation: tag-index.c:sieve_binary_emit_unsigned Unexecuted instantiation: ext-metadata.c:sieve_binary_emit_unsigned Unexecuted instantiation: tag-mime.c:sieve_binary_emit_unsigned Unexecuted instantiation: ext-debug.c:sieve_binary_emit_unsigned Unexecuted instantiation: ext-vnd-environment.c:sieve_binary_emit_unsigned Unexecuted instantiation: sieve-binary-debug.c:sieve_binary_emit_unsigned Unexecuted instantiation: sieve-dict-script.c:sieve_binary_emit_unsigned Unexecuted instantiation: cmd-global.c:sieve_binary_emit_unsigned Unexecuted instantiation: cmd-include.c:sieve_binary_emit_unsigned Unexecuted instantiation: ext-include-binary.c:sieve_binary_emit_unsigned Unexecuted instantiation: ext-include-common.c:sieve_binary_emit_unsigned Unexecuted instantiation: ext-include-variables.c:sieve_binary_emit_unsigned Unexecuted instantiation: cmd-set.c:sieve_binary_emit_unsigned Unexecuted instantiation: ext-variables-common.c:sieve_binary_emit_unsigned Unexecuted instantiation: ext-variables-dump.c:sieve_binary_emit_unsigned Unexecuted instantiation: ext-variables-modifiers.c:sieve_binary_emit_unsigned Unexecuted instantiation: ext-variables-operands.c:sieve_binary_emit_unsigned Unexecuted instantiation: cmd-error.c:sieve_binary_emit_unsigned Unexecuted instantiation: ext-ihave-binary.c:sieve_binary_emit_unsigned Unexecuted instantiation: cmd-addheader.c:sieve_binary_emit_unsigned Unexecuted instantiation: cmd-break.c:sieve_binary_emit_unsigned Unexecuted instantiation: cmd-extracttext.c:sieve_binary_emit_unsigned Unexecuted instantiation: cmd-foreverypart.c:sieve_binary_emit_unsigned Unexecuted instantiation: cmd-debug-log.c:sieve_binary_emit_unsigned Unexecuted instantiation: ext-vnd-environment-items.c:sieve_binary_emit_unsigned Unexecuted instantiation: ext-vnd-environment-variables.c:sieve_binary_emit_unsigned |
206 | | |
207 | | /* Extension emission functions */ |
208 | | |
209 | | sieve_size_t sieve_binary_emit_extension(struct sieve_binary_block *sblock, |
210 | | const struct sieve_extension *ext, |
211 | | unsigned int offset); |
212 | | void sieve_binary_emit_extension_object( |
213 | | struct sieve_binary_block *sblock, |
214 | | const struct sieve_extension_objects *objs, unsigned int code); |
215 | | |
216 | | /* |
217 | | * Code retrieval |
218 | | */ |
219 | | |
220 | | /* Literals */ |
221 | | |
222 | | bool sieve_binary_read_byte(struct sieve_binary_block *sblock, |
223 | | sieve_size_t *address, unsigned int *byte_r) |
224 | | ATTR_NULL(3); |
225 | | bool sieve_binary_read_code(struct sieve_binary_block *sblock, |
226 | | sieve_size_t *address, signed int *code_r) |
227 | | ATTR_NULL(3); |
228 | | bool sieve_binary_read_offset(struct sieve_binary_block *sblock, |
229 | | sieve_size_t *address, sieve_offset_t *offset_r) |
230 | | ATTR_NULL(3); |
231 | | bool sieve_binary_read_integer(struct sieve_binary_block *sblock, |
232 | | sieve_size_t *address, sieve_number_t *int_r) |
233 | | ATTR_NULL(3); |
234 | | bool sieve_binary_read_string(struct sieve_binary_block *sblock, |
235 | | sieve_size_t *address, string_t **str_r) |
236 | | ATTR_NULL(3); |
237 | | |
238 | | static inline bool ATTR_NULL(3) |
239 | | sieve_binary_read_unsigned(struct sieve_binary_block *sblock, |
240 | | sieve_size_t *address, unsigned int *count_r) |
241 | 0 | { |
242 | 0 | sieve_number_t integer = 0; |
243 | |
|
244 | 0 | if (!sieve_binary_read_integer(sblock, address, &integer)) |
245 | 0 | return FALSE; |
246 | 0 | if (count_r != NULL) |
247 | 0 | *count_r = integer; |
248 | 0 | return TRUE; |
249 | 0 | } Unexecuted instantiation: testsuite-common.c:sieve_binary_read_unsigned Unexecuted instantiation: testsuite-objects.c:sieve_binary_read_unsigned Unexecuted instantiation: testsuite-substitutions.c:sieve_binary_read_unsigned Unexecuted instantiation: testsuite-variables.c:sieve_binary_read_unsigned Unexecuted instantiation: testsuite-script.c:sieve_binary_read_unsigned Unexecuted instantiation: testsuite-binary.c:sieve_binary_read_unsigned Unexecuted instantiation: cmd-test.c:sieve_binary_read_unsigned Unexecuted instantiation: cmd-test-fail.c:sieve_binary_read_unsigned Unexecuted instantiation: cmd-test-config.c:sieve_binary_read_unsigned Unexecuted instantiation: cmd-test-result.c:sieve_binary_read_unsigned Unexecuted instantiation: cmd-test-message.c:sieve_binary_read_unsigned Unexecuted instantiation: cmd-test-mailbox.c:sieve_binary_read_unsigned Unexecuted instantiation: cmd-test-binary.c:sieve_binary_read_unsigned Unexecuted instantiation: cmd-test-imap-metadata.c:sieve_binary_read_unsigned Unexecuted instantiation: tst-test-script-compile.c:sieve_binary_read_unsigned Unexecuted instantiation: tst-test-script-run.c:sieve_binary_read_unsigned Unexecuted instantiation: tst-test-multiscript.c:sieve_binary_read_unsigned Unexecuted instantiation: tst-test-error.c:sieve_binary_read_unsigned Unexecuted instantiation: tst-test-result-action.c:sieve_binary_read_unsigned Unexecuted instantiation: tst-test-result-execute.c:sieve_binary_read_unsigned Unexecuted instantiation: fuzzsuite.c:sieve_binary_read_unsigned Unexecuted instantiation: sieve-script.c:sieve_binary_read_unsigned Unexecuted instantiation: sieve-binary.c:sieve_binary_read_unsigned Unexecuted instantiation: sieve-binary-file.c:sieve_binary_read_unsigned Unexecuted instantiation: sieve-binary-code.c:sieve_binary_read_unsigned Unexecuted instantiation: sieve-generator.c:sieve_binary_read_unsigned Unexecuted instantiation: sieve-interpreter.c:sieve_binary_read_unsigned Unexecuted instantiation: sieve-runtime-trace.c:sieve_binary_read_unsigned Unexecuted instantiation: sieve-code-dumper.c:sieve_binary_read_unsigned Unexecuted instantiation: sieve-binary-dumper.c:sieve_binary_read_unsigned Unexecuted instantiation: sieve-objects.c:sieve_binary_read_unsigned Unexecuted instantiation: sieve-comparators.c:sieve_binary_read_unsigned Unexecuted instantiation: sieve-match-types.c:sieve_binary_read_unsigned Unexecuted instantiation: sieve-address-parts.c:sieve_binary_read_unsigned Unexecuted instantiation: sieve-match.c:sieve_binary_read_unsigned Unexecuted instantiation: sieve-commands.c:sieve_binary_read_unsigned Unexecuted instantiation: sieve-code.c:sieve_binary_read_unsigned Unexecuted instantiation: sieve-actions.c:sieve_binary_read_unsigned Unexecuted instantiation: tst-truefalse.c:sieve_binary_read_unsigned Unexecuted instantiation: tst-anyof.c:sieve_binary_read_unsigned Unexecuted instantiation: tst-allof.c:sieve_binary_read_unsigned Unexecuted instantiation: cmd-if.c:sieve_binary_read_unsigned Unexecuted instantiation: ext-fileinto.c:sieve_binary_read_unsigned Unexecuted instantiation: ext-reject.c:sieve_binary_read_unsigned Unexecuted instantiation: sieve.c:sieve_binary_read_unsigned Unexecuted instantiation: sieve-data-script.c:sieve_binary_read_unsigned Unexecuted instantiation: sieve-file-script.c:sieve_binary_read_unsigned Unexecuted instantiation: ext-include.c:sieve_binary_read_unsigned Unexecuted instantiation: ext-body.c:sieve_binary_read_unsigned Unexecuted instantiation: tst-body.c:sieve_binary_read_unsigned Unexecuted instantiation: ext-variables-namespaces.c:sieve_binary_read_unsigned Unexecuted instantiation: ext-variables.c:sieve_binary_read_unsigned Unexecuted instantiation: ext-environment.c:sieve_binary_read_unsigned Unexecuted instantiation: ext-date.c:sieve_binary_read_unsigned Unexecuted instantiation: ext-ihave.c:sieve_binary_read_unsigned Unexecuted instantiation: ext-editheader.c:sieve_binary_read_unsigned Unexecuted instantiation: ext-duplicate.c:sieve_binary_read_unsigned Unexecuted instantiation: ext-index.c:sieve_binary_read_unsigned Unexecuted instantiation: tag-index.c:sieve_binary_read_unsigned Unexecuted instantiation: ext-metadata.c:sieve_binary_read_unsigned Unexecuted instantiation: tag-mime.c:sieve_binary_read_unsigned Unexecuted instantiation: ext-debug.c:sieve_binary_read_unsigned Unexecuted instantiation: ext-vnd-environment.c:sieve_binary_read_unsigned Unexecuted instantiation: sieve-binary-debug.c:sieve_binary_read_unsigned Unexecuted instantiation: sieve-dict-script.c:sieve_binary_read_unsigned Unexecuted instantiation: cmd-global.c:sieve_binary_read_unsigned Unexecuted instantiation: cmd-include.c:sieve_binary_read_unsigned Unexecuted instantiation: ext-include-binary.c:sieve_binary_read_unsigned Unexecuted instantiation: ext-include-common.c:sieve_binary_read_unsigned Unexecuted instantiation: ext-include-variables.c:sieve_binary_read_unsigned Unexecuted instantiation: cmd-set.c:sieve_binary_read_unsigned Unexecuted instantiation: ext-variables-common.c:sieve_binary_read_unsigned Unexecuted instantiation: ext-variables-dump.c:sieve_binary_read_unsigned Unexecuted instantiation: ext-variables-modifiers.c:sieve_binary_read_unsigned Unexecuted instantiation: ext-variables-operands.c:sieve_binary_read_unsigned Unexecuted instantiation: cmd-error.c:sieve_binary_read_unsigned Unexecuted instantiation: ext-ihave-binary.c:sieve_binary_read_unsigned Unexecuted instantiation: cmd-addheader.c:sieve_binary_read_unsigned Unexecuted instantiation: cmd-break.c:sieve_binary_read_unsigned Unexecuted instantiation: cmd-extracttext.c:sieve_binary_read_unsigned Unexecuted instantiation: cmd-foreverypart.c:sieve_binary_read_unsigned Unexecuted instantiation: cmd-debug-log.c:sieve_binary_read_unsigned Unexecuted instantiation: ext-vnd-environment-items.c:sieve_binary_read_unsigned Unexecuted instantiation: ext-vnd-environment-variables.c:sieve_binary_read_unsigned |
250 | | |
251 | | /* Extensions */ |
252 | | |
253 | | bool sieve_binary_read_extension(struct sieve_binary_block *sblock, |
254 | | sieve_size_t *address, unsigned int *offset_r, |
255 | | const struct sieve_extension **ext_r); |
256 | | const void * |
257 | | sieve_binary_read_extension_object(struct sieve_binary_block *sblock, |
258 | | sieve_size_t *address, |
259 | | const struct sieve_extension_objects *objs); |
260 | | |
261 | | /* |
262 | | * Debug info |
263 | | */ |
264 | | |
265 | | /* Writer */ |
266 | | |
267 | | struct sieve_binary_debug_writer; |
268 | | |
269 | | struct sieve_binary_debug_writer * |
270 | | sieve_binary_debug_writer_init(struct sieve_binary_block *sblock); |
271 | | void sieve_binary_debug_writer_deinit( |
272 | | struct sieve_binary_debug_writer **dwriter); |
273 | | |
274 | | void sieve_binary_debug_emit(struct sieve_binary_debug_writer *dwriter, |
275 | | sieve_size_t code_address, unsigned int code_line, |
276 | | unsigned int code_column); |
277 | | |
278 | | /* Reader */ |
279 | | |
280 | | struct sieve_binary_debug_reader * |
281 | | sieve_binary_debug_reader_init(struct sieve_binary_block *sblock); |
282 | | void sieve_binary_debug_reader_deinit( |
283 | | struct sieve_binary_debug_reader **dreader); |
284 | | |
285 | | void sieve_binary_debug_reader_reset(struct sieve_binary_debug_reader *dreader); |
286 | | |
287 | | unsigned int |
288 | | sieve_binary_debug_read_line(struct sieve_binary_debug_reader *dreader, |
289 | | sieve_size_t code_address); |
290 | | |
291 | | #endif |