Mercurial > hg > easyhg
diff hgrunner.cpp @ 107:fdca34c989c0
* Make interactivity optional in hgrunner (makes running non-interactive, local commands a bit quicker)
author | Chris Cannam |
---|---|
date | Thu, 25 Nov 2010 20:18:10 +0000 |
parents | af314dd436d5 |
children | 1721c580c10e |
line wrap: on
line diff
--- a/hgrunner.cpp Thu Nov 25 17:54:35 2010 +0000 +++ b/hgrunner.cpp Thu Nov 25 20:18:10 2010 +0000 @@ -226,20 +226,25 @@ } } -void HgRunner::startHgCommand(QString workingDir, QStringList params) +void HgRunner::startHgCommand(QString workingDir, QStringList params, bool interactive) { #ifdef Q_OS_WIN32 // This at least means we won't block on the non-working password prompt params.push_front("ui.interactive=false"); #else // password prompt should work here - params.push_front("ui.interactive=true"); + if (interactive) { + params.push_front("ui.interactive=true"); + } else { + params.push_front("ui.interactive=false"); + } #endif params.push_front("--config"); - startCommand(getHgBinaryName(), workingDir, params); + startCommand(getHgBinaryName(), workingDir, params, interactive); } -void HgRunner::startCommand(QString command, QString workingDir, QStringList params) +void HgRunner::startCommand(QString command, QString workingDir, QStringList params, + bool interactive) { m_isRunning = true; setRange(0, 0); @@ -255,18 +260,22 @@ } m_procInput = 0; + m_ptySlaveFilename = ""; + #ifndef Q_OS_WIN32 - char name[1024]; - if (openpty(&m_ptyMasterFd, &m_ptySlaveFd, name, NULL, NULL)) { - perror("openpty failed"); - } else { - DEBUG << "openpty succeeded: master " << m_ptyMasterFd - << " slave " << m_ptySlaveFd << " filename " << name << endl; - m_procInput = new QFile; - m_procInput->open(m_ptyMasterFd, QFile::WriteOnly); - m_ptySlaveFilename = name; - m_proc->setStandardInputFile(m_ptySlaveFilename); - ::close(m_ptySlaveFd); + if (interactive) { + char name[1024]; + if (openpty(&m_ptyMasterFd, &m_ptySlaveFd, name, NULL, NULL)) { + perror("openpty failed"); + } else { + DEBUG << "openpty succeeded: master " << m_ptyMasterFd + << " slave " << m_ptySlaveFd << " filename " << name << endl; + m_procInput = new QFile; + m_procInput->open(m_ptyMasterFd, QFile::WriteOnly); + m_ptySlaveFilename = name; + m_proc->setStandardInputFile(m_ptySlaveFilename); + ::close(m_ptySlaveFd); + } } #endif