1570af302Sopenharmony_ci#include <err.h> 2570af302Sopenharmony_ci#include <stdio.h> 3570af302Sopenharmony_ci#include <stdarg.h> 4570af302Sopenharmony_ci#include <stdlib.h> 5570af302Sopenharmony_ci 6570af302Sopenharmony_ciextern char *__progname; 7570af302Sopenharmony_ci 8570af302Sopenharmony_civoid vwarn(const char *fmt, va_list ap) 9570af302Sopenharmony_ci{ 10570af302Sopenharmony_ci fprintf (stderr, "%s: ", __progname); 11570af302Sopenharmony_ci if (fmt) { 12570af302Sopenharmony_ci vfprintf(stderr, fmt, ap); 13570af302Sopenharmony_ci fputs (": ", stderr); 14570af302Sopenharmony_ci } 15570af302Sopenharmony_ci perror(0); 16570af302Sopenharmony_ci} 17570af302Sopenharmony_ci 18570af302Sopenharmony_civoid vwarnx(const char *fmt, va_list ap) 19570af302Sopenharmony_ci{ 20570af302Sopenharmony_ci fprintf (stderr, "%s: ", __progname); 21570af302Sopenharmony_ci if (fmt) vfprintf(stderr, fmt, ap); 22570af302Sopenharmony_ci putc('\n', stderr); 23570af302Sopenharmony_ci} 24570af302Sopenharmony_ci 25570af302Sopenharmony_ci_Noreturn void verr(int status, const char *fmt, va_list ap) 26570af302Sopenharmony_ci{ 27570af302Sopenharmony_ci vwarn(fmt, ap); 28570af302Sopenharmony_ci exit(status); 29570af302Sopenharmony_ci} 30570af302Sopenharmony_ci 31570af302Sopenharmony_ci_Noreturn void verrx(int status, const char *fmt, va_list ap) 32570af302Sopenharmony_ci{ 33570af302Sopenharmony_ci vwarnx(fmt, ap); 34570af302Sopenharmony_ci exit(status); 35570af302Sopenharmony_ci} 36570af302Sopenharmony_ci 37570af302Sopenharmony_civoid warn(const char *fmt, ...) 38570af302Sopenharmony_ci{ 39570af302Sopenharmony_ci va_list ap; 40570af302Sopenharmony_ci va_start(ap, fmt); 41570af302Sopenharmony_ci vwarn(fmt, ap); 42570af302Sopenharmony_ci va_end(ap); 43570af302Sopenharmony_ci} 44570af302Sopenharmony_ci 45570af302Sopenharmony_civoid warnx(const char *fmt, ...) 46570af302Sopenharmony_ci{ 47570af302Sopenharmony_ci va_list ap; 48570af302Sopenharmony_ci va_start(ap, fmt); 49570af302Sopenharmony_ci vwarnx(fmt, ap); 50570af302Sopenharmony_ci va_end(ap); 51570af302Sopenharmony_ci} 52570af302Sopenharmony_ci 53570af302Sopenharmony_ci_Noreturn void err(int status, const char *fmt, ...) 54570af302Sopenharmony_ci{ 55570af302Sopenharmony_ci va_list ap; 56570af302Sopenharmony_ci va_start(ap, fmt); 57570af302Sopenharmony_ci verr(status, fmt, ap); 58570af302Sopenharmony_ci va_end(ap); 59570af302Sopenharmony_ci} 60570af302Sopenharmony_ci 61570af302Sopenharmony_ci_Noreturn void errx(int status, const char *fmt, ...) 62570af302Sopenharmony_ci{ 63570af302Sopenharmony_ci va_list ap; 64570af302Sopenharmony_ci va_start(ap, fmt); 65570af302Sopenharmony_ci verrx(status, fmt, ap); 66570af302Sopenharmony_ci va_end(ap); 67570af302Sopenharmony_ci} 68