static void raptor_libxml_error_common(void* user_data, const char *msg, va_list args, const char *prefix, int is_fatal) { raptor_sax2* sax2 = NULL; int prefix_length = strlen(prefix); int length; char *nmsg; size_t msg_len; raptor_world* world = NULL; raptor_locator* locator = NULL; if(user_data) { /* Work around libxml2 bug - sometimes the sax2->error * returns a user_data, sometimes the userdata */ if(((raptor_sax2*)user_data)->magic == RAPTOR_LIBXML_MAGIC) sax2 = (raptor_sax2*)user_data; else /* user_data is not userData */ sax2 = (raptor_sax2*)((xmlParserCtxtPtr)user_data)->userData; } if(sax2) { world = sax2->world; locator = sax2->locator; if(locator) raptor_libxml_update_document_locator(sax2, sax2->locator); } msg_len = strlen(msg); length = prefix_length + msg_len + 1; nmsg = (char*)RAPTOR_MALLOC(cstring, length); if(nmsg) { memcpy(nmsg, prefix, prefix_length); /* Do not copy NUL */ memcpy(nmsg + prefix_length, msg, msg_len + 1); /* Copy NUL */ if(nmsg[length-1] == '\n') nmsg[length-1]='\0'; } if(is_fatal) raptor_log_error_varargs(world, RAPTOR_LOG_LEVEL_FATAL, locator, nmsg ? nmsg : msg, args); else raptor_log_error_varargs(world, RAPTOR_LOG_LEVEL_ERROR, locator, nmsg ? nmsg : msg, args); if(nmsg) RAPTOR_FREE(cstring,nmsg); }
static void raptor_libxml_error_common(void* user_data, const char *msg, va_list args, const char *prefix, int is_fatal) { raptor_sax2* sax2=NULL; int prefix_length=strlen(prefix); int length; char *nmsg; if(user_data) { /* Work around libxml2 bug - sometimes the sax2->error * returns a user_data, sometimes the userdata */ if(((raptor_sax2*)user_data)->magic == RAPTOR_LIBXML_MAGIC) sax2=(raptor_sax2*)user_data; else /* user_data is not userData */ sax2=(raptor_sax2*)((xmlParserCtxtPtr)user_data)->userData; } if(sax2->locator) raptor_libxml_update_document_locator(sax2, sax2->locator); length=prefix_length+strlen(msg)+1; nmsg=(char*)RAPTOR_MALLOC(cstring, length); if(nmsg) { strcpy(nmsg, prefix); strcpy(nmsg+prefix_length, msg); if(nmsg[length-1]=='\n') nmsg[length-1]='\0'; } if(is_fatal) raptor_log_error_varargs(RAPTOR_LOG_LEVEL_FATAL, sax2->error_handlers->handlers[RAPTOR_LOG_LEVEL_FATAL].handler, sax2->error_handlers->handlers[RAPTOR_LOG_LEVEL_FATAL].user_data, sax2->locator, nmsg ? nmsg : msg, args); else raptor_log_error_varargs(RAPTOR_LOG_LEVEL_ERROR, sax2->error_handlers->handlers[RAPTOR_LOG_LEVEL_ERROR].handler, sax2->error_handlers->handlers[RAPTOR_LOG_LEVEL_ERROR].user_data, sax2->locator, nmsg ? nmsg : msg, args); if(nmsg) RAPTOR_FREE(cstring,nmsg); }
void raptor_libxml_validation_warning(void* user_data, const char *msg, ...) { va_list args; raptor_sax2* sax2 = (raptor_sax2*)user_data; int prefix_length = strlen(xml_validation_warning_prefix); int length; char *nmsg; size_t msg_len; va_start(args, msg); raptor_libxml_update_document_locator(sax2, sax2->locator); msg_len = strlen(msg); length = prefix_length + msg_len + 1; nmsg = (char*)RAPTOR_MALLOC(cstring, length); if(nmsg) { memcpy(nmsg, xml_validation_warning_prefix, prefix_length); /* Do not copy NUL */ memcpy(nmsg + prefix_length, msg, msg_len + 1); /* Copy NUL */ if(nmsg[length-2] == '\n') nmsg[length-2]='\0'; } raptor_log_error_varargs(sax2->world, RAPTOR_LOG_LEVEL_WARN, sax2->locator, nmsg ? nmsg : msg, args); if(nmsg) RAPTOR_FREE(cstring,nmsg); va_end(args); }
void raptor_libxml_generic_error(void* user_data, const char *msg, ...) { raptor_world* world = (raptor_world*)user_data; va_list args; const char* prefix = xml_generic_error_prefix; int prefix_length = strlen(prefix); int length; char *nmsg; size_t msg_len; va_start(args, msg); msg_len = strlen(msg); length = prefix_length + msg_len + 1; nmsg = (char*)RAPTOR_MALLOC(cstring, length); if(nmsg) { memcpy(nmsg, prefix, prefix_length); /* Do not copy NUL */ memcpy(nmsg + prefix_length, msg, msg_len + 1); /* Copy NUL */ if(nmsg[length-1] == '\n') nmsg[length-1]='\0'; } raptor_log_error_varargs(world, RAPTOR_LOG_LEVEL_ERROR, /* locator */ NULL, nmsg ? nmsg : msg, args); if(nmsg) RAPTOR_FREE(cstring,nmsg); va_end(args); }
void raptor_libxml_validation_warning(void* user_data, const char *msg, ...) { va_list args; raptor_sax2* sax2=(raptor_sax2*)user_data; int prefix_length=strlen(xml_validation_warning_prefix); int length; char *nmsg; va_start(args, msg); raptor_libxml_update_document_locator(sax2, sax2->locator); length=prefix_length+strlen(msg)+1; nmsg=(char*)RAPTOR_MALLOC(cstring, length); if(nmsg) { strcpy(nmsg, xml_validation_warning_prefix); strcpy(nmsg+prefix_length, msg); if(nmsg[length-2]=='\n') nmsg[length-2]='\0'; } raptor_log_error_varargs(RAPTOR_LOG_LEVEL_WARNING, sax2->error_handlers->handlers[RAPTOR_LOG_LEVEL_WARNING].handler, sax2->error_handlers->handlers[RAPTOR_LOG_LEVEL_WARNING].user_data, sax2->locator, nmsg ? nmsg : msg, args); if(nmsg) RAPTOR_FREE(cstring,nmsg); va_end(args); }
void raptor_libxml_generic_error(void* user_data, const char *msg, ...) { raptor_error_handlers* error_handlers=(raptor_error_handlers*)user_data; va_list args; const char* prefix=xml_generic_error_prefix; int prefix_length=strlen(prefix); int length; char *nmsg; va_start(args, msg); /* no SAX2 and locator from error_handlers */ length=prefix_length+strlen(msg)+1; nmsg=(char*)RAPTOR_MALLOC(cstring, length); if(nmsg) { strcpy(nmsg, prefix); strcpy(nmsg+prefix_length, msg); if(nmsg[length-1]=='\n') nmsg[length-1]='\0'; } raptor_log_error_varargs(RAPTOR_LOG_LEVEL_ERROR, error_handlers->handlers[RAPTOR_LOG_LEVEL_ERROR].handler, error_handlers->handlers[RAPTOR_LOG_LEVEL_ERROR].user_data, error_handlers->locator, nmsg ? nmsg : msg, args); if(nmsg) RAPTOR_FREE(cstring,nmsg); va_end(args); }
void raptor_log_error_formatted(raptor_world* world, raptor_log_level level, raptor_locator* locator, const char* message, ...) { va_list arguments; va_start(arguments, message); raptor_log_error_varargs(world, level, locator, message, arguments); va_end(arguments); }
void raptor_www_error(raptor_www* www, const char *message, ...) { va_list arguments; va_start(arguments, message); raptor_log_error_varargs(www->world, RAPTOR_LOG_LEVEL_ERROR, &www->locator, message, arguments); va_end(arguments); }
/* * raptor_sax2_simple_error - Error from a sax2 - Internal * * Matches the raptor_simple_message_handler API but calls * the sax2 error_handler */ static void raptor_sax2_simple_error(void* user_data, const char *message, ...) { raptor_sax2* sax2 = (raptor_sax2*)user_data; va_list arguments; va_start(arguments, message); if(sax2) { raptor_log_error_varargs(sax2->world, RAPTOR_LOG_LEVEL_ERROR, sax2->locator, message, arguments); } va_end(arguments); }
static void raptor_libxml_warning(void* user_data, const char *msg, ...) { raptor_sax2* sax2 = NULL; va_list args; int prefix_length = strlen(xml_warning_prefix); int length; char *nmsg; size_t msg_len; /* Work around libxml2 bug - sometimes the sax2->error * returns a ctx, sometimes the userdata */ if(((raptor_sax2*)user_data)->magic == RAPTOR_LIBXML_MAGIC) sax2 = (raptor_sax2*)user_data; else /* user_data is not userData */ sax2 = (raptor_sax2*)((xmlParserCtxtPtr)user_data)->userData; va_start(args, msg); raptor_libxml_update_document_locator(sax2, sax2->locator); msg_len = strlen(msg); length = prefix_length + msg_len + 1; nmsg = (char*)RAPTOR_MALLOC(cstring, length); if(nmsg) { memcpy(nmsg, xml_warning_prefix, prefix_length); /* Do not copy NUL */ memcpy(nmsg + prefix_length, msg, msg_len + 1); /* Copy NUL */ if(nmsg[length-2] == '\n') nmsg[length-2]='\0'; } raptor_log_error_varargs(sax2->world, RAPTOR_LOG_LEVEL_WARN, sax2->locator, nmsg ? nmsg : msg, args); if(nmsg) RAPTOR_FREE(cstring,nmsg); va_end(args); }
/* * raptor_sax2_simple_error - Error from a sax2 - Internal * * Matches the raptor_simple_message_handler API but calls * the sax2 error_handler */ static void raptor_sax2_simple_error(void* user_data, const char *message, ...) { raptor_sax2* sax2=(raptor_sax2*)user_data; va_list arguments; va_start(arguments, message); if(sax2) { raptor_log_level level=RAPTOR_LOG_LEVEL_ERROR; raptor_message_handler_closure* cl; cl=&sax2->error_handlers->handlers[level]; raptor_log_error_varargs(sax2->world, level, cl->handler, cl->user_data, sax2->locator, message, arguments); } va_end(arguments); }