void CvsJob::start()
{
    if( !d->rsh.isEmpty() )
        d->childproc->setEnv("CVS_RSH", d->rsh);

    if( !d->server.isEmpty() )
        d->childproc->setEnv("CVS_SERVER", d->server);

    if( !d->directory.isEmpty() ) {
        kDebug(9500) << "Working directory:" << d->directory;
        d->childproc->setWorkingDirectory(d->directory);
    }

    connect(d->childproc, SIGNAL(finished(int, QProcess::ExitStatus)),
            SLOT(slotProcessExited(int, QProcess::ExitStatus)));
    connect(d->childproc, SIGNAL(error(QProcess::ProcessError)),
            SLOT(slotProcessError(QProcess::ProcessError)));

    connect(d->lineMaker, SIGNAL(receivedStdoutLines(const QStringList&)),
            SLOT(slotReceivedStdout(const QStringList&)));
    connect(d->lineMaker, SIGNAL(receivedStderrLines(const QStringList&)),
            SLOT(slotReceivedStderr(const QStringList&)) );

    kDebug(9500) << "Execute cvs command:" << cvsCommand();

    d->outputLines.clear();
    d->isRunning = true;
    d->childproc->setOutputChannelMode( d->commMode );
    d->childproc->setProgram( d->command );
    d->childproc->start();
}
Esempio n. 2
0
bool CvsJob::execute()
{
    // setup job environment to use the ssh-agent (if it is running)
    SshAgent ssh;
    if( !ssh.pid().isEmpty() )
    {
        // qCDebug(log_cervisia) << "PID  = " << ssh.pid();
        // qCDebug(log_cervisia) << "SOCK = " << ssh.authSock();

        d->childproc->setEnv("SSH_AGENT_PID", ssh.pid());
        d->childproc->setEnv("SSH_AUTH_SOCK", ssh.authSock());
    }

    d->childproc->setEnv("SSH_ASKPASS", "cvsaskpass");

    if( !d->rsh.isEmpty() )
        d->childproc->setEnv("CVS_RSH", d->rsh);

    if( !d->server.isEmpty() )
        d->childproc->setEnv("CVS_SERVER", d->server);

    if( !d->directory.isEmpty() )
        d->childproc->setWorkingDirectory(d->directory);

    connect(d->childproc, SIGNAL(finished(int,QProcess::ExitStatus)),
        SLOT(slotProcessFinished()));
    connect(d->childproc, SIGNAL(readyReadStandardOutput()),
        SLOT(slotReceivedStdout()));
    connect(d->childproc, SIGNAL(readyReadStandardError()),
        SLOT(slotReceivedStderr()));

    qCDebug(log_cervisia) << "Execute cvs command:" << cvsCommand();

    d->isRunning = true;
    d->childproc->setOutputChannelMode(KProcess::SeparateChannels);
    d->childproc->setShellCommand(cvsCommand());
    d->childproc->start();
    return d->childproc->waitForStarted();
}