From fc6b817e888b91cc24dab093e7d0c8edb9d6e790 Mon Sep 17 00:00:00 2001 From: Stephan Bosch <stephan@rename-it.nl> Date: Sat, 17 Nov 2007 00:07:37 +0100 Subject: [PATCH] A few small cosmetic changes in addr-part code and generic extension support. --- sieve/tests/extensions.sieve | 1 + src/lib-sieve/cmd-require.c | 7 ++++--- src/lib-sieve/sieve-address-parts.c | 11 ++++++++++- 3 files changed, 15 insertions(+), 4 deletions(-) diff --git a/sieve/tests/extensions.sieve b/sieve/tests/extensions.sieve index b1c4076fb..769cc9e88 100644 --- a/sieve/tests/extensions.sieve +++ b/sieve/tests/extensions.sieve @@ -1,4 +1,5 @@ require ["fileinto", "reject", "envelope"]; +require ["comparator-i;octet", "comparator-i;ascii-casemap"]; if anyof(exists "frop", size :over 45, size :under 10, address "from" "frop@student.utwente.nl") { keep; diff --git a/src/lib-sieve/cmd-require.c b/src/lib-sieve/cmd-require.c index 67e40f935..738f6f826 100644 --- a/src/lib-sieve/cmd-require.c +++ b/src/lib-sieve/cmd-require.c @@ -12,6 +12,7 @@ struct cmd_require_context_data { bool cmd_require_validate(struct sieve_validator *validator, struct sieve_command_context *cmd) { + bool result = TRUE; struct sieve_ast_argument *arg; /* Check valid command placement */ @@ -41,7 +42,7 @@ bool cmd_require_validate(struct sieve_validator *validator, struct sieve_comman int ext_id = sieve_validator_extension_load (validator, cmd, sieve_ast_argument_strc(arg)); - if ( ext_id < 0 ) return FALSE; + if ( ext_id < 0 ) result = FALSE; arg->context = (void *) ext_id; } else if ( sieve_ast_argument_type(arg) == SAAT_STRING_LIST ) { @@ -52,7 +53,7 @@ bool cmd_require_validate(struct sieve_validator *validator, struct sieve_comman int ext_id = sieve_validator_extension_load (validator, cmd, sieve_ast_strlist_strc(stritem)); - if ( ext_id < 0 ) return FALSE; + if ( ext_id < 0 ) result = FALSE; stritem->context = (void *) ext_id; stritem = sieve_ast_strlist_next(stritem); @@ -65,7 +66,7 @@ bool cmd_require_validate(struct sieve_validator *validator, struct sieve_comman return FALSE; } - return TRUE; + return result; } bool cmd_require_generate diff --git a/src/lib-sieve/sieve-address-parts.c b/src/lib-sieve/sieve-address-parts.c index 40b2f3d75..836c1eea7 100644 --- a/src/lib-sieve/sieve-address-parts.c +++ b/src/lib-sieve/sieve-address-parts.c @@ -56,6 +56,9 @@ static bool addrp_extension_load(int ext_id) /* * Validator context: * name-based address-part registry. + * + * FIXME: This code will be duplicated across all extensions that introduce + * a registry of some kind in the validator. */ struct addrp_validator_registration { @@ -147,6 +150,9 @@ void sieve_address_parts_link_tags /* * Interpreter context: + * + * FIXME: This code will be duplicated across all extensions that introduce + * a registry of some kind in the interpreter. */ struct addrp_interpreter_context { @@ -230,13 +236,16 @@ static bool tag_address_part_validate const struct sieve_address_part *addrp; /* Syntax: - * ":localpart" / ":domain" / ":all" + * ":localpart" / ":domain" / ":all" (subject to extension) */ /* Get address_part from registry */ addrp = sieve_address_part_find (validator, sieve_ast_argument_tag(*arg), &ext_id); + /* In theory, addrp can never be NULL, because we must have found it earlier + * to get here. + */ if ( addrp == NULL ) { sieve_command_validate_error(validator, cmd, "unknown address-part modifier '%s' " -- GitLab