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