/* 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); }