1*58449Sbostic /*- 2*58449Sbostic * Copyright (c) 1993 The Regents of the University of California. 3*58449Sbostic * All rights reserved. 4*58449Sbostic * 5*58449Sbostic * %sccs.include.redist.c% 6*58449Sbostic */ 7*58449Sbostic 8*58449Sbostic #if defined(LIBC_SCCS) && !defined(lint) 9*58449Sbostic static char sccsid[] = "@(#)err.c 5.1 (Berkeley) 03/04/93"; 10*58449Sbostic #endif /* LIBC_SCCS and not lint */ 11*58449Sbostic 12*58449Sbostic #include <err.h> 13*58449Sbostic #include <errno.h> 14*58449Sbostic #include <stdio.h> 15*58449Sbostic #include <stdlib.h> 16*58449Sbostic #include <string.h> 17*58449Sbostic 18*58449Sbostic #ifdef __STDC__ 19*58449Sbostic #include <stdarg.h> 20*58449Sbostic #else 21*58449Sbostic #include <varargs.h> 22*58449Sbostic #endif 23*58449Sbostic 24*58449Sbostic extern char *__progname; /* Program name, from crt0. */ 25*58449Sbostic 26*58449Sbostic __dead void 27*58449Sbostic #ifdef __STDC__ 28*58449Sbostic err(int eval, const char *fmt, ...) 29*58449Sbostic #else 30*58449Sbostic err(eval, fmt, va_alist) 31*58449Sbostic int eval; 32*58449Sbostic const char *fmt; 33*58449Sbostic va_dcl 34*58449Sbostic #endif 35*58449Sbostic { 36*58449Sbostic va_list ap; 37*58449Sbostic #if __STDC__ 38*58449Sbostic va_start(ap, fmt); 39*58449Sbostic #else 40*58449Sbostic va_start(ap); 41*58449Sbostic #endif 42*58449Sbostic verr(eval, fmt, ap); 43*58449Sbostic va_end(ap); 44*58449Sbostic } 45*58449Sbostic 46*58449Sbostic __dead void 47*58449Sbostic verr(eval, fmt, ap) 48*58449Sbostic int eval; 49*58449Sbostic const char *fmt; 50*58449Sbostic va_list ap; 51*58449Sbostic { 52*58449Sbostic int sverrno; 53*58449Sbostic 54*58449Sbostic sverrno = errno; 55*58449Sbostic (void)fprintf(stderr, "%s: ", __progname); 56*58449Sbostic (void)vfprintf(stderr, fmt, ap); 57*58449Sbostic (void)fprintf(stderr, ": %s\n", strerror(sverrno)); 58*58449Sbostic exit(eval); 59*58449Sbostic } 60*58449Sbostic 61*58449Sbostic __dead void 62*58449Sbostic #if __STDC__ 63*58449Sbostic errx(int eval, const char *fmt, ...) 64*58449Sbostic #else 65*58449Sbostic errx(eval, fmt, va_alist) 66*58449Sbostic int eval; 67*58449Sbostic const char *fmt; 68*58449Sbostic va_dcl 69*58449Sbostic #endif 70*58449Sbostic { 71*58449Sbostic va_list ap; 72*58449Sbostic #if __STDC__ 73*58449Sbostic va_start(ap, fmt); 74*58449Sbostic #else 75*58449Sbostic va_start(ap); 76*58449Sbostic #endif 77*58449Sbostic verrx(eval, fmt, ap); 78*58449Sbostic va_end(ap); 79*58449Sbostic } 80*58449Sbostic 81*58449Sbostic __dead void 82*58449Sbostic verrx(eval, fmt, ap) 83*58449Sbostic int eval; 84*58449Sbostic const char *fmt; 85*58449Sbostic va_list ap; 86*58449Sbostic { 87*58449Sbostic (void)fprintf(stderr, "%s: ", __progname); 88*58449Sbostic (void)vfprintf(stderr, fmt, ap); 89*58449Sbostic (void)fprintf(stderr, "\n"); 90*58449Sbostic exit(eval); 91*58449Sbostic } 92*58449Sbostic 93*58449Sbostic void 94*58449Sbostic #if __STDC__ 95*58449Sbostic warn(const char *fmt, ...) 96*58449Sbostic #else 97*58449Sbostic warn(fmt, va_alist) 98*58449Sbostic int eval; 99*58449Sbostic const char *fmt; 100*58449Sbostic va_dcl 101*58449Sbostic #endif 102*58449Sbostic { 103*58449Sbostic va_list ap; 104*58449Sbostic #if __STDC__ 105*58449Sbostic va_start(ap, fmt); 106*58449Sbostic #else 107*58449Sbostic va_start(ap); 108*58449Sbostic #endif 109*58449Sbostic vwarn(fmt, ap); 110*58449Sbostic va_end(ap); 111*58449Sbostic } 112*58449Sbostic 113*58449Sbostic void 114*58449Sbostic vwarn(fmt, ap) 115*58449Sbostic const char *fmt; 116*58449Sbostic va_list ap; 117*58449Sbostic { 118*58449Sbostic int sverrno; 119*58449Sbostic 120*58449Sbostic sverrno = errno; 121*58449Sbostic (void)fprintf(stderr, "%s: ", __progname); 122*58449Sbostic (void)vfprintf(stderr, fmt, ap); 123*58449Sbostic (void)fprintf(stderr, ": %s\n", strerror(sverrno)); 124*58449Sbostic } 125*58449Sbostic 126*58449Sbostic void 127*58449Sbostic #ifdef __STDC__ 128*58449Sbostic warnx(const char *fmt, ...) 129*58449Sbostic #else 130*58449Sbostic warnx(fmt, va_alist) 131*58449Sbostic int eval; 132*58449Sbostic const char *fmt; 133*58449Sbostic va_dcl 134*58449Sbostic #endif 135*58449Sbostic { 136*58449Sbostic va_list ap; 137*58449Sbostic #ifdef __STDC__ 138*58449Sbostic va_start(ap, fmt); 139*58449Sbostic #else 140*58449Sbostic va_start(ap); 141*58449Sbostic #endif 142*58449Sbostic vwarnx(fmt, ap); 143*58449Sbostic va_end(ap); 144*58449Sbostic } 145*58449Sbostic 146*58449Sbostic void 147*58449Sbostic vwarnx(fmt, ap) 148*58449Sbostic const char *fmt; 149*58449Sbostic va_list ap; 150*58449Sbostic { 151*58449Sbostic (void)fprintf(stderr, "%s: ", __progname); 152*58449Sbostic (void)vfprintf(stderr, fmt, ap); 153*58449Sbostic (void)fprintf(stderr, "\n"); 154*58449Sbostic } 155