s3:events: install a tevent debug handler that calls DEBUG()
authorStefan Metzmacher <metze@samba.org>
Thu, 8 Jan 2009 14:16:51 +0000 (15:16 +0100)
committerStefan Metzmacher <metze@samba.org>
Fri, 9 Jan 2009 07:45:40 +0000 (08:45 +0100)
metze

source3/lib/events.c

index c1feff8c67b5779b1166df345991d643edee0fb5..92c1f7fd1da7ecc0ce76388b45d05d329f22e58d 100644 (file)
@@ -274,8 +274,49 @@ static bool s3_tevent_init(void)
        return initialized;
 }
 
+/*
+  this is used to catch debug messages from events
+*/
+static void s3_event_debug(void *context, enum tevent_debug_level level,
+                          const char *fmt, va_list ap)  PRINTF_ATTRIBUTE(3,0);
+
+static void s3_event_debug(void *context, enum tevent_debug_level level,
+                          const char *fmt, va_list ap)
+{
+       int samba_level = -1;
+       char *s = NULL;
+       switch (level) {
+       case TEVENT_DEBUG_FATAL:
+               samba_level = 0;
+               break;
+       case TEVENT_DEBUG_ERROR:
+               samba_level = 1;
+               break;
+       case TEVENT_DEBUG_WARNING:
+               samba_level = 2;
+               break;
+       case TEVENT_DEBUG_TRACE:
+               samba_level = 5;
+               break;
+
+       };
+       vasprintf(&s, fmt, ap);
+       if (!s) return;
+       DEBUG(samba_level, ("s3_event: %s", s));
+       free(s);
+}
+
 struct tevent_context *s3_tevent_context_init(TALLOC_CTX *mem_ctx)
 {
+       struct tevent_context *ev;
+
        s3_tevent_init();
-       return tevent_context_init_byname(mem_ctx, "s3");
+
+       ev = tevent_context_init_byname(mem_ctx, "s3");
+       if (ev) {
+               tevent_set_debug(ev, s3_event_debug, NULL);
+       }
+
+       return ev;
 }
+