# Fills the array %packages with a list of all packages
sub list_packages
{
-local($_, $list, $i); $i = 0;
-$list = join(' ', map { quotemeta($_) } @_);
-&open_execute_command(PKGINFO, "pkginfo $list", 1, 1);
+local $i = 0;
+local $list = join(' ', map { quotemeta($_) } @_);
+local $_;
+&open_execute_command(PKGINFO, "pkginfo -l $list", 1, 1);
while(<PKGINFO>) {
- last if (/The following software/i);
- if (/^(\S+)\s+(\S+)\s+(.*)$/) {
- $packages{$i,'name'} = $2;
- $packages{$i,'class'} = $1;
- $packages{$i,'desc'} = $3;
+ if (/^\s*PKGINST:\s*(\S+)/) {
+ # Start of new package
+ $packages{$i,'name'} = $1;
$i++;
}
+ elsif (/^\s*NAME:\s*(\S.*)/) {
+ $packages{($i-1),'desc'} = $1;
+ }
+ elsif (/^\s*CATEGORY:\s*([^\s,]+)/) {
+ $packages{($i-1),'class'} = $1;
+ }
+ elsif (/^\s*ARCH:\s*(\S+)/) {
+ $packages{($i-1),'arch'} = $1;
+ }
+ elsif (/^\s*VERSION:\s*(\S+)/) {
+ $packages{($i-1),'version'} = $1;
+ $packages{($i-1),'shortversion'} = $1;
+ $packages{($i-1),'shortversion'} =~ s/,REV=.*//;
+ }
}
close(PKGINFO);
+if (!$i) {
+ # Failed .. fall back to without -l
+ &open_execute_command(PKGINFO, "pkginfo $list", 1, 1);
+ while(<PKGINFO>) {
+ last if (/The following software/i);
+ if (/^(\S+)\s+(\S+)\s+(.*)$/) {
+ $packages{$i,'name'} = $2;
+ $packages{$i,'class'} = $1;
+ $packages{$i,'desc'} = $3;
+ $i++;
+ }
+ }
+ close(PKGINFO);
+ }
return $i;
}
$text{'search_desc'} ], 100, 0, \@tds);
foreach $i (@match) {
local @cols;
+ local $v = $packages{$i,'shortversion'} ||
+ $packages{$i,'version'};
push(@cols, "<a href=\"edit_pack.cgi?search=$s&package=".
&urlize($packages{$i,'name'})."&version=".
&urlize($packages{$i,'version'})."\">".&html_escape(
- $packages{$i,'name'}.($packages{$i,'version'} ?
- " $packages{$i,'version'}" : ""))."</a>");
+ $packages{$i,'name'}.($v ? " $v" : ""))."</a>");
$c = $packages{$i,'class'};
push(@cols, $c ? &html_escape($c)
: $text{'search_none'});
for($i=0; $i<$n; $i++) {
push(@pack, $packages{$i,'name'});
push(@vers, $packages{$i,'version'});
+ push(@svers, $packages{$i,'shortversion'} ||
+ $packages{$i,'version'});
push(@class, $packages{$i,'class'});
push(@desc, $packages{$i,'desc'});
}
print "<a href=\"edit_pack.cgi?package=",
&urlize($pack[$i]),"&version=",
&urlize($vers[$i]),"\">",&html_escape($pack[$i].
- ($vers[$i] ? " $vers[$i]" : "")),"</a></td>\n";
+ ($svers[$i] ? " $svers[$i]" : "")),"</a></td>\n";
print "<td>",&html_escape($desc[$i]),"</td>\n";
print "</tr>\n";
}