From: pk910 Date: Fri, 14 Mar 2014 23:21:12 +0000 (+0100) Subject: [IOMultiplexerV2] added callback system for IOLog X-Git-Url: http://git.pk910.de/?p=IOMultiplexer.git;a=commitdiff_plain;h=1a3d54604fc42da71cfe3cff029a20ad96e1b5fb [IOMultiplexerV2] added callback system for IOLog --- diff --git a/src/IOHandler/IOLog.c b/src/IOHandler/IOLog.c index 20637c1..2bc6deb 100644 --- a/src/IOHandler/IOLog.c +++ b/src/IOHandler/IOLog.c @@ -21,6 +21,13 @@ #include #include +#include + +struct iolog_callback_entry { + iolog_callback *callback; + struct iolog_callback_entry *next; +}; +static struct iolog_callback_entry *iolog_callbacks = NULL; void iolog_init() { @@ -40,9 +47,18 @@ void iolog_trigger(enum IOLogType type, char *text, ...) { logBuf[pos] = '\n'; logBuf[pos+1] = '\0'; - printf("%s", logBuf); + struct iolog_callback_entry *callback; + for(callback = iolog_callbacks; callback; callback = callback->next) + callback->callback(type, logBuf); } void iolog_register_callback(iolog_callback *callback) { - + struct iolog_callback_entry *logcb = malloc(sizeof(*logcb)); + if(!logcb) { + iolog_trigger(IOLOG_ERROR, "Failed to allocate memory for iolog_callback_entry in %s:%d", __FILE__, __LINE__); + return; + } + logcb->callback = callback; + logcb->next = iolog_callbacks; + iolog_callbacks = logcb; }