xref: /kvmtool/util/util.c (revision f3150089290c543bc9792248af73f9103a5847d5)
1 /*
2  * Taken from perf which in turn take it from GIT
3  */
4 
5 #include "kvm/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 static void info_builtin(const char *info, va_list params)
31 {
32 	report(" Info: ", info, params);
33 }
34 
35 void die(const char *err, ...)
36 {
37 	va_list params;
38 
39 	va_start(params, err);
40 	die_builtin(err, params);
41 	va_end(params);
42 }
43 
44 int error(const char *err, ...)
45 {
46 	va_list params;
47 
48 	va_start(params, err);
49 	error_builtin(err, params);
50 	va_end(params);
51 	return -1;
52 }
53 
54 void warning(const char *warn, ...)
55 {
56 	va_list params;
57 
58 	va_start(params, warn);
59 	warn_builtin(warn, params);
60 	va_end(params);
61 }
62 
63 void info(const char *info, ...)
64 {
65 	va_list params;
66 
67 	va_start(params, info);
68 	info_builtin(info, params);
69 	va_end(params);
70 }
71 
72 void die_perror(const char *s)
73 {
74 	perror(s);
75 	exit(1);
76 }
77