blob: 2938a60cea915211c4e499f3b27bf6811630446f [file] [log] [blame]
Ed Tanous50b966f2025-03-11 09:06:19 -07001/* 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
12enum {
13 CPER_LOG_NONE,
14 CPER_LOG_STDIO,
15 CPER_LOG_CUSTOM,
16} log_type = CPER_LOG_NONE;
17
18static void (*log_custom_fn)(const char *, va_list);
19
20void 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
43void cper_set_log_stdio()
44{
45 log_type = CPER_LOG_STDIO;
46}
47
48void 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 */