| Viewing file:  rpmfind.cgi (2.13 KB)      -rwxr-xr-x Select action/file-type:
 
  (+) |  (+) |  (+) | Code (+) | Session (+) |  (+) | SDB (+) |  (+) |  (+) |  (+) |  (+) |  (+) | 
 
#!/usr/bin/perl# rpmfind.cgi
 # Display a search window for rpmfind.net
 
 require './software-lib.pl';
 &ReadParse();
 
 $rpmfind_host = "rpmfind.net";
 $rpmfind_port = 80;
 $rpmfind_page = "/linux/rpm2html/search.php?query=";
 
 &header();
 print <<EOF;
 <script>
 function sel(m)
 {
 window.opener.ifield.value = m;
 window.close();
 return false;
 }
 </script>
 EOF
 
 # Search form
 print &ui_form_start("rpmfind.cgi");
 print &ui_submit($text{'rpm_search'});
 print &ui_textbox("search", $in{'search'}, 20);
 print &ui_form_end();
 
 if ($in{'search'}) {
 # Call the rpmfind.net website to get matches
 print &ui_hr();
 $out = "";
 &http_download($rpmfind_host, $rpmfind_port,
 $rpmfind_page.&urlize($in{'search'}), \$out);
 while($out =~ /<tr[^>]*>.*?<td[^>]*>([^<]*)<\/td>.*?<td[^>]*>([^<]*)<\/td>.*?((ftp|http|https):[^>]+\.rpm).*?<\/tr>([\000-\377]*)/i) {
 local $pkg = { 'url' => $3,
 'dist' => $2,
 'desc' => $1 };
 $out = $5;
 $pkg->{'source'}++ if ($pkg->{'url'} =~ /\.src\.rpm$/ ||
 $pkg->{'url'} =~ /\.srpm$/);
 if ($pkg->{'url'} =~ /\/(([^\/]+)-([^\-\/]+)-([^-\/]+).([^-\/]+)\.rpm)$/) {
 $pkg->{'file'} = $1;
 $pkg->{'prefix'} = $2;
 $pkg->{'version'} = $3;
 $pkg->{'release'} = $4;
 $pkg->{'arch'} = $5;
 if ($pkg->{'version'} =~ /^(\d+)\.([0-9\.]+)$/){
 local ($v1 = $1, $v2 = $2);
 $v2 =~ s/\.//g;
 $pkg->{'version'} = "$v1.$v2";
 }
 }
 elsif ($pkg->{'file'} =~ /\/([^\/]+)$/) {
 $pkg->{'file'} = $1;
 }
 push(@rv, $pkg);
 }
 
 # Show the search results
 @rv = grep { !$_->{'source'} } @rv;
 @rv = sort { local $vc = $b->{'version'} <=> $a->{'version'};
 local $rc = $b->{'version'} <=> $a->{'version'};
 return $vc ? $vc : $rc } @rv;
 if (@rv) {
 print "<table width=100%>\n";
 print &ui_columns_start([ $text{'rpm_findrpm'},
 $text{'rpm_finddistro'},
 $text{'rpm_finddesc'} ], 100);
 foreach $r (@rv) {
 print &ui_columns_row([
 "<a href='' onClick='sel(\"$r->{'url'}\")'>".
 "$r->{'file'}</a>",
 $r->{'dist'},
 $r->{'desc'}
 ]);
 }
 print &ui_columns_end();
 }
 else {
 print "<b>$text{'rpm_none'}</b> <p>\n";
 }
 }
 
 &ui_print_footer();
 
 
 |