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 * perf_error__register - Register error logging functions 57 * @eops: The pointer to error logging function struct 58 * 59 * Register UI-specific error logging functions. Before calling this, 60 * other logging functions should be unregistered, if any. 61 */ 62 int perf_error__register(struct perf_error_ops *eops) 63 { 64 if (perf_eops != &default_eops) 65 return -1; 66 67 perf_eops = eops; 68 return 0; 69 } 70 71 /** 72 * perf_error__unregister - Unregister error logging functions 73 * @eops: The pointer to error logging function struct 74 * 75 * Unregister already registered error logging functions. 76 */ 77 int perf_error__unregister(struct perf_error_ops *eops) 78 { 79 if (perf_eops != eops) 80 return -1; 81 82 perf_eops = &default_eops; 83 return 0; 84 } 85