summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--perl-install/printer/gimp.pm2
1 files changed, 1 insertions, 1 deletions
diff --git a/perl-install/printer/gimp.pm b/perl-install/printer/gimp.pm
index 079563ed7..c5cdd1dea 100644
--- a/perl-install/printer/gimp.pm
+++ b/perl-install/printer/gimp.pm
@@ -284,7 +284,7 @@ sub addprinter {
sub pop_spaces {
my @lines = @_;
- pop @lines while @lines and $lines[-1] !~ /\S/;
+ pop @lines while @lines && $lines[-1] !~ /\S/;
}
sub removeentry {
149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175
package urpm::xml_info;

use XML::LibXML::Reader;

# throw an exception on error
sub get_nodes {
    my ($xml_info, $xml_info_file, $fullnames) = @_;

    my $get_one_node = _get_one_node($xml_info);
    _get_xml_info_nodes($xml_info_file, $get_one_node, $fullnames);
}

# throw an exception on error
sub do_something_with_nodes {
    my ($xml_info, $xml_info_file, $do, $o_wanted_attributes) = @_;

    my $get_one_node = _get_one_node($xml_info, $o_wanted_attributes);
    _do_something_with_xml_info_nodes($xml_info_file, $get_one_node, $do);
}


sub open_lzma {
    my ($xml_info_file) = @_;

    $xml_info_file =~ s/'/\'/g;
    open(my $F, "lzma -dc '$xml_info_file' |");
    $F;    
}

################################################################################
sub _open_xml_reader {
    my ($xml_info_file) = @_;

    my $reader = new XML::LibXML::Reader(IO => open_lzma($xml_info_file)) or die "cannot read $xml_info_file\n";

    $reader->read;
    $reader->name eq 'media_info' or die "global <media_info> tag not found\n";

    $reader->read; # first tag

    $reader;
}

sub _get_all_attributes {
    my ($reader) = @_;
    my %entry;

    $reader->moveToFirstAttribute;

    do { 
	$entry{$reader->name} = $reader->value;
    } while $reader->moveToNextAttribute == 1;
    
    \%entry;
}

sub _get_attributes {
    my ($reader, $o_wanted_attributes) = @_;

    if ($o_wanted_attributes) {
	my %entry = map { $_ => $reader->getAttribute($_) } @$o_wanted_attributes;
	\%entry;
    } else {
	_get_all_attributes($reader);
    }
}

sub _get_simple_value_node {
    my ($value_name, $o_wanted_attributes) = @_;

    sub {
	my ($reader) = @_;
	my $entry = _get_attributes($reader, $o_wanted_attributes);

	$reader->read; # get value
	$entry->{$value_name} = $reader->value;
	$entry->{$value_name} =~ s/^\n//;

	$reader->read; # close tag
	$reader->read; # open next tag

	$entry;
    };
}

sub _get_changelog_node {
    my ($reader, $fn) = @_;
	
    $reader->nextElement('log'); # get first <log>

    my @changelogs;
    my $time;
    while ($time = $reader->getAttribute('time')) {
	push @changelogs, my $e = { time => $time };

	$reader->nextElement('log_name'); $reader->read;
	$e->{name} = $reader->value;

	$reader->nextElement('log_text'); $reader->read;
	$e->{text} = $reader->value;
	
	$reader->read; # </log_text>
	$reader->read; # </log>
	$reader->read; # <log>