From b6a6fbd49309630e00983f9c2e654b805336ffae Mon Sep 17 00:00:00 2001 From: Michael Adam Date: Sun, 30 Sep 2007 08:07:06 +0000 Subject: [PATCH] r25434: Add the option to print the debug class (DBGC_CLASS) in the debug header. Control this by a new boolean smb.conf option "debug class" which is by default set to "no" to keep the default debug header unchanged. Michael Note: You need to make clean for this patch. (This used to be commit 066a46ba91ca734d9e20cb9d6db36fec209a27d7) --- source3/include/debug.h | 10 +++++----- source3/lib/debug.c | 11 ++++++++++- source3/param/loadparm.c | 4 ++++ 3 files changed, 19 insertions(+), 6 deletions(-) diff --git a/source3/include/debug.h b/source3/include/debug.h index dca3bc008c1..eb7dc76c1c4 100644 --- a/source3/include/debug.h +++ b/source3/include/debug.h @@ -40,7 +40,7 @@ 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 ); +BOOL dbghdr( int level, int cls, const char *file, const char *func, int line ); #if defined(sgi) && (_COMPILER_VERSION >= 730) #pragma mips_frequency_hint NEVER Debug1 @@ -167,7 +167,7 @@ extern BOOL *DEBUGLEVEL_CLASS_ISSET; ((DEBUGLEVEL_CLASS[ DBGC_CLASS ] >= (level))|| \ (!DEBUGLEVEL_CLASS_ISSET[ DBGC_CLASS ] && \ DEBUGLEVEL_CLASS[ DBGC_ALL ] >= (level)) ) \ - && dbghdr( level, __FILE__, FUNCTION_MACRO, (__LINE__) ) ) + && dbghdr( level, DBGC_CLASS, __FILE__, FUNCTION_MACRO, (__LINE__) ) ) #define DEBUGLVLC( dbgc_class, level ) \ @@ -175,7 +175,7 @@ extern BOOL *DEBUGLEVEL_CLASS_ISSET; ((DEBUGLEVEL_CLASS[ dbgc_class ] >= (level))|| \ (!DEBUGLEVEL_CLASS_ISSET[ dbgc_class ] && \ DEBUGLEVEL_CLASS[ DBGC_ALL ] >= (level)) ) \ - && dbghdr( level, __FILE__, FUNCTION_MACRO, (__LINE__) ) ) + && dbghdr( level, DBGC_CLASS, __FILE__, FUNCTION_MACRO, (__LINE__) ) ) #define DEBUG( level, body ) \ @@ -183,7 +183,7 @@ extern BOOL *DEBUGLEVEL_CLASS_ISSET; ((DEBUGLEVEL_CLASS[ DBGC_CLASS ] >= (level))|| \ (!DEBUGLEVEL_CLASS_ISSET[ DBGC_CLASS ] && \ DEBUGLEVEL_CLASS[ DBGC_ALL ] >= (level)) ) \ - && (dbghdr( level, __FILE__, FUNCTION_MACRO, (__LINE__) )) \ + && (dbghdr( level, DBGC_CLASS, __FILE__, FUNCTION_MACRO, (__LINE__) )) \ && (dbgtext body) ) #define DEBUGC( dbgc_class, level, body ) \ @@ -191,7 +191,7 @@ extern BOOL *DEBUGLEVEL_CLASS_ISSET; ((DEBUGLEVEL_CLASS[ dbgc_class ] >= (level))|| \ (!DEBUGLEVEL_CLASS_ISSET[ dbgc_class ] && \ DEBUGLEVEL_CLASS[ DBGC_ALL ] >= (level)) ) \ - && (dbghdr( level, __FILE__, FUNCTION_MACRO, (__LINE__) )) \ + && (dbghdr( level, DBGC_CLASS, __FILE__, FUNCTION_MACRO, (__LINE__) )) \ && (dbgtext body) ) #define DEBUGADD( level, body ) \ diff --git a/source3/lib/debug.c b/source3/lib/debug.c index fc7b1d67f62..69da08be771 100644 --- a/source3/lib/debug.c +++ b/source3/lib/debug.c @@ -913,6 +913,7 @@ void dbgflush( void ) Input: level - Debug level of the message (not the system-wide debug level. ) + cls - Debuglevel class of the calling module. file - Pointer to a string containing the name of the file from which this function was called, or an empty string if the __FILE__ macro is not implemented. @@ -930,7 +931,7 @@ void dbgflush( void ) ****************************************************************************/ -BOOL dbghdr( int level, const char *file, const char *func, int line ) +BOOL dbghdr(int level, int cls, const char *file, const char *func, int line) { /* Ensure we don't lose any real errno value. */ int old_errno = errno; @@ -976,6 +977,14 @@ BOOL dbghdr( int level, const char *file, const char *func, int line ) (unsigned int)geteuid(), (unsigned int)getegid(), (unsigned int)getuid(), (unsigned int)getgid()); } + + if (lp_debug_class() && (cls != DBGC_ALL)) { + size_t hs_len = strlen(header_str); + slprintf(header_str + hs_len, + sizeof(header_str) -1 - hs_len, + ", class=%s", + default_classname_table[cls]); + } /* Print it all out at once to prevent split syslog output. */ if( lp_debug_prefix_timestamp() ) { diff --git a/source3/param/loadparm.c b/source3/param/loadparm.c index b49d7b54a96..d7e15226e99 100644 --- a/source3/param/loadparm.c +++ b/source3/param/loadparm.c @@ -306,6 +306,7 @@ typedef struct { BOOL bDebugHiresTimestamp; BOOL bDebugPid; BOOL bDebugUid; + BOOL bDebugClass; BOOL bEnableCoreFiles; BOOL bHostMSDfs; BOOL bUseMmap; @@ -981,6 +982,7 @@ static struct parm_struct parm_table[] = { {"debug hires timestamp", P_BOOL, P_GLOBAL, &Globals.bDebugHiresTimestamp, NULL, NULL, FLAG_ADVANCED}, {"debug pid", P_BOOL, P_GLOBAL, &Globals.bDebugPid, NULL, NULL, FLAG_ADVANCED}, {"debug uid", P_BOOL, P_GLOBAL, &Globals.bDebugUid, NULL, NULL, FLAG_ADVANCED}, + {"debug class", P_BOOL, P_GLOBAL, &Globals.bDebugClass, NULL, NULL, FLAG_ADVANCED}, {"enable core files", P_BOOL, P_GLOBAL, &Globals.bEnableCoreFiles, NULL, NULL, FLAG_ADVANCED}, {N_("Protocol Options"), P_SEP, P_SEPARATOR}, @@ -1547,6 +1549,7 @@ static void init_globals(BOOL first_time_only) Globals.bDebugHiresTimestamp = False; Globals.bDebugPid = False; Globals.bDebugUid = False; + Globals.bDebugClass = False; Globals.bEnableCoreFiles = True; Globals.max_ttl = 60 * 60 * 24 * 3; /* 3 days default. */ Globals.max_wins_ttl = 60 * 60 * 24 * 6; /* 6 days default. */ @@ -1958,6 +1961,7 @@ FN_GLOBAL_BOOL(lp_debug_prefix_timestamp, &Globals.bDebugPrefixTimestamp) FN_GLOBAL_BOOL(lp_debug_hires_timestamp, &Globals.bDebugHiresTimestamp) FN_GLOBAL_BOOL(lp_debug_pid, &Globals.bDebugPid) FN_GLOBAL_BOOL(lp_debug_uid, &Globals.bDebugUid) +FN_GLOBAL_BOOL(lp_debug_class, &Globals.bDebugClass) FN_GLOBAL_BOOL(lp_enable_core_files, &Globals.bEnableCoreFiles) FN_GLOBAL_BOOL(lp_browse_list, &Globals.bBrowseList) FN_GLOBAL_BOOL(lp_nis_home_map, &Globals.bNISHomeMap) -- 2.34.1