/******************************************/ /* warnf.c 5.0.2 (1999-Dec-06-Mon) */ /* Adam M. Costello */ /******************************************/ /* Implementation of the interface defined by warnf.h 5.0.*. */ /* This is ANSI C code. */ #include "warnf.h" #include #include #include static const char unused; const char * const warnf_code_ref_hook = &unused; static int warnf_guts(const char *format, va_list ap) { int line, r1, r2; const char *file; if (format != warnf_code_ref_hook) { return vfprintf(stderr,format,ap); } file = va_arg(ap, const char *); line = va_arg(ap, int); format = va_arg(ap, const char *); r1 = vfprintf(stderr,format,ap); if (r1 < 0) return r1; r2 = fprintf(stderr, " at %s line %d\n", file, line); return r2 < 0 ? r2 : r1 + r2; } int warnf(const char *format, ...) { va_list ap; int r; va_start(ap,format); r = warnf_guts(format,ap); va_end(ap); fflush(stderr); return r; } void failf(const char *format, ...) { va_list ap; va_start(ap,format); warnf_guts(format,ap); va_end(ap); exit(EXIT_FAILURE); } void abortf(const char *format, ...) { va_list ap; va_start(ap,format); warnf_guts(format,ap); va_end(ap); abort(); } const char *out_of_memory = "out of memory\n";