svn commit: samba r2238 - in branches/SAMBA_4_0/source/lib/tdb: common include

tridge at samba.org tridge at samba.org
Tue Sep 7 13:44:49 GMT 2004


Author: tridge
Date: 2004-09-07 13:44:49 +0000 (Tue, 07 Sep 2004)
New Revision: 2238

WebSVN: http://websvn.samba.org/websvn/changeset.php?rep=samba&path=/branches/SAMBA_4_0/source/lib/tdb&rev=2238&nolog=1

Log:
the tdb_debug() function was totally bogus - remove it (you can't
convert a ... varargs function to a va_list by just a cast!!)

also mark the tdb log function with PRINTF_ATTRIBUTE() and fixed some
bad format errors in tdb.c that jim found.


Modified:
   branches/SAMBA_4_0/source/lib/tdb/common/tdb.c
   branches/SAMBA_4_0/source/lib/tdb/common/tdbutil.c
   branches/SAMBA_4_0/source/lib/tdb/include/tdb.h


Changeset:
Modified: branches/SAMBA_4_0/source/lib/tdb/common/tdb.c
===================================================================
--- branches/SAMBA_4_0/source/lib/tdb/common/tdb.c	2004-09-07 12:14:43 UTC (rev 2237)
+++ branches/SAMBA_4_0/source/lib/tdb/common/tdb.c	2004-09-07 13:44:49 UTC (rev 2238)
@@ -89,7 +89,7 @@
 /* NB assumes there is a local variable called "tdb" that is the
  * current context, also takes doubly-parenthesized print-style
  * argument. */
-#define TDB_LOG(x) (tdb->log_fn?((tdb->log_fn x),0) : 0)
+#define TDB_LOG(x) tdb->log_fn x
 
 /* lock offsets */
 #define GLOBAL_LOCK 0
@@ -277,7 +277,7 @@
 	if (tdb->locked[list+1].count == 0) {
 		if (!tdb->read_only && tdb->header.rwlocks) {
 			if (tdb_spinlock(tdb, list, ltype)) {
-				TDB_LOG((tdb, 0, "tdb_lock spinlock failed on list ltype=%d\n", 
+				TDB_LOG((tdb, 0, "tdb_lock spinlock failed on list %d ltype=%d\n", 
 					   list, ltype));
 				return -1;
 			}
@@ -1755,7 +1755,12 @@
 	return tdb_open_ex(name, hash_size, tdb_flags, open_flags, mode, NULL, NULL);
 }
 
+/* a default logging function */
+static void null_log_fn(TDB_CONTEXT *tdb, int level, const char *fmt, ...)
+{
+}
 
+
 TDB_CONTEXT *tdb_open_ex(const char *name, int hash_size, int tdb_flags,
 			 int open_flags, mode_t mode,
 			 tdb_log_func log_fn,
@@ -1778,7 +1783,7 @@
 	tdb->lockedkeys = NULL;
 	tdb->flags = tdb_flags;
 	tdb->open_flags = open_flags;
-	tdb->log_fn = log_fn;
+	tdb->log_fn = log_fn?log_fn:null_log_fn;
 	tdb->hash_fn = hash_fn ? hash_fn : default_tdb_hash;
 
 	if ((open_flags & O_ACCMODE) == O_WRONLY) {
@@ -1861,7 +1866,7 @@
 	if (tdb_already_open(st.st_dev, st.st_ino)) {
 		TDB_LOG((tdb, 2, "tdb_open_ex: "
 			 "%s (%d,%d) is already open in this process\n",
-			 name, st.st_dev, st.st_ino));
+			 name, (int)st.st_dev, (int)st.st_ino));
 		errno = EBUSY;
 		goto fail;
 	}
@@ -2082,7 +2087,7 @@
 /* register a loging function */
 void tdb_logging_function(TDB_CONTEXT *tdb, void (*fn)(TDB_CONTEXT *, int , const char *, ...))
 {
-	tdb->log_fn = fn;
+	tdb->log_fn = fn?fn:null_log_fn;
 }
 
 

Modified: branches/SAMBA_4_0/source/lib/tdb/common/tdbutil.c
===================================================================
--- branches/SAMBA_4_0/source/lib/tdb/common/tdbutil.c	2004-09-07 12:14:43 UTC (rev 2237)
+++ branches/SAMBA_4_0/source/lib/tdb/common/tdbutil.c	2004-09-07 13:44:49 UTC (rev 2238)
@@ -112,8 +112,8 @@
 		alarm(0);
 		TdbCatchSignal(SIGALRM, SIGNAL_CAST SIG_IGN);
 		if (gotalarm) {
-			tdb_debug(tdb, 0, "tdb_chainlock_with_timeout_internal: alarm (%u) timed out for key %s in tdb %s\n",
-				timeout, key.dptr, tdb->name );
+			tdb->log_fn(tdb, 0, "tdb_chainlock_with_timeout_internal: alarm (%u) timed out for key %s in tdb %s\n",
+				timeout, key.dptr, tdb->name);
 			/* TODO: If we time out waiting for a lock, it might
 			 * be nice to use F_GETLK to get the pid of the
 			 * process currently holding the lock and print that
@@ -492,8 +492,8 @@
 			}
 			break;
 		default:
-			tdb_debug(tdb, 0,"Unknown tdb_pack format %c in %s\n", 
-				 c, fmt);
+			tdb->log_fn(tdb, 0,"Unknown tdb_pack format %c in %s\n", 
+				    c, fmt);
 			len = 0;
 			break;
 		}
@@ -507,8 +507,8 @@
 
 	va_end(ap);
 
-	tdb_debug(tdb, 18,"tdb_pack(%s, %d) -> %d\n", 
-		 fmt0, bufsize0, (int)PTR_DIFF(buf, buf0));
+	tdb->log_fn(tdb, 18,"tdb_pack(%s, %d) -> %d\n", 
+		    fmt0, bufsize0, (int)PTR_DIFF(buf, buf0));
 	
 	return PTR_DIFF(buf, buf0);
 }
@@ -599,7 +599,7 @@
 			memcpy(*b, buf+4, *i);
 			break;
 		default:
-			tdb_debug(tdb, 0, "Unknown tdb_unpack format %c in %s\n", 
+			tdb->log_fn(tdb, 0, "Unknown tdb_unpack format %c in %s\n", 
 				 c, fmt);
 
 			len = 0;
@@ -612,8 +612,8 @@
 
 	va_end(ap);
 
-	tdb_debug(tdb, 18, "tdb_unpack(%s, %d) -> %d\n", 
-		 fmt0, bufsize0, (int)PTR_DIFF(buf, buf0));
+	tdb->log_fn(tdb, 18, "tdb_unpack(%s, %d) -> %d\n", 
+		    fmt0, bufsize0, (int)PTR_DIFF(buf, buf0));
 
 	return PTR_DIFF(buf, buf0);
 
@@ -622,22 +622,6 @@
 }
 
 /****************************************************************************
- Print out debug messages.
-****************************************************************************/
-
-void tdb_debug(TDB_CONTEXT *tdb, int level, const char *fmt, ...)
-{
-	va_list ap;
-	if (tdb->log_fn == NULL) {
-		return;
-	}
-	va_start(ap, fmt);
-	tdb->log_fn(tdb, level, fmt, ap);
-	va_end(ap);
-}
-
-
-/****************************************************************************
  Allow tdb_delete to be used as a tdb_traversal_fn.
 ****************************************************************************/
 
@@ -669,11 +653,11 @@
 		char *key_str = (char*) strndup(key.dptr, key.dsize);
 #if 0
 		if (!key_str) {
-			tdb_debug(tdb, 0, "tdb_search_keys: strndup() failed!\n");
+			tdb->log_fn(tdb, 0, "tdb_search_keys: strndup() failed!\n");
 			smb_panic("strndup failed!\n");
 		}
 #endif
-		tdb_debug(tdb, 18, "checking %s for match to pattern %s\n", key_str, pattern);
+		tdb->log_fn(tdb, 18, "checking %s for match to pattern %s\n", key_str, pattern);
 		
 		next = tdb_nextkey(tdb, key);
 
@@ -686,7 +670,7 @@
 	
 			DLIST_ADD_END(list, rec, TDB_LIST_NODE *);
 		
-			tdb_debug(tdb, 18, "checking %s matched pattern %s\n", key_str, pattern);
+			tdb->log_fn(tdb, 18, "checking %s matched pattern %s\n", key_str, pattern);
 		} else {
 			free(key.dptr);
 		}

Modified: branches/SAMBA_4_0/source/lib/tdb/include/tdb.h
===================================================================
--- branches/SAMBA_4_0/source/lib/tdb/include/tdb.h	2004-09-07 12:14:43 UTC (rev 2237)
+++ branches/SAMBA_4_0/source/lib/tdb/include/tdb.h	2004-09-07 13:44:49 UTC (rev 2238)
@@ -101,13 +101,11 @@
 	struct tdb_context *next; /* all tdbs to avoid multiple opens */
 	dev_t device;	/* uniquely identifies this tdb */
 	ino_t inode;	/* uniquely identifies this tdb */
-	void (*log_fn)(struct tdb_context *tdb, int level, const char *, ...); /* logging function */
+	void (*log_fn)(struct tdb_context *tdb, int level, const char *, ...) PRINTF_ATTRIBUTE(3,4); /* logging function */
 	u32 (*hash_fn)(TDB_DATA *key);
 	int open_flags; /* flags used in the open - needed by reopen */
 } TDB_CONTEXT;
 
-void tdb_debug(TDB_CONTEXT *, int , const char *, ...);
-
 typedef int (*tdb_traverse_func)(TDB_CONTEXT *, TDB_DATA, TDB_DATA, void *);
 typedef void (*tdb_log_func)(TDB_CONTEXT *, int , const char *, ...);
 typedef u32 (*tdb_hash_func)(TDB_DATA *key);



More information about the samba-cvs mailing list