X-Git-Url: http://git.pk910.de/?p=NextIRCd.git;a=blobdiff_plain;f=src%2FIOHandler%2FIOLog.c;h=2bc6deb4ed425d8a36607df299689585b30a3d29;hp=20637c14578f5f5585a2564d331dc713831432b2;hb=1a3d54604fc42da71cfe3cff029a20ad96e1b5fb;hpb=d1112e33f9cd36560650f28a77d8d0b9716a1cea 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; }