diff options
author | Stefan Metzmacher <metze@samba.org> | 2019-04-26 13:40:58 +0200 |
---|---|---|
committer | Stefan Metzmacher <metze@samba.org> | 2019-05-28 07:16:25 +0000 |
commit | 0da12ff93d213ac742eeb865bfa5697ca8a2280a (patch) | |
tree | d0223a3e5a0ac1dd05e2f3b525a4515eea02cd99 /lib | |
parent | d98a971247450d494c581c5454e6c270ad1b6880 (diff) | |
download | samba-0da12ff93d213ac742eeb865bfa5697ca8a2280a.tar.gz |
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>
Diffstat (limited to 'lib')
-rw-r--r-- | lib/util/debug.c | 17 | ||||
-rw-r--r-- | lib/util/debug.h | 7 |
2 files changed, 17 insertions, 7 deletions
diff --git a/lib/util/debug.c b/lib/util/debug.c index 23c78ae19c9..d2fbab12414 100644 --- a/lib/util/debug.c +++ b/lib/util/debug.c @@ -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 ) { diff --git a/lib/util/debug.h b/lib/util/debug.h index 5c56d4fd675..67dbf3357e3 100644 --- a/lib/util/debug.h +++ b/lib/util/debug.h @@ -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. */ |