| Arnaldo Carvalho de Melo | 1e6dd07 | 2010-08-10 15:58:50 -0300 | [diff] [blame] | 1 | #include "util.h" | 
| Namhyung Kim | ba47a14 | 2012-05-29 13:22:58 +0900 | [diff] [blame] | 2 | #include "../debug.h" | 
| Arnaldo Carvalho de Melo | f9224c5 | 2010-03-11 20:12:44 -0300 | [diff] [blame] | 3 |  | 
| Namhyung Kim | ba47a14 | 2012-05-29 13:22:58 +0900 | [diff] [blame] | 4 |  | 
|  | 5 | /* | 
|  | 6 | * Default error logging functions | 
|  | 7 | */ | 
|  | 8 | static int perf_stdio__error(const char *format, va_list args) | 
| Arnaldo Carvalho de Melo | 1056d3d | 2011-10-26 07:11:03 -0200 | [diff] [blame] | 9 | { | 
| Namhyung Kim | ba47a14 | 2012-05-29 13:22:58 +0900 | [diff] [blame] | 10 | fprintf(stderr, "Error:\n"); | 
| Arnaldo Carvalho de Melo | ae55795 | 2011-10-26 08:00:55 -0200 | [diff] [blame] | 11 | vfprintf(stderr, format, args); | 
| Namhyung Kim | ba47a14 | 2012-05-29 13:22:58 +0900 | [diff] [blame] | 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; | 
| Arnaldo Carvalho de Melo | 53c5401 | 2010-03-24 16:40:14 -0300 | [diff] [blame] | 41 | } | 
| Arnaldo Carvalho de Melo | 068ffaa | 2010-11-27 02:41:01 -0200 | [diff] [blame] | 42 |  | 
| Arnaldo Carvalho de Melo | 4610e41 | 2011-10-26 12:04:37 -0200 | [diff] [blame] | 43 | int ui__warning(const char *format, ...) | 
| Arnaldo Carvalho de Melo | 068ffaa | 2010-11-27 02:41:01 -0200 | [diff] [blame] | 44 | { | 
| Namhyung Kim | ba47a14 | 2012-05-29 13:22:58 +0900 | [diff] [blame] | 45 | int ret; | 
| Arnaldo Carvalho de Melo | 068ffaa | 2010-11-27 02:41:01 -0200 | [diff] [blame] | 46 | va_list args; | 
|  | 47 |  | 
|  | 48 | va_start(args, format); | 
| Namhyung Kim | ba47a14 | 2012-05-29 13:22:58 +0900 | [diff] [blame] | 49 | ret = perf_eops->warning(format, args); | 
| Arnaldo Carvalho de Melo | ae55795 | 2011-10-26 08:00:55 -0200 | [diff] [blame] | 50 | va_end(args); | 
| Namhyung Kim | ba47a14 | 2012-05-29 13:22:58 +0900 | [diff] [blame] | 51 |  | 
|  | 52 | return ret; | 
| Arnaldo Carvalho de Melo | ae55795 | 2011-10-26 08:00:55 -0200 | [diff] [blame] | 53 | } | 
|  | 54 |  | 
| Arnaldo Carvalho de Melo | ae55795 | 2011-10-26 08:00:55 -0200 | [diff] [blame] | 55 |  | 
| Namhyung Kim | ba47a14 | 2012-05-29 13:22:58 +0900 | [diff] [blame] | 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; | 
| Arnaldo Carvalho de Melo | 068ffaa | 2010-11-27 02:41:01 -0200 | [diff] [blame] | 85 | } |