xref: /freebsd/crypto/openssh/openbsd-compat/bsd-err.c (revision 076ad2f836d5f49dc1375f1677335a48fe0d4b82)
1*076ad2f8SDag-Erling Smørgrav /*
2*076ad2f8SDag-Erling Smørgrav  * Copyright (c) 2015 Tim Rice <tim@multitalents.net>
3*076ad2f8SDag-Erling Smørgrav  *
4*076ad2f8SDag-Erling Smørgrav  * Redistribution and use in source and binary forms, with or without
5*076ad2f8SDag-Erling Smørgrav  * modification, are permitted provided that the following conditions
6*076ad2f8SDag-Erling Smørgrav  * are met:
7*076ad2f8SDag-Erling Smørgrav  *
8*076ad2f8SDag-Erling Smørgrav  * 1. Redistributions of source code must retain the above copyright
9*076ad2f8SDag-Erling Smørgrav  *   notice, this list of conditions and the following disclaimer.
10*076ad2f8SDag-Erling Smørgrav  * 2. Redistributions in binary form must reproduce the above copyright
11*076ad2f8SDag-Erling Smørgrav  *   notice, this list of conditions and the following disclaimer in the
12*076ad2f8SDag-Erling Smørgrav  *   documentation and/or other materials provided with the distribution.
13*076ad2f8SDag-Erling Smørgrav  * 3. The name of the author may not be used to endorse or promote products
14*076ad2f8SDag-Erling Smørgrav  *   derived from this software without specific prior written permission.
15*076ad2f8SDag-Erling Smørgrav  *
16*076ad2f8SDag-Erling Smørgrav  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
17*076ad2f8SDag-Erling Smørgrav  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
18*076ad2f8SDag-Erling Smørgrav  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
19*076ad2f8SDag-Erling Smørgrav  * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
20*076ad2f8SDag-Erling Smørgrav  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
21*076ad2f8SDag-Erling Smørgrav  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
22*076ad2f8SDag-Erling Smørgrav  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
23*076ad2f8SDag-Erling Smørgrav  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24*076ad2f8SDag-Erling Smørgrav  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
25*076ad2f8SDag-Erling Smørgrav  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*076ad2f8SDag-Erling Smørgrav  */
27*076ad2f8SDag-Erling Smørgrav 
28*076ad2f8SDag-Erling Smørgrav #include "includes.h"
29*076ad2f8SDag-Erling Smørgrav 
30*076ad2f8SDag-Erling Smørgrav #ifndef HAVE_ERR
31*076ad2f8SDag-Erling Smørgrav void
32*076ad2f8SDag-Erling Smørgrav err(int r, const char *fmt, ...)
33*076ad2f8SDag-Erling Smørgrav {
34*076ad2f8SDag-Erling Smørgrav 	va_list args;
35*076ad2f8SDag-Erling Smørgrav 
36*076ad2f8SDag-Erling Smørgrav 	va_start(args, fmt);
37*076ad2f8SDag-Erling Smørgrav 	fprintf(stderr, "%s: ", strerror(errno));
38*076ad2f8SDag-Erling Smørgrav 	vfprintf(stderr, fmt, args);
39*076ad2f8SDag-Erling Smørgrav 	fputc('\n', stderr);
40*076ad2f8SDag-Erling Smørgrav 	va_end(args);
41*076ad2f8SDag-Erling Smørgrav 	exit(r);
42*076ad2f8SDag-Erling Smørgrav }
43*076ad2f8SDag-Erling Smørgrav #endif
44*076ad2f8SDag-Erling Smørgrav 
45*076ad2f8SDag-Erling Smørgrav #ifndef HAVE_ERRX
46*076ad2f8SDag-Erling Smørgrav void
47*076ad2f8SDag-Erling Smørgrav errx(int r, const char *fmt, ...)
48*076ad2f8SDag-Erling Smørgrav {
49*076ad2f8SDag-Erling Smørgrav 	va_list args;
50*076ad2f8SDag-Erling Smørgrav 
51*076ad2f8SDag-Erling Smørgrav 	va_start(args, fmt);
52*076ad2f8SDag-Erling Smørgrav 	vfprintf(stderr, fmt, args);
53*076ad2f8SDag-Erling Smørgrav 	fputc('\n', stderr);
54*076ad2f8SDag-Erling Smørgrav 	va_end(args);
55*076ad2f8SDag-Erling Smørgrav 	exit(r);
56*076ad2f8SDag-Erling Smørgrav }
57*076ad2f8SDag-Erling Smørgrav #endif
58*076ad2f8SDag-Erling Smørgrav 
59*076ad2f8SDag-Erling Smørgrav #ifndef HAVE_WARN
60*076ad2f8SDag-Erling Smørgrav void
61*076ad2f8SDag-Erling Smørgrav warn(const char *fmt, ...)
62*076ad2f8SDag-Erling Smørgrav {
63*076ad2f8SDag-Erling Smørgrav 	va_list args;
64*076ad2f8SDag-Erling Smørgrav 
65*076ad2f8SDag-Erling Smørgrav 	va_start(args, fmt);
66*076ad2f8SDag-Erling Smørgrav 	fprintf(stderr, "%s: ", strerror(errno));
67*076ad2f8SDag-Erling Smørgrav 	vfprintf(stderr, fmt, args);
68*076ad2f8SDag-Erling Smørgrav 	fputc('\n', stderr);
69*076ad2f8SDag-Erling Smørgrav 	va_end(args);
70*076ad2f8SDag-Erling Smørgrav }
71*076ad2f8SDag-Erling Smørgrav #endif
72