3 # Display a search window for rpmfind.net
5 require './software-lib.pl';
8 $rpmfind_host = "rpmfind.net";
10 $rpmfind_page = "/linux/rpm2html/search.php?query=";
17 window.opener.ifield.value = m;
25 print &ui_form_start("rpmfind.cgi");
26 print &ui_submit($text{'rpm_search'});
27 print &ui_textbox("search", $in{'search'}, 20);
31 # Call the rpmfind.net website to get matches
34 &http_download($rpmfind_host, $rpmfind_port,
35 $rpmfind_page.&urlize($in{'search'}), \$out);
36 while($out =~ /<tr[^>]*>.*?<td[^>]*>([^<]*)<\/td>.*?<td[^>]*>([^<]*)<\/td>.*?((ftp|http|https):[^>]+\.rpm).*?<\/tr>([\000-\377]*)/i) {
37 local $pkg = { 'url' => $3,
41 $pkg->{'source'}++ if ($pkg->{'url'} =~ /\.src\.rpm$/ ||
42 $pkg->{'url'} =~ /\.srpm$/);
43 if ($pkg->{'url'} =~ /\/(([^\/]+)-([^\-\/]+)-([^-\/]+).([^-\/]+)\.rpm)$/) {
45 $pkg->{'prefix'} = $2;
46 $pkg->{'version'} = $3;
47 $pkg->{'release'} = $4;
49 if ($pkg->{'version'} =~ /^(\d+)\.([0-9\.]+)$/){
50 local ($v1 = $1, $v2 = $2);
52 $pkg->{'version'} = "$v1.$v2";
55 elsif ($pkg->{'file'} =~ /\/([^\/]+)$/) {
61 # Show the search results
62 @rv = grep { !$_->{'source'} } @rv;
63 @rv = sort { local $vc = $b->{'version'} <=> $a->{'version'};
64 local $rc = $b->{'version'} <=> $a->{'version'};
65 return $vc ? $vc : $rc } @rv;
67 print "<table width=100%>\n";
68 print &ui_columns_start([ $text{'rpm_findrpm'},
69 $text{'rpm_finddistro'},
70 $text{'rpm_finddesc'} ], 100);
72 print &ui_columns_row([
73 "<a href='' onClick='sel(\"$r->{'url'}\")'>".
79 print &ui_columns_end();
82 print "<b>$text{'rpm_none'}</b> <p>\n";