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