/
teeny/db/
teeny/dbm/
teeny/docs/
teeny/includes/
teeny/misc/
teeny/news/
teeny/text/
/* log.c */

#include "copyright.h"
#include "config.h"

#include <stdio.h>
#include <sys/time.h>
#include <varargs.h>

/* In-server logging routines. */

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

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