void raptor_log_error_varargs(raptor_log_level level, raptor_message_handler handler, void* handler_data, raptor_locator* locator, const char* message, va_list arguments) { char *buffer; size_t length; if(level == RAPTOR_LOG_LEVEL_NONE) return; buffer=raptor_vsnprintf(message, arguments); if(!buffer) { if(locator) { raptor_print_locator(stderr, locator); fputc(' ', stderr); } fputs("raptor ", stderr); fputs(raptor_log_level_labels[level], stderr); fputs(" - ", stderr); vfprintf(stderr, message, arguments); fputc('\n', stderr); return; } length=strlen(buffer); if(buffer[length-1]=='\n') buffer[length-1]='\0'; raptor_log_error(level, handler, handler_data, locator, buffer); RAPTOR_FREE(cstring, buffer); }
void rasqal_log_error_varargs(rasqal_world* world, raptor_log_level level, raptor_locator* locator, const char* message, va_list arguments) { char *buffer; size_t length; raptor_log_message logmsg; raptor_log_handler handler = world->log_handler; void* handler_data = world->log_handler_user_data; if(level == RAPTOR_LOG_LEVEL_NONE) return; buffer=raptor_vsnprintf(message, arguments); if(!buffer) { if(locator) { raptor_locator_print(locator, stderr); fputc(' ', stderr); } fputs("rasqal ", stderr); fputs(rasqal_log_level_labels[level], stderr); fputs(" - ", stderr); vfprintf(stderr, message, arguments); fputc('\n', stderr); return; } length=strlen(buffer); if(buffer[length-1]=='\n') buffer[length-1]='\0'; if(handler) { /* This is the single place in rasqal that the user error handler * functions are called. */ /* raptor2 raptor_log_handler */ logmsg.code = -1; /* no information to put as code */ logmsg.level = level; logmsg.locator = locator; logmsg.text = buffer; handler(handler_data, &logmsg); } else { if(locator) { raptor_locator_print(locator, stderr); fputc(' ', stderr); } fputs("rasqal ", stderr); fputs(rasqal_log_level_labels[level], stderr); fputs(" - ", stderr); fputs(buffer, stderr); fputc('\n', stderr); } RASQAL_FREE(cstring, buffer); }