1/***************************************************************************
2 * LPRng - An Extended Print Spooler System
3 *
4 * Copyright 1988-2003, Patrick Powell, San Diego, CA
5 *     papowell@lprng.com
6 * See LICENSE for conditions of use.
7 * $Id: debug.h,v 1.1.1.1 2008/10/15 03:28:27 james26_jang Exp $
8 ***************************************************************************/
9
10
11
12#ifndef _DEBUG_H_
13#define _DEBUG_H_ 1
14
15/* to remove all debugging, redefine this as follows
16 * note that a good optimizing compiler should not produce code
17 *	for the logDebug call.  It may produce lots of warnings, but no code...
18 */
19
20#if !defined(EXTERN)
21# define EXTERN extern
22#endif
23EXTERN int Debug;	/* debug flags */
24EXTERN int DbgFlag;	/* debug flags */
25EXTERN int DbgTest;	/* debug flags */
26
27#ifdef NODEBUG
28
29#define DEBUGFSET(FLAG)       ( 0 )
30#define DEBUGF(FLAG)          if( 0 ) logDebug
31#define DEBUGFC(FLAG)        if( 0 )
32#define DEBUG1      if(0) logDebug
33#define DEBUGL1     (0)
34#define DEBUG2      if(0) logDebug
35#define DEBUGL2     (0)
36#define DEBUG3      if(0) logDebug
37#define DEBUGL3     (0)
38#define DEBUG4      if(0) logDebug
39#define DEBUGL4     (0)
40#define DEBUG5      if(0) logDebug
41#define DEBUGL5     (0)
42#define DEBUG6      if(0) logDebug
43#define DEBUGL6     (0)
44
45#else
46
47/* general purpose debug test */
48#define DEBUGC(VAL,FLAG)     if( (Debug >= (VAL) ) || ((FLAG) & DbgFlag) ) logDebug
49#define DEBUGL(VAL,FLAG)     ( (Debug >= (VAL) ) || ((FLAG) & DbgFlag) )
50#define DEBUGF(FLAG)         if( (FLAG & DbgFlag) ) logDebug
51#define DEBUGFC(FLAG)        if( (FLAG & DbgFlag) )
52#define DEBUGFSET(FLAG)      ( (FLAG & DbgFlag) )
53
54
55/* Debug variable level */
56#define DEBUG1      DEBUGC(1,DRECV1|DCTRL1|DLPQ1|DLPRM1)
57#define DEBUGL1     DEBUGL(1,DRECV1|DCTRL1|DLPQ1|DLPRM1)
58#define DEBUG2      DEBUGC(2,DRECV2|DCTRL2|DLPQ2|DLPRM2)
59#define DEBUGL2     DEBUGL(2,DRECV2|DCTRL2|DLPQ2|DLPRM2)
60#define DEBUG3      DEBUGC(3,DRECV3|DCTRL3|DLPQ3|DLPRM3)
61#define DEBUGL3     DEBUGL(3,DRECV3|DCTRL3|DLPQ3|DLPRM3)
62#define DEBUG4      DEBUGC(4,DRECV4|DCTRL4|DLPQ4|DLPRM4)
63#define DEBUGL4     DEBUGL(4,DRECV4|DCTRL4|DLPQ4|DLPRM4)
64#define DEBUG5      DEBUGC(5,0)
65#define DEBUGL5     DEBUGL(5,0)
66#define DEBUG6      DEBUGC(6,0)
67#define DEBUGL6     DEBUGL(6,0)
68
69/* PROTOTYPES */
70
71#endif
72
73/* Flags for debugging */
74
75#define DPRSHIFT 0
76#define DLOGMASK ((0xF<<DPRSHIFT))
77#define DLOG1  ((0x1<<DPRSHIFT))
78#define DLOG2  ((0x2<<DPRSHIFT))
79#define DLOG3  ((0x4<<DPRSHIFT))
80#define DLOG4  ((0x8<<DPRSHIFT))
81
82#define DNWSHIFT 4
83#define DNWMASK  ((0xF<<DNWSHIFT))
84#define DNW1     ((0x1<<DNWSHIFT))
85#define DNW2     ((0x2<<DNWSHIFT))
86#define DNW3     ((0x4<<DNWSHIFT))
87#define DNW4     ((0x8<<DNWSHIFT))
88
89#define DDBSHIFT 8
90#define DDBMASK  ((0xF<<DDBSHIFT))
91#define DDB1     ((0x1<<DDBSHIFT))
92#define DDB2     ((0x2<<DDBSHIFT))
93#define DDB3     ((0x4<<DDBSHIFT))
94#define DDB4     ((0x8<<DDBSHIFT))
95
96#define DRECVSHIFT 12
97#define DRECVMASK  ((0xF<<DRECVSHIFT))
98#define DRECV1     ((0x1<<DRECVSHIFT))
99#define DRECV2     ((0x2<<DRECVSHIFT))
100#define DRECV3     ((0x4<<DRECVSHIFT))
101#define DRECV4     ((0x8<<DRECVSHIFT))
102
103#define DCTRLSHIFT 16
104#define DCTRLMASK  ((0xF<<DCTRLSHIFT))
105#define DCTRL1     ((0x1<<DCTRLSHIFT))
106#define DCTRL2     ((0x2<<DCTRLSHIFT))
107#define DCTRL3     ((0x4<<DCTRLSHIFT))
108#define DCTRL4     ((0x8<<DCTRLSHIFT))
109
110#define DLPRMSHIFT 20
111#define DLPRMMASK  ((0xF<<DLPRMSHIFT))
112#define DLPRM1     ((0x1<<DLPRMSHIFT))
113#define DLPRM2     ((0x2<<DLPRMSHIFT))
114#define DLPRM3     ((0x4<<DLPRMSHIFT))
115#define DLPRM4     ((0x8<<DLPRMSHIFT))
116
117#define DLPQSHIFT 24
118#define DLPQMASK  ((0xF<<DLPQSHIFT))
119#define DLPQ1     ((0x1<<DLPQSHIFT))
120#define DLPQ2     ((0x2<<DLPQSHIFT))
121#define DLPQ3     ((0x4<<DLPQSHIFT))
122#define DLPQ4     ((0x8<<DLPQSHIFT))
123
124
125#define IP_TEST 0x0001		/* test IP address */
126
127void Parse_debug( char *arg, int interactive);
128
129
130/* we define these and then run gcc -Wformat -Wall to find
131 * debug statements with bad formats
132 */
133#if defined(FORMAT_TEST)
134#undef DEBUG1
135#undef DEBUG2
136#undef DEBUG3
137#undef DEBUG4
138#undef DEBUG5
139#undef DEBUG6
140#undef DEBUG7
141#define DEBUG1 printf
142#define DEBUG2 printf
143#define DEBUG3 printf
144#define DEBUG4 printf
145#define DEBUG5 printf
146#define DEBUG6 printf
147#define DEBUG7 printf
148#endif
149
150/* PROTOTYPES */
151
152#endif
153