summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorhjk <hjk@qt.io>2021-05-05 15:23:34 +0200
committerhjk <hjk@qt.io>2021-05-07 08:24:18 +0000
commit9a7a0098a3d28bbafe881ddc0f13727389e2122d (patch)
treed93fc7dbbc77d5f709f375070d782ffb18a59687
parent40e2bb2551291d706522d715209fc51d95afbb1e (diff)
downloadqt-creator-9a7a0098a3d28bbafe881ddc0f13727389e2122d.tar.gz
Utils: Replace SynchronousCommand::flags by a named bool
The potential extensibility was never used, and a similar use case in QtcProcess (setLowPriority()) used a named setter. Change-Id: I77d84ea2206995d5069265f8df78f40cf2ba8a36 Reviewed-by: Orgad Shaneh <orgads@gmail.com>
-rw-r--r--src/libs/utils/shellcommand.cpp17
-rw-r--r--src/libs/utils/shellcommand.h2
-rw-r--r--src/libs/utils/synchronousprocess.cpp16
-rw-r--r--src/libs/utils/synchronousprocess.h9
-rw-r--r--src/plugins/cmakeprojectmanager/cmakeprojectimporter.cpp2
-rw-r--r--src/plugins/cmakeprojectmanager/cmaketool.cpp2
-rw-r--r--src/plugins/vcsbase/vcscommand.cpp9
-rw-r--r--src/plugins/vcsbase/vcscommand.h1
8 files changed, 21 insertions, 37 deletions
diff --git a/src/libs/utils/shellcommand.cpp b/src/libs/utils/shellcommand.cpp
index a12253dfd2..469445f809 100644
--- a/src/libs/utils/shellcommand.cpp
+++ b/src/libs/utils/shellcommand.cpp
@@ -103,6 +103,7 @@ public:
bool m_progressiveOutput = false;
bool m_hadOutput = false;
bool m_aborted = false;
+ bool m_disableUnixTerminal = false;
};
ShellCommandPrivate::Job::Job(const QString &wd, const CommandLine &command,
@@ -224,11 +225,6 @@ void ShellCommand::cancel()
emit terminate();
}
-unsigned ShellCommand::processFlags() const
-{
- return 0;
-}
-
void ShellCommand::addTask(QFuture<void> &future)
{
Q_UNUSED(future)
@@ -357,7 +353,8 @@ SynchronousProcessResponse ShellCommand::runFullySynchronous(const CommandLine &
{
// Set up process
SynchronousProcess process;
- process.setFlags(processFlags());
+ if (d->m_disableUnixTerminal)
+ process.setDisableUnixTerminal();
const QString dir = workDirectory(workingDirectory);
if (!dir.isEmpty())
process.setWorkingDirectory(dir);
@@ -401,7 +398,8 @@ SynchronousProcessResponse ShellCommand::runSynchronous(const CommandLine &cmd,
process.setTimeoutS(timeoutS);
if (d->m_codec)
process.setCodec(d->m_codec);
- process.setFlags(processFlags());
+ if (d->m_disableUnixTerminal)
+ process.setDisableUnixTerminal();
const QString dir = workDirectory(workingDirectory);
if (!dir.isEmpty())
process.setWorkingDirectory(dir);
@@ -489,6 +487,11 @@ void ShellCommand::setOutputProxyFactory(const std::function<OutputProxy *()> &f
d->m_proxyFactory = factory;
}
+void ShellCommand::setDisableUnixTerminal()
+{
+ d->m_disableUnixTerminal = true;
+}
+
ProgressParser::ProgressParser() :
m_futureMutex(new QMutex)
{ }
diff --git a/src/libs/utils/shellcommand.h b/src/libs/utils/shellcommand.h
index d5cc9fdcb9..042a80eff5 100644
--- a/src/libs/utils/shellcommand.h
+++ b/src/libs/utils/shellcommand.h
@@ -141,6 +141,7 @@ public:
void setProgressiveOutput(bool progressive);
void setOutputProxyFactory(const std::function<OutputProxy *()> &factory);
+ void setDisableUnixTerminal();
// This is called once per job in a thread.
// When called from the UI thread it will execute fully synchronously, so no signals will
@@ -162,7 +163,6 @@ signals:
void terminate(); // Internal
protected:
- virtual unsigned processFlags() const;
virtual void addTask(QFuture<void> &future);
int timeoutS() const;
QString workDirectory(const QString &wd) const;
diff --git a/src/libs/utils/synchronousprocess.cpp b/src/libs/utils/synchronousprocess.cpp
index a52fbd8f7e..0155f3c149 100644
--- a/src/libs/utils/synchronousprocess.cpp
+++ b/src/libs/utils/synchronousprocess.cpp
@@ -93,8 +93,7 @@ class TerminalControllingProcess : public QtcProcess
public:
TerminalControllingProcess();
- unsigned flags() const { return m_flags; }
- void setFlags(unsigned tc) { m_flags = tc; }
+ void setDisableUnixTerminal() { m_disableUnixTerminal = true; }
protected:
#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
@@ -104,7 +103,7 @@ protected:
private:
void setupChildProcess_impl();
- unsigned m_flags = 0;
+ bool m_disableUnixTerminal = false;
};
TerminalControllingProcess::TerminalControllingProcess()
@@ -125,7 +124,7 @@ void TerminalControllingProcess::setupChildProcess_impl()
{
#ifdef Q_OS_UNIX
// Disable terminal by becoming a session leader.
- if (m_flags & SynchronousProcess::UnixTerminalDisabled)
+ if (m_disableUnixTerminal)
setsid();
#endif
}
@@ -410,14 +409,9 @@ void SynchronousProcess::setEnvironment(const Environment &e)
d->m_process.setEnvironment(Environment(e));
}
-unsigned SynchronousProcess::flags() const
+void SynchronousProcess::setDisableUnixTerminal()
{
- return d->m_process.flags();
-}
-
-void SynchronousProcess::setFlags(unsigned tc)
-{
- d->m_process.setFlags(tc);
+ d->m_process.setDisableUnixTerminal();
}
void SynchronousProcess::setExitCodeInterpreter(const ExitCodeInterpreter &interpreter)
diff --git a/src/libs/utils/synchronousprocess.h b/src/libs/utils/synchronousprocess.h
index f911edbf69..b46699d7c1 100644
--- a/src/libs/utils/synchronousprocess.h
+++ b/src/libs/utils/synchronousprocess.h
@@ -85,11 +85,6 @@ class QTCREATOR_UTILS_EXPORT SynchronousProcess : public QObject
{
Q_OBJECT
public:
- enum Flags {
- // Unix: Do not give the child process a terminal for input prompting.
- UnixTerminalDisabled = 0x1
- };
-
SynchronousProcess();
~SynchronousProcess() override;
@@ -119,8 +114,8 @@ public:
void setWorkingDirectory(const QString &workingDirectory);
QString workingDirectory() const;
- unsigned flags() const;
- void setFlags(unsigned);
+ // Unix: Do not give the child process a terminal for input prompting.
+ void setDisableUnixTerminal();
void setExitCodeInterpreter(const ExitCodeInterpreter &interpreter);
ExitCodeInterpreter exitCodeInterpreter() const;
diff --git a/src/plugins/cmakeprojectmanager/cmakeprojectimporter.cpp b/src/plugins/cmakeprojectmanager/cmakeprojectimporter.cpp
index 3dd759e819..59ab709855 100644
--- a/src/plugins/cmakeprojectmanager/cmakeprojectimporter.cpp
+++ b/src/plugins/cmakeprojectmanager/cmakeprojectimporter.cpp
@@ -200,7 +200,7 @@ static FilePath qmakeFromCMakeCache(const CMakeConfig &config)
SynchronousProcess cmake;
cmake.setTimeoutS(5);
- cmake.setFlags(SynchronousProcess::UnixTerminalDisabled);
+ cmake.setDisableUnixTerminal();
Environment env = Environment::systemEnvironment();
Environment::setupEnglishOutput(&env);
cmake.setEnvironment(env);
diff --git a/src/plugins/cmakeprojectmanager/cmaketool.cpp b/src/plugins/cmakeprojectmanager/cmaketool.cpp
index e6cb1f434c..5bcf3aa9c1 100644
--- a/src/plugins/cmakeprojectmanager/cmaketool.cpp
+++ b/src/plugins/cmakeprojectmanager/cmaketool.cpp
@@ -193,7 +193,7 @@ Utils::SynchronousProcessResponse CMakeTool::run(const QStringList &args, int ti
{
Utils::SynchronousProcess cmake;
cmake.setTimeoutS(timeoutS);
- cmake.setFlags(Utils::SynchronousProcess::UnixTerminalDisabled);
+ cmake.setDisableUnixTerminal();
Utils::Environment env = Utils::Environment::systemEnvironment();
Utils::Environment::setupEnglishOutput(&env);
cmake.setEnvironment(env);
diff --git a/src/plugins/vcsbase/vcscommand.cpp b/src/plugins/vcsbase/vcscommand.cpp
index 73ef302737..d58feebe92 100644
--- a/src/plugins/vcsbase/vcscommand.cpp
+++ b/src/plugins/vcsbase/vcscommand.cpp
@@ -41,6 +41,7 @@ VcsCommand::VcsCommand(const QString &workingDirectory, const Environment &envir
m_preventRepositoryChanged(false)
{
VcsOutputWindow::setRepository(workingDirectory);
+ setDisableUnixTerminal();
setOutputProxyFactory([this] {
auto proxy = new OutputProxy;
VcsOutputWindow *outputWindow = VcsOutputWindow::instance();
@@ -94,14 +95,6 @@ void VcsCommand::emitRepositoryChanged(const QString &workingDirectory)
Core::VcsManager::emitRepositoryChanged(workDirectory(workingDirectory));
}
-unsigned VcsCommand::processFlags() const
-{
- unsigned processFlags = 0;
- if (!VcsBase::sshPrompt().isEmpty() && (flags() & SshPasswordPrompt))
- processFlags |= SynchronousProcess::UnixTerminalDisabled;
- return processFlags;
-}
-
void VcsCommand::coreAboutToClose()
{
m_preventRepositoryChanged = true;
diff --git a/src/plugins/vcsbase/vcscommand.h b/src/plugins/vcsbase/vcscommand.h
index 1650012fa3..2a96dfea4e 100644
--- a/src/plugins/vcsbase/vcscommand.h
+++ b/src/plugins/vcsbase/vcscommand.h
@@ -51,7 +51,6 @@ public:
const Utils::ExitCodeInterpreter &interpreter = Utils::defaultExitCodeInterpreter) override;
private:
- unsigned processFlags() const override;
void emitRepositoryChanged(const QString &workingDirectory);
void coreAboutToClose() override;