summaryrefslogtreecommitdiff
path: root/libsieve/sieve.y
diff options
context:
space:
mode:
authorSergey Poznyakoff <gray@gnu.org.ua>2004-01-05 13:55:09 +0000
committerSergey Poznyakoff <gray@gnu.org.ua>2004-01-05 13:55:09 +0000
commitb28a03bfa54c1ebc4473a4f360626eed3c9a5b2d (patch)
tree09d24f6ac4c32604676731c8ef0ce2737952b34b /libsieve/sieve.y
parentbd761b7d07ae7ff9ead6e060977e91b4ace8ee73 (diff)
downloadmailutils-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.y19
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;

Return to:

Send suggestions and report system problems to the System administrator.