From: Rusty Russell Date: Thu, 9 Sep 2010 11:08:13 +0000 (+0930) Subject: tdb: new command openjh for tdbtool (to use Jenkins hash) X-Git-Url: https://git.ozlabs.org/?p=ccan;a=commitdiff_plain;h=2b2d18863f332dacbb9544c910be94968fc5112b tdb: new command openjh for tdbtool (to use Jenkins hash) --- diff --git a/ccan/tdb/tools/Makefile b/ccan/tdb/tools/Makefile index 38899e1a..8febc40f 100644 --- a/ccan/tdb/tools/Makefile +++ b/ccan/tdb/tools/Makefile @@ -1,4 +1,4 @@ -LDLIBS:=../../tdb.o +LDLIBS:=../../tdb.o ../../hash.o CFLAGS:=-I../../.. -Wall -O3 #-g -pg LDFLAGS:=-L../../.. diff --git a/ccan/tdb/tools/tdbtool.c b/ccan/tdb/tools/tdbtool.c index 2dff7395..494d1f38 100644 --- a/ccan/tdb/tools/tdbtool.c +++ b/ccan/tdb/tools/tdbtool.c @@ -21,6 +21,7 @@ */ #include +#include #include #include #include @@ -45,6 +46,7 @@ static int disable_mmap; enum commands { CMD_CREATE_TDB, CMD_OPEN_TDB, + CMD_OPENJH_TDB, CMD_TRANSACTION_START, CMD_TRANSACTION_COMMIT, CMD_TRANSACTION_CANCEL, @@ -78,6 +80,7 @@ typedef struct { COMMAND_TABLE cmd_table[] = { {"create", CMD_CREATE_TDB}, {"open", CMD_OPEN_TDB}, + {"openjh", CMD_OPENJH_TDB}, {"transaction_start", CMD_TRANSACTION_START}, {"transaction_commit", CMD_TRANSACTION_COMMIT}, {"transaction_cancel", CMD_TRANSACTION_CANCEL}, @@ -189,6 +192,7 @@ static void help(void) "tdbtool: \n" " create dbname : create a database\n" " open dbname : open an existing database\n" +" openjh dbname : open an existing database (jenkins hash)\n" " transaction_start : start a transaction\n" " transaction_commit : commit a transaction\n" " transaction_cancel : cancel a transaction\n" @@ -232,14 +236,19 @@ static void create_tdb(const char *tdbname) } } -static void open_tdb(const char *tdbname) +static unsigned int jenkins_hash(TDB_DATA *key) +{ + return hash_any(key->dptr, key->dsize, 0); +} + +static void open_tdb(const char *tdbname, tdb_hash_func hashfn) { struct tdb_logging_context log_ctx; log_ctx.log_fn = tdb_log; if (tdb) tdb_close(tdb); tdb = tdb_open_ex(tdbname, 0, disable_mmap?TDB_NOMMAP:0, O_RDWR, 0600, - &log_ctx, NULL); + &log_ctx, hashfn); if (!tdb) { printf("Could not open %s: %s\n", tdbname, strerror(errno)); } @@ -577,7 +586,11 @@ static int do_command(void) return 0; case CMD_OPEN_TDB: bIterate = 0; - open_tdb(arg1); + open_tdb(arg1, NULL); + return 0; + case CMD_OPENJH_TDB: + bIterate = 0; + open_tdb(arg1, jenkins_hash); return 0; case CMD_SYSTEM: /* Shell command */ @@ -673,6 +686,7 @@ static int do_command(void) return 0; case CMD_CREATE_TDB: case CMD_OPEN_TDB: + case CMD_OPENJH_TDB: case CMD_SYSTEM: case CMD_QUIT: /*