summaryrefslogtreecommitdiff
path: root/lib/ntdb/test/logging.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/ntdb/test/logging.c')
-rw-r--r--lib/ntdb/test/logging.c30
1 files changed, 30 insertions, 0 deletions
diff --git a/lib/ntdb/test/logging.c b/lib/ntdb/test/logging.c
new file mode 100644
index 0000000000..2819dd7cad
--- /dev/null
+++ b/lib/ntdb/test/logging.c
@@ -0,0 +1,30 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include "tap-interface.h"
+#include "logging.h"
+
+unsigned tap_log_messages;
+const char *log_prefix = "";
+char *log_last = NULL;
+bool suppress_logging;
+
+union ntdb_attribute tap_log_attr = {
+ .log = { .base = { .attr = NTDB_ATTRIBUTE_LOG },
+ .fn = tap_log_fn }
+};
+
+void tap_log_fn(struct ntdb_context *ntdb,
+ enum ntdb_log_level level,
+ enum NTDB_ERROR ecode,
+ const char *message, void *priv)
+{
+ if (suppress_logging)
+ return;
+
+ diag("ntdb log level %u: %s: %s%s",
+ level, ntdb_errorstr(ecode), log_prefix, message);
+ if (log_last)
+ free(log_last);
+ log_last = strdup(message);
+ tap_log_messages++;
+}