1
0
mirror of https://github.com/samba-team/samba.git synced 2025-02-02 09:47:23 +03:00

lib/util: set current_msg_{level,class} also during a DEBUGADD[C]() call

In some situations we use DEBUGADDC() in order to print out content
without a related debug header line.

This is important with the new per class logfile with:

 log level = 1 dsdb_json_audit:10@/var/log/samba/log.dsdb_json_audit

BUG: https://bugzilla.samba.org/show_bug.cgi?id=13915

Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Ralph Boehme <slow@samba.org>
This commit is contained in:
Stefan Metzmacher 2019-04-26 13:40:58 +02:00
parent d98a971247
commit 0da12ff93d
2 changed files with 17 additions and 7 deletions

View File

@ -1479,6 +1479,17 @@ void dbgflush( void )
bufr_print();
}
bool dbgsetclass(int level, int cls)
{
/* Set current_msg_level. */
current_msg_level = level;
/* Set current message class */
current_msg_class = cls;
return true;
}
/***************************************************************************
Print a Debug Header.
@ -1523,11 +1534,7 @@ bool dbghdrclass(int level, int cls, const char *location, const char *func)
return( true );
}
/* Set current_msg_level. */
current_msg_level = level;
/* Set current message class */
current_msg_class = cls;
dbgsetclass(level, cls);
/* Don't print a header if we're logging to stdout. */
if ( state.logtype != DEBUG_FILE ) {

View File

@ -45,6 +45,7 @@
bool dbgtext_va(const char *, va_list ap) PRINTF_ATTRIBUTE(1,0);
bool dbgtext( const char *, ... ) PRINTF_ATTRIBUTE(1,2);
bool dbghdrclass( int level, int cls, const char *location, const char *func);
bool dbgsetclass(int level, int cls);
/*
* Define all new debug classes here. A class is represented by an entry in
@ -205,12 +206,14 @@ void debuglevel_set_class(size_t idx, int level);
#define DEBUGADD( level, body ) \
(void)( ((level) <= MAX_DEBUG_LEVEL) && \
unlikely(debuglevel_get_class(DBGC_CLASS) >= (level)) \
unlikely(debuglevel_get_class(DBGC_CLASS) >= (level)) \
&& (dbgsetclass(level, DBGC_CLASS)) \
&& (dbgtext body) )
#define DEBUGADDC( dbgc_class, level, body ) \
(void)( ((level) <= MAX_DEBUG_LEVEL) && \
unlikely((debuglevel_get_class(dbgc_class) >= (level))) \
unlikely((debuglevel_get_class(dbgc_class) >= (level))) \
&& (dbgsetclass(level, dbgc_class)) \
&& (dbgtext body) )
/* Print a separator to the debug log. */