1ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/* 2ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * error.c: module displaying/handling XML parser errors 3ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * 4ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * See Copyright for the status of this software. 5ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * 6ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Daniel Veillard <daniel@veillard.com> 7ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */ 8ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 9ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#define IN_LIBXML 10ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#include "libxml.h" 11ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 12ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#include <string.h> 13ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#include <stdarg.h> 14ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#include <libxml/parser.h> 15ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#include <libxml/xmlerror.h> 16ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#include <libxml/xmlmemory.h> 17ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#include <libxml/globals.h> 18ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 19ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectvoid XMLCDECL xmlGenericErrorDefaultFunc (void *ctx ATTRIBUTE_UNUSED, 20ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project const char *msg, 21ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ...); 22ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 23ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#define XML_GET_VAR_STR(msg, str) { \ 24ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project int size, prev_size = -1; \ 25ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project int chars; \ 26ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project char *larger; \ 27ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project va_list ap; \ 28ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project \ 29ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project str = (char *) xmlMalloc(150); \ 30ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (str != NULL) { \ 31ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project \ 32ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project size = 150; \ 33ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project \ 3460a4c356ee9ce5e9ccb23347c0381f0436192691Patrick Scott while (size < 64000) { \ 35ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project va_start(ap, msg); \ 3694442ad4107000e6d49f9b85a46a591495a57632Selim Gurun chars = vsnprintf(str, size, msg, ap); \ 37ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project va_end(ap); \ 38ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if ((chars > -1) && (chars < size)) { \ 39ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (prev_size == chars) { \ 40ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; \ 41ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } else { \ 42ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project prev_size = chars; \ 43ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } \ 44ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } \ 45ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (chars > -1) \ 46ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project size += chars + 1; \ 47ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project else \ 48ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project size += 100; \ 49ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if ((larger = (char *) xmlRealloc(str, size)) == NULL) {\ 50ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; \ 51ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } \ 52ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project str = larger; \ 53ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project }} \ 54ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project} 55ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 56ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/************************************************************************ 5794442ad4107000e6d49f9b85a46a591495a57632Selim Gurun * * 5894442ad4107000e6d49f9b85a46a591495a57632Selim Gurun * Handling of out of context errors * 5994442ad4107000e6d49f9b85a46a591495a57632Selim Gurun * * 60ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ************************************************************************/ 61ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 62ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/** 63ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * xmlGenericErrorDefaultFunc: 64ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @ctx: an error context 65ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @msg: the message to display/transmit 66ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @...: extra parameters for the message display 6794442ad4107000e6d49f9b85a46a591495a57632Selim Gurun * 68ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Default handler for out of context error messages. 69ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */ 70ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectvoid XMLCDECL 71ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source ProjectxmlGenericErrorDefaultFunc(void *ctx ATTRIBUTE_UNUSED, const char *msg, ...) { 72ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project va_list args; 73ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 74ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (xmlGenericErrorContext == NULL) 75ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlGenericErrorContext = (void *) stderr; 76ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 77ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project va_start(args, msg); 78ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project vfprintf((FILE *)xmlGenericErrorContext, msg, args); 79ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project va_end(args); 80ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project} 81ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 82ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/** 83ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * initGenericErrorDefaultFunc: 84ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @handler: the handler 8594442ad4107000e6d49f9b85a46a591495a57632Selim Gurun * 86ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Set or reset (if NULL) the default handler for generic errors 87ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * to the builtin error function. 88ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */ 89ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectvoid 90ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source ProjectinitGenericErrorDefaultFunc(xmlGenericErrorFunc * handler) 91ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project{ 92ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (handler == NULL) 93ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlGenericError = xmlGenericErrorDefaultFunc; 94ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project else 95ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlGenericError = (*handler); 96ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project} 97ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 98ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/** 99ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * xmlSetGenericErrorFunc: 100ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @ctx: the new error handling context 101ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @handler: the new handler function 102ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * 103ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Function to reset the handler and the error context for out of 104ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * context error messages. 105ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * This simply means that @handler will be called for subsequent 106ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * error messages while not parsing nor validating. And @ctx will 107ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * be passed as first argument to @handler 108ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * One can simply force messages to be emitted to another FILE * than 109ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * stderr by setting @ctx to this file handle and @handler to NULL. 110ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * For multi-threaded applications, this must be set separately for each thread. 111ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */ 112ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectvoid 113ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source ProjectxmlSetGenericErrorFunc(void *ctx, xmlGenericErrorFunc handler) { 114ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlGenericErrorContext = ctx; 115ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (handler != NULL) 116ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlGenericError = handler; 117ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project else 118ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlGenericError = xmlGenericErrorDefaultFunc; 119ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project} 120ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 121ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/** 122ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * xmlSetStructuredErrorFunc: 123ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @ctx: the new error handling context 124ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @handler: the new handler function 125ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * 126ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Function to reset the handler and the error context for out of 127ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * context structured error messages. 128ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * This simply means that @handler will be called for subsequent 129ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * error messages while not parsing nor validating. And @ctx will 130ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * be passed as first argument to @handler 131ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * For multi-threaded applications, this must be set separately for each thread. 132ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */ 133ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectvoid 134ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source ProjectxmlSetStructuredErrorFunc(void *ctx, xmlStructuredErrorFunc handler) { 135df143a5041f03a22808b59c76698770b74692815Selim Gurun xmlStructuredErrorContext = ctx; 136ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlStructuredError = handler; 137ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project} 138ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 139ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/************************************************************************ 14094442ad4107000e6d49f9b85a46a591495a57632Selim Gurun * * 14194442ad4107000e6d49f9b85a46a591495a57632Selim Gurun * Handling of parsing errors * 14294442ad4107000e6d49f9b85a46a591495a57632Selim Gurun * * 143ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ************************************************************************/ 144ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 145ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/** 146ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * xmlParserPrintFileInfo: 147ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @input: an xmlParserInputPtr input 14894442ad4107000e6d49f9b85a46a591495a57632Selim Gurun * 149ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Displays the associated file and line informations for the current input 150ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */ 151ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 152ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectvoid 153ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source ProjectxmlParserPrintFileInfo(xmlParserInputPtr input) { 154ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (input != NULL) { 155ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (input->filename) 156ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlGenericError(xmlGenericErrorContext, 157ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project "%s:%d: ", input->filename, 158ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project input->line); 159ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project else 160ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlGenericError(xmlGenericErrorContext, 161ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project "Entity: line %d: ", input->line); 162ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 163ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project} 164ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 165ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/** 166ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * xmlParserPrintFileContext: 167ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @input: an xmlParserInputPtr input 16894442ad4107000e6d49f9b85a46a591495a57632Selim Gurun * 169ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Displays current context within the input content for error tracking 170ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */ 171ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 172ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic void 17394442ad4107000e6d49f9b85a46a591495a57632Selim GurunxmlParserPrintFileContextInternal(xmlParserInputPtr input , 174ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlGenericErrorFunc channel, void *data ) { 175ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project const xmlChar *cur, *base; 176ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project unsigned int n, col; /* GCC warns if signed, because compared with sizeof() */ 177ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlChar content[81]; /* space for 80 chars + line terminator */ 178ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlChar *ctnt; 179ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 180ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (input == NULL) return; 181ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project cur = input->cur; 182ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project base = input->base; 183ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project /* skip backwards over any end-of-lines */ 184ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project while ((cur > base) && ((*(cur) == '\n') || (*(cur) == '\r'))) { 185ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project cur--; 186ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 187ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project n = 0; 188ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project /* search backwards for beginning-of-line (to max buff size) */ 18994442ad4107000e6d49f9b85a46a591495a57632Selim Gurun while ((n++ < (sizeof(content)-1)) && (cur > base) && 19094442ad4107000e6d49f9b85a46a591495a57632Selim Gurun (*(cur) != '\n') && (*(cur) != '\r')) 191ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project cur--; 192ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if ((*(cur) == '\n') || (*(cur) == '\r')) cur++; 193ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project /* calculate the error position in terms of the current position */ 194ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project col = input->cur - cur; 195ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project /* search forward for end-of-line (to max buff size) */ 196ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project n = 0; 197ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ctnt = content; 198ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project /* copy selected text to our buffer */ 19994442ad4107000e6d49f9b85a46a591495a57632Selim Gurun while ((*cur != 0) && (*(cur) != '\n') && 20094442ad4107000e6d49f9b85a46a591495a57632Selim Gurun (*(cur) != '\r') && (n < sizeof(content)-1)) { 201ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project *ctnt++ = *cur++; 202ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project n++; 203ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 204ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project *ctnt = 0; 205ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project /* print out the selected text */ 206ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project channel(data ,"%s\n", content); 207ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project /* create blank line with problem pointer */ 208ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project n = 0; 209ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ctnt = content; 210ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project /* (leave buffer space for pointer + line terminator) */ 211ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project while ((n<col) && (n++ < sizeof(content)-2) && (*ctnt != 0)) { 212ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (*(ctnt) != '\t') 213ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project *(ctnt) = ' '; 214ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ctnt++; 215ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 216ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project *ctnt++ = '^'; 217ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project *ctnt = 0; 218ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project channel(data ,"%s\n", content); 219ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project} 220ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 221ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/** 222ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * xmlParserPrintFileContext: 223ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @input: an xmlParserInputPtr input 22494442ad4107000e6d49f9b85a46a591495a57632Selim Gurun * 225ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Displays current context within the input content for error tracking 226ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */ 227ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectvoid 228ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source ProjectxmlParserPrintFileContext(xmlParserInputPtr input) { 229ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlParserPrintFileContextInternal(input, xmlGenericError, 230ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlGenericErrorContext); 231ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project} 232ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 233ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/** 234ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * xmlReportError: 235ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @err: the error 236ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @ctx: the parser context or NULL 237ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @str: the formatted error message 238ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * 239ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Report an erro with its context, replace the 4 old error/warning 240ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * routines. 241ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */ 242ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectstatic void 243ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source ProjectxmlReportError(xmlErrorPtr err, xmlParserCtxtPtr ctxt, const char *str, 244ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlGenericErrorFunc channel, void *data) 245ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project{ 246ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project char *file = NULL; 247ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project int line = 0; 248ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project int code = -1; 249ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project int domain; 250ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project const xmlChar *name = NULL; 251ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlNodePtr node; 252ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlErrorLevel level; 253ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlParserInputPtr input = NULL; 254ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlParserInputPtr cur = NULL; 255ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 256ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (err == NULL) 257ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return; 258ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 259ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (channel == NULL) { 260ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project channel = xmlGenericError; 261ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project data = xmlGenericErrorContext; 262ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 263ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project file = err->file; 264ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project line = err->line; 265ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project code = err->code; 266ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project domain = err->domain; 267ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project level = err->level; 268ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project node = err->node; 269ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 270ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (code == XML_ERR_OK) 271ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return; 272ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 273ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if ((node != NULL) && (node->type == XML_ELEMENT_NODE)) 274ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project name = node->name; 275ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 276ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project /* 277ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Maintain the compatibility with the legacy error handling 278ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */ 279ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (ctxt != NULL) { 280ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project input = ctxt->input; 281ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if ((input != NULL) && (input->filename == NULL) && 282ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project (ctxt->inputNr > 1)) { 283ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project cur = input; 284ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project input = ctxt->inputTab[ctxt->inputNr - 2]; 285ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 286ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (input != NULL) { 287ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (input->filename) 288ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project channel(data, "%s:%d: ", input->filename, input->line); 289ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project else if ((line != 0) && (domain == XML_FROM_PARSER)) 290ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project channel(data, "Entity: line %d: ", input->line); 291ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 292ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } else { 293ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (file != NULL) 294ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project channel(data, "%s:%d: ", file, line); 29594442ad4107000e6d49f9b85a46a591495a57632Selim Gurun else if ((line != 0) && 29694442ad4107000e6d49f9b85a46a591495a57632Selim Gurun ((domain == XML_FROM_PARSER) || (domain == XML_FROM_SCHEMASV)|| 29794442ad4107000e6d49f9b85a46a591495a57632Selim Gurun (domain == XML_FROM_SCHEMASP)||(domain == XML_FROM_DTD) || 29894442ad4107000e6d49f9b85a46a591495a57632Selim Gurun (domain == XML_FROM_RELAXNGP)||(domain == XML_FROM_RELAXNGV))) 299ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project channel(data, "Entity: line %d: ", line); 300ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 301ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (name != NULL) { 302ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project channel(data, "element %s: ", name); 303ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 304ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project switch (domain) { 305ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_FROM_PARSER: 306ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project channel(data, "parser "); 307ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 308ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_FROM_NAMESPACE: 309ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project channel(data, "namespace "); 310ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 311ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_FROM_DTD: 312ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_FROM_VALID: 313ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project channel(data, "validity "); 314ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 315ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_FROM_HTML: 316ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project channel(data, "HTML parser "); 317ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 318ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_FROM_MEMORY: 319ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project channel(data, "memory "); 320ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 321ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_FROM_OUTPUT: 322ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project channel(data, "output "); 323ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 324ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_FROM_IO: 325ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project channel(data, "I/O "); 326ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 327ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_FROM_XINCLUDE: 328ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project channel(data, "XInclude "); 329ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 330ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_FROM_XPATH: 331ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project channel(data, "XPath "); 332ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 333ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_FROM_XPOINTER: 334ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project channel(data, "parser "); 335ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 336ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_FROM_REGEXP: 337ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project channel(data, "regexp "); 338ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 339ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_FROM_MODULE: 340ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project channel(data, "module "); 341ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 342ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_FROM_SCHEMASV: 343ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project channel(data, "Schemas validity "); 344ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 345ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_FROM_SCHEMASP: 346ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project channel(data, "Schemas parser "); 347ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 348ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_FROM_RELAXNGP: 349ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project channel(data, "Relax-NG parser "); 350ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 351ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_FROM_RELAXNGV: 352ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project channel(data, "Relax-NG validity "); 353ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 354ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_FROM_CATALOG: 355ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project channel(data, "Catalog "); 356ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 357ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_FROM_C14N: 358ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project channel(data, "C14N "); 359ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 360ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_FROM_XSLT: 361ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project channel(data, "XSLT "); 362ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 363ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_FROM_I18N: 364ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project channel(data, "encoding "); 365ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 36694442ad4107000e6d49f9b85a46a591495a57632Selim Gurun case XML_FROM_SCHEMATRONV: 36794442ad4107000e6d49f9b85a46a591495a57632Selim Gurun channel(data, "schematron "); 36894442ad4107000e6d49f9b85a46a591495a57632Selim Gurun break; 36994442ad4107000e6d49f9b85a46a591495a57632Selim Gurun case XML_FROM_BUFFER: 37094442ad4107000e6d49f9b85a46a591495a57632Selim Gurun channel(data, "internal buffer "); 37194442ad4107000e6d49f9b85a46a591495a57632Selim Gurun break; 37294442ad4107000e6d49f9b85a46a591495a57632Selim Gurun case XML_FROM_URI: 37394442ad4107000e6d49f9b85a46a591495a57632Selim Gurun channel(data, "URI "); 37494442ad4107000e6d49f9b85a46a591495a57632Selim Gurun break; 375ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project default: 376ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 377ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 378ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project switch (level) { 379ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_ERR_NONE: 380ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project channel(data, ": "); 381ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 382ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_ERR_WARNING: 383ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project channel(data, "warning : "); 384ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 385ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_ERR_ERROR: 386ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project channel(data, "error : "); 387ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 388ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project case XML_ERR_FATAL: 389ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project channel(data, "error : "); 390ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 391ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 392ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (str != NULL) { 393ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project int len; 394ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project len = xmlStrlen((const xmlChar *)str); 395ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if ((len > 0) && (str[len - 1] != '\n')) 396ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project channel(data, "%s\n", str); 397ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project else 398ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project channel(data, "%s", str); 399ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } else { 400ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project channel(data, "%s\n", "out of memory error"); 401ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 402ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 403ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (ctxt != NULL) { 404ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlParserPrintFileContextInternal(input, channel, data); 405ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (cur != NULL) { 406ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (cur->filename) 407ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project channel(data, "%s:%d: \n", cur->filename, cur->line); 408ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project else if ((line != 0) && (domain == XML_FROM_PARSER)) 409ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project channel(data, "Entity: line %d: \n", cur->line); 410ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlParserPrintFileContextInternal(cur, channel, data); 411ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 412ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 413ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if ((domain == XML_FROM_XPATH) && (err->str1 != NULL) && 414ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project (err->int1 < 100) && 415ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project (err->int1 < xmlStrlen((const xmlChar *)err->str1))) { 416ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlChar buf[150]; 417ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project int i; 418ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 419ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project channel(data, "%s\n", err->str1); 420ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project for (i=0;i < err->int1;i++) 421ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project buf[i] = ' '; 422ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project buf[i++] = '^'; 423ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project buf[i] = 0; 424ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project channel(data, "%s\n", buf); 425ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 426ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project} 427ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 428ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/** 429ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * __xmlRaiseError: 430ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @schannel: the structured callback channel 431ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @channel: the old callback channel 432ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @data: the callback data 433ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @ctx: the parser context or NULL 434ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @ctx: the parser context or NULL 435ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @domain: the domain for the error 436ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @code: the code for the error 437ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @level: the xmlErrorLevel for the error 438ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @file: the file source of the error (or NULL) 439ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @line: the line of the error or 0 if N/A 440ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @str1: extra string info 441ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @str2: extra string info 442ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @str3: extra string info 443ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @int1: extra int info 44494442ad4107000e6d49f9b85a46a591495a57632Selim Gurun * @col: column number of the error or 0 if N/A 445ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @msg: the message to display/transmit 446ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @...: extra parameters for the message display 447ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * 448ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Update the appropriate global or contextual error structure, 449ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * then forward the error message down the parser or generic 450ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * error callback handler 451ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */ 452ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectvoid XMLCDECL 453ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project__xmlRaiseError(xmlStructuredErrorFunc schannel, 454ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlGenericErrorFunc channel, void *data, void *ctx, 455ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project void *nod, int domain, int code, xmlErrorLevel level, 456ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project const char *file, int line, const char *str1, 457ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project const char *str2, const char *str3, int int1, int col, 458ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project const char *msg, ...) 459ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project{ 460ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlParserCtxtPtr ctxt = NULL; 461ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlNodePtr node = (xmlNodePtr) nod; 462ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project char *str = NULL; 463ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlParserInputPtr input = NULL; 464ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlErrorPtr to = &xmlLastError; 465ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlNodePtr baseptr = NULL; 466ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 467df143a5041f03a22808b59c76698770b74692815Selim Gurun if (code == XML_ERR_OK) 468df143a5041f03a22808b59c76698770b74692815Selim Gurun return; 469ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if ((xmlGetWarningsDefaultValue == 0) && (level == XML_ERR_WARNING)) 470ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return; 471ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if ((domain == XML_FROM_PARSER) || (domain == XML_FROM_HTML) || 472ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project (domain == XML_FROM_DTD) || (domain == XML_FROM_NAMESPACE) || 473ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project (domain == XML_FROM_IO) || (domain == XML_FROM_VALID)) { 474ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ctxt = (xmlParserCtxtPtr) ctx; 475ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if ((schannel == NULL) && (ctxt != NULL) && (ctxt->sax != NULL) && 476df143a5041f03a22808b59c76698770b74692815Selim Gurun (ctxt->sax->initialized == XML_SAX2_MAGIC) && 477df143a5041f03a22808b59c76698770b74692815Selim Gurun (ctxt->sax->serror != NULL)) { 478ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project schannel = ctxt->sax->serror; 479df143a5041f03a22808b59c76698770b74692815Selim Gurun data = ctxt->userData; 480df143a5041f03a22808b59c76698770b74692815Selim Gurun } 481ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 482ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project /* 483ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Check if structured error handler set 484ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */ 485ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (schannel == NULL) { 486ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project schannel = xmlStructuredError; 487ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project /* 488ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * if user has defined handler, change data ptr to user's choice 489ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */ 490ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (schannel != NULL) 491df143a5041f03a22808b59c76698770b74692815Selim Gurun data = xmlStructuredErrorContext; 492ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 493ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project /* 494ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Formatting the message 495ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */ 496ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (msg == NULL) { 497ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project str = (char *) xmlStrdup(BAD_CAST "No error message provided"); 498ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } else { 499ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project XML_GET_VAR_STR(msg, str); 500ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 501ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 502ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project /* 503ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * specific processing if a parser context is provided 504ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */ 505ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (ctxt != NULL) { 506ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (file == NULL) { 507ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project input = ctxt->input; 508ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if ((input != NULL) && (input->filename == NULL) && 509ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project (ctxt->inputNr > 1)) { 510ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project input = ctxt->inputTab[ctxt->inputNr - 2]; 511ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 512ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (input != NULL) { 513ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project file = input->filename; 514ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project line = input->line; 515ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project col = input->col; 516ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 517ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 518ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project to = &ctxt->lastError; 519ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } else if ((node != NULL) && (file == NULL)) { 520ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project int i; 521ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 522ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if ((node->doc != NULL) && (node->doc->URL != NULL)) { 523ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project baseptr = node; 524ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/* file = (const char *) node->doc->URL; */ 525ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 526ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project for (i = 0; 527ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ((i < 10) && (node != NULL) && (node->type != XML_ELEMENT_NODE)); 528ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project i++) 529ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project node = node->parent; 530ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if ((baseptr == NULL) && (node != NULL) && 531ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project (node->doc != NULL) && (node->doc->URL != NULL)) 532ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project baseptr = node; 533ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 534ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if ((node != NULL) && (node->type == XML_ELEMENT_NODE)) 535ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project line = node->line; 53694442ad4107000e6d49f9b85a46a591495a57632Selim Gurun if ((line == 0) || (line == 65535)) 53794442ad4107000e6d49f9b85a46a591495a57632Selim Gurun line = xmlGetLineNo(node); 538ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 539ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 540ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project /* 541ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Save the information about the error 542ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */ 543ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlResetError(to); 544ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project to->domain = domain; 545ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project to->code = code; 546ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project to->message = str; 547ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project to->level = level; 548ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (file != NULL) 549ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project to->file = (char *) xmlStrdup((const xmlChar *) file); 550ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project else if (baseptr != NULL) { 551ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#ifdef LIBXML_XINCLUDE_ENABLED 552ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project /* 553ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * We check if the error is within an XInclude section and, 554ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * if so, attempt to print out the href of the XInclude instead 555ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * of the usual "base" (doc->URL) for the node (bug 152623). 556ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */ 557ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlNodePtr prev = baseptr; 558ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project int inclcount = 0; 559ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project while (prev != NULL) { 560ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (prev->prev == NULL) 561ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project prev = prev->parent; 562ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project else { 563ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project prev = prev->prev; 564ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (prev->type == XML_XINCLUDE_START) { 565ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (--inclcount < 0) 566ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project break; 567ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } else if (prev->type == XML_XINCLUDE_END) 568ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project inclcount++; 569ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 570ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 571ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (prev != NULL) { 572ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (prev->type == XML_XINCLUDE_START) { 573ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project prev->type = XML_ELEMENT_NODE; 574ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project to->file = (char *) xmlGetProp(prev, BAD_CAST "href"); 575ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project prev->type = XML_XINCLUDE_START; 576ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } else { 577ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project to->file = (char *) xmlGetProp(prev, BAD_CAST "href"); 578ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 579ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } else 580ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#endif 581ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project to->file = (char *) xmlStrdup(baseptr->doc->URL); 582ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if ((to->file == NULL) && (node != NULL) && (node->doc != NULL)) { 583ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project to->file = (char *) xmlStrdup(node->doc->URL); 584ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 585ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 586ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project to->line = line; 587ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (str1 != NULL) 588ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project to->str1 = (char *) xmlStrdup((const xmlChar *) str1); 589ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (str2 != NULL) 590ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project to->str2 = (char *) xmlStrdup((const xmlChar *) str2); 591ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (str3 != NULL) 592ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project to->str3 = (char *) xmlStrdup((const xmlChar *) str3); 593ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project to->int1 = int1; 594ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project to->int2 = col; 595ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project to->node = node; 596ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project to->ctxt = ctx; 597ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 598ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (to != &xmlLastError) 599ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlCopyError(to,&xmlLastError); 600ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 601df143a5041f03a22808b59c76698770b74692815Selim Gurun if (schannel != NULL) { 602df143a5041f03a22808b59c76698770b74692815Selim Gurun schannel(data, to); 603df143a5041f03a22808b59c76698770b74692815Selim Gurun return; 604df143a5041f03a22808b59c76698770b74692815Selim Gurun } 605df143a5041f03a22808b59c76698770b74692815Selim Gurun 606ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project /* 607ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Find the callback channel if channel param is NULL 608ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */ 609df143a5041f03a22808b59c76698770b74692815Selim Gurun if ((ctxt != NULL) && (channel == NULL) && 610df143a5041f03a22808b59c76698770b74692815Selim Gurun (xmlStructuredError == NULL) && (ctxt->sax != NULL)) { 611ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (level == XML_ERR_WARNING) 612ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project channel = ctxt->sax->warning; 613ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project else 614ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project channel = ctxt->sax->error; 615ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project data = ctxt->userData; 616ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } else if (channel == NULL) { 617df143a5041f03a22808b59c76698770b74692815Selim Gurun channel = xmlGenericError; 61894442ad4107000e6d49f9b85a46a591495a57632Selim Gurun if (ctxt != NULL) { 61994442ad4107000e6d49f9b85a46a591495a57632Selim Gurun data = ctxt; 62094442ad4107000e6d49f9b85a46a591495a57632Selim Gurun } else { 621df143a5041f03a22808b59c76698770b74692815Selim Gurun data = xmlGenericErrorContext; 62294442ad4107000e6d49f9b85a46a591495a57632Selim Gurun } 623ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 624ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (channel == NULL) 625ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return; 626ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 627ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if ((channel == xmlParserError) || 628ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project (channel == xmlParserWarning) || 629ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project (channel == xmlParserValidityError) || 630ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project (channel == xmlParserValidityWarning)) 631ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlReportError(to, ctxt, str, NULL, NULL); 632ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project else if ((channel == (xmlGenericErrorFunc) fprintf) || 633ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project (channel == xmlGenericErrorDefaultFunc)) 634ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlReportError(to, ctxt, str, channel, data); 635ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project else 636ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project channel(data, "%s", str); 637ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project} 638ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 639ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/** 640ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * __xmlSimpleError: 641ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @domain: where the error comes from 642ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @code: the error code 643ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @node: the context node 644ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @extra: extra informations 645ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * 646ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Handle an out of memory condition 647ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */ 648ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectvoid 649ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project__xmlSimpleError(int domain, int code, xmlNodePtr node, 650ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project const char *msg, const char *extra) 651ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project{ 652ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 653ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (code == XML_ERR_NO_MEMORY) { 654ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (extra) 655ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project __xmlRaiseError(NULL, NULL, NULL, NULL, node, domain, 656ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project XML_ERR_NO_MEMORY, XML_ERR_FATAL, NULL, 0, extra, 657ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project NULL, NULL, 0, 0, 658ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project "Memory allocation failed : %s\n", extra); 659ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project else 660ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project __xmlRaiseError(NULL, NULL, NULL, NULL, node, domain, 661ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project XML_ERR_NO_MEMORY, XML_ERR_FATAL, NULL, 0, NULL, 662ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project NULL, NULL, 0, 0, "Memory allocation failed\n"); 663ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } else { 664ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project __xmlRaiseError(NULL, NULL, NULL, NULL, node, domain, 665ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project code, XML_ERR_ERROR, NULL, 0, extra, 666ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project NULL, NULL, 0, 0, msg, extra); 667ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 668ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project} 669ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/** 670ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * xmlParserError: 671ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @ctx: an XML parser context 672ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @msg: the message to display/transmit 673ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @...: extra parameters for the message display 67494442ad4107000e6d49f9b85a46a591495a57632Selim Gurun * 675ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Display and format an error messages, gives file, line, position and 676ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * extra parameters. 677ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */ 678ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectvoid XMLCDECL 679ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source ProjectxmlParserError(void *ctx, const char *msg, ...) 680ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project{ 681ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlParserCtxtPtr ctxt = (xmlParserCtxtPtr) ctx; 682ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlParserInputPtr input = NULL; 683ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlParserInputPtr cur = NULL; 684ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project char * str; 685ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 686ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (ctxt != NULL) { 687ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project input = ctxt->input; 688ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if ((input != NULL) && (input->filename == NULL) && 689ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project (ctxt->inputNr > 1)) { 690ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project cur = input; 691ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project input = ctxt->inputTab[ctxt->inputNr - 2]; 692ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 693ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlParserPrintFileInfo(input); 694ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 695ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 696ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlGenericError(xmlGenericErrorContext, "error: "); 697ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project XML_GET_VAR_STR(msg, str); 698ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlGenericError(xmlGenericErrorContext, "%s", str); 699ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (str != NULL) 700ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlFree(str); 701ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 702ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (ctxt != NULL) { 703ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlParserPrintFileContext(input); 704ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (cur != NULL) { 705ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlParserPrintFileInfo(cur); 706ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlGenericError(xmlGenericErrorContext, "\n"); 707ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlParserPrintFileContext(cur); 708ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 709ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 710ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project} 711ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 712ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/** 713ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * xmlParserWarning: 714ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @ctx: an XML parser context 715ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @msg: the message to display/transmit 716ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @...: extra parameters for the message display 71794442ad4107000e6d49f9b85a46a591495a57632Selim Gurun * 718ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Display and format a warning messages, gives file, line, position and 719ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * extra parameters. 720ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */ 721ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectvoid XMLCDECL 722ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source ProjectxmlParserWarning(void *ctx, const char *msg, ...) 723ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project{ 724ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlParserCtxtPtr ctxt = (xmlParserCtxtPtr) ctx; 725ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlParserInputPtr input = NULL; 726ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlParserInputPtr cur = NULL; 727ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project char * str; 728ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 729ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (ctxt != NULL) { 730ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project input = ctxt->input; 731ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if ((input != NULL) && (input->filename == NULL) && 732ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project (ctxt->inputNr > 1)) { 733ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project cur = input; 734ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project input = ctxt->inputTab[ctxt->inputNr - 2]; 735ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 736ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlParserPrintFileInfo(input); 737ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 73894442ad4107000e6d49f9b85a46a591495a57632Selim Gurun 739ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlGenericError(xmlGenericErrorContext, "warning: "); 740ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project XML_GET_VAR_STR(msg, str); 741ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlGenericError(xmlGenericErrorContext, "%s", str); 742ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (str != NULL) 743ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlFree(str); 744ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 745ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (ctxt != NULL) { 746ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlParserPrintFileContext(input); 747ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (cur != NULL) { 748ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlParserPrintFileInfo(cur); 749ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlGenericError(xmlGenericErrorContext, "\n"); 750ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlParserPrintFileContext(cur); 751ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 752ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 753ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project} 754ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 755ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/************************************************************************ 75694442ad4107000e6d49f9b85a46a591495a57632Selim Gurun * * 75794442ad4107000e6d49f9b85a46a591495a57632Selim Gurun * Handling of validation errors * 75894442ad4107000e6d49f9b85a46a591495a57632Selim Gurun * * 759ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ************************************************************************/ 760ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 761ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/** 762ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * xmlParserValidityError: 763ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @ctx: an XML parser context 764ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @msg: the message to display/transmit 765ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @...: extra parameters for the message display 76694442ad4107000e6d49f9b85a46a591495a57632Selim Gurun * 767ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Display and format an validity error messages, gives file, 768ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * line, position and extra parameters. 769ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */ 770ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectvoid XMLCDECL 771ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source ProjectxmlParserValidityError(void *ctx, const char *msg, ...) 772ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project{ 773ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlParserCtxtPtr ctxt = (xmlParserCtxtPtr) ctx; 774ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlParserInputPtr input = NULL; 775ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project char * str; 776ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project int len = xmlStrlen((const xmlChar *) msg); 777ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project static int had_info = 0; 778ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 779ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if ((len > 1) && (msg[len - 2] != ':')) { 780ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (ctxt != NULL) { 781ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project input = ctxt->input; 782ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if ((input->filename == NULL) && (ctxt->inputNr > 1)) 783ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project input = ctxt->inputTab[ctxt->inputNr - 2]; 78494442ad4107000e6d49f9b85a46a591495a57632Selim Gurun 785ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (had_info == 0) { 786ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlParserPrintFileInfo(input); 787ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 788ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 789ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlGenericError(xmlGenericErrorContext, "validity error: "); 790ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project had_info = 0; 791ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } else { 792ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project had_info = 1; 793ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 794ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 795ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project XML_GET_VAR_STR(msg, str); 796ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlGenericError(xmlGenericErrorContext, "%s", str); 797ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (str != NULL) 798ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlFree(str); 799ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 800ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if ((ctxt != NULL) && (input != NULL)) { 801ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlParserPrintFileContext(input); 802ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 803ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project} 804ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 805ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/** 806ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * xmlParserValidityWarning: 807ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @ctx: an XML parser context 808ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @msg: the message to display/transmit 809ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @...: extra parameters for the message display 81094442ad4107000e6d49f9b85a46a591495a57632Selim Gurun * 811ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Display and format a validity warning messages, gives file, line, 812ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * position and extra parameters. 813ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */ 814ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectvoid XMLCDECL 815ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source ProjectxmlParserValidityWarning(void *ctx, const char *msg, ...) 816ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project{ 817ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlParserCtxtPtr ctxt = (xmlParserCtxtPtr) ctx; 818ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlParserInputPtr input = NULL; 819ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project char * str; 820ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project int len = xmlStrlen((const xmlChar *) msg); 821ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 822ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if ((ctxt != NULL) && (len != 0) && (msg[len - 1] != ':')) { 823ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project input = ctxt->input; 824ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if ((input->filename == NULL) && (ctxt->inputNr > 1)) 825ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project input = ctxt->inputTab[ctxt->inputNr - 2]; 826ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 827ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlParserPrintFileInfo(input); 828ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 82994442ad4107000e6d49f9b85a46a591495a57632Selim Gurun 830ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlGenericError(xmlGenericErrorContext, "validity warning: "); 831ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project XML_GET_VAR_STR(msg, str); 832ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlGenericError(xmlGenericErrorContext, "%s", str); 833ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (str != NULL) 834ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlFree(str); 835ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 836ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (ctxt != NULL) { 837ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlParserPrintFileContext(input); 838ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project } 839ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project} 840ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 841ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 842ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/************************************************************************ 843ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * * 844ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Extended Error Handling * 845ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * * 846ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project ************************************************************************/ 847ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 848ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/** 849ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * xmlGetLastError: 850ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * 851ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Get the last global error registered. This is per thread if compiled 852ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * with thread support. 853ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * 854ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Returns NULL if no error occured or a pointer to the error 855ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */ 856ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source ProjectxmlErrorPtr 857ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source ProjectxmlGetLastError(void) 858ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project{ 859ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (xmlLastError.code == XML_ERR_OK) 860ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return (NULL); 861ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return (&xmlLastError); 862ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project} 863ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 864ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/** 865ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * xmlResetError: 866ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @err: pointer to the error. 867ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * 868ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Cleanup the error. 869ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */ 870ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectvoid 871ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source ProjectxmlResetError(xmlErrorPtr err) 872ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project{ 873ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (err == NULL) 874ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return; 875ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (err->code == XML_ERR_OK) 876ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return; 877ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (err->message != NULL) 878ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlFree(err->message); 879ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (err->file != NULL) 880ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlFree(err->file); 881ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (err->str1 != NULL) 882ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlFree(err->str1); 883ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (err->str2 != NULL) 884ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlFree(err->str2); 885ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (err->str3 != NULL) 886ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlFree(err->str3); 887ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project memset(err, 0, sizeof(xmlError)); 888ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project err->code = XML_ERR_OK; 889ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project} 890ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 891ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/** 892ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * xmlResetLastError: 893ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * 894ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Cleanup the last global error registered. For parsing error 895ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * this does not change the well-formedness result. 896ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */ 897ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectvoid 898ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source ProjectxmlResetLastError(void) 899ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project{ 900ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (xmlLastError.code == XML_ERR_OK) 901ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return; 902ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlResetError(&xmlLastError); 903ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project} 904ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 905ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/** 906ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * xmlCtxtGetLastError: 907ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @ctx: an XML parser context 908ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * 909ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Get the last parsing error registered. 910ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * 911ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Returns NULL if no error occured or a pointer to the error 912ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */ 913ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source ProjectxmlErrorPtr 914ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source ProjectxmlCtxtGetLastError(void *ctx) 915ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project{ 916ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlParserCtxtPtr ctxt = (xmlParserCtxtPtr) ctx; 917ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 918ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (ctxt == NULL) 919ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return (NULL); 920ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (ctxt->lastError.code == XML_ERR_OK) 921ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return (NULL); 922ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return (&ctxt->lastError); 923ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project} 924ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 925ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/** 926ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * xmlCtxtResetLastError: 927ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @ctx: an XML parser context 928ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * 929ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Cleanup the last global error registered. For parsing error 930ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * this does not change the well-formedness result. 931ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */ 932ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectvoid 933ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source ProjectxmlCtxtResetLastError(void *ctx) 934ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project{ 935ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlParserCtxtPtr ctxt = (xmlParserCtxtPtr) ctx; 936ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 937ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (ctxt == NULL) 938ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return; 939df143a5041f03a22808b59c76698770b74692815Selim Gurun ctxt->errNo = XML_ERR_OK; 940ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (ctxt->lastError.code == XML_ERR_OK) 941ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return; 942ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlResetError(&ctxt->lastError); 943ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project} 944ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 945ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project/** 946ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * xmlCopyError: 947ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @from: a source error 948ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * @to: a target error 949ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * 950ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Save the original error to the new place. 951ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * 952ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project * Returns 0 in case of success and -1 in case of error. 953ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project */ 954ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Projectint 955ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source ProjectxmlCopyError(xmlErrorPtr from, xmlErrorPtr to) { 956ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project char *message, *file, *str1, *str2, *str3; 957ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 958ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if ((from == NULL) || (to == NULL)) 959ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return(-1); 960ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 961ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project message = (char *) xmlStrdup((xmlChar *) from->message); 962ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project file = (char *) xmlStrdup ((xmlChar *) from->file); 963ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project str1 = (char *) xmlStrdup ((xmlChar *) from->str1); 964ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project str2 = (char *) xmlStrdup ((xmlChar *) from->str2); 965ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project str3 = (char *) xmlStrdup ((xmlChar *) from->str3); 966ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 967ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (to->message != NULL) 968ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlFree(to->message); 969ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (to->file != NULL) 970ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlFree(to->file); 971ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (to->str1 != NULL) 972ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlFree(to->str1); 973ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (to->str2 != NULL) 974ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlFree(to->str2); 975ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project if (to->str3 != NULL) 976ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project xmlFree(to->str3); 977ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project to->domain = from->domain; 978ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project to->code = from->code; 979ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project to->level = from->level; 980ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project to->line = from->line; 981ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project to->node = from->node; 982ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project to->int1 = from->int1; 983ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project to->int2 = from->int2; 984ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project to->node = from->node; 985ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project to->ctxt = from->ctxt; 986ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project to->message = message; 987ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project to->file = file; 988ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project to->str1 = str1; 989ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project to->str2 = str2; 990ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project to->str3 = str3; 991ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 992ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project return 0; 993ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project} 994ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project 995ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#define bottom_error 996ab4e2e90f63db6b1cd8bb2e453cac899ef43d42bThe Android Open Source Project#include "elfgcchack.h" 997