diff --git a/src/lib-sieve/plugins/imapflags/cmd-addflag.c b/src/lib-sieve/plugins/imapflags/cmd-addflag.c index 5ec765c3d84738f5673d6f2dd3cbc3bfeb800dcb..00844c6acd5b77ea52e114244b96982e86d009eb 100644 --- a/src/lib-sieve/plugins/imapflags/cmd-addflag.c +++ b/src/lib-sieve/plugins/imapflags/cmd-addflag.c @@ -1,3 +1,6 @@ +/* Copyright (c) 2002-2008 Dovecot Sieve authors, see the included COPYING file + */ + #include "lib.h" #include "sieve-commands.h" diff --git a/src/lib-sieve/plugins/imapflags/cmd-removeflag.c b/src/lib-sieve/plugins/imapflags/cmd-removeflag.c index 404caf984939a0856c338329e319f3f27ff3d108..c5c114b62c1ec1f9bbdb28ff64c68fcc1935a340 100644 --- a/src/lib-sieve/plugins/imapflags/cmd-removeflag.c +++ b/src/lib-sieve/plugins/imapflags/cmd-removeflag.c @@ -1,3 +1,6 @@ +/* Copyright (c) 2002-2008 Dovecot Sieve authors, see the included COPYING file + */ + #include "lib.h" #include "sieve-code.h" diff --git a/src/lib-sieve/plugins/imapflags/cmd-setflag.c b/src/lib-sieve/plugins/imapflags/cmd-setflag.c index eca64fcfab8f965d5880cd52f2338931590cfbd6..bcce30c566490aebc39efbb712af4af3137b77c4 100644 --- a/src/lib-sieve/plugins/imapflags/cmd-setflag.c +++ b/src/lib-sieve/plugins/imapflags/cmd-setflag.c @@ -1,3 +1,6 @@ +/* Copyright (c) 2002-2008 Dovecot Sieve authors, see the included COPYING file + */ + #include "lib.h" #include "sieve-commands.h" @@ -45,7 +48,9 @@ const struct sieve_operation setflag_operation = { cmd_setflag_operation_execute }; -/* Code generation */ +/* + * Code generation + */ static bool cmd_setflag_generate (const struct sieve_codegen_env *cgenv, struct sieve_command_context *ctx) diff --git a/src/lib-sieve/plugins/imapflags/ext-imapflags-common.c b/src/lib-sieve/plugins/imapflags/ext-imapflags-common.c index 66d7d6eed3c14209516b33ff2f4d84d5a888520f..8b08acfbd94d95b451ee4032a9b6a5c13f89a5b1 100644 --- a/src/lib-sieve/plugins/imapflags/ext-imapflags-common.c +++ b/src/lib-sieve/plugins/imapflags/ext-imapflags-common.c @@ -1,3 +1,6 @@ +/* Copyright (c) 2002-2008 Dovecot Sieve authors, see the included COPYING file + */ + #include "lib.h" #include "str.h" #include "str-sanitize.h" @@ -16,21 +19,25 @@ #include "ext-imapflags-common.h" -/* Tagged arguments */ - -extern const struct sieve_argument tag_flags; -extern const struct sieve_argument tag_flags_implicit; - /* * Forward declarations */ static bool flag_is_valid(const char *flag); -/* Common functions */ +/* + * Tagged arguments + */ + +extern const struct sieve_argument tag_flags; +extern const struct sieve_argument tag_flags_implicit; + +/* + * Common command functions + */ bool ext_imapflags_command_validate - (struct sieve_validator *validator, struct sieve_command_context *cmd) +(struct sieve_validator *validator, struct sieve_command_context *cmd) { struct sieve_ast_argument *arg = cmd->first_positional; struct sieve_ast_argument *arg2; @@ -204,7 +211,9 @@ int ext_imapflags_command_operands_read return SIEVE_EXEC_OK; } -/* Flags tag registration */ +/* + * Flags tag registration + */ void ext_imapflags_attach_flags_tag (struct sieve_validator *valdtr, const char *command) @@ -215,18 +224,19 @@ void ext_imapflags_attach_flags_tag */ /* Tag specified by user */ - sieve_validator_register_external_tag - (valdtr, &tag_flags, command, -1); + sieve_validator_register_external_tag(valdtr, &tag_flags, command, -1); } -/* Context access */ +/* + * Result context + */ struct ext_imapflags_result_context { string_t *internal_flags; }; -static inline struct ext_imapflags_result_context * - _get_result_context(struct sieve_result *result) +static inline struct ext_imapflags_result_context *_get_result_context +(struct sieve_result *result) { struct ext_imapflags_result_context *rctx = (struct ext_imapflags_result_context *) @@ -246,7 +256,7 @@ static inline struct ext_imapflags_result_context * } static string_t *_get_flags_string - (struct sieve_result *result) +(struct sieve_result *result) { struct ext_imapflags_result_context *ctx = _get_result_context(result); @@ -254,22 +264,26 @@ static string_t *_get_flags_string return ctx->internal_flags; } -/* Initialization */ +/* + * Runtime initialization + */ static void ext_imapflags_runtime_init - (const struct sieve_runtime_env *renv, void *context ATTR_UNUSED) +(const struct sieve_runtime_env *renv, void *context ATTR_UNUSED) { sieve_result_add_implicit_side_effect (renv->result, &act_store, &flags_side_effect, NULL); } -struct sieve_interpreter_extension imapflags_interpreter_extension = { - &imapflags_extension, +const struct sieve_interpreter_extension imapflags_interpreter_extension = { + &imapflags_extension, ext_imapflags_runtime_init, - NULL, + NULL, }; -/* Flag operations */ +/* + * Flag operations + */ /* FIXME: This currently accepts a potentially unlimited number of * flags, making the internal or variable flag list indefinitely long @@ -303,7 +317,7 @@ static bool flag_is_valid(const char *flag) } void ext_imapflags_iter_init - (struct ext_imapflags_iter *iter, string_t *flags_list) +(struct ext_imapflags_iter *iter, string_t *flags_list) { iter->flags_list = flags_list; iter->offset = 0; @@ -311,7 +325,7 @@ void ext_imapflags_iter_init } const char *ext_imapflags_iter_get_flag - (struct ext_imapflags_iter *iter) +(struct ext_imapflags_iter *iter) { unsigned int len = str_len(iter->flags_list); const unsigned char *fp; @@ -349,7 +363,7 @@ const char *ext_imapflags_iter_get_flag } static void ext_imapflags_iter_delete_last - (struct ext_imapflags_iter *iter) +(struct ext_imapflags_iter *iter) { iter->offset++; if ( iter->offset > str_len(iter->flags_list) ) @@ -362,7 +376,8 @@ static void ext_imapflags_iter_delete_last iter->offset = iter->last; } -static bool flags_list_flag_exists(string_t *flags_list, const char *flag) +static bool flags_list_flag_exists +(string_t *flags_list, const char *flag) { const char *flg; struct ext_imapflags_iter flit; @@ -377,7 +392,8 @@ static bool flags_list_flag_exists(string_t *flags_list, const char *flag) return FALSE; } -static void flags_list_flag_delete(string_t *flags_list, const char *flag) +static void flags_list_flag_delete +(string_t *flags_list, const char *flag) { const char *flg; struct ext_imapflags_iter flit; @@ -392,7 +408,7 @@ static void flags_list_flag_delete(string_t *flags_list, const char *flag) } static void flags_list_add_flags - (string_t *flags_list, string_t *flags) +(string_t *flags_list, string_t *flags) { const char *flg; struct ext_imapflags_iter flit; @@ -409,7 +425,7 @@ static void flags_list_add_flags } static void flags_list_remove_flags - (string_t *flags_list, string_t *flags) +(string_t *flags_list, string_t *flags) { const char *flg; struct ext_imapflags_iter flit; @@ -422,13 +438,15 @@ static void flags_list_remove_flags } static void flags_list_set_flags - (string_t *flags_list, string_t *flags) +(string_t *flags_list, string_t *flags) { str_truncate(flags_list, 0); flags_list_add_flags(flags_list, flags); } -/* Flag registration */ +/* + * Flag registration + */ int ext_imapflags_set_flags (const struct sieve_runtime_env *renv, struct sieve_variable_storage *storage, diff --git a/src/lib-sieve/plugins/imapflags/ext-imapflags-common.h b/src/lib-sieve/plugins/imapflags/ext-imapflags-common.h index 04f848b9b723ccd5183f122e1ecd94c54563e8c2..8fcad676c50390a991eda88618fb4d98e8c7f730 100644 --- a/src/lib-sieve/plugins/imapflags/ext-imapflags-common.h +++ b/src/lib-sieve/plugins/imapflags/ext-imapflags-common.h @@ -1,3 +1,6 @@ +/* Copyright (c) 2002-2008 Dovecot Sieve authors, see the included COPYING file + */ + #ifndef __EXT_IMAPFLAGS_COMMON_H #define __EXT_IMAPFLAGS_COMMON_H @@ -6,11 +9,30 @@ #include "sieve-common.h" #include "sieve-ext-variables.h" -extern int ext_imapflags_my_id; - +/* + * Extension + */ + extern const struct sieve_extension imapflags_extension; +extern const struct sieve_interpreter_extension + imapflags_interpreter_extension; + +/* + * Side effect + */ + extern const struct sieve_side_effect flags_side_effect; +/* + * Operands + */ + +extern const struct sieve_operand flags_side_effect_operand; + +/* + * Operations + */ + enum ext_imapflags_opcode { EXT_IMAPFLAGS_OPERATION_SETFLAG, EXT_IMAPFLAGS_OPERATION_ADDFLAG, @@ -18,7 +40,14 @@ enum ext_imapflags_opcode { EXT_IMAPFLAGS_OPERATION_HASFLAG }; -/* Commands */ +extern const struct sieve_operation setflag_operation; +extern const struct sieve_operation addflag_operation; +extern const struct sieve_operation removeflag_operation; +extern const struct sieve_operation hasflag_operation; + +/* + * Commands + */ extern const struct sieve_command cmd_setflag; extern const struct sieve_command cmd_addflag; @@ -26,6 +55,10 @@ extern const struct sieve_command cmd_removeflag; extern const struct sieve_command tst_hasflag; +/* + * Common command functions + */ + bool ext_imapflags_command_validate (struct sieve_validator *validator, struct sieve_command_context *cmd); @@ -39,13 +72,17 @@ int ext_imapflags_command_operands_read ( const struct sieve_runtime_env *renv, sieve_size_t *address, struct sieve_coded_stringlist **flag_list, struct sieve_variable_storage **storage, unsigned int *var_index); + +/* + * Flags tagged argument + */ void ext_imapflags_attach_flags_tag (struct sieve_validator *valdtr, const char *command); -const struct sieve_operand flags_side_effect_operand; - -/* Flag registration */ +/* + * Flag management + */ struct ext_imapflags_iter { string_t *flags_list; @@ -59,10 +96,6 @@ void ext_imapflags_iter_init const char *ext_imapflags_iter_get_flag (struct ext_imapflags_iter *iter); -int ext_imapflags_get_flags_string -(const struct sieve_runtime_env *renv, struct sieve_variable_storage *storage, - unsigned int var_index, const char **flags); - int ext_imapflags_set_flags (const struct sieve_runtime_env *renv, struct sieve_variable_storage *storage, unsigned int var_index, string_t *flags); @@ -73,6 +106,14 @@ int ext_imapflags_remove_flags (const struct sieve_runtime_env *renv, struct sieve_variable_storage *storage, unsigned int var_index, string_t *flags); +/* + * Flags access + */ + +int ext_imapflags_get_flags_string +(const struct sieve_runtime_env *renv, struct sieve_variable_storage *storage, + unsigned int var_index, const char **flags); + void ext_imapflags_get_flags_init (struct ext_imapflags_iter *iter, const struct sieve_runtime_env *renv, string_t *flags_list); diff --git a/src/lib-sieve/plugins/imapflags/ext-imapflags.c b/src/lib-sieve/plugins/imapflags/ext-imapflags.c index bd0a5b2ba7e40a84ecb143f9a0158f0c7c849164..f2629e18621ef819cc4b84d36ecdaf9c8a46f506 100644 --- a/src/lib-sieve/plugins/imapflags/ext-imapflags.c +++ b/src/lib-sieve/plugins/imapflags/ext-imapflags.c @@ -1,3 +1,6 @@ +/* Copyright (c) 2002-2008 Dovecot Sieve authors, see the included COPYING file + */ + /* Extension imap4flags * -------------------- * @@ -24,37 +27,24 @@ #include "ext-imapflags-common.h" - -/* - * Forward declarations - */ - -static bool ext_imapflags_load(int ext_id); -static bool ext_imapflags_validator_load(struct sieve_validator *valdtr); -static bool ext_imapflags_interpreter_load(struct sieve_interpreter *interp); - /* * Operations */ -extern const struct sieve_operation setflag_operation; -extern const struct sieve_operation addflag_operation; -extern const struct sieve_operation removeflag_operation; -extern const struct sieve_operation hasflag_operation; - -const struct sieve_operation *imapflags_operations[] = - { &setflag_operation, &addflag_operation, &removeflag_operation, &hasflag_operation }; +const struct sieve_operation *imapflags_operations[] = { + &setflag_operation, + &addflag_operation, + &removeflag_operation, + &hasflag_operation +}; /* - * Operands + * Extension */ -extern const struct sieve_operand flags_side_effect_operand; - -/* Extension definitions */ - -extern const struct sieve_interpreter_extension - imapflags_interpreter_extension; +static bool ext_imapflags_load(int ext_id); +static bool ext_imapflags_validator_load(struct sieve_validator *valdtr); +static bool ext_imapflags_interpreter_load(struct sieve_interpreter *interp); int ext_imapflags_my_id; @@ -70,19 +60,16 @@ const struct sieve_extension imapflags_extension = { SIEVE_EXT_DEFINE_OPERAND(flags_side_effect_operand) }; -static bool ext_imapflags_load(int ext_id) +static bool ext_imapflags_load +(int ext_id) { ext_imapflags_my_id = ext_id; return TRUE; } -extern const struct sieve_side_effect_extension imapflags_seffect_extension; - -/* Load extension into validator */ - static bool ext_imapflags_validator_load - (struct sieve_validator *valdtr) +(struct sieve_validator *valdtr) { /* Register commands */ sieve_validator_register_command(valdtr, &cmd_setflag); @@ -96,10 +83,6 @@ static bool ext_imapflags_validator_load return TRUE; } -/* - * Interpreter context - */ - static bool ext_imapflags_interpreter_load (struct sieve_interpreter *interp) { diff --git a/src/lib-sieve/plugins/imapflags/tag-flags.c b/src/lib-sieve/plugins/imapflags/tag-flags.c index f9eccc2c21704a6cc7faf0ce113ecff95d618140..a8b9abeee0b042588fbec51fadbdea792ececebd 100644 --- a/src/lib-sieve/plugins/imapflags/tag-flags.c +++ b/src/lib-sieve/plugins/imapflags/tag-flags.c @@ -1,3 +1,6 @@ +/* Copyright (c) 2002-2008 Dovecot Sieve authors, see the included COPYING file + */ + #include "lib.h" #include "str-sanitize.h" #include "array.h" @@ -16,6 +19,10 @@ #include <ctype.h> +/* + * Flags tagged argument + */ + static bool tag_flags_validate (struct sieve_validator *validator, struct sieve_ast_argument **arg, struct sieve_command_context *cmd); @@ -23,8 +30,6 @@ static bool tag_flags_generate (const struct sieve_codegen_env *cgenv, struct sieve_ast_argument *arg, struct sieve_command_context *cmd); -/* Tag */ - const struct sieve_argument tag_flags = { "flags", NULL, NULL, @@ -33,9 +38,9 @@ const struct sieve_argument tag_flags = { tag_flags_generate }; -/* Side effect */ - -extern const struct sieve_side_effect_extension imapflags_seffect_extension; +/* + * Side effect + */ static bool seff_flags_dump_context (const struct sieve_side_effect *seffect, @@ -63,6 +68,10 @@ const struct sieve_side_effect flags_side_effect = { NULL, NULL, NULL }; +/* + * Operand + */ + static const struct sieve_extension_obj_registry ext_side_effects = SIEVE_EXT_DEFINE_SIDE_EFFECT(flags_side_effect); @@ -74,7 +83,9 @@ const struct sieve_operand flags_side_effect_operand = { &ext_side_effects }; -/* Tag validation */ +/* + * Tag validation + */ static bool tag_flags_validate (struct sieve_validator *validator, struct sieve_ast_argument **arg, @@ -101,7 +112,9 @@ static bool tag_flags_validate return TRUE; } -/* Tag generation */ +/* + * Code generation + */ static bool tag_flags_generate (const struct sieve_codegen_env *cgenv, struct sieve_ast_argument *arg, @@ -125,13 +138,19 @@ static bool tag_flags_generate return TRUE; } -/* Side effect execution */ +/* + * Side effect implementation + */ + +/* Context data */ struct seff_flags_context { ARRAY_DEFINE(keywords, const char *); enum mail_flags flags; }; +/* Context coding */ + static bool seff_flags_dump_context (const struct sieve_side_effect *seffect ATTR_UNUSED, const struct sieve_dumptime_env *denv, sieve_size_t *address) @@ -241,6 +260,8 @@ static struct seff_flags_context *seff_flags_get_implicit_context return ctx; } +/* Result printing */ + static void seff_flags_print (const struct sieve_side_effect *seffect ATTR_UNUSED, const struct sieve_action *action ATTR_UNUSED, @@ -283,6 +304,8 @@ static void seff_flags_print } } +/* Result execution */ + static bool seff_flags_pre_execute (const struct sieve_side_effect *seffect ATTR_UNUSED, const struct sieve_action *action ATTR_UNUSED, diff --git a/src/lib-sieve/plugins/imapflags/tst-hasflag.c b/src/lib-sieve/plugins/imapflags/tst-hasflag.c index 54afc918470a44307b07185808998e1f5d10dc6e..7c4c2ad339f6e88ca8f77fef2f4db88a35c0bb68 100644 --- a/src/lib-sieve/plugins/imapflags/tst-hasflag.c +++ b/src/lib-sieve/plugins/imapflags/tst-hasflag.c @@ -1,3 +1,6 @@ +/* Copyright (c) 2002-2008 Dovecot Sieve authors, see the included COPYING file + */ + #include "lib.h" #include "sieve-commands.h" @@ -87,7 +90,7 @@ static bool tst_hasflag_registered */ static bool tst_hasflag_validate - (struct sieve_validator *validator, struct sieve_command_context *tst) +(struct sieve_validator *validator, struct sieve_command_context *tst) { struct sieve_ast_argument *vars = tst->first_positional; struct sieve_ast_argument *keys = sieve_ast_argument_next(vars); @@ -112,7 +115,7 @@ static bool tst_hasflag_validate */ static bool tst_hasflag_generate - (const struct sieve_codegen_env *cgenv, struct sieve_command_context *ctx) +(const struct sieve_codegen_env *cgenv, struct sieve_command_context *ctx) { sieve_operation_emit_code(cgenv->sbin, &hasflag_operation);