91 lines · c
1// SPDX-License-Identifier: GPL-2.02#include "util.h"3#include "../util/debug.h"4#include <stdio.h>5 6/*7 * Default error logging functions8 */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 if (quiet)19 return 0;20 21 fprintf(stderr, "Warning:\n");22 vfprintf(stderr, format, args);23 return 0;24}25 26static struct perf_error_ops default_eops =27{28 .error = perf_stdio__error,29 .warning = perf_stdio__warning,30};31 32static struct perf_error_ops *perf_eops = &default_eops;33 34 35int ui__error(const char *format, ...)36{37 int ret;38 va_list args;39 40 va_start(args, format);41 ret = perf_eops->error(format, args);42 va_end(args);43 44 return ret;45}46 47int ui__warning(const char *format, ...)48{49 int ret;50 va_list args;51 if (quiet)52 return 0;53 54 va_start(args, format);55 ret = perf_eops->warning(format, args);56 va_end(args);57 58 return ret;59}60 61/**62 * perf_error__register - Register error logging functions63 * @eops: The pointer to error logging function struct64 *65 * Register UI-specific error logging functions. Before calling this,66 * other logging functions should be unregistered, if any.67 */68int perf_error__register(struct perf_error_ops *eops)69{70 if (perf_eops != &default_eops)71 return -1;72 73 perf_eops = eops;74 return 0;75}76 77/**78 * perf_error__unregister - Unregister error logging functions79 * @eops: The pointer to error logging function struct80 *81 * Unregister already registered error logging functions.82 */83int perf_error__unregister(struct perf_error_ops *eops)84{85 if (perf_eops != eops)86 return -1;87 88 perf_eops = &default_eops;89 return 0;90}91