#include <stdarg.h>
#include <stdio.h>
#include "chanserv.h"
+#include "../core/hooks.h"
+#include "../core/error.h"
int logfd;
+/* When we get a sigusr1, reopen the logfile */
+void cs_usr1handler(int hooknum, void *arg) {
+ Error("chanserv",ERR_INFO,"Reopening logfile.");
+
+ if (logfd>=0)
+ close(logfd);
+
+ logfd=open("chanservlog",O_WRONLY|O_CREAT|O_APPEND,S_IRUSR|S_IWUSR);
+}
+
void cs_initlog() {
- logfd=open("chanservlog.0",O_WRONLY|O_CREAT|O_APPEND,S_IRUSR|S_IWUSR);
+ logfd=open("chanservlog",O_WRONLY|O_CREAT|O_APPEND,S_IRUSR|S_IWUSR);
+ registerhook(HOOK_CORE_SIGUSR1, cs_usr1handler);
}
void cs_closelog() {
if (logfd>=0)
close(logfd);
+ deregisterhook(HOOK_CORE_SIGUSR1, cs_usr1handler);
}
void cs_log(nick *np, char *event, ... ) {
char buf2[1024];
char userbuf[512];
va_list va;
- struct tm *tm;
- time_t now;
- char timebuf[100];
+ char timebuf[TIMELEN];
int len;
+ time_t now;
if (logfd<0)
return;
}
now=time(NULL);
- tm=gmtime(&now);
- strftime(timebuf,100,"%Y-%m-%d %H:%M:%S",tm);
- len=snprintf(buf2,1024,"[%s] %s %s\n",timebuf,userbuf,buf);
+ strftime(timebuf,sizeof(timebuf),Q9_LOG_FORMAT_TIME, gmtime(&now));
+ len=snprintf(buf2,sizeof(buf2),"[%s] %s %s\n",timebuf,userbuf,buf);
write(logfd, buf2, len);
}