/* log.c */
#include "copyright.h"
#include "config.h"
#include <stdio.h>
#include <sys/time.h>
#include <varargs.h>
/* In-server logging routines. */
/* VARARGS */
void log_status(va_alist) va_dcl
{
FILE *fp;
struct timeval now;
char *q;
char *format;
va_list args;
(void) gettimeofday(&now, (struct timezone *) 0);
q = ctime(&now.tv_sec);
q[16] = '\0';
va_start(args);
format = va_arg(args, char *);
if ((fp = fopen(LOG_STATUS, "a")) == (FILE *) 0) {
(void) fprintf(stderr, "(Couldn't open %s) [%s] ", LOG_STATUS, q);
(void) vfprintf(stderr, format, args);
} else {
(void) fprintf(fp, "[%s] ", q);
(void) vfprintf(fp, format, args);
(void) fclose(fp);
}
va_end(args);
}
/* VARARGS */
void log_gripe(va_alist) va_dcl
{
FILE *fp;
struct timeval now;
char *q;
char *format;
va_list args;
(void) gettimeofday(&now, (struct timezone *) 0);
q = ctime(&now.tv_sec);
q[24] = '\0';
va_start(args);
format = va_arg(args, char *);
if ((fp = fopen(LOG_GRIPE, "a")) == (FILE *) 0) {
(void) fprintf(stderr, "(Couldn't open %s) [%s] ", LOG_GRIPE, q);
(void) vfprintf(stderr, format, args);
} else {
(void) fprintf(fp, "[%s] ", q);
(void) vfprintf(fp, format, args);
(void) fclose(fp);
}
va_end(args);
}
#ifdef SECURITY
/* VARARGS */
void log_security(va_alist) va_dcl
{
FILE *fp;
struct timeval now;
char *q, *format;
va_list args;
(void) gettimeofday(&now, (struct timezone *) 0);
q = ctime(&now.tv_sec);
q[24] = 0;
va_start(args);
format = va_arg(args, char *);
if ((fp = fopen(LOG_SECURITY, "a")) == (FILE *) 0) {
(void) fprintf(stderr, "(Couldn't open %s) [%s] ", LOG_SECURITY, q);
(void) vfprintf(stderr, format, args);
} else {
(void) fprintf(fp, "[%s] ", q);
(void) vfprintf(fp, format, args);
(void) fclose(fp);
}
va_end(args);
}
#endif
/* VARARGS */
void log_command(va_alist) va_dcl
{
FILE *fp;
struct timeval now;
char *q;
char *format;
va_list args;
(void) gettimeofday(&now, (struct timezone *) 0);
q = ctime(&now.tv_sec);
q[16] = '\0';
va_start(args);
format = va_arg(args, char *);
if ((fp = fopen(LOG_COMMAND, "a")) == (FILE *) 0) {
(void) fprintf(stderr, "(Couldn't open %s) [%s] ", LOG_COMMAND, q);
(void) vfprintf(stderr, format, args);
} else {
(void) fprintf(fp, "[%s] ", q);
(void) vfprintf(fp, format, args);
(void) fclose(fp);
}
va_end(args);
}
/* VARARGS */
void log_error(va_alist) va_dcl
{
FILE *fp;
struct timeval now;
char *q;
char *format;
va_list args;
(void) gettimeofday(&now, (struct timezone *) 0);
q = ctime(&now.tv_sec);
q[16] = '\0';
va_start(args);
format = va_arg(args, char *);
if ((fp = fopen(LOG_ERROR, "a")) == (FILE *) 0) {
(void) fprintf(stderr, "(Couldn't open %s) [%s] ", LOG_ERROR, q);
(void) vfprintf(stderr, format, args);
} else {
(void) fprintf(fp, "[%s] ", q);
(void) vfprintf(fp, format, args);
(void) fclose(fp);
}
va_end(args);
}
void warning(s1, s2)
char *s1, *s2;
{
log_error("%s(warning): %s\n", s1, s2);
}
void fatal(s1, s2)
char *s1, *s2;
{
log_error("%s(fatal): %s\n", s1, s2);
exit(1);
}