improved openac dbg function handling multiple lines to syslog

This commit is contained in:
Andreas Steffen 2009-04-17 21:58:53 +00:00
parent c889ce80ab
commit 815510e637
1 changed files with 18 additions and 1 deletions

View File

@ -218,18 +218,35 @@ static bool stderr_quiet = FALSE;
static void openac_dbg(int level, char *fmt, ...)
{
int priority = LOG_INFO;
char buffer[8192];
char *current = buffer, *next;
va_list args;
if (level <= debug_level)
{
va_start(args, fmt);
if (!stderr_quiet)
{
vfprintf(stderr, fmt, args);
fprintf(stderr, "\n");
}
vsyslog(priority, fmt, args);
/* write in memory buffer first */
vsnprintf(buffer, sizeof(buffer), fmt, args);
va_end(args);
/* do a syslog with every line */
while (current)
{
next = strchr(current, '\n');
if (next)
{
*(next++) = '\0';
}
syslog(priority, "%s\n", current);
current = next;
}
}
}