79 #include <sys/types.h>
81 typedef unsigned int uint;
82 typedef unsigned long ulong;
91 extern char _gu_dig_vec[];
92 extern FILE* _gu_db_fp_;
94 #define GU_DBUG_FILE _gu_db_fp_
96 #if defined(GU_DBUG_ON) && !defined(_lint)
97 extern int _gu_db_on_;
98 extern int _gu_no_db_;
99 extern char* _gu_db_process_;
100 extern int _gu_db_keyword_(
const char* keyword);
101 extern void _gu_db_setjmp_ (
void);
102 extern void _gu_db_longjmp_(
void);
103 extern void _gu_db_push_ (
const char* control);
104 extern void _gu_db_pop_ (
void);
105 extern void _gu_db_enter_ (
const char* _func_,
108 const char** _sfunc_,
109 const char** _sfile_,
112 extern void _gu_db_return_ (uint _line_,
113 const char** _sfunc_,
114 const char** _sfile_,
116 extern void _gu_db_pargs_ (uint _line_,
117 const char* keyword);
118 extern void _gu_db_doprnt_ (
const char* format,
120 extern void _gu_db_dump_ (uint _line_,
124 extern void _gu_db_lock_file (
void);
125 extern void _gu_db_unlock_file(
void);
128 #define GU_DBUG_ENTER(a) \
129 const char *_gu_db_func_, *_gu_db_file_; \
130 uint _gu_db_level_; \
131 char **_gu_db_framep_; \
132 _gu_db_enter_ (a, __FILE__, __LINE__, &_gu_db_func_, &_gu_db_file_, \
133 &_gu_db_level_, &_gu_db_framep_)
135 #define GU_DBUG_LEAVE \
136 (_gu_db_return_ (__LINE__, &_gu_db_func_, &_gu_db_file_, \
139 #define GU_DBUG_RETURN(a1) {GU_DBUG_LEAVE; return(a1);}
140 #define GU_DBUG_VOID_RETURN {GU_DBUG_LEAVE; return; }
142 #define GU_DBUG_EXECUTE(keyword,a1) \
143 {if (_gu_db_on_) {if (_gu_db_keyword_ (keyword)) { a1 }}}
145 #define GU_DBUG_PRINT(keyword,arglist) \
146 {if (_gu_db_on_) {_gu_db_pargs_(__LINE__,keyword); \
147 _gu_db_doprnt_ arglist;}}
149 #define GU_DBUG_PUSH(a1) _gu_db_push_ (a1)
150 #define GU_DBUG_POP() _gu_db_pop_ ()
151 #define GU_DBUG_PROCESS(a1) (_gu_db_process_ = a1)
152 #define GU_DBUG_SETJMP(a1) (_gu_db_setjmp_ (), setjmp (a1))
153 #define GU_DBUG_LONGJMP(a1,a2) (_gu_db_longjmp_ (), longjmp (a1, a2))
155 #define GU_DBUG_DUMP(keyword,a1,a2)\
156 {if (_gu_db_on_) {_gu_db_dump_(__LINE__,keyword,a1,a2);}}
158 #define GU_DBUG_IN_USE (_gu_db_fp_ && _gu_db_fp_ != stderr)
159 #define GU_DEBUGGER_OFF _no_gu_db_=1;_gu_db_on_=0;
160 #define GU_DEBUGGER_ON _no_gu_db_=0
161 #define GU_DBUG_my_pthread_mutex_lock_FILE { _gu_db_lock_file(); }
162 #define GU_DBUG_my_pthread_mutex_unlock_FILE { _gu_db_unlock_file(); }
163 #define GU_DBUG_ASSERT(A) assert(A)
167 #define GU_DBUG_ENTER(a1)
168 #define GU_DBUG_RETURN(a1) return(a1)
169 #define GU_DBUG_VOID_RETURN return
170 #define GU_DBUG_EXECUTE(keyword,a1) {}
171 #define GU_DBUG_PRINT(keyword,arglist) {}
172 #define GU_DBUG_PUSH(a1) {}
173 #define GU_DBUG_POP() {}
174 #define GU_DBUG_PROCESS(a1) {}
175 #define GU_DBUG_SETJMP setjmp
176 #define GU_DBUG_LONGJMP longjmp
177 #define GU_DBUG_DUMP(keyword,a1,a2) {}
178 #define GU_DBUG_IN_USE 0
179 #define GU_DEBUGGER_OFF
180 #define GU_DEBUGGER_ON
181 #define GU_DBUG_my_pthread_mutex_lock_FILE
182 #define GU_DBUG_my_pthread_mutex_unlock_FILE
183 #define GU_DBUG_ASSERT(A) {}