diff --git a/src/lib-sieve/plugins/vacation/ext-vacation.c b/src/lib-sieve/plugins/vacation/ext-vacation.c index 7238bf0bcc9d27b26745dbd390fa6f9516678c26..492e61007cbde4b41c9ef94d8979dfe7faa6d335 100644 --- a/src/lib-sieve/plugins/vacation/ext-vacation.c +++ b/src/lib-sieve/plugins/vacation/ext-vacation.c @@ -223,18 +223,47 @@ static bool cmd_vacation_validate_handle_tag /* Command registration */ -static const struct sieve_argument vacation_days_tag = - { "days", NULL, cmd_vacation_validate_days_tag, NULL }; -static const struct sieve_argument vacation_subject_tag = - { "subject", NULL, cmd_vacation_validate_subject_tag, NULL }; -static const struct sieve_argument vacation_from_tag = - { "from", NULL, cmd_vacation_validate_from_tag, NULL }; -static const struct sieve_argument vacation_addresses_tag = - { "addresses", NULL, cmd_vacation_validate_addresses_tag, NULL }; -static const struct sieve_argument vacation_mime_tag = - { "mime", NULL, cmd_vacation_validate_mime_tag, NULL }; -static const struct sieve_argument vacation_handle_tag = - { "handle", NULL, cmd_vacation_validate_handle_tag, NULL }; +static const struct sieve_argument vacation_days_tag = { + "days", + NULL, + cmd_vacation_validate_days_tag, + NULL, NULL +}; + +static const struct sieve_argument vacation_subject_tag = { + "subject", + NULL, + cmd_vacation_validate_subject_tag, + NULL, NULL +}; + +static const struct sieve_argument vacation_from_tag = { + "from", + NULL, + cmd_vacation_validate_from_tag, + NULL, NULL +}; + +static const struct sieve_argument vacation_addresses_tag = { + "addresses", + NULL, + cmd_vacation_validate_addresses_tag, + NULL, NULL +}; + +static const struct sieve_argument vacation_mime_tag = { + "mime", + NULL, + cmd_vacation_validate_mime_tag, + NULL, NULL +}; + +static const struct sieve_argument vacation_handle_tag = { + "handle", + NULL, + cmd_vacation_validate_handle_tag, + NULL, NULL +}; enum cmd_vacation_optional { OPT_DAYS, diff --git a/src/lib-sieve/sieve-address-parts.c b/src/lib-sieve/sieve-address-parts.c index 5e36260bbc3e772f811dbf8f86b667ffba6d0d8e..77e5e39dad766416744f3ee8ada57b81a5b7d30d 100644 --- a/src/lib-sieve/sieve-address-parts.c +++ b/src/lib-sieve/sieve-address-parts.c @@ -412,7 +412,8 @@ bool sieve_address_match_stringlist const struct sieve_argument address_part_tag = { NULL, tag_address_part_is_instance_of, - tag_address_part_validate, + tag_address_part_validate, + NULL, tag_address_part_generate }; diff --git a/src/lib-sieve/sieve-commands.c b/src/lib-sieve/sieve-commands.c index de201d1edce4b53014b77ca0590b03f0568cf8a6..9f063177eb32861af73c842d5904d8723398f11d 100644 --- a/src/lib-sieve/sieve-commands.c +++ b/src/lib-sieve/sieve-commands.c @@ -22,11 +22,11 @@ static bool arg_string_list_generate struct sieve_command_context *context); const struct sieve_argument number_argument = - { "@number", NULL, NULL, arg_number_generate }; + { "@number", NULL, NULL, NULL, arg_number_generate }; const struct sieve_argument string_argument = - { "@string", NULL, NULL, arg_string_generate }; + { "@string", NULL, NULL, NULL, arg_string_generate }; const struct sieve_argument string_list_argument = - { "@string-list", NULL, NULL, arg_string_list_generate }; + { "@string-list", NULL, NULL, NULL, arg_string_list_generate }; static bool arg_number_generate (struct sieve_generator *generator, struct sieve_ast_argument *arg, diff --git a/src/lib-sieve/sieve-commands.h b/src/lib-sieve/sieve-commands.h index 3675bb52f482aaf109aa6856ab8a299547c096ab..30c7c6ae4fbdeb8e84c887e90484d6b3b854adce 100644 --- a/src/lib-sieve/sieve-commands.h +++ b/src/lib-sieve/sieve-commands.h @@ -15,7 +15,11 @@ struct sieve_argument { bool (*is_instance_of)(struct sieve_validator *validator, const char *tag); - bool (*validate)(struct sieve_validator *validator, struct sieve_ast_argument **arg, + bool (*validate) + (struct sieve_validator *validator, struct sieve_ast_argument **arg, + struct sieve_command_context *context); + bool (*validate_context) + (struct sieve_validator *validator, struct sieve_ast_argument *arg, struct sieve_command_context *context); bool (*generate)(struct sieve_generator *generator, struct sieve_ast_argument *arg, diff --git a/src/lib-sieve/sieve-comparators.c b/src/lib-sieve/sieve-comparators.c index e1f2f6253c45bf719a2993f641e6827a224ca58e..2dfdf6e102887f3aab0e21cf4eda6033e86c0fba 100644 --- a/src/lib-sieve/sieve-comparators.c +++ b/src/lib-sieve/sieve-comparators.c @@ -228,8 +228,13 @@ static bool tag_comparator_generate (struct sieve_generator *generator, struct sieve_ast_argument *arg, struct sieve_command_context *cmd); -const struct sieve_argument comparator_tag = - { "comparator", NULL, tag_comparator_validate, tag_comparator_generate }; +const struct sieve_argument comparator_tag = { + "comparator", + NULL, + tag_comparator_validate, + NULL, + tag_comparator_generate +}; static bool tag_comparator_validate (struct sieve_validator *validator, struct sieve_ast_argument **arg, diff --git a/src/lib-sieve/sieve-match-types.c b/src/lib-sieve/sieve-match-types.c index 11efc5874aa9891b14499cc497899d9cb682e9d9..7b81d7253383c55554d79a1a7ea4dd68b9e8b0bc 100644 --- a/src/lib-sieve/sieve-match-types.c +++ b/src/lib-sieve/sieve-match-types.c @@ -459,6 +459,7 @@ const struct sieve_argument match_type_tag = { NULL, tag_match_type_is_instance_of, tag_match_type_validate, + NULL, tag_match_type_generate }; diff --git a/src/lib-sieve/sieve-validator.c b/src/lib-sieve/sieve-validator.c index afd08f38e78703493763b6b3b70622fcb8fd85b1..c884a1bddb2039b14a405744605c9037b819a8b0 100644 --- a/src/lib-sieve/sieve-validator.c +++ b/src/lib-sieve/sieve-validator.c @@ -203,7 +203,7 @@ static bool _unknown_tag_validate } static const struct sieve_argument _unknown_tag = - { "", NULL, _unknown_tag_validate, NULL }; + { "", NULL, _unknown_tag_validate, NULL, NULL }; static void _sieve_validator_register_tag (struct sieve_validator *validator, struct sieve_command_registration *cmd_reg, diff --git a/src/lib-sieve/tst-size.c b/src/lib-sieve/tst-size.c index 171c6717574808b9202f499c793f716142170050..3e85a39588795a494b00f190f722f59ff5292a4c 100644 --- a/src/lib-sieve/tst-size.c +++ b/src/lib-sieve/tst-size.c @@ -101,9 +101,9 @@ static bool tst_size_validate_under_tag /* Test registration */ static const struct sieve_argument size_over_tag = - { "over", NULL, tst_size_validate_over_tag, NULL }; + { "over", NULL, tst_size_validate_over_tag, NULL, NULL }; static const struct sieve_argument size_under_tag = - { "under", NULL, tst_size_validate_under_tag, NULL }; + { "under", NULL, tst_size_validate_under_tag, NULL, NULL }; static bool tst_size_registered (struct sieve_validator *validator, struct sieve_command_registration *cmd_reg)