X-Git-Url: https://tinc-vpn.org/git/browse?p=tinc;a=blobdiff_plain;f=src%2Flogger.c;h=8e73a6d3759376eccc2ff0301ae99152c8b8f673;hp=2421464a765af14ddb26539f3c9aa4d2a82198c1;hb=802a50ffcd5f39bfc6424ac841de4e41154092fc;hpb=f08fc359a0b7f638e73a8f866119b016b7dff8de diff --git a/src/logger.c b/src/logger.c index 2421464a..8e73a6d3 100644 --- a/src/logger.c +++ b/src/logger.c @@ -1,7 +1,7 @@ /* logger.c -- logging code - Copyright (C) 2003 Guus Sliepen - 2003 Ivo Timmermans + Copyright (C) 2004-2006 Guus Sliepen + 2004-2005 Ivo Timmermans This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -17,7 +17,7 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id: logger.c,v 1.1.2.9 2003/08/02 20:50:38 guus Exp $ + $Id$ */ #include "system.h" @@ -30,6 +30,9 @@ static logmode_t logmode = LOGMODE_STDERR; static pid_t logpid; extern char *logfilename; static FILE *logfile = NULL; +#ifdef HAVE_MINGW +static HANDLE loghandle = NULL; +#endif static const char *logident = NULL; void openlogger(const char *ident, logmode_t mode) { @@ -47,9 +50,16 @@ void openlogger(const char *ident, logmode_t mode) { logmode = LOGMODE_NULL; break; case LOGMODE_SYSLOG: +#ifdef HAVE_MINGW + loghandle = RegisterEventSource(NULL, logident); + if(!loghandle) + logmode = LOGMODE_NULL; + break; +#else #ifdef HAVE_SYSLOG_H openlog(logident, LOG_CONS | LOG_PID, LOG_DAEMON); break; +#endif #endif case LOGMODE_NULL: break; @@ -68,12 +78,20 @@ void logger(int priority, const char *format, ...) { fflush(stderr); break; case LOGMODE_FILE: - fprintf(logfile, "%ld %s[%d]: ", time(NULL), logident, logpid); + fprintf(logfile, "%ld %s[%ld]: ", time(NULL), logident, (long)logpid); vfprintf(logfile, format, ap); fprintf(logfile, "\n"); fflush(logfile); break; case LOGMODE_SYSLOG: +#ifdef HAVE_MINGW + { + char message[4096]; + char *messages[] = {message}; + vsnprintf(message, sizeof(message), format, ap); + ReportEvent(loghandle, priority, 0, 0, NULL, 1, 0, messages, NULL); + } +#else #ifdef HAVE_SYSLOG_H #ifdef HAVE_VSYSLOG vsyslog(priority, format, ap); @@ -85,6 +103,7 @@ void logger(int priority, const char *format, ...) { } #endif break; +#endif #endif case LOGMODE_NULL: break; @@ -99,9 +118,14 @@ void closelogger(void) { fclose(logfile); break; case LOGMODE_SYSLOG: +#ifdef HAVE_MINGW + DeregisterEventSource(loghandle); + break; +#else #ifdef HAVE_SYSLOG_H closelog(); break; +#endif #endif case LOGMODE_NULL: case LOGMODE_STDERR: