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(); }
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(); }