lib/tdb_compat: header for tdb1 vs tdb2.
authorRusty Russell <rusty@rustcorp.com.au>
Mon, 20 Jun 2011 07:28:15 +0000 (16:58 +0930)
committerRusty Russell <rusty@rustcorp.com.au>
Mon, 20 Jun 2011 09:18:34 +0000 (11:18 +0200)
commit61bf43f5d17c9ac3fc9a36cab74a81f26ac97ccb
treefaa7f5e9176338f3d9e236860c57cd26132a7864
parenteb8cb4f5486ec8648527e78c110b9167887ee479
lib/tdb_compat: header for tdb1 vs tdb2.

TDB2's API is slightly different from TDB1.  In particular, all functions
return 0 (TDB_SUCCESS) or a negative error number, rather than -1 or tdb_null
and storing the error in tdb_error() (though TDB2 does that as well).

The simplest fix is to replace all the different functions with a wrapper,
and that is done here.

Compatibility functions:

tdb_null: not used as an error return, so not defined by tdb2.
tdb_fetch_compat: TDB1-style data-returning tdb_fetch.
tdb_firstkey_compat: TDB1-style data-returning tdb_firstkey
tdb_nextkey_compat: TDB1-style data-returning tdb_nextkey, with
TDB2-style free of old key.
tdb_errorstr_compat: TDB1-style tdb_errorstr() which takes TDB instead of ecode.
TDB_CONTEXT: TDB1-style typedef for struct tdb_context.
tdb_open_compat: Simplified open routine which takes log function, sets
TDB_ALLOW_NESTING as Samba expects, and adds TDB_CLEAR_IF_FIRST support.

Things defined away in TDB2 wrappers:

tdb_traverse_read: TDB2's tdb_traverse only uses read-locks anyway.
tdb_reopen/tdb_reopen_all: TDB2 detects this error itself.
TDB_INCOMPATIBLE_HASH: TDB2 uses the Jenkins hash already.
TDB_VOLATILE: TDB2 shouldn't have freelist scaling issues.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
lib/tdb_compat/tdb_compat.c [new file with mode: 0644]
lib/tdb_compat/tdb_compat.h [new file with mode: 0644]
lib/tdb_compat/wscript [new file with mode: 0644]
wscript_build