From eb2f38ca059a99c63ede787fabbdf4108867a6e3 Mon Sep 17 00:00:00 2001
From: Stephan Bosch <stephan@rename-it.nl>
Date: Sun, 17 Aug 2008 19:31:10 +0200
Subject: [PATCH] Cleaned up imapflags extension.

---
 src/lib-sieve/plugins/imapflags/cmd-addflag.c |  3 +
 .../plugins/imapflags/cmd-removeflag.c        |  3 +
 src/lib-sieve/plugins/imapflags/cmd-setflag.c |  7 +-
 .../plugins/imapflags/ext-imapflags-common.c  | 76 ++++++++++++-------
 .../plugins/imapflags/ext-imapflags-common.h  | 61 ++++++++++++---
 .../plugins/imapflags/ext-imapflags.c         | 49 ++++--------
 src/lib-sieve/plugins/imapflags/tag-flags.c   | 39 ++++++++--
 src/lib-sieve/plugins/imapflags/tst-hasflag.c |  7 +-
 8 files changed, 162 insertions(+), 83 deletions(-)

diff --git a/src/lib-sieve/plugins/imapflags/cmd-addflag.c b/src/lib-sieve/plugins/imapflags/cmd-addflag.c
index 5ec765c3d..00844c6ac 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 404caf984..c5c114b62 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 eca64fcfa..bcce30c56 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 66d7d6eed..8b08acfbd 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 04f848b9b..8fcad676c 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 bd0a5b2ba..f2629e186 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 f9eccc2c2..a8b9abeee 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 54afc9184..7c4c2ad33 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);
 
-- 
GitLab