xref: /openbmc/libcper/log.c (revision da798dc4e070806ff30ab15593be2a14ab20eb48)
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