summaryrefslogtreecommitdiff
path: root/lib/util/util.c
diff options
context:
space:
mode:
authorKai Blin <kai@samba.org>2013-01-18 09:44:02 +0100
committerKai Blin <kai@samba.org>2013-05-18 10:58:05 +0200
commit30cba0d201fc91cff30b6ea2bd11979930650169 (patch)
tree7fe5d47b9994b087006d42ee9f0dc759e0675e80 /lib/util/util.c
parent1c9ef675d1a44fb9b0d599f96391abf1e21981c1 (diff)
downloadsamba-30cba0d201fc91cff30b6ea2bd11979930650169.tar.gz
debug: Add ability to dump_data per debug class
Signed-off-by: Kai Blin <kai@samba.org> Reviewed-by: Andrew Bartlett <abartlet@samba.org>
Diffstat (limited to 'lib/util/util.c')
-rw-r--r--lib/util/util.c30
1 files changed, 30 insertions, 0 deletions
diff --git a/lib/util/util.c b/lib/util/util.c
index 7962c1e2ea8..7c669fbd5ea 100644
--- a/lib/util/util.c
+++ b/lib/util/util.c
@@ -384,6 +384,19 @@ _PUBLIC_ bool fcntl_lock(int fd, int op, off_t offset, off_t count, int type)
return true;
}
+struct debug_channel_level {
+ int channel;
+ int level;
+};
+
+static void debugadd_channel_cb(const char *buf, void *private_data)
+{
+ struct debug_channel_level *dcl =
+ (struct debug_channel_level *)private_data;
+
+ DEBUGADDC(dcl->channel, dcl->level,("%s", buf));
+}
+
static void debugadd_cb(const char *buf, void *private_data)
{
int *plevel = (int *)private_data;
@@ -505,6 +518,23 @@ _PUBLIC_ void dump_data(int level, const uint8_t *buf, int len)
/**
* Write dump of binary data to the log file.
*
+ * The data is only written if the log level is at least level for
+ * debug class dbgc_class.
+ */
+_PUBLIC_ void dump_data_dbgc(int dbgc_class, int level, const uint8_t *buf, int len)
+{
+ struct debug_channel_level dcl = { dbgc_class, level };
+
+ if (!DEBUGLVLC(dbgc_class, level)) {
+ DEBUG(0, ("dbgc_class is %d\n", dbgc_class));
+ return;
+ }
+ dump_data_cb(buf, len, false, debugadd_channel_cb, &dcl);
+}
+
+/**
+ * Write dump of binary data to the log file.
+ *
* The data is only written if the log level is at least level.
* 16 zero bytes in a row are omitted
*/