1*61d06d6bSBaptiste Daroussin #include "config.h" 2*61d06d6bSBaptiste Daroussin 3*61d06d6bSBaptiste Daroussin #if HAVE_ERR 4*61d06d6bSBaptiste Daroussin 5*61d06d6bSBaptiste Daroussin int dummy; 6*61d06d6bSBaptiste Daroussin 7*61d06d6bSBaptiste Daroussin #else 8*61d06d6bSBaptiste Daroussin 9*61d06d6bSBaptiste Daroussin /* $Id: compat_err.c,v 1.4 2015/11/26 07:42:11 schwarze Exp $ */ 10*61d06d6bSBaptiste Daroussin /* 11*61d06d6bSBaptiste Daroussin * Copyright (c) 1993 12*61d06d6bSBaptiste Daroussin * The Regents of the University of California. All rights reserved. 13*61d06d6bSBaptiste Daroussin * 14*61d06d6bSBaptiste Daroussin * Redistribution and use in source and binary forms, with or without 15*61d06d6bSBaptiste Daroussin * modification, are permitted provided that the following conditions 16*61d06d6bSBaptiste Daroussin * are met: 17*61d06d6bSBaptiste Daroussin * 1. Redistributions of source code must retain the above copyright 18*61d06d6bSBaptiste Daroussin * notice, this list of conditions and the following disclaimer. 19*61d06d6bSBaptiste Daroussin * 2. Redistributions in binary form must reproduce the above copyright 20*61d06d6bSBaptiste Daroussin * notice, this list of conditions and the following disclaimer in the 21*61d06d6bSBaptiste Daroussin * documentation and/or other materials provided with the distribution. 22*61d06d6bSBaptiste Daroussin * 3. Neither the name of the University nor the names of its contributors 23*61d06d6bSBaptiste Daroussin * may be used to endorse or promote products derived from this software 24*61d06d6bSBaptiste Daroussin * without specific prior written permission. 25*61d06d6bSBaptiste Daroussin * 26*61d06d6bSBaptiste Daroussin * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 27*61d06d6bSBaptiste Daroussin * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 28*61d06d6bSBaptiste Daroussin * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 29*61d06d6bSBaptiste Daroussin * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 30*61d06d6bSBaptiste Daroussin * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 31*61d06d6bSBaptiste Daroussin * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 32*61d06d6bSBaptiste Daroussin * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 33*61d06d6bSBaptiste Daroussin * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 34*61d06d6bSBaptiste Daroussin * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 35*61d06d6bSBaptiste Daroussin * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 36*61d06d6bSBaptiste Daroussin * SUCH DAMAGE. 37*61d06d6bSBaptiste Daroussin */ 38*61d06d6bSBaptiste Daroussin 39*61d06d6bSBaptiste Daroussin #include <errno.h> 40*61d06d6bSBaptiste Daroussin #include <stdarg.h> 41*61d06d6bSBaptiste Daroussin #include <stdio.h> 42*61d06d6bSBaptiste Daroussin #include <stdlib.h> 43*61d06d6bSBaptiste Daroussin #include <string.h> 44*61d06d6bSBaptiste Daroussin 45*61d06d6bSBaptiste Daroussin static void vwarni(const char *, va_list); 46*61d06d6bSBaptiste Daroussin static void vwarnxi(const char *, va_list); 47*61d06d6bSBaptiste Daroussin 48*61d06d6bSBaptiste Daroussin static void 49*61d06d6bSBaptiste Daroussin vwarnxi(const char *fmt, va_list ap) 50*61d06d6bSBaptiste Daroussin { 51*61d06d6bSBaptiste Daroussin fprintf(stderr, "%s: ", getprogname()); 52*61d06d6bSBaptiste Daroussin if (fmt != NULL) 53*61d06d6bSBaptiste Daroussin vfprintf(stderr, fmt, ap); 54*61d06d6bSBaptiste Daroussin } 55*61d06d6bSBaptiste Daroussin 56*61d06d6bSBaptiste Daroussin static void 57*61d06d6bSBaptiste Daroussin vwarni(const char *fmt, va_list ap) 58*61d06d6bSBaptiste Daroussin { 59*61d06d6bSBaptiste Daroussin int sverrno; 60*61d06d6bSBaptiste Daroussin 61*61d06d6bSBaptiste Daroussin sverrno = errno; 62*61d06d6bSBaptiste Daroussin vwarnxi(fmt, ap); 63*61d06d6bSBaptiste Daroussin if (fmt != NULL) 64*61d06d6bSBaptiste Daroussin fputs(": ", stderr); 65*61d06d6bSBaptiste Daroussin fprintf(stderr, "%s\n", strerror(sverrno)); 66*61d06d6bSBaptiste Daroussin } 67*61d06d6bSBaptiste Daroussin 68*61d06d6bSBaptiste Daroussin void 69*61d06d6bSBaptiste Daroussin err(int eval, const char *fmt, ...) 70*61d06d6bSBaptiste Daroussin { 71*61d06d6bSBaptiste Daroussin va_list ap; 72*61d06d6bSBaptiste Daroussin 73*61d06d6bSBaptiste Daroussin va_start(ap, fmt); 74*61d06d6bSBaptiste Daroussin vwarni(fmt, ap); 75*61d06d6bSBaptiste Daroussin va_end(ap); 76*61d06d6bSBaptiste Daroussin exit(eval); 77*61d06d6bSBaptiste Daroussin } 78*61d06d6bSBaptiste Daroussin 79*61d06d6bSBaptiste Daroussin void 80*61d06d6bSBaptiste Daroussin errx(int eval, const char *fmt, ...) 81*61d06d6bSBaptiste Daroussin { 82*61d06d6bSBaptiste Daroussin va_list ap; 83*61d06d6bSBaptiste Daroussin 84*61d06d6bSBaptiste Daroussin va_start(ap, fmt); 85*61d06d6bSBaptiste Daroussin vwarnxi(fmt, ap); 86*61d06d6bSBaptiste Daroussin va_end(ap); 87*61d06d6bSBaptiste Daroussin fputc('\n', stderr); 88*61d06d6bSBaptiste Daroussin exit(eval); 89*61d06d6bSBaptiste Daroussin } 90*61d06d6bSBaptiste Daroussin 91*61d06d6bSBaptiste Daroussin void 92*61d06d6bSBaptiste Daroussin warn(const char *fmt, ...) 93*61d06d6bSBaptiste Daroussin { 94*61d06d6bSBaptiste Daroussin va_list ap; 95*61d06d6bSBaptiste Daroussin 96*61d06d6bSBaptiste Daroussin va_start(ap, fmt); 97*61d06d6bSBaptiste Daroussin vwarni(fmt, ap); 98*61d06d6bSBaptiste Daroussin va_end(ap); 99*61d06d6bSBaptiste Daroussin } 100*61d06d6bSBaptiste Daroussin 101*61d06d6bSBaptiste Daroussin void 102*61d06d6bSBaptiste Daroussin warnx(const char *fmt, ...) 103*61d06d6bSBaptiste Daroussin { 104*61d06d6bSBaptiste Daroussin va_list ap; 105*61d06d6bSBaptiste Daroussin 106*61d06d6bSBaptiste Daroussin va_start(ap, fmt); 107*61d06d6bSBaptiste Daroussin vwarnxi(fmt, ap); 108*61d06d6bSBaptiste Daroussin va_end(ap); 109*61d06d6bSBaptiste Daroussin fputc('\n', stderr); 110*61d06d6bSBaptiste Daroussin } 111*61d06d6bSBaptiste Daroussin 112*61d06d6bSBaptiste Daroussin #endif 113