diff options
Diffstat (limited to 'system/kbd/error.h')
-rw-r--r-- | system/kbd/error.h | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/system/kbd/error.h b/system/kbd/error.h new file mode 100644 index 000000000..5eb8ed511 --- /dev/null +++ b/system/kbd/error.h @@ -0,0 +1,20 @@ +#ifndef ERROR_H +#define ERROR_H + +#include <stdio.h> +#include <stdarg.h> +#include <err.h> + +static inline void error(int status, int errnum, const char *fmt, ...) +{ + va_list ap; + void (*errfunc[2])(int, const char *, va_list) = { &verr, &verrx }; + void (*warnfunc[2])(const char *, va_list) = { &vwarn, &vwarnx }; + fflush(stdout); + va_start(ap, fmt); + if (status != 0) + errfunc[errnum==0](status, fmt, ap); /* does not return */ + warnfunc[errnum==0](fmt, ap); + va_end(ap); +} +#endif |