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