#include "x.h" extern int dodebug; static void _log_stderr(const char *fmt, va_list ap) { char buf[MAXLINE]; vsnprintf(buf, MAXLINE-1, fmt, ap); fflush(stdout); fputs(buf, stderr); fflush(stderr); } void fatal(const char *fmt, ...) { va_list ap; va_start(ap, fmt); _log_stderr(fmt, ap); va_end(ap); exit(1); } void debug(const char *fmt, ...) { va_list ap; if (dodebug) { va_start(ap, fmt); _log_stderr(fmt, ap); va_end(ap); } } void *xmalloc(size_t size) { void *foo = malloc(size); if (foo == NULL) { fatal("Not enough memory\n"); } return foo; }