diff options
author | Simo Sorce <idra@samba.org> | 2008-06-14 13:00:53 -0400 |
---|---|---|
committer | Simo Sorce <idra@samba.org> | 2008-06-14 13:00:53 -0400 |
commit | 2daf2897d5c70c0efbeba9b827c62700b9a9537c (patch) | |
tree | d0236f23f6774f775d2a150361c2f5a9674eaf06 /source4/lib/events/events_s4.c | |
parent | 929adc9efa5cf985f0585214d30d18521aa1a821 (diff) | |
download | samba-2daf2897d5c70c0efbeba9b827c62700b9a9537c.tar.gz samba-2daf2897d5c70c0efbeba9b827c62700b9a9537c.tar.bz2 samba-2daf2897d5c70c0efbeba9b827c62700b9a9537c.zip |
Use a custom init function for samba4 that sets a samba4
specific debug function.
By default do not debug, this is the most appropriate action for a library
as we cannot assume what stderr is use for in the main app.
The main app is responsible to set ev_debug_stderr if they so desire.
(This used to be commit e566a2f308ac6fb4b526a744f7059b565670aea5)
Diffstat (limited to 'source4/lib/events/events_s4.c')
-rw-r--r-- | source4/lib/events/events_s4.c | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/source4/lib/events/events_s4.c b/source4/lib/events/events_s4.c index edf92dba22..134f899cf8 100644 --- a/source4/lib/events/events_s4.c +++ b/source4/lib/events/events_s4.c @@ -55,3 +55,54 @@ NTSTATUS s4_events_aio_init(void) return NT_STATUS_OK; } #endif + +/* + this is used to catch debug messages from events +*/ +static void ev_wrap_debug(void *context, enum ev_debug_level level, + const char *fmt, va_list ap) PRINTF_ATTRIBUTE(3,0); + +static void ev_wrap_debug(void *context, enum ev_debug_level level, + const char *fmt, va_list ap) +{ + int samba_level = -1; + char *s = NULL; + switch (level) { + case EV_DEBUG_FATAL: + samba_level = 0; + break; + case EV_DEBUG_ERROR: + samba_level = 1; + break; + case EV_DEBUG_WARNING: + samba_level = 2; + break; + case EV_DEBUG_TRACE: + samba_level = 5; + break; + + }; + vasprintf(&s, fmt, ap); + if (!s) return; + DEBUG(samba_level, ("events: %s\n", s)); + free(s); +} + +/* + create a event_context structure. This must be the first events + call, and all subsequent calls pass this event_context as the first + element. Event handlers also receive this as their first argument. + + This samba4 specific call sets the samba4 debug handler. +*/ +struct event_context *s4_event_context_init(TALLOC_CTX *mem_ctx) +{ + struct event_context *ev; + + ev = event_context_init_byname(mem_ctx, NULL); + if (ev) { + ev_set_debug(ev, ev_wrap_debug, NULL); + } + return ev; +} + |