Annotation of XML/error.c, revision 1.8
1.1 daniel 1: /*
1.8 ! daniel 2: * error.c: module displaying/handling XML parser errors
! 3: *
! 4: * Daniel Veillard <Daniel.Veillard@w3.org>
1.1 daniel 5: */
6:
7: #include <stdio.h>
8: #include <stdarg.h>
9: #include "parser.h"
10:
1.8 ! daniel 11: /**
! 12: * xmlParserError:
! 13: * @ctxt: an XML parser context
! 14: * @msg: the message to display/transmit
! 15: * @...: extra parameters for the message display
! 16: *
! 17: * Display and format an error messages, gives file, line, position and
! 18: * extra parameters.
1.1 daniel 19: */
1.8 ! daniel 20: void
! 21: xmlParserError(xmlParserCtxtPtr ctxt, const char *msg, ...)
! 22: {
1.1 daniel 23: const CHAR *cur, *base;
24: va_list args;
25: int n;
26:
27: va_start(args, msg);
1.4 daniel 28: if (ctxt->input->filename)
29: fprintf(stderr, "%s:%d: ", ctxt->input->filename,
30: ctxt->input->line);
31: else
32: fprintf(stderr, "line %d: ", ctxt->input->line);
33:
1.1 daniel 34: fprintf(stderr, "error: ");
35: vfprintf(stderr, msg, args);
36: va_end(ap);
1.3 daniel 37: cur = ctxt->input->cur;
38: base = ctxt->input->base;
1.7 daniel 39: while ((*cur == '\n') || (*cur == '\r')) {
40: cur--;
41: base--;
42: }
1.2 daniel 43: n = 0;
44: while ((n++ < 60) && (cur >= base) && (*cur != '\n') && (*cur != '\r'))
45: cur--;
1.7 daniel 46: if ((*cur == '\n') || (*cur == '\r')) cur++;
1.1 daniel 47: base = cur;
1.2 daniel 48: n = 0;
1.1 daniel 49: while ((*cur != 0) && (*cur != '\n') && (*cur != '\r') && (n < 79)) {
50: fprintf(stderr, "%c", (unsigned char) *cur++);
51: n++;
52: }
53: fprintf(stderr, "\n");
1.3 daniel 54: cur = ctxt->input->cur;
1.7 daniel 55: while ((*cur == '\n') || (*cur == '\r'))
56: cur--;
1.5 daniel 57: n = 0;
58: while ((cur != base) && (n++ < 60)) {
1.1 daniel 59: fprintf(stderr, " ");
60: base++;
61: }
62: fprintf(stderr,"^\n");
63: }
1.6 daniel 64:
1.8 ! daniel 65: /**
! 66: * xmlParserWarning:
! 67: * @ctxt: an XML parser context
! 68: * @msg: the message to display/transmit
! 69: * @...: extra parameters for the message display
! 70: *
! 71: * Display and format a warning messages, gives file, line, position and
! 72: * extra parameters.
1.6 daniel 73: */
1.8 ! daniel 74: void
! 75: xmlParserWarning(xmlParserCtxtPtr ctxt, const char *msg, ...)
! 76: {
1.6 daniel 77: const CHAR *cur, *base;
78: va_list args;
79: int n;
80:
81: va_start(args, msg);
82: if (ctxt->input->filename)
83: fprintf(stderr, "%s:%d: ", ctxt->input->filename,
84: ctxt->input->line);
85: else
86: fprintf(stderr, "line %d: ", ctxt->input->line);
87:
88: fprintf(stderr, "warning: ");
89: vfprintf(stderr, msg, args);
90: va_end(ap);
91: cur = ctxt->input->cur;
92: base = ctxt->input->base;
93: n = 0;
94: while ((n++ < 60) && (cur >= base) && (*cur != '\n') && (*cur != '\r'))
95: cur--;
96: if ((*cur != '\n') || (*cur != '\r')) cur++;
97: base = cur;
98: n = 0;
99: while ((*cur != 0) && (*cur != '\n') && (*cur != '\r') && (n < 79)) {
100: fprintf(stderr, "%c", (unsigned char) *cur++);
101: n++;
102: }
103: fprintf(stderr, "\n");
104: cur = ctxt->input->cur;
105: n = 0;
106: while ((cur != base) && (n++ < 60)) {
107: fprintf(stderr, " ");
108: base++;
109: }
110: fprintf(stderr,"^\n");
111: }
1.8 ! daniel 112:
Webmaster