Home | History | Annotate | Download | only in ui
      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