diff options
author | Sergey Poznyakoff <gray@gnu.org.ua> | 2004-01-05 13:55:09 +0000 |
---|---|---|
committer | Sergey Poznyakoff <gray@gnu.org.ua> | 2004-01-05 13:55:09 +0000 |
commit | b28a03bfa54c1ebc4473a4f360626eed3c9a5b2d (patch) | |
tree | 09d24f6ac4c32604676731c8ef0ce2737952b34b /libsieve/sieve.y | |
parent | bd761b7d07ae7ff9ead6e060977e91b4ace8ee73 (diff) | |
download | mailutils-b28a03bfa54c1ebc4473a4f360626eed3c9a5b2d.tar.gz mailutils-b28a03bfa54c1ebc4473a4f360626eed3c9a5b2d.tar.bz2 |
(sieve_machine_destroy,sieve_machine_begin): Initialize and destroy source_list
Diffstat (limited to 'libsieve/sieve.y')
-rw-r--r-- | libsieve/sieve.y | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/libsieve/sieve.y b/libsieve/sieve.y index 7bb2abb07..65ce792ae 100644 --- a/libsieve/sieve.y +++ b/libsieve/sieve.y @@ -496,20 +496,28 @@ sieve_machine_destroy (sieve_machine_t *pmach) list_destroy (&mach->action_list); list_destroy (&mach->test_list); list_destroy (&mach->comp_list); + list_destroy (&mach->source_list); sieve_slist_destroy (&mach->memory_pool); free (mach); *pmach = NULL; } -/* FIXME: When posix thread support is added, sieve_machine_begin() should - acquire the global mutex, locking the current compilation session, and - sieve_machine_finish() should release it */ +static int +string_comp (const void *item, const void *value) +{ + return strcmp (item, value); +} + void -sieve_machine_begin (sieve_machine_t mach) +sieve_machine_begin (sieve_machine_t mach, char *file) { sieve_machine = mach; sieve_error_count = 0; sieve_code_instr (NULL); + + list_create (&mach->source_list); + list_set_comparator (mach->source_list, string_comp); + sieve_register_standard_actions (mach); sieve_register_standard_tests (mach); sieve_register_standard_comparators (mach); @@ -526,11 +534,10 @@ sieve_compile (sieve_machine_t mach, const char *name) { int rc; - sieve_machine_begin (mach); + sieve_machine_begin (mach, name); if (sieve_lex_begin (name) == 0) { - sieve_machine->filename = sieve_mstrdup (sieve_machine, name); rc = yyparse (); if (sieve_error_count) rc = 1; |