-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdbg.h
More file actions
69 lines (60 loc) · 1.75 KB
/
dbg.h
File metadata and controls
69 lines (60 loc) · 1.75 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
#ifndef DBG_H
#define DBG_H
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <stdarg.h>
#include <unistd.h>
#include <limits.h>
#define _NORMAL_ "\x1b[0m"
#define _BLACK_ "\x1b[30m"
#define _RED_ "\x1b[31m"
#define _GREEN_ "\x1b[32m"
#define _YELLOW_ "\x1b[33m"
#define _BLUE_ "\x1b[34m"
#define _MAGENTA_ "\x1b[35m"
#define _CYAN_ "\x1b[36m"
#define _WHITE_ "\x1b[37m"
#define _BRED_ "\x1b[1;31m"
#define _BGREEN_ "\x1b[1;32m"
#define _BYELLOW_ "\x1b[1;33m"
#define _BBLUE_ "\x1b[1;34m"
#define _BMAGENTA_ "\x1b[1;35m"
#define _BCYAN_ "\x1b[1;36m"
#define _BWHITE_ "\x1b[1;37m"
#define DBG_MODE(x) (1ULL << (x))
#define DBG_ALL (~0ULL)
#define DBG_ERROR DBG_MODE(0) /* error conditions */
#define DBG_LINK DBG_MODE(1)
#define DBG_NET DBG_MODE(2)
#define DBG_ROUTE DBG_MODE(3)
/// There can be no white space in these strings
#define DBG_NAMETAB \
{ "all", DBG_ALL }, \
{ "error", DBG_ERROR }, \
{ "link", DBG_LINK }, \
{ "net", DBG_NET }, \
{ "route", DBG_ROUTE }, \
{ NULL, 0 }
#define DBG_COLORTAB \
{ DBG_ERROR, _RED_ }, \
{ DBG_LINK, _BYELLOW_ }, \
{ DBG_NET, _BBLUE_ }, \
{ DBG_ROUTE, _BMAGENTA_ }
#define dbg(mode, args...) do { \
if (!dbg_initiated) dbg_init(); \
if (dbg_modes & (mode)) { \
char __buf__[LINE_MAX];\
int __len__ = 0; \
__len__ += sprintf(__buf__ + __len__, "%s", DCOLOR(mode));\
__len__ += sprintf(__buf__ + __len__, ## args); \
__len__ += sprintf(__buf__ + __len__, "%s", _NORMAL_);\
__len__ = write(STDERR_FILENO, __buf__, __len__);\
fflush(stderr);\
} \
} while(0)
extern unsigned long long dbg_modes;
extern short dbg_initiated;
void dbg_init();
const char* DCOLOR(unsigned long long d_mode);
#endif