From fcc318e39a353c4e992a18b59749c107db9c942f Mon Sep 17 00:00:00 2001 From: Stephan Bosch <stephan@rename-it.nl> Date: Tue, 20 Nov 2007 11:27:17 +0100 Subject: [PATCH] Added validat_context method to command arguments for the to-be-implemented argument context validation. --- src/lib-sieve/plugins/vacation/ext-vacation.c | 53 ++++++++++++++----- src/lib-sieve/sieve-address-parts.c | 3 +- src/lib-sieve/sieve-commands.c | 6 +-- src/lib-sieve/sieve-commands.h | 6 ++- src/lib-sieve/sieve-comparators.c | 9 +++- src/lib-sieve/sieve-match-types.c | 1 + src/lib-sieve/sieve-validator.c | 2 +- src/lib-sieve/tst-size.c | 4 +- 8 files changed, 62 insertions(+), 22 deletions(-) diff --git a/src/lib-sieve/plugins/vacation/ext-vacation.c b/src/lib-sieve/plugins/vacation/ext-vacation.c index 7238bf0bc..492e61007 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 5e36260bb..77e5e39da 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 de201d1ed..9f063177e 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 3675bb52f..30c7c6ae4 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 e1f2f6253..2dfdf6e10 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 11efc5874..7b81d7253 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 afd08f38e..c884a1bdd 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 171c67175..3e85a3958 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) -- GitLab