X-Git-Url: http://git.ozlabs.org/?p=ccan;a=blobdiff_plain;f=ccan%2Ftdb2%2Ftest%2Flogging.c;h=0712cc00a621db816c5e4377958bf10db841486b;hp=8b057bc662786f5b68761765480ded80da32cb2d;hb=22d0e0dc59fc9d7e0046fec6971ef478c2d604fd;hpb=06e0037d97f5e1d83667ec40627cef862f3b7b85 diff --git a/ccan/tdb2/test/logging.c b/ccan/tdb2/test/logging.c index 8b057bc6..0712cc00 100644 --- a/ccan/tdb2/test/logging.c +++ b/ccan/tdb2/test/logging.c @@ -1,25 +1,31 @@ -#define _GNU_SOURCE #include #include -#include #include #include "logging.h" unsigned tap_log_messages; +const char *log_prefix = ""; +char *log_last = NULL; +bool suppress_logging; + +union tdb_attribute tap_log_attr = { + .log = { .base = { .attr = TDB_ATTRIBUTE_LOG }, + .fn = tap_log_fn } +}; void tap_log_fn(struct tdb_context *tdb, - enum tdb_debug_level level, void *priv, - const char *fmt, ...) + enum tdb_log_level level, + enum TDB_ERROR ecode, + const char *message, void *priv) { - va_list ap; - char *p; + if (suppress_logging) + return; - va_start(ap, fmt); - if (vasprintf(&p, fmt, ap) == -1) - abort(); - diag("tdb log level %u: %s", level, p); - free(p); + diag("tdb log level %u: %s: %s%s", + level, tdb_errorstr(ecode), log_prefix, message); + if (log_last) + free(log_last); + log_last = strdup(message); tap_log_messages++; - va_end(ap); }