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