Date: Thu, 14 Aug 2003 18:52:41 -0700 (PDT) From: Venkata Pingali <pingali@isi.edu> To: FreeBSD-gnats-submit@FreeBSD.org Cc: skv@protey.ru Subject: ports/55598: p5-XML-LibXML error messages not showing line numbers Message-ID: <200308150152.h7F1qfZ2034106@e.postel.org> Resent-Message-ID: <200308150200.h7F20UsZ085660@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
>Number: 55598 >Category: ports >Synopsis: p5-XML-LibXML error messages not showing line numbers >Confidential: no >Severity: non-critical >Priority: low >Responsible: freebsd-ports-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: sw-bug >Submitter-Id: current-users >Arrival-Date: Thu Aug 14 19:00:29 PDT 2003 >Closed-Date: >Last-Modified: >Originator: Venkata Pingali >Release: FreeBSD 4.8-RELEASE i386 >Organization: USC/ISI >Environment: System: FreeBSD e.postel.org 4.8-RELEASE FreeBSD 4.8-RELEASE #0: Fri Jul 25 19:46:03 GMT 2003 root@k.postel.org:/usr/src/sys/compile/KERNEL-1.45 i386 perl 5.8.0 p5-XML-LibXML 1.53 version >Description: p5-XML-LibXML I used libxml parser to validate a xml file against a DTD. The error message thrown does not have a line number. So I was having difficultly figuring out which of the multiple instances of an element type was causing the problem. >How-To-Repeat: use p5-XML-LibXML; my $parser = XML::LibXML->new; $parser->validation(1); $parser->pedantic_parser(1); $parser->load_ext_dtd(1); eval { $parser->parse_string($message); }; if ($@){ print "Error: $@ \n"; die ("process_xml"); } where message contains a XML structure with a reference to a DTD. The XML structure is inconsistent with the DTD. >Fix: libxml2 provides a variable (xmlLineNumbersDefaultValue) that can be set. The p5-XML-LibXML module must allow access to this variable. The fix is included below ------------------------------------------------------------------- --- LibXML.pm.orig Thu Aug 14 18:26:05 2003 +++ LibXML.pm Thu Aug 14 18:30:47 2003 @@ -143,6 +143,12 @@ return $self->{XML_LIBXML_KEEP_BLANKS}; } +sub enable_linenumbers{ + my $self = shift; + $self->{XML_LIBXML_ENABLE_LINENUMBERS} = shift if scalar @_; + return $self->{XML_LIBXML_ENABLE_LINENUMBERS}; +} + sub pedantic_parser { my $self = shift; $self->{XML_LIBXML_PEDANTIC} = shift if scalar @_; @@ -978,6 +984,12 @@ Allows you to turn off XML::LibXML's default behaviour of maintaining whitespace in the document. + +=head2 enable_linenumbers + + $parser->enable_linenumbers(1); + +Allows you to obtain line numbers in error messages. =head2 pedantic_parser ------------------------------------------------------------- --- LibXML.xs.orig Thu Aug 14 18:25:45 2003 +++ LibXML.xs Thu Aug 14 18:44:17 2003 @@ -611,6 +611,15 @@ xmlDoValidityCheckingDefaultValue = 0; } + item = hv_fetch( real_obj, "XML_LIBXML_ENABLE_LINENUMBERS", 29, 0 ); + if ( item != NULL && SvTRUE(*item) ) { + xmlLineNumbersDefaultValue = 1; + xmlLoadExtDtdDefaultValue |= XML_DETECT_IDS; + } + else { + xmlLineNumbersDefaultValue = 0; + } + item = hv_fetch( real_obj, "XML_LIBXML_EXPAND_ENTITIES", 26, 0 ); if ( item != NULL ) { if ( SvTRUE(*item) ) { >Release-Note: >Audit-Trail: >Unformatted:
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200308150152.h7F1qfZ2034106>