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