xref: /openbsd-src/usr.bin/cu/error.c (revision 114033288eb0f3037212fe9b810a7f91e66aa5c7)
1*11403328Snicm /* $OpenBSD: error.c,v 1.1 2012/07/10 10:28:05 nicm Exp $ */
2*11403328Snicm 
3*11403328Snicm /*
4*11403328Snicm  * Copyright (c) 2012 Nicholas Marriott <nicm@openbsd.org>
5*11403328Snicm  *
6*11403328Snicm  * Permission to use, copy, modify, and distribute this software for any
7*11403328Snicm  * purpose with or without fee is hereby granted, provided that the above
8*11403328Snicm  * copyright notice and this permission notice appear in all copies.
9*11403328Snicm  *
10*11403328Snicm  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
11*11403328Snicm  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
12*11403328Snicm  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
13*11403328Snicm  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
14*11403328Snicm  * WHATSOEVER RESULTING FROM LOSS OF MIND, USE, DATA OR PROFITS, WHETHER
15*11403328Snicm  * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
16*11403328Snicm  * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
17*11403328Snicm  */
18*11403328Snicm 
19*11403328Snicm #include <sys/types.h>
20*11403328Snicm 
21*11403328Snicm #include <err.h>
22*11403328Snicm #include <errno.h>
23*11403328Snicm #include <stdio.h>
24*11403328Snicm #include <stdarg.h>
25*11403328Snicm #include <stdlib.h>
26*11403328Snicm #include <string.h>
27*11403328Snicm 
28*11403328Snicm #include "cu.h"
29*11403328Snicm 
30*11403328Snicm /*
31*11403328Snicm  * Once we've configured termios, we need to use \r\n to end lines, so use our
32*11403328Snicm  * own versions of warn/warnx/err/errx.
33*11403328Snicm  */
34*11403328Snicm 
35*11403328Snicm extern char	*__progname;
36*11403328Snicm 
37*11403328Snicm void
cu_err(int eval,const char * fmt,...)38*11403328Snicm cu_err(int eval, const char *fmt, ...)
39*11403328Snicm {
40*11403328Snicm 	va_list ap;
41*11403328Snicm 
42*11403328Snicm 	restore_termios();
43*11403328Snicm 
44*11403328Snicm 	va_start(ap, fmt);
45*11403328Snicm 	verr(eval, fmt, ap);
46*11403328Snicm }
47*11403328Snicm 
48*11403328Snicm void
cu_errx(int eval,const char * fmt,...)49*11403328Snicm cu_errx(int eval, const char *fmt, ...)
50*11403328Snicm {
51*11403328Snicm 	va_list ap;
52*11403328Snicm 
53*11403328Snicm 	restore_termios();
54*11403328Snicm 
55*11403328Snicm 	va_start(ap, fmt);
56*11403328Snicm 	verrx(eval, fmt, ap);
57*11403328Snicm }
58*11403328Snicm 
59*11403328Snicm void
cu_warn(const char * fmt,...)60*11403328Snicm cu_warn(const char *fmt, ...)
61*11403328Snicm {
62*11403328Snicm 	va_list ap;
63*11403328Snicm 
64*11403328Snicm 	fprintf(stderr, "%s: ", __progname);
65*11403328Snicm 
66*11403328Snicm 	va_start(ap, fmt);
67*11403328Snicm 	vfprintf(stderr, fmt, ap);
68*11403328Snicm 	va_end(ap);
69*11403328Snicm 
70*11403328Snicm 	fprintf(stderr, ": %s\r\n", strerror(errno));
71*11403328Snicm }
72*11403328Snicm 
73*11403328Snicm void
cu_warnx(const char * fmt,...)74*11403328Snicm cu_warnx(const char *fmt, ...)
75*11403328Snicm {
76*11403328Snicm 	va_list ap;
77*11403328Snicm 
78*11403328Snicm 	fprintf(stderr, "%s: ", __progname);
79*11403328Snicm 
80*11403328Snicm 	va_start(ap, fmt);
81*11403328Snicm 	vfprintf(stderr, fmt, ap);
82*11403328Snicm 	va_end(ap);
83*11403328Snicm 
84*11403328Snicm 	fprintf(stderr, "\r\n");
85*11403328Snicm }
86