ensure tdb log messages appear in ctdbd logs
authorAndrew Tridgell <tridge@samba.org>
Sun, 6 Jan 2008 01:35:49 +0000 (12:35 +1100)
committerAndrew Tridgell <tridge@samba.org>
Sun, 6 Jan 2008 01:35:49 +0000 (12:35 +1100)
(This used to be ctdb commit b2439487832230e7b738c0f89eeaa2c0c4ba0951)

ctdb/lib/util/db_wrap.c
ctdb/lib/util/debug.c
ctdb/lib/util/debug.h

index 2841f513cca81ef95613fcd0f86216e041a0cc6e..f4e89cf270fc2472875a712068672f04e267f67b 100644 (file)
@@ -44,6 +44,18 @@ static int tdb_wrap_destructor(struct tdb_wrap *w)
        return 0;
 }                               
 
+static void log_fn(struct tdb_context *tdb, enum tdb_debug_level level, const char *fmt, ...)
+{
+       if (level <= TDB_DEBUG_ERROR) {
+               va_list ap;
+
+               va_start(ap, fmt);
+               do_debug_v(fmt, ap);
+               va_end(ap);
+       }
+}
+
+
 /*
   wrapped connection to a tdb database
   to close just talloc_free() the tdb_wrap pointer
@@ -53,6 +65,10 @@ struct tdb_wrap *tdb_wrap_open(TALLOC_CTX *mem_ctx,
                               int open_flags, mode_t mode)
 {
        struct tdb_wrap *w;
+       struct tdb_logging_context log_ctx;
+
+       log_ctx.log_fn = log_fn;
+       log_ctx.log_private = NULL;
 
        for (w=tdb_list;w;w=w->next) {
                if (strcmp(name, w->name) == 0) {
@@ -67,8 +83,8 @@ struct tdb_wrap *tdb_wrap_open(TALLOC_CTX *mem_ctx,
 
        w->name = talloc_strdup(w, name);
 
-       w->tdb = tdb_open(name, hash_size, tdb_flags, 
-                         open_flags, mode);
+       w->tdb = tdb_open_ex(name, hash_size, tdb_flags, 
+                            open_flags, mode, &log_ctx, NULL);
        if (w->tdb == NULL) {
                talloc_free(w);
                return NULL;
index 78d465d52b03c88e51574ac664677c8770dfaa63..c1f1c9141023b1c001bf88e07fe21ce31dd225ca 100644 (file)
 #include <unistd.h>
 
 
-void do_debug(const char *format, ...)
+void do_debug_v(const char *format, va_list ap)
 {
        struct timeval t;
-       va_list ap;
        char *s = NULL;
        struct tm *tm;
        char tbuf[100];
 
-       va_start(ap, format);
        vasprintf(&s, format, ap);
-       va_end(ap);
 
        t = timeval_current();
        tm = localtime(&t.tv_sec);
@@ -43,3 +40,12 @@ void do_debug(const char *format, ...)
        fflush(stderr);
        free(s);
 }
+
+void do_debug(const char *format, ...)
+{
+       va_list ap;
+
+       va_start(ap, format);
+       do_debug_v(format, ap);
+       va_end(ap);
+}
index 510034ef9a9fc5e0aaabe39fbc91e74ac54fa55d..ce454bc668408a76ce2e8fea09ffd12182f4e0b4 100644 (file)
@@ -17,4 +17,5 @@
    along with this program; if not, see <http://www.gnu.org/licenses/>.
 */
 
+void do_debug_v(const char *format, va_list ap);
 void do_debug(const char *format, ...) PRINTF_ATTRIBUTE(1, 2);