1 /* Copyright (c) 2002-2018 Pigeonhole authors, see the included COPYING file
2  */
3 
4 /* Extension variables
5  * -------------------
6  *
7  * Authors: Stephan Bosch
8  * Specification: RFC 5183
9  * Implementation: full
10  * Status: testing
11  *
12  */
13 
14 #include "lib.h"
15 #include "str.h"
16 #include "unichar.h"
17 
18 #include "sieve-extensions.h"
19 #include "sieve-commands.h"
20 #include "sieve-binary.h"
21 #include "sieve-interpreter.h"
22 
23 #include "sieve-validator.h"
24 
25 #include "ext-environment-common.h"
26 
27 /*
28  * Extension
29  */
30 
31 static bool ext_environment_validator_load
32 	(const struct sieve_extension *ext, struct sieve_validator *valdtr);
33 static bool ext_environment_interpreter_load
34 (const struct sieve_extension *ext,
35 	const struct sieve_runtime_env *renv, sieve_size_t *address);
36 
37 const struct sieve_extension_def environment_extension = {
38 	.name = "environment",
39 	.validator_load = ext_environment_validator_load,
40 	.interpreter_load = ext_environment_interpreter_load,
41 	SIEVE_EXT_DEFINE_OPERATION(tst_environment_operation)
42 };
43 
ext_environment_validator_load(const struct sieve_extension * ext,struct sieve_validator * valdtr)44 static bool ext_environment_validator_load
45 (const struct sieve_extension *ext, struct sieve_validator *valdtr)
46 {
47 	sieve_validator_register_command(valdtr, ext, &tst_environment);
48 	return TRUE;
49 }
50 
ext_environment_interpreter_load(const struct sieve_extension * ext,const struct sieve_runtime_env * renv,sieve_size_t * address ATTR_UNUSED)51 static bool ext_environment_interpreter_load
52 (const struct sieve_extension *ext,
53 	const struct sieve_runtime_env *renv,
54 	sieve_size_t *address ATTR_UNUSED)
55 {
56 	ext_environment_interpreter_init(ext, renv->interp);
57 	return TRUE;
58 }
59 
60