From: Rusty Russell Date: Mon, 19 Oct 2009 08:44:50 +0000 (+1030) Subject: tdb: use logging and tdb_check in tdbtool X-Git-Url: http://git.ozlabs.org/?p=ccan;a=commitdiff_plain;h=9132d16a1761f2cd409e6a9af2cd7e57d0a5287c tdb: use logging and tdb_check in tdbtool --- diff --git a/ccan/tdb/tools/tdbtool.c b/ccan/tdb/tools/tdbtool.c index ce712e0e..2dff7395 100644 --- a/ccan/tdb/tools/tdbtool.c +++ b/ccan/tdb/tools/tdbtool.c @@ -30,6 +30,7 @@ #include #include #include +#include static int do_command(void); const char *cmdname; @@ -119,6 +120,15 @@ static double _end_timer(void) (tp2.tv_usec - tp1.tv_usec)*1.0e-6); } +static void tdb_log(struct tdb_context *tdb, enum tdb_debug_level level, const char *format, ...) +{ + va_list ap; + + va_start(ap, format); + vfprintf(stderr, format, ap); + va_end(ap); +} + /* a tdb tool for manipulating a tdb database */ static TDB_CONTEXT *tdb; @@ -211,9 +221,12 @@ static void terror(const char *why) static void create_tdb(const char *tdbname) { + struct tdb_logging_context log_ctx; + log_ctx.log_fn = tdb_log; + if (tdb) tdb_close(tdb); - tdb = tdb_open(tdbname, 0, TDB_CLEAR_IF_FIRST | (disable_mmap?TDB_NOMMAP:0), - O_RDWR | O_CREAT | O_TRUNC, 0600); + tdb = tdb_open_ex(tdbname, 0, TDB_CLEAR_IF_FIRST | (disable_mmap?TDB_NOMMAP:0), + O_RDWR | O_CREAT | O_TRUNC, 0600, &log_ctx, NULL); if (!tdb) { printf("Could not create %s: %s\n", tdbname, strerror(errno)); } @@ -221,8 +234,12 @@ static void create_tdb(const char *tdbname) static void open_tdb(const char *tdbname) { + struct tdb_logging_context log_ctx; + log_ctx.log_fn = tdb_log; + if (tdb) tdb_close(tdb); - tdb = tdb_open(tdbname, 0, disable_mmap?TDB_NOMMAP:0, O_RDWR, 0600); + tdb = tdb_open_ex(tdbname, 0, disable_mmap?TDB_NOMMAP:0, O_RDWR, 0600, + &log_ctx, NULL); if (!tdb) { printf("Could not open %s: %s\n", tdbname, strerror(errno)); } @@ -522,24 +539,15 @@ static void next_record(TDB_CONTEXT *the_tdb, TDB_DATA *pkey) print_rec(the_tdb, *pkey, dbuf, NULL); } -static int test_fn(TDB_CONTEXT *the_tdb, TDB_DATA key, TDB_DATA dbuf, void *state) -{ - return 0; -} - static void check_db(TDB_CONTEXT *the_tdb) { - int tdbcount=-1; - if (the_tdb) { - tdbcount = tdb_traverse(the_tdb, test_fn, NULL); - } else { + if (!the_tdb) { printf("Error: No database opened!\n"); - } - - if (tdbcount<0) { - printf("Integrity check for the opened database failed.\n"); } else { - printf("Database integrity is OK and has %d records.\n", tdbcount); + if (tdb_check(the_tdb, NULL, NULL) == -1) + printf("Integrity check for the opened database failed.\n"); + else + printf("Database integrity is OK.\n"); } }