/* * error.c: module displaying errors */ #include #include #include "parser.h" /* * Display and format error messages. */ void xmlParserError(xmlParserCtxtPtr ctxt, const char *msg, ...) { const CHAR *cur, *base; va_list args; int n; va_start(args, msg); fprintf(stderr, "error: "); vfprintf(stderr, msg, args); va_end(ap); cur = ctxt->cur; base = ctxt->base; while ((cur >= base) && (*cur != '\n') && (*cur != '\r')) cur--; if ((*cur != '\n') || (*cur != '\r')) cur++; base = cur; while ((*cur != 0) && (*cur != '\n') && (*cur != '\r') && (n < 79)) { fprintf(stderr, "%c", (unsigned char) *cur++); n++; } fprintf(stderr, "\n"); cur = ctxt->cur; while (cur != base) { fprintf(stderr, " "); base++; } fprintf(stderr,"^\n"); }