X-Git-Url: http://git.tuebingen.mpg.de/?p=paraslash.git;a=blobdiff_plain;f=daemon.c;h=bfa81487430f62dc7417db6ba6e0c6d53c008051;hp=ddfe680cebc63dc1c7af89fde333c665873765eb;hb=99f21f0b6ecf29f949cdbce285e241a2e3ef3093;hpb=2031b9cab9304b02c0372f73eef54d9501277031 diff --git a/daemon.c b/daemon.c index ddfe680c..bfa81487 100644 --- a/daemon.c +++ b/daemon.c @@ -31,6 +31,12 @@ struct daemon { /** Used for colored log messages. */ char log_colors[NUM_LOGLEVELS][COLOR_MAXLEN]; char *old_cwd; + /* + * If these pointers are non-NULL, the functions are called from + * daemon_log() before and after writing each log message. + */ + void (*pre_log_hook)(void); + void (*post_log_hook)(void); }; static struct daemon the_daemon, *me = &the_daemon; @@ -140,6 +146,12 @@ void daemon_set_loglevel(const char *loglevel) me->loglevel = ret; } +void daemon_set_hooks(void (*pre_log_hook)(void), void (*post_log_hook)(void)) +{ + me->pre_log_hook = pre_log_hook; + me->post_log_hook = post_log_hook; +} + /** * Set one of the daemon config flags. * @@ -409,6 +421,8 @@ __printf_2_3 void daemon_log(int ll, const char* fmt,...) return; fp = me->logfile? me->logfile : stderr; + if (me->pre_log_hook) + me->pre_log_hook(); color = daemon_test_flag(DF_COLOR_LOG)? me->log_colors[ll] : NULL; if (color) fprintf(fp, "%s", color); @@ -441,4 +455,6 @@ __printf_2_3 void daemon_log(int ll, const char* fmt,...) va_end(argp); if (color) fprintf(fp, "%s", COLOR_RESET); + if (me->post_log_hook) + me->post_log_hook(); }