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