blob: 3f3972bcb752e299265a84807e62aaf8f8fc7dde [file] [log] [blame]
rjw1f884582022-01-06 17:20:42 +08001/* vprintf, vsnprintf */
2#include <stdio.h>
3
4/* exit(), atoi() */
5#include <stdlib.h>
6
7#ifdef __YOCTO_OS__
8#include <stdarg.h>
9#endif
10
11/* mrdump related */
12#include "mrdump_log.h"
13
14
15static int mdlog_level = LOG_INFO;
16static int mdlog_write_syslog = 1;
17
18void mdlog_init(int level, int write_syslog)
19{
20 mdlog_level = level;
21 mdlog_write_syslog = write_syslog;
22 openlog("mrdump_tool", 0, 0);
23}
24
25void mdlog_printf(int log_prio, const char *fmt, ...)
26{
27 va_list ap;
28
29 if (log_prio > mdlog_level) {
30 return;
31 }
32
33 va_start(ap, fmt);
34 if (mdlog_write_syslog) {
35 vsyslog(log_prio, fmt, ap);
36 }
37 else {
38 char prefix;
39 if (log_prio <= LOG_ERR) {
40 prefix = 'E';
41 } else if (log_prio == LOG_WARNING) {
42 prefix = 'W';
43 } else if (log_prio <= LOG_INFO) {
44 prefix = 'I';
45 } else {
46 prefix = 'D';
47 }
48 putc(prefix, stderr);
49 putc(':', stderr);
50 vfprintf(stderr, fmt, ap);
51 }
52 va_end(ap);
53}
54
55void error(const char *msg, ...)
56{
57 va_list ap;
58 char msgbuf[128];
59
60 va_start(ap, msg);
61 if (mdlog_write_syslog) {
62 vsyslog(LOG_ERR, msg, ap);
63 }
64 else {
65 vsnprintf(msgbuf, sizeof(msgbuf), msg, ap);
66 fprintf(stderr, "Error: %s", msgbuf);
67 }
68 va_end(ap);
69
70 exit(2);
71}