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