|
@@ -0,0 +1,60 @@
|
|
|
+#include <err.h>
|
|
|
+#include <stdio.h>
|
|
|
+#include <stdarg.h>
|
|
|
+#include <stdlib.h>
|
|
|
+
|
|
|
+void vwarn(const char *fmt, va_list ap)
|
|
|
+{
|
|
|
+ vfprintf(stderr, fmt, ap);
|
|
|
+ perror("");
|
|
|
+}
|
|
|
+
|
|
|
+void vwarnx(const char *fmt, va_list ap)
|
|
|
+{
|
|
|
+ vfprintf(stderr, fmt, ap);
|
|
|
+ putc('\n', stderr);
|
|
|
+}
|
|
|
+
|
|
|
+void verr(int status, const char *fmt, va_list ap)
|
|
|
+{
|
|
|
+ vwarn(fmt, ap);
|
|
|
+ exit(status);
|
|
|
+}
|
|
|
+
|
|
|
+void verrx(int status, const char *fmt, va_list ap)
|
|
|
+{
|
|
|
+ vwarnx(fmt, ap);
|
|
|
+ exit(status);
|
|
|
+}
|
|
|
+
|
|
|
+void warn(const char *fmt, ...)
|
|
|
+{
|
|
|
+ va_list ap;
|
|
|
+ va_start(ap, fmt);
|
|
|
+ vwarn(fmt, ap);
|
|
|
+ va_end(ap);
|
|
|
+}
|
|
|
+
|
|
|
+void warnx(const char *fmt, ...)
|
|
|
+{
|
|
|
+ va_list ap;
|
|
|
+ va_start(ap, fmt);
|
|
|
+ vwarnx(fmt, ap);
|
|
|
+ va_end(ap);
|
|
|
+}
|
|
|
+
|
|
|
+void err(int status, const char *fmt, ...)
|
|
|
+{
|
|
|
+ va_list ap;
|
|
|
+ va_start(ap, fmt);
|
|
|
+ verr(status, fmt, ap);
|
|
|
+ va_end(ap);
|
|
|
+}
|
|
|
+
|
|
|
+void errx(int status, const char *fmt, ...)
|
|
|
+{
|
|
|
+ va_list ap;
|
|
|
+ va_start(ap, fmt);
|
|
|
+ verrx(status, fmt, ap);
|
|
|
+ va_end(ap);
|
|
|
+}
|