1*c9945492SAndroid Build Coastguard Worker #include <err.h>
2*c9945492SAndroid Build Coastguard Worker #include <stdio.h>
3*c9945492SAndroid Build Coastguard Worker #include <stdarg.h>
4*c9945492SAndroid Build Coastguard Worker #include <stdlib.h>
5*c9945492SAndroid Build Coastguard Worker
6*c9945492SAndroid Build Coastguard Worker extern char *__progname;
7*c9945492SAndroid Build Coastguard Worker
vwarn(const char * fmt,va_list ap)8*c9945492SAndroid Build Coastguard Worker void vwarn(const char *fmt, va_list ap)
9*c9945492SAndroid Build Coastguard Worker {
10*c9945492SAndroid Build Coastguard Worker fprintf (stderr, "%s: ", __progname);
11*c9945492SAndroid Build Coastguard Worker if (fmt) {
12*c9945492SAndroid Build Coastguard Worker vfprintf(stderr, fmt, ap);
13*c9945492SAndroid Build Coastguard Worker fputs (": ", stderr);
14*c9945492SAndroid Build Coastguard Worker }
15*c9945492SAndroid Build Coastguard Worker perror(0);
16*c9945492SAndroid Build Coastguard Worker }
17*c9945492SAndroid Build Coastguard Worker
vwarnx(const char * fmt,va_list ap)18*c9945492SAndroid Build Coastguard Worker void vwarnx(const char *fmt, va_list ap)
19*c9945492SAndroid Build Coastguard Worker {
20*c9945492SAndroid Build Coastguard Worker fprintf (stderr, "%s: ", __progname);
21*c9945492SAndroid Build Coastguard Worker if (fmt) vfprintf(stderr, fmt, ap);
22*c9945492SAndroid Build Coastguard Worker putc('\n', stderr);
23*c9945492SAndroid Build Coastguard Worker }
24*c9945492SAndroid Build Coastguard Worker
verr(int status,const char * fmt,va_list ap)25*c9945492SAndroid Build Coastguard Worker _Noreturn void verr(int status, const char *fmt, va_list ap)
26*c9945492SAndroid Build Coastguard Worker {
27*c9945492SAndroid Build Coastguard Worker vwarn(fmt, ap);
28*c9945492SAndroid Build Coastguard Worker exit(status);
29*c9945492SAndroid Build Coastguard Worker }
30*c9945492SAndroid Build Coastguard Worker
verrx(int status,const char * fmt,va_list ap)31*c9945492SAndroid Build Coastguard Worker _Noreturn void verrx(int status, const char *fmt, va_list ap)
32*c9945492SAndroid Build Coastguard Worker {
33*c9945492SAndroid Build Coastguard Worker vwarnx(fmt, ap);
34*c9945492SAndroid Build Coastguard Worker exit(status);
35*c9945492SAndroid Build Coastguard Worker }
36*c9945492SAndroid Build Coastguard Worker
warn(const char * fmt,...)37*c9945492SAndroid Build Coastguard Worker void warn(const char *fmt, ...)
38*c9945492SAndroid Build Coastguard Worker {
39*c9945492SAndroid Build Coastguard Worker va_list ap;
40*c9945492SAndroid Build Coastguard Worker va_start(ap, fmt);
41*c9945492SAndroid Build Coastguard Worker vwarn(fmt, ap);
42*c9945492SAndroid Build Coastguard Worker va_end(ap);
43*c9945492SAndroid Build Coastguard Worker }
44*c9945492SAndroid Build Coastguard Worker
warnx(const char * fmt,...)45*c9945492SAndroid Build Coastguard Worker void warnx(const char *fmt, ...)
46*c9945492SAndroid Build Coastguard Worker {
47*c9945492SAndroid Build Coastguard Worker va_list ap;
48*c9945492SAndroid Build Coastguard Worker va_start(ap, fmt);
49*c9945492SAndroid Build Coastguard Worker vwarnx(fmt, ap);
50*c9945492SAndroid Build Coastguard Worker va_end(ap);
51*c9945492SAndroid Build Coastguard Worker }
52*c9945492SAndroid Build Coastguard Worker
err(int status,const char * fmt,...)53*c9945492SAndroid Build Coastguard Worker _Noreturn void err(int status, const char *fmt, ...)
54*c9945492SAndroid Build Coastguard Worker {
55*c9945492SAndroid Build Coastguard Worker va_list ap;
56*c9945492SAndroid Build Coastguard Worker va_start(ap, fmt);
57*c9945492SAndroid Build Coastguard Worker verr(status, fmt, ap);
58*c9945492SAndroid Build Coastguard Worker va_end(ap);
59*c9945492SAndroid Build Coastguard Worker }
60*c9945492SAndroid Build Coastguard Worker
errx(int status,const char * fmt,...)61*c9945492SAndroid Build Coastguard Worker _Noreturn void errx(int status, const char *fmt, ...)
62*c9945492SAndroid Build Coastguard Worker {
63*c9945492SAndroid Build Coastguard Worker va_list ap;
64*c9945492SAndroid Build Coastguard Worker va_start(ap, fmt);
65*c9945492SAndroid Build Coastguard Worker verrx(status, fmt, ap);
66*c9945492SAndroid Build Coastguard Worker va_end(ap);
67*c9945492SAndroid Build Coastguard Worker }
68