tdb2: more tests, hash collision fixes, attribute support.
[ccan] / ccan / tdb2 / test / logging.c
1 #define _GNU_SOURCE
2 #include <stdio.h>
3 #include <stdlib.h>
4 #include <stdarg.h>
5 #include <ccan/tap/tap.h>
6 #include "logging.h"
7
8 unsigned tap_log_messages;
9
10 union tdb_attribute tap_log_attr = {
11         .log = { .base = { .attr = TDB_ATTRIBUTE_LOG },
12                  .log_fn = tap_log_fn }
13 };
14
15 void tap_log_fn(struct tdb_context *tdb,
16                 enum tdb_debug_level level, void *priv,
17                 const char *fmt, ...)
18 {
19         va_list ap;
20         char *p;
21
22         va_start(ap, fmt);
23         if (vasprintf(&p, fmt, ap) == -1)
24                 abort();
25         diag("tdb log level %u: %s", level, p);
26         free(p);
27         if (level != TDB_DEBUG_TRACE)
28                 tap_log_messages++;
29         va_end(ap);
30 }
31