Mercurial > code
annotate port/C/err.c @ 563:668975a91fb2
Misc: add executable.cpp, get the executable path
author | David Demelier <markand@malikania.fr> |
---|---|
date | Tue, 21 Jun 2016 15:55:57 +0200 |
parents | f48bb09bccc7 |
children | 266f32919d0a |
rev | line source |
---|---|
486 | 1 /* |
2 * err.c -- formtted error messages (portable version) | |
3 * | |
548
f48bb09bccc7
Misc: huge cleanup, switch to spaces
David Demelier <markand@malikania.fr>
parents:
543
diff
changeset
|
4 * Copyright (c) 2011-2016 David Demelier <markand@malikania.fr> |
486 | 5 * |
6 * Permission to use, copy, modify, and/or distribute this software for any | |
7 * purpose with or without fee is hereby granted, provided that the above | |
8 * copyright notice and this permission notice appear in all copies. | |
9 * | |
10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES | |
11 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF | |
12 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR | |
13 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES | |
14 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN | |
15 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF | |
16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | |
17 */ | |
18 | |
19 #include <stdio.h> | |
20 #include <stdlib.h> | |
21 #include <stdarg.h> | |
22 #include <string.h> | |
23 #include <errno.h> | |
24 | |
25 #include "err.h" | |
26 | |
27 /* | |
28 * These functions implements at least the same functions that can be found | |
29 * in the NetBSD err(3) man page without printing the programe name due to | |
30 * a portability issue. | |
31 */ | |
32 | |
33 void | |
34 err(int val, const char *fmt, ...) | |
35 { | |
548
f48bb09bccc7
Misc: huge cleanup, switch to spaces
David Demelier <markand@malikania.fr>
parents:
543
diff
changeset
|
36 va_list ap; |
486 | 37 |
548
f48bb09bccc7
Misc: huge cleanup, switch to spaces
David Demelier <markand@malikania.fr>
parents:
543
diff
changeset
|
38 va_start(ap, fmt); |
f48bb09bccc7
Misc: huge cleanup, switch to spaces
David Demelier <markand@malikania.fr>
parents:
543
diff
changeset
|
39 verr(val, fmt, ap); |
f48bb09bccc7
Misc: huge cleanup, switch to spaces
David Demelier <markand@malikania.fr>
parents:
543
diff
changeset
|
40 va_end(ap); |
486 | 41 } |
42 | |
43 void | |
44 verr(int val, const char *fmt, va_list ap) | |
45 { | |
548
f48bb09bccc7
Misc: huge cleanup, switch to spaces
David Demelier <markand@malikania.fr>
parents:
543
diff
changeset
|
46 if (fmt) { |
f48bb09bccc7
Misc: huge cleanup, switch to spaces
David Demelier <markand@malikania.fr>
parents:
543
diff
changeset
|
47 vfprintf(stderr, fmt, ap); |
f48bb09bccc7
Misc: huge cleanup, switch to spaces
David Demelier <markand@malikania.fr>
parents:
543
diff
changeset
|
48 fprintf(stderr, ": "); |
f48bb09bccc7
Misc: huge cleanup, switch to spaces
David Demelier <markand@malikania.fr>
parents:
543
diff
changeset
|
49 } |
486 | 50 |
548
f48bb09bccc7
Misc: huge cleanup, switch to spaces
David Demelier <markand@malikania.fr>
parents:
543
diff
changeset
|
51 fprintf(stderr, "%s\n", strerror(errno)); |
f48bb09bccc7
Misc: huge cleanup, switch to spaces
David Demelier <markand@malikania.fr>
parents:
543
diff
changeset
|
52 exit(val); |
486 | 53 } |
54 | |
55 void | |
56 errx(int val, const char *fmt, ...) | |
57 { | |
548
f48bb09bccc7
Misc: huge cleanup, switch to spaces
David Demelier <markand@malikania.fr>
parents:
543
diff
changeset
|
58 va_list ap; |
486 | 59 |
548
f48bb09bccc7
Misc: huge cleanup, switch to spaces
David Demelier <markand@malikania.fr>
parents:
543
diff
changeset
|
60 va_start(ap, fmt); |
f48bb09bccc7
Misc: huge cleanup, switch to spaces
David Demelier <markand@malikania.fr>
parents:
543
diff
changeset
|
61 verrx(val, fmt, ap); |
f48bb09bccc7
Misc: huge cleanup, switch to spaces
David Demelier <markand@malikania.fr>
parents:
543
diff
changeset
|
62 va_end(ap); |
486 | 63 } |
64 | |
65 void | |
66 verrx(int val, const char *fmt, va_list ap) | |
67 { | |
548
f48bb09bccc7
Misc: huge cleanup, switch to spaces
David Demelier <markand@malikania.fr>
parents:
543
diff
changeset
|
68 if (fmt) |
f48bb09bccc7
Misc: huge cleanup, switch to spaces
David Demelier <markand@malikania.fr>
parents:
543
diff
changeset
|
69 vfprintf(stderr, fmt, ap); |
486 | 70 |
548
f48bb09bccc7
Misc: huge cleanup, switch to spaces
David Demelier <markand@malikania.fr>
parents:
543
diff
changeset
|
71 fprintf(stderr, "\n"); |
486 | 72 |
548
f48bb09bccc7
Misc: huge cleanup, switch to spaces
David Demelier <markand@malikania.fr>
parents:
543
diff
changeset
|
73 exit(val); |
486 | 74 } |
75 | |
76 void | |
77 warn(const char *fmt, ...) | |
78 { | |
548
f48bb09bccc7
Misc: huge cleanup, switch to spaces
David Demelier <markand@malikania.fr>
parents:
543
diff
changeset
|
79 va_list ap; |
486 | 80 |
548
f48bb09bccc7
Misc: huge cleanup, switch to spaces
David Demelier <markand@malikania.fr>
parents:
543
diff
changeset
|
81 va_start(ap, fmt); |
f48bb09bccc7
Misc: huge cleanup, switch to spaces
David Demelier <markand@malikania.fr>
parents:
543
diff
changeset
|
82 vwarn(fmt, ap); |
f48bb09bccc7
Misc: huge cleanup, switch to spaces
David Demelier <markand@malikania.fr>
parents:
543
diff
changeset
|
83 va_end(ap); |
486 | 84 } |
85 | |
86 void | |
87 vwarn(const char *fmt, va_list ap) | |
88 { | |
548
f48bb09bccc7
Misc: huge cleanup, switch to spaces
David Demelier <markand@malikania.fr>
parents:
543
diff
changeset
|
89 if (fmt) { |
f48bb09bccc7
Misc: huge cleanup, switch to spaces
David Demelier <markand@malikania.fr>
parents:
543
diff
changeset
|
90 vfprintf(stderr, fmt, ap); |
f48bb09bccc7
Misc: huge cleanup, switch to spaces
David Demelier <markand@malikania.fr>
parents:
543
diff
changeset
|
91 fprintf(stderr, ": "); |
f48bb09bccc7
Misc: huge cleanup, switch to spaces
David Demelier <markand@malikania.fr>
parents:
543
diff
changeset
|
92 } |
486 | 93 |
548
f48bb09bccc7
Misc: huge cleanup, switch to spaces
David Demelier <markand@malikania.fr>
parents:
543
diff
changeset
|
94 fprintf(stderr, "%s\n", strerror(errno)); |
486 | 95 } |
96 | |
97 void | |
98 warnx(const char *fmt, ...) | |
99 { | |
548
f48bb09bccc7
Misc: huge cleanup, switch to spaces
David Demelier <markand@malikania.fr>
parents:
543
diff
changeset
|
100 va_list ap; |
486 | 101 |
548
f48bb09bccc7
Misc: huge cleanup, switch to spaces
David Demelier <markand@malikania.fr>
parents:
543
diff
changeset
|
102 va_start(ap, fmt); |
f48bb09bccc7
Misc: huge cleanup, switch to spaces
David Demelier <markand@malikania.fr>
parents:
543
diff
changeset
|
103 vwarnx(fmt, ap); |
f48bb09bccc7
Misc: huge cleanup, switch to spaces
David Demelier <markand@malikania.fr>
parents:
543
diff
changeset
|
104 va_end(ap); |
486 | 105 } |
106 | |
107 void | |
108 vwarnx(const char *fmt, va_list ap) | |
109 { | |
548
f48bb09bccc7
Misc: huge cleanup, switch to spaces
David Demelier <markand@malikania.fr>
parents:
543
diff
changeset
|
110 if (fmt) |
f48bb09bccc7
Misc: huge cleanup, switch to spaces
David Demelier <markand@malikania.fr>
parents:
543
diff
changeset
|
111 vfprintf(stderr, fmt, ap); |
486 | 112 |
548
f48bb09bccc7
Misc: huge cleanup, switch to spaces
David Demelier <markand@malikania.fr>
parents:
543
diff
changeset
|
113 fprintf(stderr, "\n"); |
486 | 114 } |