summaryrefslogtreecommitdiff
path: root/source4/lib/events/events_debug.c
diff options
context:
space:
mode:
authorSimo Sorce <idra@samba.org>2008-06-14 11:23:31 -0400
committerSimo Sorce <idra@samba.org>2008-06-14 11:59:19 -0400
commit2aba4107915611b223daa8c27c52352f57b25bbc (patch)
treeb97a1f2408c3101ca8e66faa6851848d829e4f5f /source4/lib/events/events_debug.c
parent3443954c2bf971c3506aa40667989a10d5769706 (diff)
downloadsamba-2aba4107915611b223daa8c27c52352f57b25bbc.tar.gz
samba-2aba4107915611b223daa8c27c52352f57b25bbc.tar.bz2
samba-2aba4107915611b223daa8c27c52352f57b25bbc.zip
This patch make it possible to build the events library completely
standalone with no ties to internal samba4 functions Samba4 itself just uses the plain library, compatibility glue is in events_s4.c only (This used to be commit 7109b6a5a19eb2dbef4259104858b171298bad6e)
Diffstat (limited to 'source4/lib/events/events_debug.c')
-rw-r--r--source4/lib/events/events_debug.c78
1 files changed, 78 insertions, 0 deletions
diff --git a/source4/lib/events/events_debug.c b/source4/lib/events/events_debug.c
new file mode 100644
index 0000000000..70b85d47e4
--- /dev/null
+++ b/source4/lib/events/events_debug.c
@@ -0,0 +1,78 @@
+/*
+ Unix SMB/CIFS implementation.
+
+ Copyright (C) Andrew Tridgell 2005
+ Copyright (C) Jelmer Vernooij 2005
+
+ 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 "replace.h"
+#include "events.h"
+#include "events_internal.h"
+
+/********************************************************************
+ * Debug wrapper functions, modeled (with lot's of code copied as is)
+ * after the ev debug wrapper functions
+ ********************************************************************/
+
+/*
+ this allows the user to choose their own debug function
+*/
+int ev_set_debug(struct event_context *ev,
+ void (*debug)(void *context, enum ev_debug_level level,
+ const char *fmt, va_list ap),
+ void *context)
+{
+ ev->debug_ops.debug = debug;
+ ev->debug_ops.context = context;
+ return 0;
+}
+
+/*
+ debug function for ev_set_debug_stderr
+*/
+static void ev_debug_stderr(void *context, enum ev_debug_level level,
+ const char *fmt, va_list ap) PRINTF_ATTRIBUTE(3,0);
+static void ev_debug_stderr(void *context, enum ev_debug_level level,
+ const char *fmt, va_list ap)
+{
+ if (level <= EV_DEBUG_WARNING) {
+ vfprintf(stderr, fmt, ap);
+ }
+}
+
+/*
+ convenience function to setup debug messages on stderr
+ messages of level EV_DEBUG_WARNING and higher are printed
+*/
+int ev_set_debug_stderr(struct event_context *ev)
+{
+ return ev_set_debug(ev, ev_debug_stderr, ev);
+}
+
+/*
+ log a message
+*/
+void ev_debug(struct event_context *ev, enum ev_debug_level level, const char *fmt, ...)
+{
+ va_list ap;
+ if (ev->debug_ops.debug == NULL) {
+ ev_set_debug_stderr(ev);
+ }
+ va_start(ap, fmt);
+ ev->debug_ops.debug(ev->debug_ops.context, level, fmt, ap);
+ va_end(ap);
+}
+