snmp_debug - DEBUGMSG macros call snmp_get_do_debugging before invoking debugmsg* functions.


git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@2949 06827809-a52a-0410-b366-d66718629ded
diff --git a/snmplib/snmp_debug.h b/snmplib/snmp_debug.h
index e020c1d..fd15be5 100644
--- a/snmplib/snmp_debug.h
+++ b/snmplib/snmp_debug.h
@@ -78,6 +78,8 @@
 */
 
 #ifndef SNMP_NO_DEBUGGING  /* make sure we're wanted */
+#if COMMENT
+{ Previous version for comparison only
 #define DEBUGMSG(x)    debugmsg x
 #define DEBUGMSGT(x)   debugmsgtoken x; debugmsg x
 #ifdef  HAVE_CPP_UNDERBAR_FUNCTION_DEFINED
@@ -109,6 +111,75 @@
         DEBUGMSGHEXTLI((token, buf, len)); \
         DEBUGMSG   ((token, "\n")); \
         DEBUGPRINTINDENT(token)
+}
+#endif /* COMMENT */
+
+/*
+ * define two macros : one macro with, one without,
+ *                     a test if debugging is enabled.
+ * 
+ * Generally, use the macro with _DBG_IF_
+ */
+
+/******************* Start private macros ************************/
+#define _DBG_IF_            snmp_get_do_debugging()
+#define DEBUGIF(x)         if (_DBG_IF_ && debug_is_token_registered(x) == SNMPERR_SUCCESS)
+
+#define __DBGMSGT(x)     debugmsgtoken x,  debugmsg x
+
+#ifdef  HAVE_CPP_UNDERBAR_FUNCTION_DEFINED
+#define __DBGTRACE       __DBGMSGT(("trace","%s(): %s, %d\n",__FUNCTION__,\
+                                 __FILE__,__LINE__))
+#else
+#define __DBGTRACE       __DBGMSGT(("trace"," %s, %d\n", __FILE__,__LINE__))
+#endif
+
+#define __DBGMSGL(x)     __DBGTRACE, debugmsg x
+#define __DBGMSGTL(x)    __DBGTRACE, debugmsgtoken x, debugmsg x
+#define __DBGMSGOID(x)     debugmsg_oid x
+#define __DBGMSGHEX(x)     debugmsg_hex x
+#define __DBGMSGHEXTLI(x)  debugmsg_hextli x
+#define __DBGINDENT()      debug_indent()
+#define __DBGINDENTADD(x)  debug_indent_add(x)
+#define __DBGINDENTMORE()  debug_indent_add(2)
+#define __DBGINDENTLESS()  debug_indent_add(-2)
+#define __DBGPRINTINDENT(token) __DBGMSGTL((token, "%s", __DBGINDENT()))
+
+#define __DBGDUMPHEADER(token,x) \
+        __DBGPRINTINDENT(token), \
+        debugmsg(token,x), \
+        __DBGINDENTMORE()
+
+#define __DBGDUMPSETUP(token,buf,len) \
+        __DBGMSGHEXTLI((token,buf,len)), \
+        debugmsg(token,"\n"), \
+        __DBGPRINTINDENT(token)
+
+/******************* End   private macros ************************/
+/*****************************************************************/
+
+/*****************************************************************/
+/********************Start public  macros ************************/
+
+#define DEBUGMSG(x)        (_DBG_IF_ ? debugmsg x :0)
+#define DEBUGMSGT(x)       (_DBG_IF_ ? __DBGMSGT(x) :0)
+#define DEBUGTRACE         (_DBG_IF_ ? __DBGTRACE :0)
+#define DEBUGMSGL(x)       (_DBG_IF_ ? __DBGMSGL(x) :0)
+#define DEBUGMSGTL(x)      (_DBG_IF_ ? __DBGMSGTL(x) :0)
+#define DEBUGMSGOID(x)     (_DBG_IF_ ? __DBGMSGOID(x) :0)
+#define DEBUGMSGHEX(x)     (_DBG_IF_ ? __DBGMSGHEX(x) :0)
+#define DEBUGMSGHEXTLI(x)  (_DBG_IF_ ? __DBGMSGHEXTLI(x) :0)
+#define DEBUGINDENT()      (_DBG_IF_ ? __DBGINDENT() :0)
+#define DEBUGINDENTADD(x)  (_DBG_IF_ ? __DBGINDENTADD(x) :0)
+#define DEBUGINDENTMORE()  (_DBG_IF_ ? __DBGINDENTMORE() :0)
+#define DEBUGINDENTLESS()  (_DBG_IF_ ? __DBGINDENTLESS() :0)
+#define DEBUGPRINTINDENT(token) (_DBG_IF_ ? __DBGPRINTINDENT(token) :0)
+
+
+#define DEBUGDUMPHEADER(token,x) (_DBG_IF_ ? __DBGDUMPHEADER(token,x) :0)
+
+#define DEBUGDUMPSETUP(token,buf,len) \
+                                 (_DBG_IF_ ? __DBGDUMPSETUP(token,buf,len) :0)
 
 #else /* SNMP_NO_DEBUGGING := enable streamlining of the code */
 
@@ -117,15 +188,18 @@
 #define DEBUGTRACE
 #define DEBUGMSGL(x)
 #define DEBUGMSGTL(x)
-#define DEBUGL(x)
 #define DEBUGMSGOID(x)
 #define DEBUGMSGHEX(x)
 #define DEBUGIF(x)        if(0)
-#define DEBUGDUMP(t, b, l, p)
+#define DEBUGDUMP(t,b,l,p)
 #define DEBUGINDENT()
 #define DEBUGINDENTMORE()
 #define DEBUGINDENTLESS()
 #define DEBUGINDENTADD(x)
+#define DEBUGMSGHEXTLI(x)
+#define DEBUGPRINTINDENT(token)
+#define DEBUGDUMPHEADER(token,x)
+#define DEBUGDUMPSETUP(token, buf, len)
 
 #endif