#!/usr/local/bin/perl # search.cgi # Display a list of packages where the name or description matches some string require './software-lib.pl'; &ReadParse(); $in{'search'} || &error($text{'search_esearch'}); if (defined(&package_search)) { # Use system-specific search function $n = &package_search($in{'search'}); @match = ( 0 .. $n-1 ) if ($n); } else { # Search manually through entire list $n = &list_packages(); $s = $in{'search'}; for($i=0; $i<$n; $i++) { if ($packages{$i,'name'} =~ /\Q$s\E/i || $packages{$i,'desc'} =~ /\Q$s\E/i) { push(@match, $i); } } } if (@match == 1 && $in{'goto'}) { $p = $packages{$match[0],'name'}; $v = $packages{$match[0],'version'}; &redirect("edit_pack.cgi?package=".&urlize($p)."&version=".&urlize($v)); exit; } &ui_print_header(undef, $text{'search_title'}, "", "search"); if (@match) { @match = sort { lc($packages{$a,'name'}) cmp lc($packages{$b,'name'}) } @match; print "",&text('search_match', "$s"),"
\n"; print "
\n"; } else { print "",&text('search_nomatch', "$s"),"\n"; } &ui_print_footer("", $text{'index_return'});