]> git.sven.stormbind.net Git - sven/scripts.git/blobdiff - bposearch/search.pl
Import bposearch
[sven/scripts.git] / bposearch / search.pl
diff --git a/bposearch/search.pl b/bposearch/search.pl
new file mode 100644 (file)
index 0000000..e0a272a
--- /dev/null
@@ -0,0 +1,85 @@
+#!/usr/bin/perl -w
+
+use strict;
+use CGI;
+use CGI::Carp qw(fatalsToBrowser);
+my $query = new CGI;
+
+print "Content-type: text/html\n\n";
+print '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">', "\n";
+print "<html><head><title>bpo package search</title></head><body>\n";
+
+
+sub sendtheform {
+    print "<form action=\"search.pl\" method=\"POST\">\n";
+    print "<H1>bpo package search</H1>\n";
+    print "<input type=\"text\" name=\"query\" size=\"40\" maxlength=\"40\">\n";
+    print "<td valign=\"top\"><input type=\"submit\" name=\"send\" value=\"send\"></td>\n";
+    print "</form>\n";
+}
+
+sub performsearch {
+    my $query = @_[0];
+    print "<p>Server performed a query with the keyword ";
+    print $query;
+    print "</p>\n";
+
+    foreach my $value (qw/ main contrib non-free /) {
+       print "<h1>Results for packages listed in ", $value, ":</h1>\n";
+
+       open SOURCES, "$value/Sources" or die "Can't open Source file: $!";
+       my @sourceslist=<SOURCES>;
+       close SOURCES;
+       
+       for (my $i = 0; $i < @sourceslist; $i++) {
+           $_ = @sourceslist[$i];
+           if (/^Package:.*$query.*/) {
+               my $pver=&findnextver($i, @sourceslist);
+               my $pdir=&findnextdir($i, @sourceslist);
+               print "<p>\n";
+               print @sourceslist[$i],"<br>\n";
+               print $pver, "<br>\n";
+                print "<a href=\"http://www.backports.org/debian/", $pdir,"\">http://www.backports.org/debian/",$pdir,"</a><br>\n";
+               print "</p>\n";
+
+           }
+       }
+
+    }
+}
+
+
+sub findnextver {
+    my ($startpos, @list) = @_;
+    for (my $i = $startpos; $i < @list; $i++) {
+       $_ = @list[$i];
+       if (/^Version:.*/) {
+           return $_;
+           last;
+       }
+    }
+}
+
+sub findnextdir {
+    my ($startpos, @list) = @_;
+    for (my $i = $startpos; $i < @list; $i++) {
+       $_ = @list[$i];
+       if (/^Directory:.*/) {
+           my @dirsplit = split / /, $_;
+           chomp(@dirsplit[1]);
+           return @dirsplit[1];
+           last;
+       }
+    }
+}
+
+
+
+ if ($query->param('send') eq "send") {
+    &performsearch($query->param('query'));
+} else {
+    &sendtheform();
+}
+
+
+print "</body></html>\n";