Browse Source

tdb: missing files from checkin.

Rusty Russell 15 years ago
parent
commit
cbe5094e85
3 changed files with 47 additions and 2 deletions
  1. 33 0
      ccan/tdb/test/logging.c
  2. 10 0
      ccan/tdb/test/logging.h
  3. 4 2
      ccan/tdb/test/run-check.c

+ 33 - 0
ccan/tdb/test/logging.c

@@ -0,0 +1,33 @@
+#include "logging.h"
+#include <ccan/tap/tap.h>
+#include <stdarg.h>
+#include <stdlib.h>
+#include <string.h>
+#include <stdio.h>
+
+bool suppress_logging = false;
+const char *log_prefix = "";
+
+/* Turn log messages into tap diag messages. */
+static void taplog(struct tdb_context *tdb,
+		   enum tdb_debug_level level,
+		   const char *fmt, ...)
+{
+	va_list ap;
+	char line[200];
+
+	if (suppress_logging)
+		return;
+
+	va_start(ap, fmt);
+	vsprintf(line, fmt, ap);
+	va_end(ap);
+
+	/* Strip trailing \n: diag adds it. */
+	if (line[0] && line[strlen(line)-1] == '\n')
+		diag("%s%.*s", log_prefix, strlen(line)-1, line);
+	else
+		diag("%s%s", log_prefix, line);
+}
+
+struct tdb_logging_context taplogctx = { taplog, NULL };

+ 10 - 0
ccan/tdb/test/logging.h

@@ -0,0 +1,10 @@
+#ifndef TDB_TEST_LOGGING_H
+#define TDB_TEST_LOGGING_H
+#include <ccan/tdb/tdb.h>
+#include <stdbool.h>
+
+extern bool suppress_logging;
+extern const char *log_prefix;
+extern struct tdb_logging_context taplogctx;
+
+#endif /* TDB_TEST_LOGGING_H */

+ 4 - 2
ccan/tdb/test/run-check.c

@@ -35,12 +35,14 @@ int main(int argc, char *argv[])
 	ok1(tdb_check(tdb, NULL, NULL) == 0);
 	tdb_close(tdb);
 
-	tdb = tdb_open("run-check.tdb", 1024, 0, O_RDWR, 0);
+	tdb = tdb_open_ex("run-check.tdb", 1024, 0, O_RDWR, 0,
+			  &taplogctx, NULL);
 	ok1(tdb);
 	ok1(tdb_check(tdb, NULL, NULL) == 0);
 	tdb_close(tdb);
 
-	tdb = tdb_open("test/tdb.corrupt", 1024, 0, O_RDWR, 0);
+	tdb = tdb_open_ex("test/tdb.corrupt", 1024, 0, O_RDWR, 0,
+			  &taplogctx, NULL);
 	ok1(tdb);
 	ok1(tdb_check(tdb, NULL, NULL) == -1);
 	ok1(tdb_error(tdb) == TDB_ERR_CORRUPT);