Re: [xml] column information in the error structure (patch)
- From: Rob Richards <rrichards ctindustries net>
- To: Aleksey Sanin <aleksey aleksey com>
- Cc: xml <xml gnome org>, veillard redhat com
- Subject: Re: [xml] column information in the error structure (patch)
- Date: Tue, 04 Jan 2005 06:43:41 -0500
Here's the patch I have for the line numbers and columns. Not sure if I
caught all the spots, but my line/columns have been more accurate with
this at least using SAX.
Rob
Aleksey Sanin wrote:
Thanks!
Aleksey
Rob Richards wrote:
To save you some time, I had gone through parser.c a while back and
have a patch for this which I had forgotten about (been sitting in my
build for a while). Will submit it once I get back to my desktop.
Rob
Index: parser.c
===================================================================
RCS file: /cvs/gnome/gnome-xml/parser.c,v
retrieving revision 1.406
diff -c -r1.406 parser.c
*** parser.c 25 Dec 2004 10:14:57 -0000 1.406
--- parser.c 4 Jan 2005 11:09:15 -0000
***************
*** 2421,2426 ****
--- 2421,2427 ----
while (*in != 0 && *in == *cmp) {
++in;
++cmp;
+ ctxt->input->col++;
}
if (*cmp == 0 && (*in == '>' || IS_BLANK_CH (*in))) {
/* success */
***************
*** 3201,3210 ****
get_more_space:
while (*in == 0x20) in++;
if (*in == 0xA) {
! ctxt->input->line++;
in++;
while (*in == 0xA) {
! ctxt->input->line++;
in++;
}
goto get_more_space;
--- 3202,3211 ----
get_more_space:
while (*in == 0x20) in++;
if (*in == 0xA) {
! ctxt->input->line++; ctxt->input->col = 1;
in++;
while (*in == 0xA) {
! ctxt->input->line++; ctxt->input->col = 1;
in++;
}
goto get_more_space;
***************
*** 3237,3249 ****
((*in > '&') && (*in < '<')) ||
((*in > '<') && (*in < ']')) ||
((*in >= 0x20) && (*in < '&')) ||
! (*in == 0x09))
! in++;
if (*in == 0xA) {
! ctxt->input->line++;
in++;
while (*in == 0xA) {
! ctxt->input->line++;
in++;
}
goto get_more;
--- 3238,3252 ----
((*in > '&') && (*in < '<')) ||
((*in > '<') && (*in < ']')) ||
((*in >= 0x20) && (*in < '&')) ||
! (*in == 0x09)) {
! in++;
! ctxt->input->col++;
! }
if (*in == 0xA) {
! ctxt->input->line++; ctxt->input->col = 1;
in++;
while (*in == 0xA) {
! ctxt->input->line++; ctxt->input->col = 1;
in++;
}
goto get_more;
***************
*** 3255,3260 ****
--- 3258,3264 ----
return;
}
in++;
+ ctxt->input->col++;
goto get_more;
}
nbchar = in - ctxt->input->cur;
***************
*** 3288,3294 ****
if (*in == 0xA) {
ctxt->input->cur = in;
in++;
! ctxt->input->line++;
continue; /* while */
}
in--;
--- 3292,3298 ----
if (*in == 0xA) {
ctxt->input->cur = in;
in++;
! ctxt->input->line++; ctxt->input->col = 1;
continue; /* while */
}
in--;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]