1 #ifndef DEBUG_H
2 #define DEBUG_H 1
3 
4 #define LOG_TRACE 10
5 #define LOG_ALL 7
6 #define LOG_ENTER_EXIT 6
7 #define LOG_DEBUG 5
8 #define LOG_INFO 4
9 #define LOG_WARN 3
10 #define LOG_ERROR 2
11 #define LOG_FATAL 1
12 #define LOG_NONE 0
13 
14 #define TRACE_MODEM_IN 1
15 #define TRACE_MODEM_OUT 2
16 #define TRACE_IP_IN 4
17 #define TRACE_IP_OUT 8
18 
19 #include <stdio.h>  // needed for strerror
20 #include <string.h>  // needed for strerror
21 #include <errno.h>   // needed for errno
22 
23 #if __STDC_VERSION__ < 199901L
24     # if __GNUC__ >= 2
25     #  define __func__ __FUNCTION__
26     # else
27     #  define __func__ "<unknown>"
28     # endif
29 #endif
30 
31 
32 #define LOG(a,args...) do { \
33                          if(a <= log_level) { \
34                            log_start(a); \
35                            fprintf(log_file,args); \
36                            log_end(); \
37                          } \
38                        } while(0)
39 
40 #define ELOG(a,args...) do { \
41                          if(a <= log_level) { \
42                            log_start(a); \
43                            fprintf(log_file,args); \
44                            fprintf(log_file," (%s)\n",strerror(errno)); \
45                            log_end(); \
46                          } \
47                        } while(0)
48 
49 #define LOG_ENTER() LOG(LOG_ENTER_EXIT,"Entering %s function",__func__);
50 #define LOG_EXIT() LOG(LOG_ENTER_EXIT,"Exitting %s function",__func__);
51 int log_init(void);
52 void log_set_file(FILE* a);
53 void log_set_level(int a);
54 int log_get_trace_flags();
55 void log_set_trace_flags(int a);
56 void log_trace(int type, unsigned char* line, int len);
57 void log_start(int level);
58 void log_end();
59 
60 #endif
61 #ifndef DEBUG_VARS
62 #define DEBUG_VARS 1
63 
64 #include <stdio.h>
65 
66 extern int log_level;
67 extern FILE* log_file;
68 
69 #endif
70 
71