24 #include "JackError.h"    25 #include "JackGlobals.h"    26 #include "JackMessageBuffer.h"    30 static bool change_thread_log_function(jack_log_function_t log_function)
    32     return (jack_tls_get(JackGlobals::fKeyLogFunction) == NULL
    33             && jack_tls_set(JackGlobals::fKeyLogFunction, (
void*)log_function));
    36 SERVER_EXPORT 
int set_threaded_log_function()
    38     return change_thread_log_function(JackMessageBufferAdd);
    41 void jack_log_function(
int level, 
const char *message)
    43     void (* log_callback)(
const char *);
    57     log_callback(message);
    60 static void jack_format_and_log(
int level, 
const char *prefix, 
const char *fmt, va_list ap)
    64     jack_log_function_t log_function;
    69         memcpy(buffer, prefix, len);
    74     vsnprintf(buffer + len, 
sizeof(buffer) - len, fmt, ap);
    76     log_function = (jack_log_function_t)jack_tls_get(JackGlobals::fKeyLogFunction);
    79     if (log_function == NULL)
    81         log_function = jack_log_function;
    89     log_function(level, buffer);
    96         jack_format_and_log(LOG_LEVEL_ERROR, NULL, fmt, ap);
   104         jack_format_and_log(LOG_LEVEL_INFO, NULL, fmt, ap);
   110         if (JackGlobals::fVerbose) {
   113         jack_format_and_log(LOG_LEVEL_INFO, 
"Jack: ", fmt, ap);
   118 SERVER_EXPORT 
void default_jack_error_callback(
const char *desc)
   120     fprintf(stderr, 
"%s\n", desc);
   124 SERVER_EXPORT 
void default_jack_info_callback(
const char *desc)
   126     fprintf(stdout, 
"%s\n", desc);
   130 SERVER_EXPORT 
void silent_jack_error_callback(
const char *desc)
   133 SERVER_EXPORT 
void silent_jack_info_callback(
const char *desc)
 
SERVER_EXPORT void(* jack_info_callback)(const char *desc)
SERVER_EXPORT void jack_error(const char *fmt,...)
SERVER_EXPORT void jack_info(const char *fmt,...)
SERVER_EXPORT void(* jack_error_callback)(const char *desc)
SERVER_EXPORT void jack_log(const char *fmt,...)