xref: /csrg-svn/lib/libc/gen/err.c (revision 58449)
1*58449Sbostic /*-
2*58449Sbostic  * Copyright (c) 1993 The Regents of the University of California.
3*58449Sbostic  * All rights reserved.
4*58449Sbostic  *
5*58449Sbostic  * %sccs.include.redist.c%
6*58449Sbostic  */
7*58449Sbostic 
8*58449Sbostic #if defined(LIBC_SCCS) && !defined(lint)
9*58449Sbostic static char sccsid[] = "@(#)err.c	5.1 (Berkeley) 03/04/93";
10*58449Sbostic #endif /* LIBC_SCCS and not lint */
11*58449Sbostic 
12*58449Sbostic #include <err.h>
13*58449Sbostic #include <errno.h>
14*58449Sbostic #include <stdio.h>
15*58449Sbostic #include <stdlib.h>
16*58449Sbostic #include <string.h>
17*58449Sbostic 
18*58449Sbostic #ifdef __STDC__
19*58449Sbostic #include <stdarg.h>
20*58449Sbostic #else
21*58449Sbostic #include <varargs.h>
22*58449Sbostic #endif
23*58449Sbostic 
24*58449Sbostic extern char *__progname;		/* Program name, from crt0. */
25*58449Sbostic 
26*58449Sbostic __dead void
27*58449Sbostic #ifdef __STDC__
28*58449Sbostic err(int eval, const char *fmt, ...)
29*58449Sbostic #else
30*58449Sbostic err(eval, fmt, va_alist)
31*58449Sbostic 	int eval;
32*58449Sbostic 	const char *fmt;
33*58449Sbostic 	va_dcl
34*58449Sbostic #endif
35*58449Sbostic {
36*58449Sbostic 	va_list ap;
37*58449Sbostic #if __STDC__
38*58449Sbostic 	va_start(ap, fmt);
39*58449Sbostic #else
40*58449Sbostic 	va_start(ap);
41*58449Sbostic #endif
42*58449Sbostic 	verr(eval, fmt, ap);
43*58449Sbostic 	va_end(ap);
44*58449Sbostic }
45*58449Sbostic 
46*58449Sbostic __dead void
47*58449Sbostic verr(eval, fmt, ap)
48*58449Sbostic 	int eval;
49*58449Sbostic 	const char *fmt;
50*58449Sbostic 	va_list ap;
51*58449Sbostic {
52*58449Sbostic 	int sverrno;
53*58449Sbostic 
54*58449Sbostic 	sverrno = errno;
55*58449Sbostic 	(void)fprintf(stderr, "%s: ", __progname);
56*58449Sbostic 	(void)vfprintf(stderr, fmt, ap);
57*58449Sbostic 	(void)fprintf(stderr, ": %s\n", strerror(sverrno));
58*58449Sbostic 	exit(eval);
59*58449Sbostic }
60*58449Sbostic 
61*58449Sbostic __dead void
62*58449Sbostic #if __STDC__
63*58449Sbostic errx(int eval, const char *fmt, ...)
64*58449Sbostic #else
65*58449Sbostic errx(eval, fmt, va_alist)
66*58449Sbostic 	int eval;
67*58449Sbostic 	const char *fmt;
68*58449Sbostic 	va_dcl
69*58449Sbostic #endif
70*58449Sbostic {
71*58449Sbostic 	va_list ap;
72*58449Sbostic #if __STDC__
73*58449Sbostic 	va_start(ap, fmt);
74*58449Sbostic #else
75*58449Sbostic 	va_start(ap);
76*58449Sbostic #endif
77*58449Sbostic 	verrx(eval, fmt, ap);
78*58449Sbostic 	va_end(ap);
79*58449Sbostic }
80*58449Sbostic 
81*58449Sbostic __dead void
82*58449Sbostic verrx(eval, fmt, ap)
83*58449Sbostic 	int eval;
84*58449Sbostic 	const char *fmt;
85*58449Sbostic 	va_list ap;
86*58449Sbostic {
87*58449Sbostic 	(void)fprintf(stderr, "%s: ", __progname);
88*58449Sbostic 	(void)vfprintf(stderr, fmt, ap);
89*58449Sbostic 	(void)fprintf(stderr, "\n");
90*58449Sbostic 	exit(eval);
91*58449Sbostic }
92*58449Sbostic 
93*58449Sbostic void
94*58449Sbostic #if __STDC__
95*58449Sbostic warn(const char *fmt, ...)
96*58449Sbostic #else
97*58449Sbostic warn(fmt, va_alist)
98*58449Sbostic 	int eval;
99*58449Sbostic 	const char *fmt;
100*58449Sbostic 	va_dcl
101*58449Sbostic #endif
102*58449Sbostic {
103*58449Sbostic 	va_list ap;
104*58449Sbostic #if __STDC__
105*58449Sbostic 	va_start(ap, fmt);
106*58449Sbostic #else
107*58449Sbostic 	va_start(ap);
108*58449Sbostic #endif
109*58449Sbostic 	vwarn(fmt, ap);
110*58449Sbostic 	va_end(ap);
111*58449Sbostic }
112*58449Sbostic 
113*58449Sbostic void
114*58449Sbostic vwarn(fmt, ap)
115*58449Sbostic 	const char *fmt;
116*58449Sbostic 	va_list ap;
117*58449Sbostic {
118*58449Sbostic 	int sverrno;
119*58449Sbostic 
120*58449Sbostic 	sverrno = errno;
121*58449Sbostic 	(void)fprintf(stderr, "%s: ", __progname);
122*58449Sbostic 	(void)vfprintf(stderr, fmt, ap);
123*58449Sbostic 	(void)fprintf(stderr, ": %s\n", strerror(sverrno));
124*58449Sbostic }
125*58449Sbostic 
126*58449Sbostic void
127*58449Sbostic #ifdef __STDC__
128*58449Sbostic warnx(const char *fmt, ...)
129*58449Sbostic #else
130*58449Sbostic warnx(fmt, va_alist)
131*58449Sbostic 	int eval;
132*58449Sbostic 	const char *fmt;
133*58449Sbostic 	va_dcl
134*58449Sbostic #endif
135*58449Sbostic {
136*58449Sbostic 	va_list ap;
137*58449Sbostic #ifdef __STDC__
138*58449Sbostic 	va_start(ap, fmt);
139*58449Sbostic #else
140*58449Sbostic 	va_start(ap);
141*58449Sbostic #endif
142*58449Sbostic 	vwarnx(fmt, ap);
143*58449Sbostic 	va_end(ap);
144*58449Sbostic }
145*58449Sbostic 
146*58449Sbostic void
147*58449Sbostic vwarnx(fmt, ap)
148*58449Sbostic 	const char *fmt;
149*58449Sbostic 	va_list ap;
150*58449Sbostic {
151*58449Sbostic 	(void)fprintf(stderr, "%s: ", __progname);
152*58449Sbostic 	(void)vfprintf(stderr, fmt, ap);
153*58449Sbostic 	(void)fprintf(stderr, "\n");
154*58449Sbostic }
155