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