summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/util/samba_util.h6
-rw-r--r--lib/util/tevent_debug.c67
-rwxr-xr-xlib/util/wscript_build5
-rw-r--r--source3/Makefile.in2
4 files changed, 77 insertions, 3 deletions
diff --git a/lib/util/samba_util.h b/lib/util/samba_util.h
index 27c2e6ed3c..f59dc70f2f 100644
--- a/lib/util/samba_util.h
+++ b/lib/util/samba_util.h
@@ -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
index 0000000000..3a5a3132f9
--- /dev/null
+++ b/lib/util/tevent_debug.c
@@ -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;
+}
diff --git a/lib/util/wscript_build b/lib/util/wscript_build
index a671bc9c36..ac270ee486 100755
--- a/lib/util/wscript_build
+++ b/lib/util/wscript_build
@@ -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,
diff --git a/source3/Makefile.in b/source3/Makefile.in
index 651d286420..e27875f6ac 100644
--- a/source3/Makefile.in
+++ b/source3/Makefile.in
@@ -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 \