comparison src/core/error.c @ 95:e82eca4f8606

core: simplify error/panic routines
author David Demelier <markand@malikania.fr>
date Mon, 30 Mar 2020 14:07:21 +0200
parents 52792b863ff7
children
comparison
equal deleted inserted replaced
94:ed72843a7194 95:e82eca4f8606
14 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 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 15 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
17 */ 17 */
18 18
19 #include <assert.h>
19 #include <errno.h> 20 #include <errno.h>
20 #include <stdio.h> 21 #include <stdio.h>
21 #include <stdlib.h> 22 #include <stdlib.h>
22 #include <string.h> 23 #include <string.h>
23 24
43 } 44 }
44 45
45 bool 46 bool
46 error_printf(const char *fmt, ...) 47 error_printf(const char *fmt, ...)
47 { 48 {
49 assert(fmt);
50
48 va_list ap; 51 va_list ap;
49 52
50 va_start(ap, fmt); 53 va_start(ap, fmt);
51 error_vprintf(fmt, ap); 54 error_vprintf(fmt, ap);
52 va_end(ap); 55 va_end(ap);
55 } 58 }
56 59
57 bool 60 bool
58 error_vprintf(const char *fmt, va_list ap) 61 error_vprintf(const char *fmt, va_list ap)
59 { 62 {
63 assert(fmt);
64
60 vsnprintf(buffer, sizeof (buffer), fmt, ap); 65 vsnprintf(buffer, sizeof (buffer), fmt, ap);
61 66
62 return false; 67 return false;
63 }
64
65 noreturn void
66 error_fatal(void)
67 {
68 fprintf(stderr, "%s\n", buffer);
69 exit(1);
70 }
71
72 noreturn void
73 error_fatalf(const char *fmt, ...)
74 {
75 va_list ap;
76
77 va_start(ap, fmt);
78 error_vfatalf(fmt, ap);
79 va_end(ap);
80 }
81
82 noreturn void
83 error_vfatalf(const char *fmt, va_list ap)
84 {
85 fprintf(stderr, fmt, ap);
86 exit(1);
87 } 68 }
88 69
89 /* private: error_p.h */ 70 /* private: error_p.h */
90 71
91 bool 72 bool