[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