diff options
Diffstat (limited to 'iauth/a_log.c')
-rw-r--r-- | iauth/a_log.c | 123 |
1 files changed, 123 insertions, 0 deletions
diff --git a/iauth/a_log.c b/iauth/a_log.c new file mode 100644 index 0000000..5307cfe --- /dev/null +++ b/iauth/a_log.c @@ -0,0 +1,123 @@ +/************************************************************************ + * IRC - Internet Relay Chat, iauth/a_log.c + * Copyright (C) 1998 Christophe Kalt + * + * 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 + * the Free Software Foundation; either version 1, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +#ifndef lint +static char rcsid[] = "@(#)$Id: a_log.c,v 1.6 1999/02/21 00:33:45 kalt Exp $"; +#endif + +#include "os.h" +#include "a_defines.h" +#define A_LOG_C +#include "a_externs.h" +#undef A_LOG_C + +static FILE *debug = NULL, *authlog = NULL; + +void +init_filelogs() +{ +#if defined(IAUTH_DEBUG) + if (debug) + fclose(debug); + debug = fopen(IAUTHDBG_PATH, "w"); +# if defined(USE_SYSLOG) + if (!debug) + syslog(LOG_ERR, "Failed to open \"%s\" for writing", + IAUTHDBG_PATH); +# endif +#endif /* IAUTH_DEBUG */ + if (authlog) + fclose(authlog); + authlog = fopen(FNAME_AUTHLOG, "a"); +#if defined(USE_SYSLOG) + if (!authlog) + syslog(LOG_NOTICE, "Failed to open \"%s\" for writing", + FNAME_AUTHLOG); +#endif +} + +void +init_syslog() +{ +#if defined(USE_SYSLOG) + openlog("iauth", LOG_PID|LOG_NDELAY, LOG_FACILITY); +#endif +} + +#if ! USE_STDARG +void +sendto_log(flags, slflag, pattern, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10) +int flags, slflag; +char *pattern, *p1, *p2, *p3, *p4, *p5, *p6, *p7, *p8, *p9, *p10; +#else +void +vsendto_log(int flags, int slflag, char *pattern, va_list va) +#endif +{ + char logbuf[4096]; + + logbuf[0] = '>'; +#if ! USE_STDARG + sprintf(logbuf+1, pattern, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10); +#else + vsprintf(logbuf+1, pattern, va); +#endif + +#if defined(USE_SYSLOG) + if (slflag) + syslog(slflag, logbuf+1); +#endif + + strcat(logbuf, "\n"); + +#if defined(IAUTH_DEBUG) + if ((flags & ALOG_DALL) && (flags & debuglevel) && debug) + { + fprintf(debug, logbuf+1); + fflush(debug); + } +#endif + if (authlog && (flags & ALOG_FLOG)) + { + fprintf(authlog, "%s: %s", myctime(time(NULL)), logbuf+1); + fflush(authlog); + } + if (flags & ALOG_IRCD) + { + write(0, logbuf, strlen(logbuf)); +#if defined(IAUTH_DEBUG) + if ((ALOG_DSPY & debuglevel) && debug) + { + fprintf(debug, "To ircd: %s", logbuf+1); + fflush(debug); + } +#endif + } +} + +#if USE_STDARG +void +sendto_log(int flags, int slflag, char *pattern, ...) +{ + va_list va; + va_start(va, pattern); + vsendto_log(flags, slflag, pattern, va); + va_end(va); +} +#endif |