void advise(const char *advice, ...) { va_list params; va_start(params, advice); vreportf("hint: ", advice, params); va_end(params); }
void warning(const char *warn, ...) { va_list params; va_start(params, warn); vreportf("Warning: ", warn, params); va_end(params); }
int error(const char *err, ...) { va_list params; va_start(params, err); vreportf("Error: ", err, params); va_end(params); return -1; }
/* * Public functions */ void usagef(const char *err, ...) { va_list params; va_start(params, err); vreportf("Usage: ", err, params); exit(129); va_end(params); }
static NORETURN void die_webcgi(const char *err, va_list params) { if (dead <= 1) { vreportf("fatal: ", err, params); http_status(500, "Internal Server Error"); hdr_nocache(); end_headers(); } exit(0); /* we successfully reported a failure ;-) */ }
static NORETURN void die_async(const char *err, va_list params) { vreportf("fatal: ", err, params); if (in_async()) { struct async *async = pthread_getspecific(async_key); if (async->proc_in >= 0) close(async->proc_in); if (async->proc_out >= 0) close(async->proc_out); pthread_exit((void *)128); } exit(128); }
static void warn_builtin(const char *warn, va_list params) { vreportf("warning: ", warn, params); }
static void error_builtin(const char *err, va_list params) { vreportf("error: ", err, params); }
static NORETURN void die_builtin(const char *err, va_list params) { vreportf("fatal: ", err, params); exit(128); }
static NORETURN void usage_builtin(const char *err, va_list params) { vreportf("usage: ", err, params); exit(129); }
/* * parent will make it look like the child spewed a fatal error and died * this is needed to prevent changes to t0061. */ static void fake_fatal(const char *err, va_list params) { vreportf("fatal: ", err, params); }
static NORETURN void die_routine(const char *err, va_list params){ vreportf("Fatal: ", err, params); exit(128); }