From 1a3d54604fc42da71cfe3cff029a20ad96e1b5fb Mon Sep 17 00:00:00 2001 From: pk910 Date: Sat, 15 Mar 2014 00:21:12 +0100 Subject: [PATCH] [IOMultiplexerV2] added callback system for IOLog --- src/IOHandler/IOLog.c | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) 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; } -- 2.20.1