) {
local @l = split(/\s+/);
if ($l[1] eq $_[0]) {
# Found it!
$cf =~ /\/([^0-9\/]+)-(\d[^\s\/]+)\/CONTENTS$/;
push(@packs, $1);
$type = $l[0] if (!$type);
}
}
close(FILE);
}
return 0 if (!@packs);
local $real = &translate_filename($_[0]);
local @st = stat($real);
$file{'packages'} = join(' ', @packs);
$file{'path'} = $_[0];
$file{'user'} = getpwuid($st[4]);
$file{'group'} = getgrgid($st[5]);
$file{'mode'} = sprintf "%o", $st[2] & 07777;
$file{'size'} = $st[7];
$file{'link'} = readlink($real);
$file{'type'} = $type eq 'dir' ? 1 :
$type eq 'sym' ? 3 : 0;
return 1;
}
# delete_package(package, [&options])
# Attempt to remove some package
sub delete_package
{
local $out = &backquote_logged("emerge -u ".quotemeta($_[0])." 2>&1");
return $? ? "$out
" : undef;
}
sub package_system
{
return "Gentoo Ebuild";
}
sub package_help
{
return "emerge";
}
$has_update_system = 1;
# update_system_input()
# Returns HTML for entering a package to install
sub update_system_input
{
return "$text{'emerge_input'} ";
}
# update_system_install([package])
# Install some package with emerge
sub update_system_install
{
local $update = $_[0] || $in{'update'};
local $cmd = "emerge ".quotemeta($update);
local @rv;
print &text('emerge_install', "$cmd"),"\n";
print "\n";
&additional_log('exec', undef, $cmd);
&open_execute_command(CMD, "$cmd 2>&1 ) {
print &html_escape($_);
if (/^\>\>\>\s+([^\/]+)\/([^0-9]+)-(\d\S+)\s+merged\./i) {
push(@rv, $2);
}
}
close(CMD);
print "\n";
if ($?) { print "$text{'emerge_failed'}\n"; }
else { print "$text{'emerge_ok'}
\n"; }
return @rv;
}
1;