From f9b1c10e6f7c892a0687bbf79b27770d8d078239 Mon Sep 17 00:00:00 2001 From: Stephan Bosch <stephan@rename-it.nl> Date: Wed, 9 Feb 2011 19:29:43 +0100 Subject: [PATCH] Testsuite: added info log output to -E command line option. --- src/testsuite/testsuite-log.c | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/src/testsuite/testsuite-log.c b/src/testsuite/testsuite-log.c index 20f2c77dd..19f7f6903 100644 --- a/src/testsuite/testsuite-log.c +++ b/src/testsuite/testsuite-log.c @@ -33,6 +33,7 @@ struct _testsuite_log_message { static pool_t _testsuite_logmsg_pool = NULL; ARRAY_DEFINE(_testsuite_log_errors, struct _testsuite_log_message); ARRAY_DEFINE(_testsuite_log_warnings, struct _testsuite_log_message); +ARRAY_DEFINE(_testsuite_log_messages, struct _testsuite_log_message); static void _testsuite_log_verror (struct sieve_error_handler *ehandler ATTR_UNUSED, @@ -99,6 +100,32 @@ static void _testsuite_log_vwarning array_append(&_testsuite_log_warnings, &msg, 1); } +static void _testsuite_log_vinfo +(struct sieve_error_handler *ehandler ATTR_UNUSED, + unsigned int flags ATTR_UNUSED, const char *location, const char *fmt, + va_list args) +{ + pool_t pool = _testsuite_logmsg_pool; + struct _testsuite_log_message msg; + + if ( _testsuite_log_stdout ) { + va_list args_copy; + VA_COPY(args_copy, args); + + if ( location == NULL || *location == '\0' ) + fprintf(stdout, + "LOG: warning: %s.\n", t_strdup_vprintf(fmt, args_copy)); + else + fprintf(stdout, + "LOG: warning: %s: %s.\n", location, t_strdup_vprintf(fmt, args_copy)); + } + + msg.location = p_strdup(pool, location); + msg.message = p_strdup_vprintf(pool, fmt, args); + + array_append(&_testsuite_log_messages, &msg, 1); +} + static struct sieve_error_handler *_testsuite_log_ehandler_create(void) { pool_t pool; @@ -111,6 +138,7 @@ static struct sieve_error_handler *_testsuite_log_ehandler_create(void) ehandler->verror = _testsuite_log_verror; ehandler->vwarning = _testsuite_log_vwarning; + ehandler->vinfo = _testsuite_log_vinfo; return ehandler; } @@ -148,6 +176,7 @@ void testsuite_log_clear_messages(void) p_array_init(&_testsuite_log_errors, _testsuite_logmsg_pool, 128); p_array_init(&_testsuite_log_warnings, _testsuite_logmsg_pool, 128); + p_array_init(&_testsuite_log_messages, _testsuite_logmsg_pool, 128); sieve_error_handler_reset(testsuite_log_ehandler); } -- GitLab