// util/error.h, version 1.1.2 // Error source file from libutil // Copyright (C) 2020, Jakob Wakeling // MIT Licence #include "error.h" #include #include #include #include #include #include #include char *A0 = NULL; bool warned = false; /* Print an error message and exit. */ noreturn void error(int status, const char *format, ...) { fflush(stdout); if (A0) { fputs(A0, stderr); fputs(": ", stderr); } va_list ap; va_start(ap, format); vfprintf(stderr, format, ap); va_end(ap); fputc('\n', stderr); exit(status); } /* Print a warning message and set the warned flag. */ void warn(const char *format, ...) { fflush(stdout); if (A0) { fputs(A0, stderr); fputs(": ", stderr); } va_list ap; va_start(ap, format); vfprintf(stderr, format, ap); va_end(ap); fputc('\n', stderr); warned = true; return; } /* Print a warning message but do not set the warned flag. */ void alert(const char *format, ...) { fflush(stdout); if (A0) { fputs(A0, stderr); fputs(": ", stderr); } va_list ap; va_start(ap, format); vfprintf(stderr, format, ap); va_end(ap); fputc('\n', stderr); return; } /* Shorthand for strerror(errno). DEPRECIATED, use the SERR macro. */ char *serr(void) { return strerror(errno); }