xref: /freebsd/contrib/unifdef/FreeBSD/err.c (revision fb3ef04d2028110f06d68b09009f1f2ca0f4128e)
1*fb3ef04dSDag-Erling Smørgrav /*-
2*fb3ef04dSDag-Erling Smørgrav  * Copyright (c) 1993
3*fb3ef04dSDag-Erling Smørgrav  *	The Regents of the University of California.  All rights reserved.
4*fb3ef04dSDag-Erling Smørgrav  *
5*fb3ef04dSDag-Erling Smørgrav  * Redistribution and use in source and binary forms, with or without
6*fb3ef04dSDag-Erling Smørgrav  * modification, are permitted provided that the following conditions
7*fb3ef04dSDag-Erling Smørgrav  * are met:
8*fb3ef04dSDag-Erling Smørgrav  * 1. Redistributions of source code must retain the above copyright
9*fb3ef04dSDag-Erling Smørgrav  *    notice, this list of conditions and the following disclaimer.
10*fb3ef04dSDag-Erling Smørgrav  * 2. Redistributions in binary form must reproduce the above copyright
11*fb3ef04dSDag-Erling Smørgrav  *    notice, this list of conditions and the following disclaimer in the
12*fb3ef04dSDag-Erling Smørgrav  *    documentation and/or other materials provided with the distribution.
13*fb3ef04dSDag-Erling Smørgrav  * 4. Neither the name of the University nor the names of its contributors
14*fb3ef04dSDag-Erling Smørgrav  *    may be used to endorse or promote products derived from this software
15*fb3ef04dSDag-Erling Smørgrav  *    without specific prior written permission.
16*fb3ef04dSDag-Erling Smørgrav  *
17*fb3ef04dSDag-Erling Smørgrav  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
18*fb3ef04dSDag-Erling Smørgrav  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19*fb3ef04dSDag-Erling Smørgrav  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
20*fb3ef04dSDag-Erling Smørgrav  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
21*fb3ef04dSDag-Erling Smørgrav  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
22*fb3ef04dSDag-Erling Smørgrav  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
23*fb3ef04dSDag-Erling Smørgrav  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
24*fb3ef04dSDag-Erling Smørgrav  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
25*fb3ef04dSDag-Erling Smørgrav  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
26*fb3ef04dSDag-Erling Smørgrav  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
27*fb3ef04dSDag-Erling Smørgrav  * SUCH DAMAGE.
28*fb3ef04dSDag-Erling Smørgrav  */
29*fb3ef04dSDag-Erling Smørgrav 
30*fb3ef04dSDag-Erling Smørgrav #include "unifdef.h"
31*fb3ef04dSDag-Erling Smørgrav 
32*fb3ef04dSDag-Erling Smørgrav void
err(int eval,const char * fmt,...)33*fb3ef04dSDag-Erling Smørgrav err(int eval, const char *fmt, ...)
34*fb3ef04dSDag-Erling Smørgrav {
35*fb3ef04dSDag-Erling Smørgrav 	va_list ap;
36*fb3ef04dSDag-Erling Smørgrav 	va_start(ap, fmt);
37*fb3ef04dSDag-Erling Smørgrav 	verrc(eval, errno, fmt, ap);
38*fb3ef04dSDag-Erling Smørgrav 	va_end(ap);
39*fb3ef04dSDag-Erling Smørgrav }
40*fb3ef04dSDag-Erling Smørgrav 
41*fb3ef04dSDag-Erling Smørgrav void
verr(int eval,const char * fmt,va_list ap)42*fb3ef04dSDag-Erling Smørgrav verr(int eval, const char *fmt, va_list ap)
43*fb3ef04dSDag-Erling Smørgrav {
44*fb3ef04dSDag-Erling Smørgrav 	verrc(eval, errno, fmt, ap);
45*fb3ef04dSDag-Erling Smørgrav }
46*fb3ef04dSDag-Erling Smørgrav 
47*fb3ef04dSDag-Erling Smørgrav void
errc(int eval,int code,const char * fmt,...)48*fb3ef04dSDag-Erling Smørgrav errc(int eval, int code, const char *fmt, ...)
49*fb3ef04dSDag-Erling Smørgrav {
50*fb3ef04dSDag-Erling Smørgrav 	va_list ap;
51*fb3ef04dSDag-Erling Smørgrav 	va_start(ap, fmt);
52*fb3ef04dSDag-Erling Smørgrav 	verrc(eval, code, fmt, ap);
53*fb3ef04dSDag-Erling Smørgrav 	va_end(ap);
54*fb3ef04dSDag-Erling Smørgrav }
55*fb3ef04dSDag-Erling Smørgrav 
56*fb3ef04dSDag-Erling Smørgrav void
verrc(int eval,int code,const char * fmt,va_list ap)57*fb3ef04dSDag-Erling Smørgrav verrc(int eval, int code, const char *fmt, va_list ap)
58*fb3ef04dSDag-Erling Smørgrav {
59*fb3ef04dSDag-Erling Smørgrav 	fprintf(stderr, "%s: ", _getprogname());
60*fb3ef04dSDag-Erling Smørgrav 	if (fmt != NULL) {
61*fb3ef04dSDag-Erling Smørgrav 		vfprintf(stderr, fmt, ap);
62*fb3ef04dSDag-Erling Smørgrav 		fprintf(stderr, ": ");
63*fb3ef04dSDag-Erling Smørgrav 	}
64*fb3ef04dSDag-Erling Smørgrav 	fprintf(stderr, "%s\n", strerror(code));
65*fb3ef04dSDag-Erling Smørgrav 	exit(eval);
66*fb3ef04dSDag-Erling Smørgrav }
67*fb3ef04dSDag-Erling Smørgrav 
68*fb3ef04dSDag-Erling Smørgrav void
errx(int eval,const char * fmt,...)69*fb3ef04dSDag-Erling Smørgrav errx(int eval, const char *fmt, ...)
70*fb3ef04dSDag-Erling Smørgrav {
71*fb3ef04dSDag-Erling Smørgrav 	va_list ap;
72*fb3ef04dSDag-Erling Smørgrav 	va_start(ap, fmt);
73*fb3ef04dSDag-Erling Smørgrav 	verrx(eval, fmt, ap);
74*fb3ef04dSDag-Erling Smørgrav 	va_end(ap);
75*fb3ef04dSDag-Erling Smørgrav }
76*fb3ef04dSDag-Erling Smørgrav 
77*fb3ef04dSDag-Erling Smørgrav void
verrx(int eval,const char * fmt,va_list ap)78*fb3ef04dSDag-Erling Smørgrav verrx(int eval, const char *fmt, va_list ap)
79*fb3ef04dSDag-Erling Smørgrav {
80*fb3ef04dSDag-Erling Smørgrav 	fprintf(stderr, "%s: ", _getprogname());
81*fb3ef04dSDag-Erling Smørgrav 	if (fmt != NULL)
82*fb3ef04dSDag-Erling Smørgrav 		vfprintf(stderr, fmt, ap);
83*fb3ef04dSDag-Erling Smørgrav 	fprintf(stderr, "\n");
84*fb3ef04dSDag-Erling Smørgrav 	exit(eval);
85*fb3ef04dSDag-Erling Smørgrav }
86*fb3ef04dSDag-Erling Smørgrav 
87*fb3ef04dSDag-Erling Smørgrav void
warn(const char * fmt,...)88*fb3ef04dSDag-Erling Smørgrav warn(const char *fmt, ...)
89*fb3ef04dSDag-Erling Smørgrav {
90*fb3ef04dSDag-Erling Smørgrav 	va_list ap;
91*fb3ef04dSDag-Erling Smørgrav 	va_start(ap, fmt);
92*fb3ef04dSDag-Erling Smørgrav 	vwarnc(errno, fmt, ap);
93*fb3ef04dSDag-Erling Smørgrav 	va_end(ap);
94*fb3ef04dSDag-Erling Smørgrav }
95*fb3ef04dSDag-Erling Smørgrav 
96*fb3ef04dSDag-Erling Smørgrav void
vwarn(const char * fmt,va_list ap)97*fb3ef04dSDag-Erling Smørgrav vwarn(const char *fmt, va_list ap)
98*fb3ef04dSDag-Erling Smørgrav {
99*fb3ef04dSDag-Erling Smørgrav 	vwarnc(errno, fmt, ap);
100*fb3ef04dSDag-Erling Smørgrav }
101*fb3ef04dSDag-Erling Smørgrav 
102*fb3ef04dSDag-Erling Smørgrav void
warnc(int code,const char * fmt,...)103*fb3ef04dSDag-Erling Smørgrav warnc(int code, const char *fmt, ...)
104*fb3ef04dSDag-Erling Smørgrav {
105*fb3ef04dSDag-Erling Smørgrav 	va_list ap;
106*fb3ef04dSDag-Erling Smørgrav 	va_start(ap, fmt);
107*fb3ef04dSDag-Erling Smørgrav 	vwarnc(code, fmt, ap);
108*fb3ef04dSDag-Erling Smørgrav 	va_end(ap);
109*fb3ef04dSDag-Erling Smørgrav }
110*fb3ef04dSDag-Erling Smørgrav 
111*fb3ef04dSDag-Erling Smørgrav void
vwarnc(int code,const char * fmt,va_list ap)112*fb3ef04dSDag-Erling Smørgrav vwarnc(int code, const char *fmt, va_list ap)
113*fb3ef04dSDag-Erling Smørgrav {
114*fb3ef04dSDag-Erling Smørgrav 	fprintf(stderr, "%s: ", _getprogname());
115*fb3ef04dSDag-Erling Smørgrav 	if (fmt != NULL) {
116*fb3ef04dSDag-Erling Smørgrav 		vfprintf(stderr, fmt, ap);
117*fb3ef04dSDag-Erling Smørgrav 		fprintf(stderr, ": ");
118*fb3ef04dSDag-Erling Smørgrav 	}
119*fb3ef04dSDag-Erling Smørgrav 	fprintf(stderr, "%s\n", strerror(code));
120*fb3ef04dSDag-Erling Smørgrav }
121*fb3ef04dSDag-Erling Smørgrav 
122*fb3ef04dSDag-Erling Smørgrav void
warnx(const char * fmt,...)123*fb3ef04dSDag-Erling Smørgrav warnx(const char *fmt, ...)
124*fb3ef04dSDag-Erling Smørgrav {
125*fb3ef04dSDag-Erling Smørgrav 	va_list ap;
126*fb3ef04dSDag-Erling Smørgrav 	va_start(ap, fmt);
127*fb3ef04dSDag-Erling Smørgrav 	vwarnx(fmt, ap);
128*fb3ef04dSDag-Erling Smørgrav 	va_end(ap);
129*fb3ef04dSDag-Erling Smørgrav }
130*fb3ef04dSDag-Erling Smørgrav 
131*fb3ef04dSDag-Erling Smørgrav void
vwarnx(const char * fmt,va_list ap)132*fb3ef04dSDag-Erling Smørgrav vwarnx(const char *fmt, va_list ap)
133*fb3ef04dSDag-Erling Smørgrav {
134*fb3ef04dSDag-Erling Smørgrav 	fprintf(stderr, "%s: ", _getprogname());
135*fb3ef04dSDag-Erling Smørgrav 	if (fmt != NULL)
136*fb3ef04dSDag-Erling Smørgrav 		vfprintf(stderr, fmt, ap);
137*fb3ef04dSDag-Erling Smørgrav 	fprintf(stderr, "\n");
138*fb3ef04dSDag-Erling Smørgrav }
139