util.c (1647B)
1// SPDX-License-Identifier: GPL-2.0 2#include "util.h" 3#include "../util/debug.h" 4#include <stdio.h> 5 6/* 7 * Default error logging functions 8 */ 9static int perf_stdio__error(const char *format, va_list args) 10{ 11 fprintf(stderr, "Error:\n"); 12 vfprintf(stderr, format, args); 13 return 0; 14} 15 16static int perf_stdio__warning(const char *format, va_list args) 17{ 18 fprintf(stderr, "Warning:\n"); 19 vfprintf(stderr, format, args); 20 return 0; 21} 22 23static struct perf_error_ops default_eops = 24{ 25 .error = perf_stdio__error, 26 .warning = perf_stdio__warning, 27}; 28 29static struct perf_error_ops *perf_eops = &default_eops; 30 31 32int ui__error(const char *format, ...) 33{ 34 int ret; 35 va_list args; 36 37 va_start(args, format); 38 ret = perf_eops->error(format, args); 39 va_end(args); 40 41 return ret; 42} 43 44int ui__warning(const char *format, ...) 45{ 46 int ret; 47 va_list args; 48 49 va_start(args, format); 50 ret = perf_eops->warning(format, args); 51 va_end(args); 52 53 return ret; 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 */ 63int 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 */ 78int 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}