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