aboutsummaryrefslogtreecommitdiffstats
path: root/URPM/Query.pm
diff options
context:
space:
mode:
Diffstat (limited to 'URPM/Query.pm')
-rw-r--r--URPM/Query.pm45
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;