xref: /csrg-svn/lib/libc/gen/err.c (revision 58738)
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