diff --git a/TODO b/TODO index 88606a22c13d4f05ecbf60dd5074973f17829c6f..a759664f1e92f73567d7705c42618e22df47478f 100644 --- a/TODO +++ b/TODO @@ -1,6 +1,7 @@ Next (in order of descending priority/precedence): * Review sieve-address parsing implementation for past-end checks * Improve handling of old/corrupt binaries. +* Move to 1.2 and start using mailbox_keyword_is_valid() and new const str. * Test with dovecot --enable-debug for initial mempool allocation size * Full standards compliance review for the engine and all fully implemented @@ -15,8 +16,6 @@ Next (in order of descending priority/precedence): * Full security review. Enforce limits on number of created objects, script size, execution time, etc... * Make simple test suite for the base functionality -* Distinguish between 1.2 and 1.1 and start using mailbox_keyword_is_valid() - and new const str. * ## MAKE A FIRST RELEASE ## diff --git a/src/lib-sieve/sieve-error.c b/src/lib-sieve/sieve-error.c index 88f002670bea642e43a633b36db08c165b8f0314..26161e64555ffd17af49c23892337a29fd6f3396 100644 --- a/src/lib-sieve/sieve-error.c +++ b/src/lib-sieve/sieve-error.c @@ -37,9 +37,9 @@ void sieve_verror if ( ehandler->log_master ) { if ( location == NULL || *location == '\0' ) - sieve_sys_verror(fmt, args); + sieve_sys_error("%s", t_strdup_vprintf(fmt, args)); else - sieve_sys_error("%s: %s", t_strdup_vprintf(fmt, args)); + sieve_sys_error("%s: %s", location, t_strdup_vprintf(fmt, args)); } if ( sieve_errors_more_allowed(ehandler) ) { @@ -56,9 +56,9 @@ void sieve_vwarning if ( ehandler->log_master ) { if ( location == NULL || *location == '\0' ) - sieve_sys_vwarning(fmt, args); + sieve_sys_warning("%s", t_strdup_vprintf(fmt, args)); else - sieve_sys_warning("sieve: %s: %s", location, t_strdup_vprintf(fmt, args)); + sieve_sys_warning("%s: %s", location, t_strdup_vprintf(fmt, args)); } ehandler->vwarning(ehandler, location, fmt, args); @@ -73,7 +73,7 @@ void sieve_vinfo if ( ehandler->log_master ) { if ( location == NULL || *location == '\0' ) - sieve_sys_vinfo(fmt, args); + sieve_sys_info("%s", t_strdup_vprintf(fmt, args)); else sieve_sys_info("%s: %s", location, t_strdup_vprintf(fmt, args)); } @@ -92,7 +92,7 @@ void sieve_vcritical tm = localtime(&ioloop_time); if ( location == NULL || *location == '\0' ) - sieve_sys_verror(fmt, args); + sieve_sys_error("%s", t_strdup_vprintf(fmt, args)); else sieve_sys_error("%s: %s", location, t_strdup_vprintf(fmt, args)); diff --git a/src/lib-sieve/sieve-error.h b/src/lib-sieve/sieve-error.h index ab2743a96068fc4ac29ebf8a8c0bd612a2a1785b..a39f6cc25a2acc54542b362f576dfa498d8ee462 100644 --- a/src/lib-sieve/sieve-error.h +++ b/src/lib-sieve/sieve-error.h @@ -20,53 +20,12 @@ typedef void (*sieve_error_vfunc_t) /* * System errors * - * FIXME: Low-level access to the Dovecot logging functions would be nice. + * FIXME: Low-level access to the Dovecot logging functions would be useful. */ -static inline void sieve_sys_verror(const char *fmt, va_list args) -{ - i_error("sieve: %s", t_strdup_vprintf(fmt, args)); -} - -static inline void sieve_sys_vwarning(const char *fmt, va_list args) -{ - i_warning("sieve: %s", t_strdup_vprintf(fmt, args)); -} - -static inline void sieve_sys_vinfo(const char *fmt, va_list args) -{ - i_info("sieve: %s", t_strdup_vprintf(fmt, args)); -} - -static inline void sieve_sys_error(const char *fmt, ...) -{ - va_list args; - va_start(args, fmt); - - T_BEGIN { sieve_sys_verror(fmt, args); } T_END; - - va_end(args); -} - -static inline void sieve_sys_warning(const char *fmt, ...) -{ - va_list args; - va_start(args, fmt); - - T_BEGIN { sieve_sys_vwarning(fmt, args); } T_END; - - va_end(args); -} - -static inline void sieve_sys_info(const char *fmt, ...) -{ - va_list args; - va_start(args, fmt); - - T_BEGIN { sieve_sys_vinfo(fmt, args); } T_END; - - va_end(args); -} +#define sieve_sys_error(...) i_error("sieve: " __VA_ARGS__ ) +#define sieve_sys_warning(...) i_warning("sieve: " __VA_ARGS__ ) +#define sieve_sys_info(...) i_info("sieve: " __VA_ARGS__ ) /* For these functions it is the responsibility of the caller to * manage the datastack.