void raptor_log_error_varargs(raptor_world* world, raptor_log_level level, raptor_locator* locator, const char* message, va_list arguments) { char *buffer = NULL; size_t length; if(level == RAPTOR_LOG_LEVEL_NONE) return; if(world->internal_ignore_errors) return; length = raptor_vasprintf(&buffer, message, arguments); if(!buffer) { if(locator && world) { raptor_locator_print(locator, stderr); fputc(' ', stderr); } fputs("raptor ", stderr); fputs(raptor_log_level_labels[level], stderr); fputs(" - ", stderr); vfprintf(stderr, message, arguments); fputc('\n', stderr); return; } if(length >= 1 && buffer[length-1] == '\n') buffer[length-1]='\0'; raptor_log_error(world, level, locator, buffer); RAPTOR_FREE(char*, 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 = NULL; if(raptor_vasprintf(&buffer, message, arguments) < 0) buffer = NULL; 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(char*, buffer); }
/** * raptor_vsnprintf: * @format: printf-style format string * @arguments: variable arguments list * * Format output for a variable arguments list into a newly allocated buffer * * @Deprecated: This does not actually conform to vsnprintf's calling * convention and does not return the allocated buffer length. Use * raptor_vsnprintf2() or raptor_vasprintf() instead. * * Return value: a newly allocated string as the formatted result or NULL on failure **/ char* raptor_vsnprintf(const char *format, va_list arguments) { int len; char *buffer = NULL; RAPTOR_ASSERT_OBJECT_POINTER_RETURN_VALUE(format, char*, NULL); len = raptor_vasprintf(&buffer, format, arguments); if(len < 0) return NULL; return buffer; }