158449Sbostic /*- 258449Sbostic * Copyright (c) 1993 The Regents of the University of California. 358449Sbostic * All rights reserved. 458449Sbostic * 558449Sbostic * %sccs.include.redist.c% 658449Sbostic */ 758449Sbostic 858449Sbostic #if defined(LIBC_SCCS) && !defined(lint) 9*58738Sbostic static char sccsid[] = "@(#)err.c 5.2 (Berkeley) 03/19/93"; 1058449Sbostic #endif /* LIBC_SCCS and not lint */ 1158449Sbostic 1258449Sbostic #include <err.h> 1358449Sbostic #include <errno.h> 1458449Sbostic #include <stdio.h> 1558449Sbostic #include <stdlib.h> 1658449Sbostic #include <string.h> 1758449Sbostic 1858449Sbostic #ifdef __STDC__ 1958449Sbostic #include <stdarg.h> 2058449Sbostic #else 2158449Sbostic #include <varargs.h> 2258449Sbostic #endif 2358449Sbostic 2458449Sbostic extern char *__progname; /* Program name, from crt0. */ 2558449Sbostic 2658449Sbostic __dead void 2758449Sbostic #ifdef __STDC__ 2858449Sbostic err(int eval, const char *fmt, ...) 2958449Sbostic #else 3058449Sbostic err(eval, fmt, va_alist) 3158449Sbostic int eval; 3258449Sbostic const char *fmt; 3358449Sbostic va_dcl 3458449Sbostic #endif 3558449Sbostic { 3658449Sbostic va_list ap; 3758449Sbostic #if __STDC__ 3858449Sbostic va_start(ap, fmt); 3958449Sbostic #else 4058449Sbostic va_start(ap); 4158449Sbostic #endif 4258449Sbostic verr(eval, fmt, ap); 4358449Sbostic va_end(ap); 4458449Sbostic } 4558449Sbostic 4658449Sbostic __dead void 4758449Sbostic verr(eval, fmt, ap) 4858449Sbostic int eval; 4958449Sbostic const char *fmt; 5058449Sbostic va_list ap; 5158449Sbostic { 5258449Sbostic int sverrno; 5358449Sbostic 5458449Sbostic sverrno = errno; 5558449Sbostic (void)fprintf(stderr, "%s: ", __progname); 56*58738Sbostic if (fmt != NULL) { 57*58738Sbostic (void)vfprintf(stderr, fmt, ap); 58*58738Sbostic (void)fprintf(stderr, ": "); 59*58738Sbostic } 60*58738Sbostic (void)fprintf(stderr, "%s\n", strerror(sverrno)); 6158449Sbostic exit(eval); 6258449Sbostic } 6358449Sbostic 6458449Sbostic __dead void 6558449Sbostic #if __STDC__ 6658449Sbostic errx(int eval, const char *fmt, ...) 6758449Sbostic #else 6858449Sbostic errx(eval, fmt, va_alist) 6958449Sbostic int eval; 7058449Sbostic const char *fmt; 7158449Sbostic va_dcl 7258449Sbostic #endif 7358449Sbostic { 7458449Sbostic va_list ap; 7558449Sbostic #if __STDC__ 7658449Sbostic va_start(ap, fmt); 7758449Sbostic #else 7858449Sbostic va_start(ap); 7958449Sbostic #endif 8058449Sbostic verrx(eval, fmt, ap); 8158449Sbostic va_end(ap); 8258449Sbostic } 8358449Sbostic 8458449Sbostic __dead void 8558449Sbostic verrx(eval, fmt, ap) 8658449Sbostic int eval; 8758449Sbostic const char *fmt; 8858449Sbostic va_list ap; 8958449Sbostic { 9058449Sbostic (void)fprintf(stderr, "%s: ", __progname); 91*58738Sbostic if (fmt != NULL) 92*58738Sbostic (void)vfprintf(stderr, fmt, ap); 9358449Sbostic (void)fprintf(stderr, "\n"); 9458449Sbostic exit(eval); 9558449Sbostic } 9658449Sbostic 9758449Sbostic void 9858449Sbostic #if __STDC__ 9958449Sbostic warn(const char *fmt, ...) 10058449Sbostic #else 10158449Sbostic warn(fmt, va_alist) 10258449Sbostic int eval; 10358449Sbostic const char *fmt; 10458449Sbostic va_dcl 10558449Sbostic #endif 10658449Sbostic { 10758449Sbostic va_list ap; 10858449Sbostic #if __STDC__ 10958449Sbostic va_start(ap, fmt); 11058449Sbostic #else 11158449Sbostic va_start(ap); 11258449Sbostic #endif 11358449Sbostic vwarn(fmt, ap); 11458449Sbostic va_end(ap); 11558449Sbostic } 11658449Sbostic 11758449Sbostic void 11858449Sbostic vwarn(fmt, ap) 11958449Sbostic const char *fmt; 12058449Sbostic va_list ap; 12158449Sbostic { 12258449Sbostic int sverrno; 12358449Sbostic 12458449Sbostic sverrno = errno; 12558449Sbostic (void)fprintf(stderr, "%s: ", __progname); 126*58738Sbostic if (fmt != NULL) { 127*58738Sbostic (void)vfprintf(stderr, fmt, ap); 128*58738Sbostic (void)fprintf(stderr, ": "); 129*58738Sbostic } 130*58738Sbostic (void)fprintf(stderr, "%s\n", strerror(sverrno)); 13158449Sbostic } 13258449Sbostic 13358449Sbostic void 13458449Sbostic #ifdef __STDC__ 13558449Sbostic warnx(const char *fmt, ...) 13658449Sbostic #else 13758449Sbostic warnx(fmt, va_alist) 13858449Sbostic int eval; 13958449Sbostic const char *fmt; 14058449Sbostic va_dcl 14158449Sbostic #endif 14258449Sbostic { 14358449Sbostic va_list ap; 14458449Sbostic #ifdef __STDC__ 14558449Sbostic va_start(ap, fmt); 14658449Sbostic #else 14758449Sbostic va_start(ap); 14858449Sbostic #endif 14958449Sbostic vwarnx(fmt, ap); 15058449Sbostic va_end(ap); 15158449Sbostic } 15258449Sbostic 15358449Sbostic void 15458449Sbostic vwarnx(fmt, ap) 15558449Sbostic const char *fmt; 15658449Sbostic va_list ap; 15758449Sbostic { 15858449Sbostic (void)fprintf(stderr, "%s: ", __progname); 159*58738Sbostic if (fmt != NULL) 160*58738Sbostic (void)vfprintf(stderr, fmt, ap); 16158449Sbostic (void)fprintf(stderr, "\n"); 16258449Sbostic } 163