From b4c9ab9c79f1f0c4c6e191f14ab2547c743b337c Mon Sep 17 00:00:00 2001 From: Tobias Brunner Date: Tue, 3 May 2011 10:50:28 +0200 Subject: [PATCH] Cache group name in sys_logger_t to avoid problems with Vstr. Because syslog(3) is not replaced when using the Vstr wrapper, %N can not be resolved properly. --- src/libcharon/bus/listeners/sys_logger.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/libcharon/bus/listeners/sys_logger.c b/src/libcharon/bus/listeners/sys_logger.c index 1e80387da..c29c9f2e4 100644 --- a/src/libcharon/bus/listeners/sys_logger.c +++ b/src/libcharon/bus/listeners/sys_logger.c @@ -54,11 +54,13 @@ METHOD(listener_t, log_, bool, { if (level <= this->levels[group]) { - char buffer[8192], namestr[128] = ""; + char buffer[8192], groupstr[4], namestr[128] = ""; char *current = buffer, *next; /* write in memory buffer first */ vsnprintf(buffer, sizeof(buffer), format, args); + /* cache group name */ + snprintf(groupstr, sizeof(groupstr), "%N", debug_names, group); if (this->ike_name && ike_sa) { @@ -82,8 +84,8 @@ METHOD(listener_t, log_, bool, { *(next++) = '\0'; } - syslog(this->facility|LOG_INFO, "%.2d[%N]%s %s\n", - thread, debug_names, group, namestr, current); + syslog(this->facility|LOG_INFO, "%.2d[%s]%s %s\n", + thread, groupstr, namestr, current); current = next; } }