/usr/lib/perl5/XML/LibXML/SAX.pm is in libxml-libxml-perl 1.89+dfsg-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 | # $Id$
#
# This is free software, you may use it and distribute it under the same terms as
# Perl itself.
#
# Copyright 2001-2003 AxKit.com Ltd., 2002-2006 Christian Glahn, 2006-2009 Petr Pajas
#
#
package XML::LibXML::SAX;
use strict;
use vars qw($VERSION @ISA);
$VERSION = "1.89"; # VERSION TEMPLATE: DO NOT CHANGE
use XML::LibXML;
use XML::SAX::Base;
use base qw(XML::SAX::Base);
use Carp;
use IO::File;
sub CLONE_SKIP {
return $XML::LibXML::__threads_shared ? 0 : 1;
}
sub set_feature {
my ($self, $feat, $val) = @_;
if ($feat eq 'http://xmlns.perl.org/sax/join-character-data') {
$self->{JOIN_CHARACTERS} = $val;
return 1;
}
shift(@_);
return $self->SUPER::set_feature(@_);
}
sub _parse_characterstream {
my ( $self, $fh ) = @_;
# this my catch the xml decl, so the parser won't get confused about
# a possibly wrong encoding.
croak( "not implemented yet" );
}
sub _parse_bytestream {
my ( $self, $fh ) = @_;
$self->{ParserOptions}{LibParser} = XML::LibXML->new;
$self->{ParserOptions}{ParseFunc} = \&XML::LibXML::parse_fh;
$self->{ParserOptions}{ParseFuncParam} = $fh;
$self->_parse;
return $self->end_document({});
}
sub _parse_string {
my ( $self, $string ) = @_;
# $self->{ParserOptions}{LibParser} = XML::LibXML->new;
$self->{ParserOptions}{LibParser} = XML::LibXML->new() unless defined $self->{ParserOptions}{LibParser};
$self->{ParserOptions}{ParseFunc} = \&XML::LibXML::parse_string;
$self->{ParserOptions}{ParseFuncParam} = $string;
$self->_parse;
return $self->end_document({});
}
sub _parse_systemid {
my $self = shift;
$self->{ParserOptions}{LibParser} = XML::LibXML->new;
$self->{ParserOptions}{ParseFunc} = \&XML::LibXML::parse_file;
$self->{ParserOptions}{ParseFuncParam} = shift;
$self->_parse;
return $self->end_document({});
}
sub parse_chunk {
my ( $self, $chunk ) = @_;
$self->{ParserOptions}{LibParser} = XML::LibXML->new;
$self->{ParserOptions}{ParseFunc} = \&XML::LibXML::parse_xml_chunk;
$self->{ParserOptions}{LibParser}->{IS_FILTER}=1; # a hack to prevent parse_xml_chunk from issuing end_document
$self->{ParserOptions}{ParseFuncParam} = $chunk;
$self->_parse;
return;
}
sub _parse {
my $self = shift;
my $args = bless $self->{ParserOptions}, ref($self);
if (defined($self->{JOIN_CHARACTERS})) {
$args->{LibParser}->{JOIN_CHARACTERS} = $self->{JOIN_CHARACTERS};
} else {
$args->{LibParser}->{JOIN_CHARACTERS} = 0;
}
$args->{LibParser}->set_handler( $self );
eval {
$args->{ParseFunc}->($args->{LibParser}, $args->{ParseFuncParam});
};
if ( $args->{LibParser}->{SAX}->{State} == 1 ) {
croak( "SAX Exception not implemented, yet; Data ended before document ended\n" );
}
# break a possible circular reference
$args->{LibParser}->set_handler( undef );
if ( $@ ) {
croak $@;
}
return;
}
1;
|