| /* SPDX-License-Identifier: Apache-2.0 */ |
| |
| #ifndef CPER_LOG_H |
| #define CPER_LOG_H |
| |
| #include <stdarg.h> |
| |
| #ifndef CPER_NO_STDIO |
| #include <stdio.h> |
| #endif |
| |
| enum { |
| CPER_LOG_NONE, |
| CPER_LOG_STDIO, |
| CPER_LOG_CUSTOM, |
| } log_type = CPER_LOG_NONE; |
| |
| static void (*log_custom_fn)(const char *, va_list); |
| |
| void cper_print_log(const char *fmt, ...) |
| { |
| va_list ap; |
| |
| va_start(ap, fmt); |
| |
| switch (log_type) { |
| case CPER_LOG_NONE: |
| break; |
| case CPER_LOG_STDIO: |
| #ifndef CPER_NO_STDIO |
| vfprintf(stderr, fmt, ap); |
| fputs("\n", stderr); |
| #endif |
| break; |
| case CPER_LOG_CUSTOM: |
| log_custom_fn(fmt, ap); |
| break; |
| } |
| |
| va_end(ap); |
| } |
| |
| void cper_set_log_stdio() |
| { |
| log_type = CPER_LOG_STDIO; |
| } |
| |
| void cper_set_log_custom(void (*fn)(const char *, va_list)) |
| { |
| log_type = CPER_LOG_CUSTOM; |
| log_custom_fn = fn; |
| } |
| |
| #endif /* CPER_LOG_H */ |