dbm/
misc/
old-docs/
/* 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);
}