xref: /freebsd/crypto/openssh/openbsd-compat/bsd-err.c (revision 4f52dfbb8d6c4d446500c5b097e3806ec219fbd4)
1076ad2f8SDag-Erling Smørgrav /*
2076ad2f8SDag-Erling Smørgrav  * Copyright (c) 2015 Tim Rice <tim@multitalents.net>
3076ad2f8SDag-Erling Smørgrav  *
4076ad2f8SDag-Erling Smørgrav  * Redistribution and use in source and binary forms, with or without
5076ad2f8SDag-Erling Smørgrav  * modification, are permitted provided that the following conditions
6076ad2f8SDag-Erling Smørgrav  * are met:
7076ad2f8SDag-Erling Smørgrav  *
8076ad2f8SDag-Erling Smørgrav  * 1. Redistributions of source code must retain the above copyright
9076ad2f8SDag-Erling Smørgrav  *   notice, this list of conditions and the following disclaimer.
10076ad2f8SDag-Erling Smørgrav  * 2. Redistributions in binary form must reproduce the above copyright
11076ad2f8SDag-Erling Smørgrav  *   notice, this list of conditions and the following disclaimer in the
12076ad2f8SDag-Erling Smørgrav  *   documentation and/or other materials provided with the distribution.
13076ad2f8SDag-Erling Smørgrav  * 3. The name of the author may not be used to endorse or promote products
14076ad2f8SDag-Erling Smørgrav  *   derived from this software without specific prior written permission.
15076ad2f8SDag-Erling Smørgrav  *
16076ad2f8SDag-Erling Smørgrav  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
17076ad2f8SDag-Erling Smørgrav  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
18076ad2f8SDag-Erling Smørgrav  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
19076ad2f8SDag-Erling Smørgrav  * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
20076ad2f8SDag-Erling Smørgrav  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
21076ad2f8SDag-Erling Smørgrav  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
22076ad2f8SDag-Erling Smørgrav  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
23076ad2f8SDag-Erling Smørgrav  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24076ad2f8SDag-Erling Smørgrav  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
25076ad2f8SDag-Erling Smørgrav  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26076ad2f8SDag-Erling Smørgrav  */
27076ad2f8SDag-Erling Smørgrav 
28076ad2f8SDag-Erling Smørgrav #include "includes.h"
29076ad2f8SDag-Erling Smørgrav 
30*4f52dfbbSDag-Erling Smørgrav #include <errno.h>
31*4f52dfbbSDag-Erling Smørgrav #include <stdarg.h>
32*4f52dfbbSDag-Erling Smørgrav #include <stdio.h>
33*4f52dfbbSDag-Erling Smørgrav #include <stdlib.h>
34*4f52dfbbSDag-Erling Smørgrav #include <string.h>
35*4f52dfbbSDag-Erling Smørgrav 
36076ad2f8SDag-Erling Smørgrav #ifndef HAVE_ERR
37076ad2f8SDag-Erling Smørgrav void
err(int r,const char * fmt,...)38076ad2f8SDag-Erling Smørgrav err(int r, const char *fmt, ...)
39076ad2f8SDag-Erling Smørgrav {
40076ad2f8SDag-Erling Smørgrav 	va_list args;
41076ad2f8SDag-Erling Smørgrav 
42076ad2f8SDag-Erling Smørgrav 	va_start(args, fmt);
43076ad2f8SDag-Erling Smørgrav 	fprintf(stderr, "%s: ", strerror(errno));
44076ad2f8SDag-Erling Smørgrav 	vfprintf(stderr, fmt, args);
45076ad2f8SDag-Erling Smørgrav 	fputc('\n', stderr);
46076ad2f8SDag-Erling Smørgrav 	va_end(args);
47076ad2f8SDag-Erling Smørgrav 	exit(r);
48076ad2f8SDag-Erling Smørgrav }
49076ad2f8SDag-Erling Smørgrav #endif
50076ad2f8SDag-Erling Smørgrav 
51076ad2f8SDag-Erling Smørgrav #ifndef HAVE_ERRX
52076ad2f8SDag-Erling Smørgrav void
errx(int r,const char * fmt,...)53076ad2f8SDag-Erling Smørgrav errx(int r, const char *fmt, ...)
54076ad2f8SDag-Erling Smørgrav {
55076ad2f8SDag-Erling Smørgrav 	va_list args;
56076ad2f8SDag-Erling Smørgrav 
57076ad2f8SDag-Erling Smørgrav 	va_start(args, fmt);
58076ad2f8SDag-Erling Smørgrav 	vfprintf(stderr, fmt, args);
59076ad2f8SDag-Erling Smørgrav 	fputc('\n', stderr);
60076ad2f8SDag-Erling Smørgrav 	va_end(args);
61076ad2f8SDag-Erling Smørgrav 	exit(r);
62076ad2f8SDag-Erling Smørgrav }
63076ad2f8SDag-Erling Smørgrav #endif
64076ad2f8SDag-Erling Smørgrav 
65076ad2f8SDag-Erling Smørgrav #ifndef HAVE_WARN
66076ad2f8SDag-Erling Smørgrav void
warn(const char * fmt,...)67076ad2f8SDag-Erling Smørgrav warn(const char *fmt, ...)
68076ad2f8SDag-Erling Smørgrav {
69076ad2f8SDag-Erling Smørgrav 	va_list args;
70076ad2f8SDag-Erling Smørgrav 
71076ad2f8SDag-Erling Smørgrav 	va_start(args, fmt);
72076ad2f8SDag-Erling Smørgrav 	fprintf(stderr, "%s: ", strerror(errno));
73076ad2f8SDag-Erling Smørgrav 	vfprintf(stderr, fmt, args);
74076ad2f8SDag-Erling Smørgrav 	fputc('\n', stderr);
75076ad2f8SDag-Erling Smørgrav 	va_end(args);
76076ad2f8SDag-Erling Smørgrav }
77076ad2f8SDag-Erling Smørgrav #endif
78