/* Misc support routines for unter style error management. Stolen from mjr. Modded to scribble on stderr, for now. Andrew Molitor, amolitor@eagle.wesleyan.edu */ #include "autoconf.h" #include "copyright.h" #ifndef lint static char *RCSid = "$Id: udb_misc.c,v 1.7 1995/03/21 00:01:28 ambar Exp $"; USE(RCSid); #endif #include "udb_defs.h" #include "externs.h" /* Log database errors */ void log_db_err(obj, attr, txt) int obj, attr; const char *txt; { STARTLOG(LOG_ALWAYS, "DBM", "ERROR") log_text((char *) "Could not "); log_text((char *) txt); log_text((char *) " object #"); log_number(obj); if (attr != NOTHING) { log_text((char *) " attr #"); log_number(attr); } ENDLOG } /* print a series of warnings - do not exit */ /* VARARGS */ #if defined(__STDC__) && defined(STDC_HEADERS) void logf(char *p,...) #else void logf(va_alist) va_dcl #endif { va_list ap; #if defined(__STDC__) && defined(STDC_HEADERS) va_start(ap, p); #else char *p; va_start(ap); p = va_arg(ap, char *); #endif while (1) { if (p == (char *) 0) break; if (p == (char *) -1) p = sys_errlist[errno]; (void) fprintf(stderr, "%s", p); p = va_arg(ap, char *); } va_end(ap); (void) fflush(stderr); } /* print a series of warnings - exit */ /* VARARGS */ #if defined(__STDC__) && defined(STDC_HEADERS) void fatal(char *p,...) #else void fatal(va_alist) va_dcl #endif { va_list ap; #if defined(__STDC__) && defined(STDC_HEADERS) va_start(ap, p); #else char *p; va_start(ap); p = va_arg(ap, char *); #endif while (1) { if (p == (char *) 0) break; if (p == (char *) -1) p = sys_errlist[errno]; (void) fprintf(stderr, "%s", p); p = va_arg(ap, char *); } va_end(ap); (void) fflush(stderr); exit(1); }