#include <sys/cdefs.h>
#if __has_include_next(<err.h>)
#include_next <err.h>
+#else
+#define LIBBSD_NEED_ERR_H_FUNCS
#endif
#else
#include <bsd/sys/cdefs.h>
#if __has_include(<err.h>)
#include <err.h>
+#else
+#define LIBBSD_NEED_ERR_H_FUNCS
#endif
#endif
__printflike(3, 0) __dead2;
void errc(int status, int code, const char *format, ...)
__printflike(3, 4) __dead2;
+
+#ifdef LIBBSD_NEED_ERR_H_FUNCS
+void vwarn(const char *format, va_list ap)
+ __printflike(1, 0);
+void vwarnx(const char *format, va_list ap)
+ __printflike(1, 0);
+void warn(const char *format, ...)
+ __printflike(1, 2);
+void warnx(const char *format, ...)
+ __printflike(1, 2);
+
+void verr(int status, const char *format, va_list ap)
+ __printflike(2, 0) __dead2;
+void verrx(int status, const char *format, va_list ap)
+ __printflike(2, 0) __dead2;
+void err(int status, const char *format, ...)
+ __printflike(2, 3) __dead2;
+void errx(int status, const char *format, ...)
+ __printflike(2, 3) __dead2;
+#endif
__END_DECLS
#endif
*/
#include <err.h>
+#ifdef LIBBSD_NEED_ERR_H_FUNCS
+#include <errno.h>
+#endif
#include <string.h>
#include <stdarg.h>
#include <stdlib.h>
verrc(status, code, format, ap);
va_end(ap);
}
+
+#ifdef LIBBSD_NEED_ERR_H_FUNCS
+void
+vwarn(const char *format, va_list ap)
+{
+ vwarnc(errno, format, ap);
+}
+
+void
+warn(const char *format, ...)
+{
+ va_list ap;
+
+ va_start(ap, format);
+ vwarnc(errno, format, ap);
+ va_end(ap);
+}
+
+void
+vwarnx(const char *format, va_list ap)
+{
+ fprintf(stderr, "%s: ", getprogname());
+ if (format)
+ vfprintf(stderr, format, ap);
+ fprintf(stderr, "\n");
+}
+
+void
+warnx(const char *format, ...)
+{
+ va_list ap;
+
+ va_start(ap, format);
+ vwarnx(format, ap);
+ va_end(ap);
+}
+
+void
+verr(int status, const char *format, va_list ap)
+{
+ verrc(status, errno, format, ap);
+}
+
+void
+err(int status, const char *format, ...)
+{
+ va_list ap;
+
+ va_start(ap, format);
+ verrc(status, errno, format, ap);
+ va_end(ap);
+}
+
+void
+verrx(int eval, const char *format, va_list ap)
+{
+ fprintf(stderr, "%s: ", getprogname());
+ if (format)
+ vfprintf(stderr, format, ap);
+ fprintf(stderr, "\n");
+ exit(eval);
+}
+
+void
+errx(int eval, const char *format, ...)
+{
+ va_list ap;
+
+ va_start(ap, format);
+ verrx(eval, format, ap);
+ va_end(ap);
+}
+#endif