1 /* SPDX-License-Identifier: Apache-2.0 */ 2 3 #ifndef CPER_LOG_H 4 #define CPER_LOG_H 5 6 #include <stdarg.h> 7 8 #ifndef CPER_NO_STDIO 9 #include <stdio.h> 10 #endif 11 12 enum { 13 CPER_LOG_NONE, 14 CPER_LOG_STDIO, 15 CPER_LOG_CUSTOM, 16 } log_type = CPER_LOG_NONE; 17 18 static void (*log_custom_fn)(const char *, va_list); 19 20 void cper_print_log(const char *fmt, ...) 21 { 22 va_list ap; 23 24 va_start(ap, fmt); 25 26 switch (log_type) { 27 case CPER_LOG_NONE: 28 break; 29 case CPER_LOG_STDIO: 30 #ifndef CPER_NO_STDIO 31 vfprintf(stderr, fmt, ap); 32 fputs("\n", stderr); 33 #endif 34 break; 35 case CPER_LOG_CUSTOM: 36 log_custom_fn(fmt, ap); 37 break; 38 } 39 40 va_end(ap); 41 } 42 43 void cper_set_log_stdio() 44 { 45 log_type = CPER_LOG_STDIO; 46 } 47 48 void cper_set_log_custom(void (*fn)(const char *, va_list)) 49 { 50 log_type = CPER_LOG_CUSTOM; 51 log_custom_fn = fn; 52 } 53 54 #endif /* CPER_LOG_H */ 55