#include #include #include #include #include _Noreturn void err(int ret, const char *fmt, ...) { va_list args; va_start(args, fmt); vwarn(fmt, args); va_end(args); exit(ret); } _Noreturn void errx(int ret, const char *fmt, ...) { va_list args; va_start(args, fmt); vwarnx(fmt, args); va_end(args); exit(ret); } void warn(const char *fmt, ...) { va_list args; va_start(args, fmt); vwarn(fmt, args); va_end(args); } void warnx(const char *fmt, ...) { va_list args; va_start(args, fmt); vwarnx(fmt, args); va_end(args); } void vwarn(const char *fmt, va_list args) { fprintf(stderr, "%s: ", getprogname()); if (fmt) { vfprintf(stderr, fmt, args); fprintf(stderr, ": "); } fprintf(stderr, "%s\n", strerror(errno)); } void vwarnx(const char *fmt, va_list args) { fprintf(stderr, "%s: ", getprogname()); if (fmt) vfprintf(stderr, fmt, args); fprintf(stderr, "\n"); }