r23779: Change from v2 or later to v3 or later.
[gd/samba/.git] / source3 / include / debug.h
index 235fbf70c4e17f0ab6d81027d6ee06a8048757c3..4ad471f1423b712c8d372fe315cffe41ae76aac2 100644 (file)
@@ -8,7 +8,7 @@
    
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 2 of the License, or
+   the Free Software Foundation; either version 3 of the License, or
    (at your option) any later version.
    
    This program is distributed in the hope that it will be useful,
  * diffferent prototype declarations), so we must do these by hand.
  */
 /* I know the __attribute__ stuff is ugly, but it does ensure we get the 
-   arguemnts to DEBUG() right. We have got them wrong too often in the 
+   arguments to DEBUG() right. We have got them wrong too often in the 
    past.
+   The PRINTFLIKE comment does the equivalent for SGI MIPSPro.
  */
-int  Debug1( char *, ... ) PRINTF_ATTRIBUTE(1,2);
-BOOL dbgtext( char *, ... ) PRINTF_ATTRIBUTE(1,2);
+/* PRINTFLIKE1 */
+int  Debug1( const char *, ... ) PRINTF_ATTRIBUTE(1,2);
+/* PRINTFLIKE1 */
+BOOL dbgtext( const char *, ... ) PRINTF_ATTRIBUTE(1,2);
+BOOL dbghdr( int level, const char *file, const char *func, int line );
+
+#if defined(sgi) && (_COMPILER_VERSION >= 730)
+#pragma mips_frequency_hint NEVER Debug1
+#pragma mips_frequency_hint NEVER dbgtext
+#pragma mips_frequency_hint NEVER dbghdr
+#endif
 
 extern XFILE *dbf;
+extern pstring debugf;
 
 /* If we have these macros, we can add additional info to the header. */
-#ifdef HAVE_FILE_MACRO
-#define FILE_MACRO (__FILE__)
-#else
-#define FILE_MACRO ("")
-#endif
 
 #ifdef HAVE_FUNCTION_MACRO
 #define FUNCTION_MACRO  (__FUNCTION__)
@@ -64,7 +70,7 @@ extern XFILE *dbf;
  * because some references would expand incorrectly.
  */
 #define DEBUGLEVEL *debug_level
-
+extern int DEBUGLEVEL;
 
 /*
  * Define all new debug classes here. A class is represented by an entry in
@@ -77,26 +83,34 @@ extern XFILE *dbf;
  * at the start of the file (after #include "includes.h") will default to
  * using index zero, so it will behaive just like it always has. 
  */
+#define DBGC_ALL               0 /* index equivalent to DEBUGLEVEL */
+
+#define DBGC_TDB               1
+#define DBGC_PRINTDRIVERS      2
+#define DBGC_LANMAN            3
+#define DBGC_SMB               4
+#define DBGC_RPC_PARSE         5
+#define DBGC_RPC_SRV           6
+#define DBGC_RPC_CLI           7
+#define DBGC_PASSDB            8
+#define DBGC_SAM               9
+#define DBGC_AUTH              10
+#define DBGC_WINBIND           11
+#define DBGC_VFS               12
+#define DBGC_IDMAP             13
+#define DBGC_QUOTA             14
+#define DBGC_ACLS              15
+#define DBGC_LOCKING           16
+#define DBGC_MSDFS             17
+#define DBGC_DMAPI             18
+
+/* So you can define DBGC_CLASS before including debug.h */
+#ifndef DBGC_CLASS
 #define DBGC_CLASS            0     /* override as shown above */
-#define DBGC_ALL              0     /* index equivalent to DEBUGLEVEL */
-
-#define DBGC_TDB              1
-#define DBGC_PRINTDRIVERS     2
-#define DBGC_LANMAN           3
-#define DBGC_SMB              4
-#define DBGC_RPC              5
-#define DBGC_RPC_HDR          6
-#define DBGC_BDC              7
-
-#define DBGC_LAST             8     /* MUST be last class value + 1 */
-
-extern int DEBUGLEVEL_CLASS[DBGC_LAST];
-extern BOOL DEBUGLEVEL_CLASS_ISSET[DBGC_LAST];
+#endif
 
-struct debuglevel_message {
-       int debuglevel_class[DBGC_LAST];
-       BOOL debuglevel_class_isset[DBGC_LAST];
-};
+extern int  *DEBUGLEVEL_CLASS;
+extern BOOL *DEBUGLEVEL_CLASS_ISSET;
 
 /* Debugging macros
  *
@@ -151,9 +165,9 @@ struct debuglevel_message {
 #define DEBUGLVL( level ) \
   ( ((level) <= MAX_DEBUG_LEVEL) && \
      ((DEBUGLEVEL_CLASS[ DBGC_CLASS ] >= (level))||  \
-     (!DEBUGLEVEL_CLASS[ DBGC_CLASS ] && \
+     (!DEBUGLEVEL_CLASS_ISSET[ DBGC_CLASS ] && \
       DEBUGLEVEL_CLASS[ DBGC_ALL   ] >= (level))  ) \
-   && dbghdr( level, FILE_MACRO, FUNCTION_MACRO, (__LINE__) ) )
+   && dbghdr( level, __FILE__, FUNCTION_MACRO, (__LINE__) ) )
 
 
 #define DEBUGLVLC( dbgc_class, level ) \
@@ -161,7 +175,7 @@ struct debuglevel_message {
      ((DEBUGLEVEL_CLASS[ dbgc_class ] >= (level))||  \
      (!DEBUGLEVEL_CLASS_ISSET[ dbgc_class ] && \
       DEBUGLEVEL_CLASS[ DBGC_ALL   ] >= (level))  ) \
-   && dbghdr( level, FILE_MACRO, FUNCTION_MACRO, (__LINE__) ) )
+   && dbghdr( level, __FILE__, FUNCTION_MACRO, (__LINE__) ) )
 
 
 #define DEBUG( level, body ) \
@@ -169,7 +183,7 @@ struct debuglevel_message {
            ((DEBUGLEVEL_CLASS[ DBGC_CLASS ] >= (level))||  \
            (!DEBUGLEVEL_CLASS_ISSET[ DBGC_CLASS ] && \
             DEBUGLEVEL_CLASS[ DBGC_ALL   ] >= (level))  ) \
-       && (dbghdr( level, FILE_MACRO, FUNCTION_MACRO, (__LINE__) )) \
+       && (dbghdr( level, __FILE__, FUNCTION_MACRO, (__LINE__) )) \
        && (dbgtext body) )
 
 #define DEBUGC( dbgc_class, level, body ) \
@@ -177,7 +191,7 @@ struct debuglevel_message {
            ((DEBUGLEVEL_CLASS[ dbgc_class ] >= (level))||  \
            (!DEBUGLEVEL_CLASS_ISSET[ dbgc_class ] && \
            DEBUGLEVEL_CLASS[ DBGC_ALL   ] >= (level))  ) \
-       && (dbghdr( level, FILE_MACRO, FUNCTION_MACRO, (__LINE__) )) \
+       && (dbghdr( level, __FILE__, FUNCTION_MACRO, (__LINE__) )) \
        && (dbgtext body) )
 
 #define DEBUGADD( level, body ) \
@@ -194,4 +208,8 @@ struct debuglevel_message {
             DEBUGLEVEL_CLASS[ DBGC_ALL   ] >= (level))  ) \
        && (dbgtext body) )
 
+/* Print a separator to the debug log. */
+#define DEBUGSEP(level)\
+       DEBUG((level),("===============================================================\n"))
+
 #endif