utils: Add enum name for pseudo log group 'any'
[strongswan.git] / src / libstrongswan / utils / debug.c
1 /*
2 * Copyright (C) 2006 Martin Willi
3 * Hochschule fuer Technik Rapperswil
4 *
5 * This program is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License as published by the
7 * Free Software Foundation; either version 2 of the License, or (at your
8 * option) any later version. See <http://www.fsf.org/copyleft/gpl.txt>.
9 *
10 * This program is distributed in the hope that it will be useful, but
11 * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
12 * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
13 * for more details.
14 */
15
16 #include <stdarg.h>
17
18 #include "debug.h"
19
20 ENUM(debug_names, DBG_DMN, DBG_ANY,
21 "DMN",
22 "MGR",
23 "IKE",
24 "CHD",
25 "JOB",
26 "CFG",
27 "KNL",
28 "NET",
29 "ASN",
30 "ENC",
31 "TNC",
32 "IMC",
33 "IMV",
34 "PTS",
35 "TLS",
36 "APP",
37 "ESP",
38 "LIB",
39 "ANY",
40 );
41
42 ENUM(debug_lower_names, DBG_DMN, DBG_ANY,
43 "dmn",
44 "mgr",
45 "ike",
46 "chd",
47 "job",
48 "cfg",
49 "knl",
50 "net",
51 "asn",
52 "enc",
53 "tnc",
54 "imc",
55 "imv",
56 "pts",
57 "tls",
58 "app",
59 "esp",
60 "lib",
61 "any",
62 );
63
64 /**
65 * level logged by the default logger
66 */
67 static level_t default_level = 1;
68
69 /**
70 * stream logged to by the default logger
71 */
72 static FILE *default_stream = NULL;
73
74 /**
75 * default dbg function which printf all to stderr
76 */
77 void dbg_default(debug_t group, level_t level, char *fmt, ...)
78 {
79 if (!default_stream)
80 {
81 default_stream = stderr;
82 }
83 if (level <= default_level)
84 {
85 va_list args;
86
87 va_start(args, fmt);
88 vfprintf(default_stream, fmt, args);
89 fprintf(default_stream, "\n");
90 va_end(args);
91 }
92 }
93
94 /**
95 * set the level logged by the default stderr logger
96 */
97 void dbg_default_set_level(level_t level)
98 {
99 default_level = level;
100 }
101
102 /**
103 * set the stream logged by dbg_default() to
104 */
105 void dbg_default_set_stream(FILE *stream)
106 {
107 default_stream = stream;
108 }
109
110 /**
111 * The registered debug hook.
112 */
113 void (*dbg) (debug_t group, level_t level, char *fmt, ...) = dbg_default;
114