diff options
author | Sergey Poznyakoff <gray@gnu.org.ua> | 2002-11-22 14:53:10 +0000 |
---|---|---|
committer | Sergey Poznyakoff <gray@gnu.org.ua> | 2002-11-22 14:53:10 +0000 |
commit | ebc5307dba077c2fb4ef5d79f793d3ec6758f342 (patch) | |
tree | 5045fdd7c9abc3cad11f4559e6323d16097bfa2e /libsieve | |
parent | d92cbeef399ad46292a755141195d8b9595fdd26 (diff) | |
download | mailutils-ebc5307dba077c2fb4ef5d79f793d3ec6758f342.tar.gz mailutils-ebc5307dba077c2fb4ef5d79f793d3ec6758f342.tar.bz2 |
(sieve_require_action, sieve_require_test): New functions.
Diffstat (limited to 'libsieve')
-rw-r--r-- | libsieve/register.c | 35 |
1 files changed, 31 insertions, 4 deletions
diff --git a/libsieve/register.c b/libsieve/register.c index f70b726a9..9269f32da 100644 --- a/libsieve/register.c +++ b/libsieve/register.c @@ -26,7 +26,7 @@ #include <sieve.h> static sieve_register_t * -sieve_lookup (list_t list, const char *name) +reg_lookup (list_t list, const char *name) { iterator_t itr; sieve_register_t *reg; @@ -49,15 +49,42 @@ sieve_lookup (list_t list, const char *name) sieve_register_t * sieve_test_lookup (sieve_machine_t mach, const char *name) { - return sieve_lookup (mach->test_list, name); + return reg_lookup (mach->test_list, name); } sieve_register_t * sieve_action_lookup (sieve_machine_t mach, const char *name) { - return sieve_lookup (mach->action_list, name); + return reg_lookup (mach->action_list, name); } - + +static int +reg_require (sieve_machine_t mach, list_t list, const char *name) +{ + sieve_register_t *reg = reg_lookup (list, name); + if (!reg) + { + if (!(sieve_load_ext (mach, name) == 0 + && (reg = reg_lookup (list, name)) != NULL)) + return 1; + } + reg->required = 1; + return 0; +} + +int +sieve_require_action (sieve_machine_t mach, const char *name) +{ + return reg_require (mach, mach->action_list, name); +} + +int +sieve_require_test (sieve_machine_t mach, const char *name) +{ + return reg_require (mach, mach->test_list, name); +} + + static int sieve_register (list_t *pool, list_t *list, |