Commit d22ca0f6 d22ca0f6520bd9f35ba45f4e8d5edebbda5e54b3 by Sergey Poznyakoff

(struct sieve_machine): New members

test_list, action_list and comp_list provide independent
symbol space for this particular instance of sieve.
1 parent b435f982
...@@ -37,7 +37,12 @@ struct sieve_machine { ...@@ -37,7 +37,12 @@ struct sieve_machine {
37 char *filename; /* Name of the source script */ 37 char *filename; /* Name of the source script */
38 list_t memory_pool; /* Pool of allocated memory objects */ 38 list_t memory_pool; /* Pool of allocated memory objects */
39 list_t destr_list; /* List of destructor functions */ 39 list_t destr_list; /* List of destructor functions */
40 40
41 /* Symbol space: */
42 list_t test_list; /* Tests */
43 list_t action_list; /* Actions */
44 list_t comp_list; /* Comparators */
45
41 size_t progsize; /* Number of allocated program cells */ 46 size_t progsize; /* Number of allocated program cells */
42 sieve_op_t *prog; /* Compiled program */ 47 sieve_op_t *prog; /* Compiled program */
43 48
...@@ -103,9 +108,9 @@ int _sieve_default_parse_error __P((void *unused, ...@@ -103,9 +108,9 @@ int _sieve_default_parse_error __P((void *unused,
103 int sieve_lex_begin __P((const char *name)); 108 int sieve_lex_begin __P((const char *name));
104 void sieve_lex_finish __P((void)); 109 void sieve_lex_finish __P((void));
105 110
106 void sieve_register_standard_actions __P((void)); 111 void sieve_register_standard_actions __P((sieve_machine_t mach));
107 void sieve_register_standard_tests __P((void)); 112 void sieve_register_standard_tests __P((sieve_machine_t mach));
108 void sieve_register_standard_comparators __P((void)); 113 void sieve_register_standard_comparators __P((sieve_machine_t mach));
109 114
110 int sieve_code __P((sieve_op_t *op)); 115 int sieve_code __P((sieve_op_t *op));
111 int sieve_code_instr __P((sieve_instr_t instr)); 116 int sieve_code_instr __P((sieve_instr_t instr));
...@@ -126,6 +131,5 @@ void instr_branch __P((sieve_machine_t mach)); ...@@ -126,6 +131,5 @@ void instr_branch __P((sieve_machine_t mach));
126 void instr_brz __P((sieve_machine_t mach)); 131 void instr_brz __P((sieve_machine_t mach));
127 132
128 int sieve_mark_deleted __P((message_t msg, int deleted)); 133 int sieve_mark_deleted __P((message_t msg, int deleted));
129 int sieve_require_comparator __P((const char *name));
130 134
131 int sieve_match_part_checker __P((const char *name, list_t tags, list_t args)); 135 int sieve_match_part_checker __P((const char *name, list_t tags, list_t args));
......