From e0d30e3134fcbe54182d53e69f64167db408014b Mon Sep 17 00:00:00 2001 From: Niklas Date: Mon, 1 Aug 2011 16:55:01 +0200 Subject: added some log statements to the dhcpcd client. But unfortunately it seems that some message will not be delivered. It happens that after the process finished message, some other messages arrived --- workspace/customdhcpcd/src/logger.c | 59 +++++++++++++++++-------------------- 1 file changed, 27 insertions(+), 32 deletions(-) (limited to 'workspace/customdhcpcd/src/logger.c') diff --git a/workspace/customdhcpcd/src/logger.c b/workspace/customdhcpcd/src/logger.c index cecd2b8..91d6cc0 100644 --- a/workspace/customdhcpcd/src/logger.c +++ b/workspace/customdhcpcd/src/logger.c @@ -39,30 +39,27 @@ #include #include - #include "common.h" #include "logger.h" #include "logwriter.h" - static int loglevel = LOG_WARNING; -static char logprefix[12] = {0}; +static char logprefix[12] = { 0 }; -int logtolevel (const char *priority) -{ +int logtolevel(const char *priority) { CODE *c; if (isdigit ((int) *priority)) - return (atoi (priority)); + return (atoi(priority)); for (c = prioritynames; c->c_name; c++) - if (! strcasecmp (priority, c->c_name)) + if (!strcasecmp(priority, c->c_name)) return (c->c_val); return (-1); } -static const char *leveltolog (int level) { +static const char *leveltolog(int level) { CODE *c; for (c = prioritynames; c->c_name; c++) @@ -72,18 +69,15 @@ static const char *leveltolog (int level) { return (NULL); } -void setloglevel (int level) -{ +void setloglevel(int level) { loglevel = level; } -void setlogprefix (const char *prefix) -{ - snprintf (logprefix, sizeof (logprefix), "%s", prefix); +void setlogprefix(const char *prefix) { + snprintf(logprefix, sizeof(logprefix), "%s", prefix); } -void logger (int level, const char *fmt, ...) -{ +void logger(int level, const char *fmt, ...) { va_list p; va_list p2; FILE *f = stderr; @@ -92,38 +86,39 @@ void logger (int level, const char *fmt, ...) va_copy (p2, p); if (level <= LOG_ERR || level <= loglevel) { - if (level == LOG_DEBUG || level == LOG_INFO) - f = stdout; - fprintf (f, "%s, %s", leveltolog (level), logprefix); - vfprintf (f, fmt, p); - fputc ('\n', f); /* new function by Niklas Goby * send the log message also to our Qt programm. * implemented in logwriter.c * */ - logLoggerToQt(level, fmt, p); + logLoggerToQt(level, fmt, p); + + if (level == LOG_DEBUG || level == LOG_INFO) + f = stdout; + fprintf(f, "%s, %s", leveltolog(level), logprefix); + vfprintf(f, fmt, p); + fputc('\n', f); /* stdout, stderr may be re-directed to some kind of buffer. * So we always flush to ensure it's written. */ - fflush (f); + fflush(f); } if (level < LOG_DEBUG || level <= loglevel) { - size_t len = strlen (logprefix); - size_t fmt2len = strlen (fmt) + len + 1; - char *fmt2 = malloc (sizeof (char) * fmt2len); + size_t len = strlen(logprefix); + size_t fmt2len = strlen(fmt) + len + 1; + char *fmt2 = malloc(sizeof(char) * fmt2len); char *pf = fmt2; if (fmt2) { - memcpy (pf, logprefix, len); + memcpy(pf, logprefix, len); pf += len; - strlcpy (pf, fmt, fmt2len - len); - vsyslog (level, fmt2, p2); - free (fmt2); + strlcpy(pf, fmt, fmt2len - len); + vsyslog(level, fmt2, p2); + free(fmt2); } else { - vsyslog (level, fmt, p2); - syslog (LOG_ERR, "logger: memory exhausted"); - exit (EXIT_FAILURE); + vsyslog(level, fmt, p2); + syslog(LOG_ERR, "logger: memory exhausted"); + exit(EXIT_FAILURE); } } -- cgit v1.2.3-55-g7522