aboutsummaryrefslogtreecommitdiff
path: root/iauth/a_log.c
diff options
context:
space:
mode:
Diffstat (limited to 'iauth/a_log.c')
-rw-r--r--iauth/a_log.c123
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