/*
// ColdMUD was created and is copyright 1993, 1994 by Greg Hudson
//
// ColdX is a derivitive work, and is copyright 1995 by the ColdX Project.
// Full copyright information can be found in the file doc/CREDITS
//
// File: log.c
// Version: 0.1-5
// Last Edited: 30 Jul 1995
//
// ---
//
// Procedures to handle logging and fatal errors.
*/
#define _POSIX_SOURCE
#include <stdio.h>
#include <sys/types.h>
/*#include <time.h>*/
#include <stdarg.h>
#include "log.h"
#include "dump.h"
#include "cmstring.h"
#include "util.h"
#define STRFTIME
void panic(char *s) {
static int panic_state = 0;
fprintf(stderr, "[%s] %s: %s\n", timestamp(NULL),
(panic_state ? "RECURSIVE PANIC" : "PANIC"), s);
if (!panic_state) {
panic_state = 1;
fprintf(stderr, "[%s] doing binary dump...", timestamp(NULL));
binary_dump();
fputs("Done\n", stderr);
}
exit(1);
}
void abort(void)
{
panic("Aborted");
exit(1); /* Never reached. Avoids warnings on some compilers, tho */
}
void fail_to_start(char *s)
{
fprintf(stderr, "[%s] FAILED TO START: %s\n", timestamp(NULL), s);
exit(1);
}
void write_log(char *fmt, ...)
{
va_list arg;
String *str;
va_start(arg, fmt);
str = vformat(fmt, arg);
fputs(string_chars(str), stdout);
fputc('\n', stdout);
fflush(stdout);
string_discard(str);
va_end(arg);
}
void write_err(char *fmt, ...)
{
va_list arg;
String *str;
va_start(arg, fmt);
str = vformat(fmt, arg);
va_end(arg);
fprintf(stderr, "[%s] %s\n", timestamp(NULL), string_chars(str));
fflush(stderr);
string_discard(str);
}