From 151d4705535a3057417400546daa3ff700dbc6ac Mon Sep 17 00:00:00 2001
From: Stephan Bosch <stephan@rename-it.nl>
Date: Sat, 16 Aug 2008 19:31:55 +0200
Subject: [PATCH] Broad code cleanup.

---
 src/lib-sieve/sieve-common.h        |  5 +-
 src/lib-sieve/sieve-dump.h          |  7 +++
 src/lib-sieve/sieve-error-private.h |  7 +++
 src/lib-sieve/sieve-error.c         | 48 +++++++++++++--
 src/lib-sieve/sieve-error.h         | 23 ++++++++
 src/lib-sieve/sieve-extensions.c    | 35 ++++++++---
 src/lib-sieve/sieve-extensions.h    | 31 ++++++----
 src/lib-sieve/sieve-generator.c     | 92 ++++++++++++++---------------
 src/lib-sieve/sieve-generator.h     | 45 +++++++++-----
 src/lib-sieve/sieve-interpreter.c   | 67 +++++++++++++++------
 src/lib-sieve/sieve-interpreter.h   | 50 +++++++++++++---
 src/lib-sieve/sieve-limits.h        |  5 +-
 src/lib-sieve/sieve-message.c       | 17 ++++--
 src/lib-sieve/sieve-message.h       | 18 ++++--
 src/lib-sieve/sieve-objects.c       |  7 +++
 src/lib-sieve/sieve-objects.h       | 11 ++++
 16 files changed, 343 insertions(+), 125 deletions(-)

diff --git a/src/lib-sieve/sieve-common.h b/src/lib-sieve/sieve-common.h
index 55af27a8a..1ee4fc199 100644
--- a/src/lib-sieve/sieve-common.h
+++ b/src/lib-sieve/sieve-common.h
@@ -1,3 +1,6 @@
+/* Copyright (c) 2002-2008 Dovecot Sieve authors, see the included COPYING file
+ */
+
 #ifndef __SIEVE_COMMON_H
 #define __SIEVE_COMMON_H
 
@@ -17,7 +20,7 @@ typedef uint32_t      sieve_number_t;
 #define SIEVE_MAX_NUMBER ((sieve_number_t) -1)
 
 /*
- * Predeclarations
+ * Forward declarations
  */
 
 /* sieve-error.h */
diff --git a/src/lib-sieve/sieve-dump.h b/src/lib-sieve/sieve-dump.h
index 1105dc446..8fe6cb3be 100644
--- a/src/lib-sieve/sieve-dump.h
+++ b/src/lib-sieve/sieve-dump.h
@@ -1,3 +1,6 @@
+/* Copyright (c) 2002-2008 Dovecot Sieve authors, see the included COPYING file
+ */
+
 #ifndef __SIEVE_DUMP_H
 #define __SIEVE_DUMP_H
 
@@ -6,6 +9,10 @@
 #include "sieve-binary-dumper.h"
 #include "sieve-code-dumper.h"
 
+/*
+ * Dumptime environment
+ */
+
 struct sieve_dumptime_env {
 	struct sieve_binary_dumper *dumper;
 	struct sieve_code_dumper *cdumper;
diff --git a/src/lib-sieve/sieve-error-private.h b/src/lib-sieve/sieve-error-private.h
index 401869a25..9095e9f01 100644
--- a/src/lib-sieve/sieve-error-private.h
+++ b/src/lib-sieve/sieve-error-private.h
@@ -1,8 +1,15 @@
+/* Copyright (c) 2002-2008 Dovecot Sieve authors, see the included COPYING file
+ */
+
 #ifndef __SIEVE_ERROR_PRIVATE_H
 #define __SIEVE_ERROR_PRIVATE_H
 
 #include "sieve-error.h"
 
+/*
+ * Error handler object
+ */
+
 struct sieve_error_handler {
 	pool_t pool;
 	int refcount;
diff --git a/src/lib-sieve/sieve-error.c b/src/lib-sieve/sieve-error.c
index a2247787e..852f5a744 100644
--- a/src/lib-sieve/sieve-error.c
+++ b/src/lib-sieve/sieve-error.c
@@ -1,5 +1,6 @@
-#include <stdio.h>
-
+/* Copyright (c) 2002-2008 Dovecot Sieve authors, see the included COPYING file
+ */
+ 
 #include "lib.h"
 #include "str.h"
 #include "ostream.h"
@@ -13,11 +14,20 @@
 #include <fcntl.h>
 #include <stdlib.h>
 #include <unistd.h>
+#include <stdio.h>
+
+/*
+ * Definitions
+ */
 
 #define CRITICAL_MSG \
 	"internal error occurred: refer to server log for more information."
 #define CRITICAL_MSG_STAMP CRITICAL_MSG " [%Y-%m-%d %H:%M:%S]"
 
+/*
+ * Utility
+ */
+
 const char *sieve_error_script_location
 (struct sieve_script *script, unsigned int source_line)
 {
@@ -29,6 +39,10 @@ const char *sieve_error_script_location
     return t_strdup_printf("%s: line %d", sname, source_line);
 }
 
+/*
+ * Main error functions
+ */
+
 void sieve_verror
 	(struct sieve_error_handler *ehandler, const char *location, 
 		const char *fmt, va_list args)
@@ -105,6 +119,10 @@ void sieve_vcritical
 			str : CRITICAL_MSG );	
 }
 
+/*
+ * Error statistics
+ */
+
 unsigned int sieve_get_errors(struct sieve_error_handler *ehandler) {
 	if ( ehandler == NULL ) return 0;
 	
@@ -121,6 +139,10 @@ bool sieve_errors_more_allowed(struct sieve_error_handler *ehandler) {
 	return ehandler->max_errors == 0 || ehandler->errors < ehandler->max_errors;
 }
 
+/*
+ * Error handler configuration
+ */
+
 void sieve_error_handler_accept_infolog
 	(struct sieve_error_handler *ehandler, bool enable)
 {
@@ -133,6 +155,10 @@ void sieve_error_handler_copy_masterlog
 	ehandler->log_master = enable;
 }
 
+/*
+ * Error handler init
+ */
+
 void sieve_error_handler_init
 	(struct sieve_error_handler *ehandler, pool_t pool, unsigned int max_errors)
 {
@@ -174,7 +200,11 @@ void sieve_error_handler_reset(struct sieve_error_handler *ehandler)
     ehandler->warnings = 0;
 }
 
-/* Output errors directly to stderror (merge this with logfile below?) */
+/* 
+ * STDERR error handler
+ *
+ * - Output errors directly to stderror 
+ */
 
 static void sieve_stderr_verror
 (struct sieve_error_handler *ehandler ATTR_UNUSED, const char *location, 
@@ -227,7 +257,10 @@ struct sieve_error_handler *sieve_stderr_ehandler_create
 	return ehandler;	
 }
 
-/* Output errors to a string buffer */
+/* String buffer error handler
+ *
+ * - Output errors to a string buffer 
+ */
 
 struct sieve_strbuf_ehandler {
 	struct sieve_error_handler handler;
@@ -296,7 +329,11 @@ struct sieve_error_handler *sieve_strbuf_ehandler_create
 	return &(ehandler->handler);
 }
 
-/* Output errors to a log file */
+/* 
+ * Logfile error handler
+ * 
+ * - Output errors to a log file 
+ */
 
 struct sieve_logfile_ehandler {
 	struct sieve_error_handler handler;
@@ -414,7 +451,6 @@ static void sieve_logfile_vinfo
 	sieve_logfile_vprintf(handler, location, "info", fmt, args);
 }
 
-
 static void sieve_logfile_free
 (struct sieve_error_handler *ehandler)
 {
diff --git a/src/lib-sieve/sieve-error.h b/src/lib-sieve/sieve-error.h
index 5d25c0138..fbed275f0 100644
--- a/src/lib-sieve/sieve-error.h
+++ b/src/lib-sieve/sieve-error.h
@@ -1,3 +1,6 @@
+/* Copyright (c) 2002-2008 Dovecot Sieve authors, see the included COPYING file
+ */
+
 #ifndef __SIEVE_ERROR_H
 #define __SIEVE_ERROR_H
 
@@ -6,6 +9,10 @@
 
 #include <stdarg.h>
 
+/*
+ * Forward declarations
+ */
+
 struct sieve_script;
 struct sieve_error_handler;
 
@@ -27,6 +34,10 @@ typedef void (*sieve_error_vfunc_t)
 #define sieve_sys_warning(...) i_warning("sieve: " __VA_ARGS__ )
 #define sieve_sys_info(...) i_info("sieve: " __VA_ARGS__ )
 
+/*
+ * Main error functions
+ */
+
 /* For these functions it is the responsibility of the caller to
  * manage the datastack.
  */
@@ -108,16 +119,28 @@ inline static void sieve_critical
 	va_end(args);
 }
 
+/*
+ * Error handler configuration
+ */
+
 void sieve_error_handler_accept_infolog
 	(struct sieve_error_handler *ehandler, bool enable);
 void sieve_error_handler_copy_masterlog
 	(struct sieve_error_handler *ehandler, bool enable);
 
+/*
+ * Error handler statistics
+ */
+
 unsigned int sieve_get_errors(struct sieve_error_handler *ehandler);
 unsigned int sieve_get_warnings(struct sieve_error_handler *ehandler);
 
 bool sieve_errors_more_allowed(struct sieve_error_handler *ehandler);
 
+/*
+ * Error handler object
+ */
+
 void sieve_error_handler_ref(struct sieve_error_handler *ehandler);
 void sieve_error_handler_unref(struct sieve_error_handler **ehandler);
 
diff --git a/src/lib-sieve/sieve-extensions.c b/src/lib-sieve/sieve-extensions.c
index 32ded708f..2738d8399 100644
--- a/src/lib-sieve/sieve-extensions.c
+++ b/src/lib-sieve/sieve-extensions.c
@@ -1,3 +1,6 @@
+/* Copyright (c) 2002-2008 Dovecot Sieve authors, see the included COPYING file
+ */
+
 #include "lib.h"
 #include "str.h"
 #include "mempool.h"
@@ -7,12 +10,16 @@
 #include "sieve-error.h"
 #include "sieve-extensions.h"
 
-/* Static pre-declarations */
+/*
+ * Forward declarations 
+ */
 
 static void sieve_extensions_init_registry(void);
 static void sieve_extensions_deinit_registry(void);
 
-/* Pre-loaded extensions */
+/* 
+ * Pre-loaded 'extensions' 
+ */
 
 extern const struct sieve_extension comparator_extension;
 extern const struct sieve_extension match_type_extension;
@@ -25,7 +32,9 @@ const struct sieve_extension *sieve_preloaded_extensions[] = {
 const unsigned int sieve_preloaded_extensions_count = 
 	N_ELEMENTS(sieve_preloaded_extensions);
 
-/* Dummy extensions */
+/* 
+ * Dummy extensions 
+ */
 
 static const struct sieve_extension comparator_i_octet_extension = {
 	"comparator-i;octet", 
@@ -41,14 +50,18 @@ static const struct sieve_extension comparator_i_ascii_casemap_extension = {
 	SIEVE_EXT_DEFINE_NO_OPERANDS
 };
 
-/* Base extensions */
+/* 
+ * Core extensions 
+ */
 
 extern const struct sieve_extension fileinto_extension;
 extern const struct sieve_extension reject_extension;
 extern const struct sieve_extension envelope_extension;
 extern const struct sieve_extension encoded_character_extension;
 
-/* Plugins (FIXME: make this dynamic) */
+/* 
+ * Native 'plugin' extensions 
+ */
 
 extern const struct sieve_extension vacation_extension;
 extern const struct sieve_extension subaddress_extension;
@@ -68,7 +81,7 @@ const struct sieve_extension *sieve_core_extensions[] = {
 	/* Dummy extensions */ 
 	&comparator_i_octet_extension, &comparator_i_ascii_casemap_extension, 
 	
-	/* Base extensions */
+	/* Core extensions */
 	&fileinto_extension, &reject_extension, &envelope_extension, 
 	&encoded_character_extension,
 	
@@ -83,7 +96,9 @@ const struct sieve_extension *sieve_core_extensions[] = {
 const unsigned int sieve_core_extensions_count =
 	N_ELEMENTS(sieve_core_extensions);
 
-/* Extension state */
+/* 
+ * Extensions init/deinit
+ */
 
 bool sieve_extensions_init(const char *sieve_plugins ATTR_UNUSED) 
 {
@@ -106,7 +121,9 @@ void sieve_extensions_deinit(void)
 	sieve_extensions_deinit_registry();
 }
 
-/* Extension registry */
+/* 
+ * Extension registry
+ */
 
 struct sieve_extension_registration {
 	const struct sieve_extension *extension;
@@ -231,3 +248,5 @@ static void sieve_extensions_deinit_registry(void)
 	array_free(&extensions);
 	hash_destroy(&extension_index);
 }
+
+
diff --git a/src/lib-sieve/sieve-extensions.h b/src/lib-sieve/sieve-extensions.h
index 1aff3e030..e1a862332 100644
--- a/src/lib-sieve/sieve-extensions.h
+++ b/src/lib-sieve/sieve-extensions.h
@@ -1,17 +1,24 @@
+/* Copyright (c) 2002-2008 Dovecot Sieve authors, see the included COPYING file
+ */
+
 #ifndef __SIEVE_EXTENSIONS_H
 #define __SIEVE_EXTENSIONS_H
 
 #include "lib.h"
 #include "sieve-common.h"
 
-/* Per-extension object registry */
+/* 
+ * Per-extension object registry 
+ */
 
 struct sieve_extension_obj_registry {
 	const void *objects;
 	unsigned int count;
 };
 
-/* Extension object */
+/* 
+ * Extension object 
+ */
 
 struct sieve_extension {
 	const char *name;
@@ -40,7 +47,9 @@ struct sieve_extension {
 #define SIEVE_EXT_GET_OBJECTS_COUNT(ext, field) \
 	ext->field->count;
 
-/* Opcodes and operands */
+/* 
+ * Defining opcodes and operands 
+ */
 
 #define SIEVE_EXT_DEFINE_NO_OPERATIONS SIEVE_EXT_DEFINE_NO_OBJECTS
 #define SIEVE_EXT_DEFINE_OPERATION(OP) SIEVE_EXT_DEFINE_OBJECT(OP)
@@ -50,21 +59,23 @@ struct sieve_extension {
 #define SIEVE_EXT_DEFINE_OPERAND(OP) SIEVE_EXT_DEFINE_OBJECT(OP)
 #define SIEVE_EXT_DEFINE_OPERANDS(OPS) SIEVE_EXT_DEFINE_OBJECTS(OPS)
 
-/* Pre-loaded extensions */
+/* 
+ * Pre-loaded extensions 
+ */
 
 extern const struct sieve_extension *sieve_preloaded_extensions[];
 extern const unsigned int sieve_preloaded_extensions_count;
 
-
-const struct sieve_extension *sieve_extension_acquire(const char *extension);
-
-/* Extensions state */
+/*  
+ * Extensions init/deinit 
+ */
 
 bool sieve_extensions_init(const char *sieve_plugins ATTR_UNUSED);
-const int *sieve_extensions_get_preloaded_ext_ids(void);
 void sieve_extensions_deinit(void);
 
-/* Extension registry */
+/* 
+ * Extension registry 
+ */
 
 int sieve_extension_register(const struct sieve_extension *extension);
 int sieve_extensions_get_count(void);
diff --git a/src/lib-sieve/sieve-generator.c b/src/lib-sieve/sieve-generator.c
index 49dbfb822..937ea5652 100644
--- a/src/lib-sieve/sieve-generator.c
+++ b/src/lib-sieve/sieve-generator.c
@@ -1,4 +1,5 @@
-#include <stdio.h>
+/* Copyright (c) 2002-2008 Dovecot Sieve authors, see the included COPYING file
+ */
 
 #include "lib.h"
 #include "mempool.h"
@@ -11,7 +12,10 @@
 
 #include "sieve-generator.h"
 
-/* Jump list */
+/* 
+ * Jump list 
+ */
+
 struct sieve_jumplist *sieve_jumplist_create
 	(pool_t pool, struct sieve_binary *sbin)
 {
@@ -53,7 +57,9 @@ void sieve_jumplist_resolve(struct sieve_jumplist *jlist)
 	}
 }
 
-/* Generator */
+/* 
+ * Code Generator 
+ */
 
 struct sieve_generator {
 	pool_t pool;
@@ -85,15 +91,7 @@ struct sieve_generator *sieve_generator_create
 
 	/* Setup storage for extension contexts */		
 	p_array_init(&gentr->ext_contexts, pool, sieve_extensions_get_count());
-	
-	/* Pre-load core language features implemented as 'extensions' (none) */
-	/*for ( i = 0; i < sieve_preloaded_extensions_count; i++ ) {
-		const struct sieve_extension *ext = sieve_preloaded_extensions[i];
 		
-		if ( ext->generator_load != NULL )
-			(void)ext->generator_load(gentr);		
-	}*/
-	
 	return gentr;
 }
 
@@ -111,13 +109,36 @@ void sieve_generator_free(struct sieve_generator **generator)
 	*generator = NULL;
 }
 
-struct sieve_script *sieve_generator_get_script
-	(struct sieve_generator *gentr)
+/* 
+ * Accessors 
+ */
+
+struct sieve_error_handler *sieve_generator_error_handler
+(struct sieve_generator *gentr)
+{
+	return gentr->ehandler;
+}
+
+pool_t sieve_generator_pool(struct sieve_generator *gentr)
+{
+	return gentr->pool;
+}
+
+struct sieve_script *sieve_generator_script
+(struct sieve_generator *gentr)
 {
 	return gentr->genenv.script;
 }
 
-/* Error handling */
+struct sieve_binary *sieve_generator_get_binary
+	(struct sieve_generator *gentr)
+{
+	return gentr->genenv.sbin;
+}
+
+/* 
+ * Error handling 
+ */
 
 void sieve_generator_warning
 (struct sieve_generator *gentr, struct sieve_ast_node *node, 
@@ -152,7 +173,9 @@ void sieve_generator_critical
 	va_end(args);
 }
 
-/* Extension support */
+/* 
+ * Extension support 
+ */
 
 bool sieve_generator_link_extension
 (struct sieve_generator *gentr, const struct sieve_extension *ext) 
@@ -185,15 +208,9 @@ const void *sieve_generator_extension_get_context
 	return *ctx;
 }
 
-/* Binary access */
-
-struct sieve_binary *sieve_generator_get_binary
-	(struct sieve_generator *gentr)
-{
-	return gentr->genenv.sbin;
-}
-
-/* Generator functions */
+/* 
+ * Code generation API
+ */
 
 bool sieve_generate_argument
 (const struct sieve_codegen_env *cgenv, struct sieve_ast_argument *arg, 
@@ -207,8 +224,9 @@ bool sieve_generate_argument
 		argument->generate(cgenv, arg, cmd) );
 }
 
-bool sieve_generate_arguments(const struct sieve_codegen_env *cgenv, 
-	struct sieve_command_context *cmd, struct sieve_ast_argument **last_arg)
+bool sieve_generate_arguments
+(const struct sieve_codegen_env *cgenv, struct sieve_command_context *cmd, 
+	struct sieve_ast_argument **last_arg)
 {
 	enum { ARG_START, ARG_OPTIONAL, ARG_POSITIONAL } state = ARG_START;
 	struct sieve_ast_argument *arg = sieve_ast_argument_first(cmd->ast_node);
@@ -284,7 +302,6 @@ bool sieve_generate_argument_parameters
 	return TRUE;
 }
 
-
 bool sieve_generate_test
 (const struct sieve_codegen_env *cgenv, struct sieve_ast_node *tst_node,
 	struct sieve_jumplist *jlist, bool jump_true) 
@@ -348,7 +365,7 @@ bool sieve_generate_block
 }
 
 bool sieve_generator_run
-	(struct sieve_generator *generator, struct sieve_binary **sbin) 
+(struct sieve_generator *generator, struct sieve_binary **sbin) 
 {
 	bool topmost = ( *sbin == NULL );
 	bool result = TRUE;
@@ -376,24 +393,5 @@ bool sieve_generator_run
 	return result;
 }
 
-/* Accessors */
-
-struct sieve_error_handler *sieve_generator_error_handler
-(struct sieve_generator *gentr)
-{
-	return gentr->ehandler;
-}
-
-pool_t sieve_generator_pool(struct sieve_generator *gentr)
-{
-	return gentr->pool;
-}
-
-struct sieve_script *sieve_generator_script
-(struct sieve_generator *gentr)
-{
-	return gentr->genenv.script;
-}
-
 
 
diff --git a/src/lib-sieve/sieve-generator.h b/src/lib-sieve/sieve-generator.h
index c53fd4b3c..9b1f4ea8b 100644
--- a/src/lib-sieve/sieve-generator.h
+++ b/src/lib-sieve/sieve-generator.h
@@ -1,8 +1,15 @@
+/* Copyright (c) 2002-2008 Dovecot Sieve authors, see the included COPYING file
+ */
+
 #ifndef __SIEVE_GENERATOR_H
 #define __SIEVE_GENERATOR_H
 
 #include "sieve-common.h"
 
+/*
+ * Code generator
+ */
+
 struct sieve_generator;
 
 struct sieve_codegen_env {
@@ -17,10 +24,21 @@ struct sieve_generator *sieve_generator_create
 	(struct sieve_ast *ast, struct sieve_error_handler *ehandler);
 void sieve_generator_free(struct sieve_generator **generator);
 
-struct sieve_script *sieve_generator_get_script
+/* 
+ * Accessors 
+ */
+
+struct sieve_error_handler *sieve_generator_error_handler
+	(struct sieve_generator *gentr);
+pool_t sieve_generator_pool(struct sieve_generator *gentr);
+struct sieve_script *sieve_generator_script
+	(struct sieve_generator *gentr);
+struct sieve_binary *sieve_generator_get_binary
 	(struct sieve_generator *gentr);
 
-/* Error handling */
+/* 
+ * Error handling 
+ */
 
 void sieve_generator_warning
 (struct sieve_generator *gentr, struct sieve_ast_node *node, 
@@ -32,7 +50,9 @@ void sieve_generator_critical
 (struct sieve_generator *gentr, struct sieve_ast_node *node, 
 	const char *fmt, ...) ATTR_FORMAT(3, 4); 
 
-/* Extension support */
+/* 
+ * Extension support 
+ */
 
 bool sieve_generator_link_extension
 	(struct sieve_generator *gentr, const struct sieve_extension *ext);
@@ -43,7 +63,9 @@ void sieve_generator_extension_set_context
 const void *sieve_generator_extension_get_context
 	(struct sieve_generator *gentr, const struct sieve_extension *ext);
     		
-/* Jump list */
+/* 
+ * Jump list 
+ */
 
 struct sieve_jumplist {
 	pool_t pool;
@@ -61,7 +83,9 @@ void sieve_jumplist_add
 	(struct sieve_jumplist *jlist, sieve_size_t jump);
 void sieve_jumplist_resolve(struct sieve_jumplist *jlist);
 
-/* API */
+/* 
+ * Code generation API 
+ */
 
 bool sieve_generate_argument
 	(const struct sieve_codegen_env *cgenv, struct sieve_ast_argument *arg, 
@@ -81,16 +105,5 @@ bool sieve_generate_test
 bool sieve_generator_run
 	(struct sieve_generator *generator, struct sieve_binary **sbin);
 
-/* Accessors */
-
-struct sieve_error_handler *sieve_generator_error_handler
-	(struct sieve_generator *gentr);
-pool_t sieve_generator_pool(struct sieve_generator *gentr);
-struct sieve_script *sieve_generator_script
-	(struct sieve_generator *gentr);
-struct sieve_binary *sieve_generator_get_binary
-	(struct sieve_generator *gentr);
-
-
 #endif /* __SIEVE_GENERATOR_H */
 
diff --git a/src/lib-sieve/sieve-interpreter.c b/src/lib-sieve/sieve-interpreter.c
index 4b8c1b15f..a7fb2425e 100644
--- a/src/lib-sieve/sieve-interpreter.c
+++ b/src/lib-sieve/sieve-interpreter.c
@@ -1,5 +1,5 @@
-#include <stdio.h>
-#include <string.h>
+/* Copyright (c) 2002-2008 Dovecot Sieve authors, see the included COPYING file
+ */
 
 #include "lib.h"
 #include "ostream.h"
@@ -23,7 +23,11 @@
 
 #include "sieve-interpreter.h"
 
-/* Extensions to the interpreter */
+#include <string.h>
+
+/* 
+ * Interpreter extension 
+ */
 
 struct sieve_interpreter_extension_reg {
 	const struct sieve_interpreter_extension *int_ext;
@@ -48,8 +52,11 @@ struct sieve_interpreter {
 	bool interrupted;         /* Interpreter interrupt requested */
 	bool test_result;         /* Result of previous test command */
 
-	const struct sieve_operation *current_op; /* Current operation */ 
-	sieve_size_t current_op_addr;             /* Start address of current operation */
+	/* Current operation */ 
+	const struct sieve_operation *current_op;
+	
+	/* Start address of current operation */
+	sieve_size_t current_op_addr;             
 	
 	/* Runtime environment environment */
 	struct sieve_runtime_env runenv; 
@@ -125,24 +132,30 @@ void sieve_interpreter_free(struct sieve_interpreter **interp)
 	*interp = NULL;
 }
 
+/*
+ * Accessors
+ */
+
 pool_t sieve_interpreter_pool(struct sieve_interpreter *interp)
 {
 	return interp->pool;
 }
 
 struct sieve_script *sieve_interpreter_script
-	(struct sieve_interpreter *interp)
+(struct sieve_interpreter *interp)
 {
 	return interp->runenv.script;
 }
 
 struct sieve_error_handler *sieve_interpreter_get_error_handler
-	(struct sieve_interpreter *interp)
+(struct sieve_interpreter *interp)
 {
 	return interp->ehandler;
 }
 
-/* Error handling */
+/* 
+ * Error handling 
+ */
 
 /* This is not particularly user friendly, so avoid using this
  */
@@ -193,9 +206,13 @@ void sieve_runtime_log
 	va_end(args);
 }
 
+/*
+ * Runtime trace
+ */
+
 #ifdef SIEVE_RUNTIME_TRACE
 void _sieve_runtime_trace
-	(const struct sieve_runtime_env *runenv, const char *fmt, ...)
+(const struct sieve_runtime_env *runenv, const char *fmt, ...)
 {	
 	string_t *outbuf = t_str_new(128);
 	va_list args;
@@ -210,7 +227,7 @@ void _sieve_runtime_trace
 }
 
 void _sieve_runtime_trace_error
-	(const struct sieve_runtime_env *runenv, const char *fmt, ...)
+(const struct sieve_runtime_env *runenv, const char *fmt, ...)
 {
 	string_t *outbuf = t_str_new(128);
 	va_list args;
@@ -226,7 +243,9 @@ void _sieve_runtime_trace_error
 }
 #endif
 
-/* Extension support */
+/* 
+ * Extension support 
+ */
 
 void sieve_interpreter_extension_register
 (struct sieve_interpreter *interp, 
@@ -266,7 +285,9 @@ void *sieve_interpreter_extension_get_context
 	return reg->context;
 }
 
-/* Program counter */
+/* 
+ * Program flow 
+ */
 
 void sieve_interpreter_reset(struct sieve_interpreter *interp) 
 {
@@ -313,23 +334,29 @@ int sieve_interpreter_program_jump
 	return SIEVE_EXEC_BIN_CORRUPT;
 }
 
+/*
+ * Test results
+ */
+
 void sieve_interpreter_set_test_result
-	(struct sieve_interpreter *interp, bool result)
+(struct sieve_interpreter *interp, bool result)
 {
 	interp->test_result = result;
 }
 
 bool sieve_interpreter_get_test_result
-	(struct sieve_interpreter *interp)
+(struct sieve_interpreter *interp)
 {
 	return interp->test_result;
 }
 
-/* Operations and operands */
+/* 
+ * Operations and operands 
+ */
 
 int sieve_interpreter_handle_optional_operands
-	(const struct sieve_runtime_env *renv, sieve_size_t *address,
-		struct sieve_side_effects_list **list)
+(const struct sieve_runtime_env *renv, sieve_size_t *address,
+	struct sieve_side_effects_list **list)
 {
 	int opt_code = -1;
 	
@@ -369,10 +396,12 @@ int sieve_interpreter_handle_optional_operands
 	return TRUE;
 }
  
-/* Code execute */
+/* 
+ * Code execute 
+ */
 
 static int sieve_interpreter_execute_operation
-	(struct sieve_interpreter *interp) 
+(struct sieve_interpreter *interp) 
 {
 	const struct sieve_operation *op;
 
diff --git a/src/lib-sieve/sieve-interpreter.h b/src/lib-sieve/sieve-interpreter.h
index e68e1aaa9..30c6db927 100644
--- a/src/lib-sieve/sieve-interpreter.h
+++ b/src/lib-sieve/sieve-interpreter.h
@@ -1,3 +1,6 @@
+/* Copyright (c) 2002-2008 Dovecot Sieve authors, see the included COPYING file
+ */
+
 #ifndef __SIEVE_INTERPRETER_H
 #define __SIEVE_INTERPRETER_H
 
@@ -8,10 +11,16 @@
 
 #include "sieve-common.h"
 
-/* Interpreter */
-
+/*
+ * Forward declarations
+ */
+ 
 struct sieve_interpreter;
 
+/*
+ * Runtime environment
+ */
+
 struct sieve_runtime_env {
 	struct sieve_interpreter *interp;
 
@@ -27,11 +36,19 @@ struct sieve_runtime_env {
 	struct ostream *trace_stream;
 };
 
+/* 
+ * Interpreter 
+ */
+
 struct sieve_interpreter *sieve_interpreter_create
 	(struct sieve_binary *sbin, struct sieve_error_handler *ehandler,
 		struct ostream *trace_stream);
 void sieve_interpreter_free(struct sieve_interpreter **interp);
 
+/*
+ * Accessors
+ */
+
 pool_t sieve_interpreter_pool
 	(struct sieve_interpreter *interp);
 struct sieve_script *sieve_interpreter_script
@@ -39,6 +56,10 @@ struct sieve_script *sieve_interpreter_script
 struct sieve_error_handler *sieve_interpreter_get_error_handler
 	(struct sieve_interpreter *interp);
 
+/*
+ * Program flow
+ */
+
 void sieve_interpreter_reset
 	(struct sieve_interpreter *interp);
 void sieve_interpreter_interrupt
@@ -49,12 +70,18 @@ sieve_size_t sieve_interpreter_program_counter
 int sieve_interpreter_program_jump
 	(struct sieve_interpreter *interp, bool jump);
 	
+/*
+ * Test results
+ */	
+	
 void sieve_interpreter_set_test_result
 	(struct sieve_interpreter *interp, bool result);
 bool sieve_interpreter_get_test_result
 	(struct sieve_interpreter *interp);
 	
-/* Error handling */
+/* 
+ * Error handling 
+ */
 
 /* This is not particularly user-friendly, so avoid using this.. */
 const char *sieve_runtime_location(const struct sieve_runtime_env *runenv);
@@ -69,7 +96,9 @@ void sieve_runtime_log
 	(const struct sieve_runtime_env *runenv, const char *location, 
 		const char *fmt, ...) ATTR_FORMAT(3, 4);
 
-/* Runtime Trace */
+/* 
+ * Runtime Trace 
+ */
 
 #ifdef SIEVE_RUNTIME_TRACE
 		
@@ -94,8 +123,9 @@ void _sieve_runtime_trace_error
 # define sieve_runtime_trace_error(runenv, ...)
 #endif
 
-
-/* Extension support */
+/* 
+ * Extension support 
+ */
 
 struct sieve_interpreter_extension {
 	const struct sieve_extension *ext;	
@@ -113,13 +143,17 @@ void sieve_interpreter_extension_set_context
 void *sieve_interpreter_extension_get_context
 	(struct sieve_interpreter *interp, const struct sieve_extension *ext); 
 
-/* Opcodes and operands */
+/* 
+ * Opcodes and operands 
+ */
 	
 int sieve_interpreter_handle_optional_operands
 	(const struct sieve_runtime_env *renv, sieve_size_t *address,
 		struct sieve_side_effects_list **list);
 
-/* Code execute */
+/* 
+ * Code execute 
+ */
 
 int sieve_interpreter_continue
 	(struct sieve_interpreter *interp, bool *interrupted);
diff --git a/src/lib-sieve/sieve-limits.h b/src/lib-sieve/sieve-limits.h
index 18b2437b1..d5cceda14 100644
--- a/src/lib-sieve/sieve-limits.h
+++ b/src/lib-sieve/sieve-limits.h
@@ -1,3 +1,6 @@
+/* Copyright (c) 2002-2008 Dovecot Sieve authors, see the included COPYING file
+ */
+
 #ifndef __SIEVE_LIMITS_H
 #define __SIEVE_LIMITS_H
 
@@ -29,4 +32,4 @@
 #define SIEVE_DEFAULT_MAX_REDIRECTS 4
 #define SIEVE_DEFAULT_MAX_ACTIONS   32
 
-#endif
+#endif /* __SIEVE_LIMITS_H */
diff --git a/src/lib-sieve/sieve-message.c b/src/lib-sieve/sieve-message.c
index 810c9c74f..908613d74 100644
--- a/src/lib-sieve/sieve-message.c
+++ b/src/lib-sieve/sieve-message.c
@@ -1,3 +1,6 @@
+/* Copyright (c) 2002-2008 Dovecot Sieve authors, see the included COPYING file
+ */
+
 #include "lib.h"
 #include "mempool.h"
 #include "array.h"
@@ -62,6 +65,15 @@ void sieve_message_context_flush(struct sieve_message_context *msgctx)
 	p_array_init(&msgctx->ext_contexts, pool, sieve_extensions_get_count());
 }
 
+pool_t sieve_message_context_pool(struct sieve_message_context *msgctx)
+{
+	return msgctx->pool;
+}
+
+/*
+ * Extension support
+ */
+
 void sieve_message_context_extension_set
 (struct sieve_message_context *msgctx, const struct sieve_extension *ext, 
 	void *context)
@@ -83,8 +95,3 @@ const void *sieve_message_context_extension_get
 	return *ctx;
 }
 
-pool_t sieve_message_context_pool(struct sieve_message_context *msgctx)
-{
-	return msgctx->pool;
-}
-
diff --git a/src/lib-sieve/sieve-message.h b/src/lib-sieve/sieve-message.h
index dff96e8d0..627a8a61c 100644
--- a/src/lib-sieve/sieve-message.h
+++ b/src/lib-sieve/sieve-message.h
@@ -1,7 +1,12 @@
+/* Copyright (c) 2002-2008 Dovecot Sieve authors, see the included COPYING file
+ */
+
 #ifndef __SIEVE_MESSAGE_H
 #define __SIEVE_MESSAGE_H
 
-/* Message context */
+/* 
+ * Message context 
+ */
 
 struct sieve_message_context;
 
@@ -11,12 +16,17 @@ void sieve_message_context_unref(struct sieve_message_context **msgctx);
 
 void sieve_message_context_flush(struct sieve_message_context *msgctx);
 
+pool_t sieve_message_context_pool
+	(struct sieve_message_context *msgctx);
+
+/*
+ * Extension support
+ */
+
 void sieve_message_context_extension_set
 	(struct sieve_message_context *msgctx, const struct sieve_extension *ext, 
 		void *context);
 const void *sieve_message_context_extension_get
 	(struct sieve_message_context *msgctx, const struct sieve_extension *ext);
-pool_t sieve_message_context_pool
-	(struct sieve_message_context *msgctx);
 	
-#endif
+#endif /* __SIEVE_MESSAGE_H */
diff --git a/src/lib-sieve/sieve-objects.c b/src/lib-sieve/sieve-objects.c
index a797d672d..ce2a461e9 100644
--- a/src/lib-sieve/sieve-objects.c
+++ b/src/lib-sieve/sieve-objects.c
@@ -1,3 +1,6 @@
+/* Copyright (c) 2002-2008 Dovecot Sieve authors, see the included COPYING file
+ */
+
 #include "sieve-common.h"
 #include "sieve-extensions.h"
 #include "sieve-code.h"
@@ -7,6 +10,10 @@
 
 #include "sieve-objects.h"
 
+/*
+ * Object coding
+ */
+
 void sieve_opr_object_emit
 (struct sieve_binary *sbin, const struct sieve_object *obj)
 {
diff --git a/src/lib-sieve/sieve-objects.h b/src/lib-sieve/sieve-objects.h
index 538fa0d64..1099d2d2b 100644
--- a/src/lib-sieve/sieve-objects.h
+++ b/src/lib-sieve/sieve-objects.h
@@ -1,6 +1,13 @@
+/* Copyright (c) 2002-2008 Dovecot Sieve authors, see the included COPYING file
+ */
+
 #ifndef __SIEVE_OBJECTS_H
 #define __SIEVE_OBJECTS_H
 
+/*
+ * Object
+ */
+
 struct sieve_object {
 	const char *identifier;
 	const struct sieve_operand *operand;
@@ -10,6 +17,10 @@ struct sieve_object {
 #define SIEVE_OBJECT(identifier, operand, code) \
 	{ identifier, operand, code }
 
+/*
+ * Object coding
+ */
+ 
 void sieve_opr_object_emit
 	(struct sieve_binary *sbin, const struct sieve_object *obj);
 
-- 
GitLab