lib/util: add samba_tevent_context_init()
authorStefan Metzmacher <metze@samba.org>
Mon, 18 Feb 2013 07:54:51 +0000 (08:54 +0100)
committerMichael Adam <obnox@samba.org>
Tue, 19 Feb 2013 22:47:43 +0000 (23:47 +0100)
Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Michael Adam <obnox@samba.org>
lib/util/samba_util.h
lib/util/tevent_debug.c [new file with mode: 0644]
lib/util/wscript_build
source3/Makefile.in

index 27c2e6ed3c43f8126cbfb721bf41fe0c9d237f53..f59dc70f2f703c3630d941c2c8eefc84e3af1da0 100644 (file)
@@ -960,4 +960,10 @@ void server_id_set_disconnected(struct server_id *id);
  */
 bool server_id_is_disconnected(const struct server_id *id);
 
+/*
+ * Samba code should use samba_tevent_context_init() instead of
+ * tevent_context_init() in order to get the debug output.
+ */
+struct tevent_context *samba_tevent_context_init(TALLOC_CTX *mem_ctx);
+
 #endif /* _SAMBA_UTIL_H_ */
diff --git a/lib/util/tevent_debug.c b/lib/util/tevent_debug.c
new file mode 100644 (file)
index 0000000..3a5a313
--- /dev/null
@@ -0,0 +1,67 @@
+/*
+   Unix SMB/CIFS implementation.
+   Copyright (C) Andrew Tridgell 2003
+
+   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
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include "includes.h"
+#include <tevent.h>
+
+static void samba_tevent_debug(void *context,
+                              enum tevent_debug_level level,
+                              const char *fmt,
+                              va_list ap)  PRINTF_ATTRIBUTE(3,0);
+
+static void samba_tevent_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 = 50;
+               break;
+       };
+
+       if (CHECK_DEBUGLVL(samba_level)) {
+               vasprintf(&s, fmt, ap);
+               if (!s) return;
+               DEBUG(samba_level, ("samba_tevent: %s", s));
+               free(s);
+       }
+}
+
+struct tevent_context *samba_tevent_context_init(TALLOC_CTX *mem_ctx)
+{
+       struct tevent_context *ev;
+
+       ev = tevent_context_init(mem_ctx);
+       if (ev) {
+               tevent_set_debug(ev, samba_tevent_debug, NULL);
+       }
+
+       return ev;
+}
index a671bc9c3616efb31a683fc5d925f37ae629b634..ac270ee4867e898224e3c6da1dc21e81ea5d3716 100755 (executable)
@@ -7,9 +7,10 @@ bld.SAMBA_LIBRARY('samba-util',
                     signal.c system.c params.c util.c util_id.c util_net.c
                     util_strlist.c util_paths.c idtree.c debug.c fault.c base64.c
                     util_str.c util_str_common.c substitute.c ms_fnmatch.c
-                    server_id.c dprintf.c parmlist.c bitmap.c pidfile.c''',
+                    server_id.c dprintf.c parmlist.c bitmap.c pidfile.c
+                    tevent_debug.c''',
                   deps='DYNCONFIG',
-                  public_deps='talloc execinfo uid_wrapper pthread LIBCRYPTO charset util_setid',
+                  public_deps='talloc tevent execinfo uid_wrapper pthread LIBCRYPTO charset util_setid',
                   public_headers='debug.h attr.h byteorder.h data_blob.h memory.h safe_string.h time.h talloc_stack.h xfile.h dlinklist.h samba_util.h string_wrappers.h',
                   header_path= [ ('dlinklist.h samba_util.h', '.'), ('*', 'util') ],
                   local_include=False,
index 651d28642037ad45d4b03d362ea220b9b3e7ef96..e27875f6acff926fa9ac8fd983fbdcb18845d5ae 100644 (file)
@@ -480,7 +480,7 @@ LIB_OBJ = $(LIBSAMBAUTIL_OBJ) $(UTIL_OBJ) $(CRYPTO_OBJ) $(LIBTSOCKET_OBJ) \
          ../lib/util/charset/iconv.o ../lib/util/charset/weird.o \
          ../lib/util/charset/charset_macosxfs.o intl/lang_tdb.o \
          lib/adt_tree.o lib/gencache.o \
-         ../lib/util/modules.o lib/events.o @LIBTEVENT_OBJ0@ \
+         ../lib/util/modules.o lib/events.o ../lib/util/tevent_debug.o @LIBTEVENT_OBJ0@ \
          @CCAN_OBJ@ \
          lib/server_contexts.o \
          lib/server_prefork.o \