/
dirt31/
dirt31/bin/
#include "kernel.h"

#include <sys/file.h> /* */
#include <sys/stat.h>
#include <stdio.h>
#include <time.h>
#ifdef VARGS
#include <stdarg.h>
#endif
#include <errno.h>
#include "log.h"

extern char *sys_errlist[];

int open_logfile(char *logfile,Boolean clear_flag)
{
  int fd;
  int x = O_WRONLY|O_CREAT;

  if (clear_flag) x |= O_TRUNC;
  else x |= O_APPEND;

  if ((fd = open(logfile,x,S_IRUSR|S_IWUSR)) < 0) {
    fprintf(stderr, "\n%s: Cannot open logfile %s, program failed.\n",
	    progname, logfile);
    perror("open");
    return -1;
  }
  dup2(fd,fileno(stderr));
  close(fd);
  return 0;
}

void close_logfile()
{
  fclose(stderr);
}

void progerror(char *name)
{
  mudlog( "PERROR %s: [%d] %s", name, errno, sys_errlist[errno]);
}

#ifdef VARGS
void vmudlog( char *format, va_list pvar)
{
  char          *z;

  z = ctime(&global_clock);
  z[19] = '\0'; /* remove year specification */
  fprintf(stderr,"%s: ", z);
  vfprintf(stderr, format, pvar);
  putc('\n',stderr);
}

void mudlog( char *format, ...)
{
  va_list	pvar;

  va_start(pvar,format);
  vmudlog(format,pvar);
  va_end(pvar);
}
#else
/* VARARGS2 */
void mudlog(format, a1, a2, a3, a4, a5, a6)
     char	*format, *a1, *a2, *a3, *a4, *a5, *a6;
{
  char          *z;
  
  z = ctime(&global_clock);
  z[19] = '\0'; /* remove year specification */
  fprintf(stderr,"%s: ", z);
  fprintf(stderr, format, a1, a2, a3, a4, a5, a6);
  putc('\n',stderr);
}
#endif