1 #include "util.h" 2 #include "../debug.h" 3 4 5 /* 6 * Default error logging functions 7 */ 8 static int perf_stdio__error(const char *format, va_list args) 9 { 10 fprintf(stderr, "Error:\n"); 11 vfprintf(stderr, format, args); 12 return 0; 13 } 14 15 static int perf_stdio__warning(const char *format, va_list args) 16 { 17 fprintf(stderr, "Warning:\n"); 18 vfprintf(stderr, format, args); 19 return 0; 20 } 21 22 static struct perf_error_ops default_eops = 23 { 24 .error = perf_stdio__error, 25 .warning = perf_stdio__warning, 26 }; 27 28 static struct perf_error_ops *perf_eops = &default_eops; 29 30 31 int ui__error(const char *format, ...) 32 { 33 int ret; 34 va_list args; 35 36 va_start(args, format); 37 ret = perf_eops->error(format, args); 38 va_end(args); 39 40 return ret; 41 } 42 43 int ui__warning(const char *format, ...) 44 { 45 int ret; 46 va_list args; 47 48 va_start(args, format); 49 ret = perf_eops->warning(format, args); 50 va_end(args); 51 52 return ret; 53 } 54 55 56 /** 57 * perf_error__register - Register error logging functions 58 * @eops: The pointer to error logging function struct 59 * 60 * Register UI-specific error logging functions. Before calling this, 61 * other logging functions should be unregistered, if any. 62 */ 63 int perf_error__register(struct perf_error_ops *eops) 64 { 65 if (perf_eops != &default_eops) 66 return -1; 67 68 perf_eops = eops; 69 return 0; 70 } 71 72 /** 73 * perf_error__unregister - Unregister error logging functions 74 * @eops: The pointer to error logging function struct 75 * 76 * Unregister already registered error logging functions. 77 */ 78 int perf_error__unregister(struct perf_error_ops *eops) 79 { 80 if (perf_eops != eops) 81 return -1; 82 83 perf_eops = &default_eops; 84 return 0; 85 } 86