[SCM] Samba Shared Repository - branch v3-2-test updated -
release-3-2-0pre2-424-gabf02a5
Michael Adam
obnox at samba.org
Tue Mar 25 15:19:10 GMT 2008
The branch, v3-2-test has been updated
via abf02a5a142c55d9e0053d319c867e4fcc3e6c30 (commit)
via d4be4e30cd8c3bdc303da30e42280f892a45a8c9 (commit)
via 48149a954c1e737c9863cfa0991ab9bfc246c6da (commit)
via b42cf3fc69414270be9d0f430f2e95a72894f00e (commit)
via 4b9231d33eaea2ada5d67cc1d959df2b671e7bb9 (commit)
via edf4dbed27a3c63c04e8110e75cdb76e31627eb6 (commit)
from c967b62dd3c924419fa4a72aa2143d6bef959d18 (commit)
http://gitweb.samba.org/?p=samba.git;a=shortlog;h=v3-2-test
- Log -----------------------------------------------------------------
commit abf02a5a142c55d9e0053d319c867e4fcc3e6c30
Author: Michael Adam <obnox at samba.org>
Date: Tue Mar 25 15:55:03 2008 +0100
util_tdb: add my (C) for the tdb validation code
Michael
commit d4be4e30cd8c3bdc303da30e42280f892a45a8c9
Author: Michael Adam <obnox at samba.org>
Date: Tue Mar 25 14:18:08 2008 +0100
util_tdb: add a wrapper tdb_wipe() for traverse with tdb_traverse_delete_fn().
Replace all callers of traverse with this tdb_traverse_delete_fn() and
don't export tdb_traverse_delete_fn() anymore.
Michael
commit 48149a954c1e737c9863cfa0991ab9bfc246c6da
Author: Michael Adam <obnox at samba.org>
Date: Tue Mar 25 13:53:31 2008 +0100
util_tdb: add the tdb_pack_append() prototype to util_tdb.h
This function is currently not used but seems useful.
Michael
commit b42cf3fc69414270be9d0f430f2e95a72894f00e
Author: Michael Adam <obnox at samba.org>
Date: Tue Mar 25 13:52:32 2008 +0100
util_tdb: make the _byblob functions static - not currently used elsewhere.
Michael
commit 4b9231d33eaea2ada5d67cc1d959df2b671e7bb9
Author: Michael Adam <obnox at samba.org>
Date: Tue Mar 25 13:41:51 2008 +0100
util_tdb: group prototypes in util_tdb.h thematically
Michael
commit edf4dbed27a3c63c04e8110e75cdb76e31627eb6
Author: Michael Adam <obnox at samba.org>
Date: Tue Mar 25 12:54:14 2008 +0100
build: don't autogenerate prototypes for util_tdb and dbwrap anymore.
Stick to hand-written headers (that are there anyways).
Add some missing prototypes to util_tdb.h and dbwrap.h.
I did not bother to add a header for each single dbwrap backend
open function but put the prototypes for the open functions into
the central dbwrap.h.
Michael
-----------------------------------------------------------------------
Summary of changes:
source/Makefile.in | 5 ++-
source/groupdb/mapping_tdb.c | 2 +-
source/include/dbwrap.h | 21 ++++++++++++++++
source/include/util_tdb.h | 53 ++++++++++++++++++++++++++++++-----------
source/intl/lang_tdb.c | 2 +-
source/lib/sharesec.c | 2 +-
source/lib/util_tdb.c | 21 +++++++++++-----
source/printing/printing.c | 2 +-
8 files changed, 81 insertions(+), 27 deletions(-)
Changeset truncated at 500 lines:
diff --git a/source/Makefile.in b/source/Makefile.in
index d9d0ea2..7b664d0 100644
--- a/source/Makefile.in
+++ b/source/Makefile.in
@@ -327,7 +327,8 @@ LIB_WITHOUT_PROTO_OBJ = $(LIBSAMBAUTIL_OBJ) \
lib/messages.o librpc/gen_ndr/ndr_messaging.o lib/messages_local.o \
lib/messages_ctdbd.o lib/packet.o lib/ctdbd_conn.o lib/talloc_stack.o \
lib/interfaces.o lib/rbtree.o lib/memcache.o \
- lib/util_transfer_file.o lib/async_req.o
+ lib/util_transfer_file.o lib/async_req.o \
+ $(TDB_OBJ)
LIB_WITH_PROTO_OBJ = $(VERSION_OBJ) lib/charcnv.o lib/debug.o lib/fault.o \
lib/interface.o lib/md4.o \
@@ -345,7 +346,7 @@ LIB_WITH_PROTO_OBJ = $(VERSION_OBJ) lib/charcnv.o lib/debug.o lib/fault.o \
lib/tallocmsg.o lib/dmallocmsg.o libsmb/smb_signing.o \
lib/md5.o lib/hmacmd5.o lib/arc4.o lib/iconv.o \
lib/pam_errors.o intl/lang_tdb.o lib/conn_tdb.o \
- lib/adt_tree.o lib/gencache.o $(TDB_OBJ) \
+ lib/adt_tree.o lib/gencache.o \
lib/module.o lib/events.o lib/ldap_escape.o @CHARSET_STATIC@ \
lib/secdesc.o lib/util_seaccess.o lib/secace.o lib/secacl.o \
libads/krb5_errs.o lib/system_smbd.o lib/audit.o $(LIBNDR_OBJ) \
diff --git a/source/groupdb/mapping_tdb.c b/source/groupdb/mapping_tdb.c
index c9c8cdc..6732e3c 100644
--- a/source/groupdb/mapping_tdb.c
+++ b/source/groupdb/mapping_tdb.c
@@ -76,7 +76,7 @@ static bool init_group_mapping(void)
/* if its an unknown version we remove everthing in the db */
if (vers_id != DATABASE_VERSION_V2) {
- tdb_traverse(tdb, tdb_traverse_delete_fn, NULL);
+ tdb_wipe(tdb);
tdb_store_int32(tdb, vstring, DATABASE_VERSION_V2);
}
diff --git a/source/include/dbwrap.h b/source/include/dbwrap.h
index 5c82475..095719a 100644
--- a/source/include/dbwrap.h
+++ b/source/include/dbwrap.h
@@ -54,6 +54,27 @@ struct db_context *db_open(TALLOC_CTX *mem_ctx,
int hash_size, int tdb_flags,
int open_flags, mode_t mode);
+struct db_context *db_open_rbt(TALLOC_CTX *mem_ctx);
+
+struct db_context *db_open_tdb(TALLOC_CTX *mem_ctx,
+ const char *name,
+ int hash_size, int tdb_flags,
+ int open_flags, mode_t mode);
+
+#ifdef CLUSTER_SUPPORT
+struct db_context *db_open_ctdb(TALLOC_CTX *mem_ctx,
+ const char *name,
+ int hash_size, int tdb_flags,
+ int open_flags, mode_t mode);
+#endif
+
+struct db_context *db_open_file(TALLOC_CTX *mem_ctx,
+ struct messaging_context *msg_ctx,
+ const char *name,
+ int hash_size, int tdb_flags,
+ int open_flags, mode_t mode);
+
+
NTSTATUS dbwrap_delete_bystring(struct db_context *db, const char *key);
NTSTATUS dbwrap_store_bystring(struct db_context *db, const char *key,
TDB_DATA data, int flags);
diff --git a/source/include/util_tdb.h b/source/include/util_tdb.h
index a970806..0a8eb93 100644
--- a/source/include/util_tdb.h
+++ b/source/include/util_tdb.h
@@ -22,6 +22,9 @@
#include "tdb.h"
+#include "talloc.h" /* for tdb_wrap_open() */
+#include "nt_status.h" /* for map_nt_error_from_tdb() */
+
/* single node of a list returned by tdb_search_keys */
typedef struct keys_node
{
@@ -45,9 +48,15 @@ struct tdb_validation_status {
typedef int (*tdb_validate_data_func)(TDB_CONTEXT *the_tdb, TDB_DATA kbuf, TDB_DATA dbuf, void *state);
+TDB_DATA make_tdb_data(const uint8 *dptr, size_t dsize);
+TDB_DATA string_tdb_data(const char *string);
+TDB_DATA string_term_tdb_data(const char *string);
+
TDB_LIST_NODE *tdb_search_keys(struct tdb_context*, const char*);
void tdb_search_list_free(TDB_LIST_NODE*);
-int32 tdb_change_int32_atomic(struct tdb_context *tdb, const char *keystr, int32 *oldval, int32 change_val);
+
+int tdb_chainlock_with_timeout( TDB_CONTEXT *tdb, TDB_DATA key,
+ unsigned int timeout);
int tdb_lock_bystring(struct tdb_context *tdb, const char *keyval);
int tdb_lock_bystring_with_timeout(TDB_CONTEXT *tdb, const char *keyval,
int timeout);
@@ -55,27 +64,43 @@ void tdb_unlock_bystring(struct tdb_context *tdb, const char *keyval);
int tdb_read_lock_bystring_with_timeout(TDB_CONTEXT *tdb, const char *keyval,
unsigned int timeout);
void tdb_read_unlock_bystring(TDB_CONTEXT *tdb, const char *keyval);
+
int32 tdb_fetch_int32(struct tdb_context *tdb, const char *keystr);
bool tdb_store_uint32(struct tdb_context *tdb, const char *keystr, uint32 value);
int tdb_store_int32(struct tdb_context *tdb, const char *keystr, int32 v);
bool tdb_fetch_uint32(struct tdb_context *tdb, const char *keystr, uint32 *value);
-int tdb_traverse_delete_fn(struct tdb_context *the_tdb, TDB_DATA key, TDB_DATA dbuf,
- void *state);
+int32 tdb_change_int32_atomic(struct tdb_context *tdb, const char *keystr, int32 *oldval, int32 change_val);
+bool tdb_change_uint32_atomic(TDB_CONTEXT *tdb, const char *keystr,
+ uint32 *oldval, uint32 change_val);
+
+int tdb_wipe(TDB_CONTEXT *tdb);
+
int tdb_store_bystring(struct tdb_context *tdb, const char *keystr, TDB_DATA data, int flags);
+int tdb_trans_store_bystring(TDB_CONTEXT *tdb, const char *keystr,
+ TDB_DATA data, int flags);
TDB_DATA tdb_fetch_bystring(struct tdb_context *tdb, const char *keystr);
int tdb_delete_bystring(struct tdb_context *tdb, const char *keystr);
-struct tdb_context *tdb_open_log(const char *name, int hash_size,
- int tdb_flags, int open_flags, mode_t mode);
-int tdb_unpack(const uint8 *buf, int bufsize, const char *fmt, ...);
-size_t tdb_pack(uint8 *buf, int bufsize, const char *fmt, ...);
-TDB_DATA make_tdb_data(const uint8 *dptr, size_t dsize);
-TDB_DATA string_tdb_data(const char *string);
-TDB_DATA string_term_tdb_data(const char *string);
int tdb_trans_store(struct tdb_context *tdb, TDB_DATA key, TDB_DATA dbuf,
int flag);
-bool tdb_change_uint32_atomic(TDB_CONTEXT *tdb, const char *keystr,
- uint32 *oldval, uint32 change_val);
-int tdb_chainlock_with_timeout( TDB_CONTEXT *tdb, TDB_DATA key,
- unsigned int timeout);
+int tdb_trans_delete(struct tdb_context *tdb, TDB_DATA key);
+
+int tdb_unpack(const uint8 *buf, int bufsize, const char *fmt, ...);
+size_t tdb_pack(uint8 *buf, int bufsize, const char *fmt, ...);
+bool tdb_pack_append(TALLOC_CTX *mem_ctx, uint8 **buf, size_t *len,
+ const char *fmt, ...);
+
+struct tdb_context *tdb_open_log(const char *name, int hash_size,
+ int tdb_flags, int open_flags, mode_t mode);
+
+struct tdb_wrap *tdb_wrap_open(TALLOC_CTX *mem_ctx,
+ const char *name, int hash_size, int tdb_flags,
+ int open_flags, mode_t mode);
+
+NTSTATUS map_nt_error_from_tdb(enum TDB_ERROR err);
+
+int tdb_validate(struct tdb_context *tdb, tdb_validate_data_func validate_fn);
+int tdb_validate_open(const char *tdb_path, tdb_validate_data_func validate_fn);
+int tdb_validate_and_backup(const char *tdb_path,
+ tdb_validate_data_func validate_fn);
#endif /* __TDBUTIL_H__ */
diff --git a/source/intl/lang_tdb.c b/source/intl/lang_tdb.c
index 6ad9ef8..4e4a3a5 100644
--- a/source/intl/lang_tdb.c
+++ b/source/intl/lang_tdb.c
@@ -45,7 +45,7 @@ static bool load_msg(const char *msg_file)
}
/* wipe the db */
- tdb_traverse(tdb, tdb_traverse_delete_fn, NULL);
+ tdb_wipe(tdb);
msgid = NULL;
diff --git a/source/lib/sharesec.c b/source/lib/sharesec.c
index f6ff701..60f6e50 100644
--- a/source/lib/sharesec.c
+++ b/source/lib/sharesec.c
@@ -65,7 +65,7 @@ static bool share_info_db_init(void)
}
if (vers_id != SHARE_DATABASE_VERSION_V2) {
- tdb_traverse(share_tdb, tdb_traverse_delete_fn, NULL);
+ tdb_wipe(share_tdb);
tdb_store_int32(share_tdb, vstring, SHARE_DATABASE_VERSION_V2);
}
tdb_unlock_bystring(share_tdb, vstring);
diff --git a/source/lib/util_tdb.c b/source/lib/util_tdb.c
index 724832e..0c56e10 100644
--- a/source/lib/util_tdb.c
+++ b/source/lib/util_tdb.c
@@ -3,6 +3,7 @@
tdb utility functions
Copyright (C) Andrew Tridgell 1992-1998
Copyright (C) Rafal Szczesniak 2002
+ Copyright (C) Michael Adam 2007
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -166,7 +167,7 @@ void tdb_read_unlock_bystring(TDB_CONTEXT *tdb, const char *keyval)
Output is int32 in native byte order.
****************************************************************************/
-int32 tdb_fetch_int32_byblob(TDB_CONTEXT *tdb, TDB_DATA key)
+static int32 tdb_fetch_int32_byblob(TDB_CONTEXT *tdb, TDB_DATA key)
{
TDB_DATA data;
int32 ret;
@@ -199,7 +200,7 @@ int32 tdb_fetch_int32(TDB_CONTEXT *tdb, const char *keystr)
Input is int32 in native byte order. Output in tdb is in little-endian.
****************************************************************************/
-int tdb_store_int32_byblob(TDB_CONTEXT *tdb, TDB_DATA key, int32 v)
+static int tdb_store_int32_byblob(TDB_CONTEXT *tdb, TDB_DATA key, int32 v)
{
TDB_DATA data;
int32 v_store;
@@ -228,7 +229,7 @@ int tdb_store_int32(TDB_CONTEXT *tdb, const char *keystr, int32 v)
Output is uint32 in native byte order.
****************************************************************************/
-bool tdb_fetch_uint32_byblob(TDB_CONTEXT *tdb, TDB_DATA key, uint32 *value)
+static bool tdb_fetch_uint32_byblob(TDB_CONTEXT *tdb, TDB_DATA key, uint32 *value)
{
TDB_DATA data;
@@ -260,7 +261,7 @@ bool tdb_fetch_uint32(TDB_CONTEXT *tdb, const char *keystr, uint32 *value)
Input is uint32 in native byte order. Output in tdb is in little-endian.
****************************************************************************/
-bool tdb_store_uint32_byblob(TDB_CONTEXT *tdb, TDB_DATA key, uint32 value)
+static bool tdb_store_uint32_byblob(TDB_CONTEXT *tdb, TDB_DATA key, uint32 value)
{
TDB_DATA data;
uint32 v_store;
@@ -418,7 +419,7 @@ bool tdb_change_uint32_atomic(TDB_CONTEXT *tdb, const char *keystr, uint32 *oldv
integers and strings.
****************************************************************************/
-size_t tdb_pack_va(uint8 *buf, int bufsize, const char *fmt, va_list ap)
+static size_t tdb_pack_va(uint8 *buf, int bufsize, const char *fmt, va_list ap)
{
uint8 bt;
uint16 w;
@@ -722,12 +723,18 @@ TDB_CONTEXT *tdb_open_log(const char *name, int hash_size, int tdb_flags,
Allow tdb_delete to be used as a tdb_traversal_fn.
****************************************************************************/
-int tdb_traverse_delete_fn(TDB_CONTEXT *the_tdb, TDB_DATA key, TDB_DATA dbuf,
- void *state)
+static int tdb_traverse_delete_fn(TDB_CONTEXT *the_tdb, TDB_DATA key,
+ TDB_DATA dbuf, void *state)
{
return tdb_delete(the_tdb, key);
}
+int tdb_wipe(TDB_CONTEXT *tdb)
+{
+ return tdb_traverse(tdb, tdb_traverse_delete_fn, NULL);
+}
+
+
/**
diff --git a/source/printing/printing.c b/source/printing/printing.c
index 221e79b..c9736b7 100644
--- a/source/printing/printing.c
+++ b/source/printing/printing.c
@@ -202,7 +202,7 @@ bool print_backend_init(struct messaging_context *msg_ctx)
return False;
}
if (tdb_fetch_int32(pdb->tdb, sversion) != PRINT_DATABASE_VERSION) {
- tdb_traverse(pdb->tdb, tdb_traverse_delete_fn, NULL);
+ tdb_wipe(pdb->tdb);
tdb_store_int32(pdb->tdb, sversion, PRINT_DATABASE_VERSION);
}
tdb_unlock_bystring(pdb->tdb, sversion);
--
Samba Shared Repository
More information about the samba-cvs
mailing list