A typo error has been inserted in my report.

The right piece of code is:

######
sub execute($;$$)
{
    my ($command, $stdout, $stderr) = @_;

fatal('$stdout must be a scalar reference') if $stdout && ref $stdout ne 'SCALAR'; fatal('$stderr must be a scalar reference') if $stderr && ref $stderr ne 'SCALAR';

    debug("Execute $command");

    my $sel = IO::Select->new();
    my $pid;

    if(defined $stdout && defined $stderr) {
        $pid = open3(gensym, \*CATCHOUT, \*CATCHERR, $command);
        $sel->add(\*CATCHOUT, \*CATCHERR);
    } elsif(defined $stdout) {
        $pid = open3(gensym, \*CATCHOUT, ">&STDERR", $command);
        $sel->add(\*CATCHOUT);
    } elsif(defined $stderr) {
        $pid = open3(gensym, ">&STDOUT", \*CATCHERR, $command);
        $sel->add(\*CATCHERR);
    } else {
        system($command);
        return getExitCode($?);
    }

    while (my @ready = $sel->can_read()) {
        foreach my $fh (@ready) {
            if ($stderr && fileno($fh) == fileno(\*CATCHERR)) {
                $$stderr .= do { local $/; <$fh> };
            } elsif($stdout) {
                $$stdout .= do { local $/; <$fh> };
            }

            $sel->remove($fh) if eof($fh);
        }
    }

    waitpid($pid, 0) if $pid;

    close(\*CATCHOUT) if defined $stdout;
    close(\*CATCHERR) if defined $stderr;

    chomp($$stdout ||= '');
    chomp($$stderr ||= '');

    getExitCode($?);
}
##############

sub restart
{
    my $self = shift;

    my $rs = $self->{'hooksManager'}->trigger('beforeMtaRestart');
    return $rs if $rs;

    my ($stdout, $stderr);
$rs = execute("$main::imscpConfig{'SERVICE_MNGR'} $self->{'config'}->{'MTA_SNAME'} restart", \$stdout, \$stderr);
    debug($stdout) if $stdout;
    error($stderr) if $stderr && $rs > 1;
    return $rs if $rs > 1;

    $self->{'hooksManager'}->trigger('afterMtaRestart');
}

##############



--
Laurent Declercq
iHMS/i-MSCP Project Lead


--
To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org

Reply via email to