xref: /kvmtool/util/util.c (revision ad054a21d2e7a21971ac575d0a843994afa8d35d)
1 /*
2  * Taken from perf which in turn take it from GIT
3  */
4 
5 #include "util.h"
6 
7 static void report(const char *prefix, const char *err, va_list params)
8 {
9 	char msg[1024];
10 	vsnprintf(msg, sizeof(msg), err, params);
11 	fprintf(stderr, " %s%s\n", prefix, msg);
12 }
13 
14 static NORETURN void die_builtin(const char *err, va_list params)
15 {
16 	report(" Fatal: ", err, params);
17 	exit(128);
18 }
19 
20 static void error_builtin(const char *err, va_list params)
21 {
22 	report(" Error: ", err, params);
23 }
24 
25 static void warn_builtin(const char *warn, va_list params)
26 {
27 	report(" Warning: ", warn, params);
28 }
29 
30 void die(const char *err, ...)
31 {
32 	va_list params;
33 
34 	va_start(params, err);
35 	die_builtin(err, params);
36 	va_end(params);
37 }
38 
39 int error(const char *err, ...)
40 {
41 	va_list params;
42 
43 	va_start(params, err);
44 	error_builtin(err, params);
45 	va_end(params);
46 	return -1;
47 }
48 
49 void warning(const char *warn, ...)
50 {
51 	va_list params;
52 
53 	va_start(params, warn);
54 	warn_builtin(warn, params);
55 	va_end(params);
56 }
57 
58 void die_perror(const char *s)
59 {
60 	perror(s);
61 	exit(1);
62 }
63