diff options
Diffstat (limited to 'URPM/Query.pm')
-rw-r--r-- | URPM/Query.pm | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/URPM/Query.pm b/URPM/Query.pm new file mode 100644 index 0000000..02e911e --- /dev/null +++ b/URPM/Query.pm @@ -0,0 +1,45 @@ +package URPM; + +use strict; +use warnings; + +# perl_checker: require URPM + +# Olivier Thauvin <thauvin@aerov.jussieu.fr> +# This package extend URPM functions to permit +# URPM low level query on rpm header +# $Id: Query.pm 270395 2010-07-30 00:55:59Z nanardon $ +# +# UNUSED BY ANYTHING IN THE DISTRO +# + +# tag2id +# INPUT array of rpm tag name +# Return an array of ID tag + +sub tag2id { + my @l = @_; + my %taglist = URPM::list_rpm_tag(); + map { $taglist{uc($_)} || undef } @l; +} + +sub query_pkg { + my (undef, $pkg, $query) = @_; + my @tags = map { + [ $pkg->get_tag(tag2id($_)) ]; + } $query =~ m/\%\{([^{}]*)\}*/g; + + $query =~ s/\%\{[^{}]*\}/%s/g; + $query =~ s/\\n/\n/g; + $query =~ s/\\t/\t/g; + my ($max, @res) = 0; + + foreach (@tags) { $max < $#{$_} and $max = $#{$_} } + + foreach my $i (0 .. $max) { + push @res, sprintf($query, map { ${$_}[ $#{$_} < $i ? $#{$_} : $i] } @tags); + } + @res; +} + +1; |