]> cygwin.com Git - cygwin-apps/cygutils.git/blob - src/column/err.c
Fixes for cygstart; bump version number and documentation
[cygwin-apps/cygutils.git] / src / column / err.c
1 /*-
2 * Copyright (c) 1993
3 * The Regents of the University of California. All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 * 1. Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright
11 * notice, this list of conditions and the following disclaimer in the
12 * documentation and/or other materials provided with the distribution.
13 * 3. Neither the name of the University nor the names of its contributors
14 * may be used to endorse or promote products derived from this software
15 * without specific prior written permission.
16 *
17 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
18 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
20 * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
21 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
22 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
23 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
24 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
25 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
26 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
27 * SUCH DAMAGE.
28 */
29
30 /* 2001-12-04 Charles Wilson: modified license to the 'BSD no advert'
31 * license, as required by the Director of the Office of
32 * Technology Licensing of the University of California on
33 * July 22, 1999.
34 * See http://www.opensource.org/licenses/bsd-license.html
35 */
36 #if HAVE_CONFIG_H
37 # include "config.h"
38 #endif
39 #include "common.h"
40 #include "errs.h"
41
42
43 #ifdef HAVE_PROGNAME
44 extern char *__progname; /* Program name, from crt0. */
45 #else
46 char *__progname = "foo"; /* probably libc4 */
47 #endif
48
49 /* Some compilers complain "null format string" upon err(1,NULL) */
50 /* Make them happy with a separate routine. */
51 void
52 err_nomsg(int exitval) {
53 (void)fprintf(stderr, "%s: %s\n", __progname, strerror(errno));
54 exit(exitval);
55 }
56
57 void
58 err(int exitval, const char *fmt, ...) {
59 va_list ap;
60 va_start(ap, fmt);
61 verr(exitval, fmt, ap);
62 va_end(ap);
63 }
64
65 void
66 verr(int exitval, const char *fmt, va_list ap) {
67 int sverrno;
68
69 sverrno = errno;
70 (void)fprintf(stderr, "%s: ", __progname);
71 if (fmt != NULL && *fmt != 0) {
72 (void)vfprintf(stderr, fmt, ap);
73 (void)fprintf(stderr, ": ");
74 }
75 (void)fprintf(stderr, "%s\n", strerror(sverrno));
76 exit(exitval);
77 }
78
79 void
80 errx(int exitval, const char *fmt, ...) {
81 va_list ap;
82 va_start(ap, fmt);
83 verrx(exitval, fmt, ap);
84 va_end(ap);
85 }
86
87 void
88 verrx(int exitval, const char *fmt, va_list ap) {
89 (void)fprintf(stderr, "%s: ", __progname);
90 if (fmt != NULL)
91 (void)vfprintf(stderr, fmt, ap);
92 (void)fprintf(stderr, "\n");
93 exit(exitval);
94 }
95
96 void
97 warn(const char *fmt, ...) {
98 va_list ap;
99 va_start(ap, fmt);
100 vwarn(fmt, ap);
101 va_end(ap);
102 }
103
104 void
105 vwarn(const char *fmt, va_list ap) {
106 int sverrno;
107
108 sverrno = errno;
109 (void)fprintf(stderr, "%s: ", __progname);
110 if (fmt != NULL) {
111 (void)vfprintf(stderr, fmt, ap);
112 (void)fprintf(stderr, ": ");
113 }
114 (void)fprintf(stderr, "%s\n", strerror(sverrno));
115 }
116
117 void
118 warnx(const char *fmt, ...) {
119 va_list ap;
120 va_start(ap, fmt);
121 vwarnx(fmt, ap);
122 va_end(ap);
123 }
124
125 void
126 vwarnx(const char *fmt, va_list ap) {
127 (void)fprintf(stderr, "%s: ", __progname);
128 if (fmt != NULL)
129 (void)vfprintf(stderr, fmt, ap);
130 (void)fprintf(stderr, "\n");
131 }
This page took 0.040647 seconds and 5 git commands to generate.