summaryrefslogtreecommitdiff
path: root/system/kbd/error.h
diff options
context:
space:
mode:
Diffstat (limited to 'system/kbd/error.h')
-rw-r--r--system/kbd/error.h20
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