#include "config.h" #include "error.h" #include #include #include #include char *program_name; static void put_args(FILE *fp, int err, const char *type, const char *fmt, va_list args) { fflush(stdout); fprintf(fp, "%s: ", program_name ? program_name : PACKAGE); if (type != NULL) fprintf(fp, "%s: ", type); vfprintf(fp, fmt, args); if (err) fprintf(fp, ": %s", strerror(err)); fprintf(fp, "\n"); } void warn(int err, const char *fmt, ...) { va_list args; va_start(args, fmt); put_args(stderr, err, NULL, fmt, args); va_end(args); } int fail_longjmp; jmp_buf fail_jmp_buf; void fail(int err, const char *fmt, ...) { va_list args; va_start(args, fmt); put_args(stderr, err, "FAIL", fmt, args); va_end(args); if (fail_longjmp) longjmp(fail_jmp_buf, fail_longjmp); exit(EXIT_FAILURE); }