Introduction
Introduction Statistics Contact Development Disclaimer Help
tlog.c - ics2txt - convert icalendar .ics file to plain text
git clone git://bitreich.org/ics2txt git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws…
Log
Files
Refs
Tags
README
---
tlog.c (1353B)
---
1 #include "log.h"
2
3 #include <assert.h>
4 #include <string.h>
5
6 /*
7 * log.c - log to standard error according to the log level
8 *
9 * Instead of logging to syslog, delegate logging to a separate
10 * tool, such as FreeBSD's daemon(8), POSIX's logger(1).
11 */
12
13 #include <errno.h>
14 #include <stdio.h>
15 #include <stdlib.h>
16
17 #define LOG_DEFAULT 3 /* info */
18
19 int log_level = -1;
20 char *log_arg0 = NULL;
21
22 void
23 vlogf(int level, char const *flag, char const *fmt, va_list va)
24 {
25 char *env;
26 int e = errno;
27
28 if (log_level < 0) {
29 env = getenv("LOG");
30 log_level = (env == NULL ? 0 : atoi(env));
31 log_level = (log_level > 0 ? log_level : LOG_DEFAULT);
32 }
33
34 if (log_level < level)
35 return;
36
37 if (log_arg0 != NULL)
38 fprintf(stderr, "%s: ", log_arg0);
39
40 fprintf(stderr, "%s: ", flag);
41 vfprintf(stderr, fmt, va);
42
43 if (e != 0)
44 fprintf(stderr, ": %s", strerror(e));
45
46 fprintf(stderr, "\n");
47 fflush(stderr);
48 }
49
50 void
51 die(char const *fmt, ...)
52 {
53 va_list va;
54
55 va_start(va, fmt);
56 vlogf(1, "error", fmt, va);
57 va_end(va);
58 exit(1);
59 }
60
61 void
62 warn(char const *fmt, ...)
63 {
64 va_list va;
65
66 va_start(va, fmt);
67 vlogf(2, "warn", fmt, va);
68 va_end(va);
69 }
70
71 void
72 info(char const *fmt, ...)
73 {
74 va_list va;
75
76 va_start(va, fmt);
77 vlogf(3, "info", fmt, va);
78 va_end(va);
79 }
80
81 void
82 debug(char const *fmt, ...)
83 {
84 va_list va;
85
86 va_start(va, fmt);
87 vlogf(4, "debug", fmt, va);
88 va_end(va);
89 }
You are viewing proxied material from bitreich.org. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.