aboutsummaryrefslogtreecommitdiffstats
path: root/URPM/Query.pm
blob: 9f70ccef66037e847c958b7d9bb927a20f1843d2 (plain)
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
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
# AND BROKEN SINCE 2008-12-09 as list_rpm_tag() die
#

# tag2id
# INPUT array of rpm tag name
# Return an array of ID tag

sub tag2id {
    my @l = @_;
    # unimplemented since 2008-12-09:
    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;