diff options
author | hjk <hjk@qt.io> | 2021-05-05 15:23:34 +0200 |
---|---|---|
committer | hjk <hjk@qt.io> | 2021-05-07 08:24:18 +0000 |
commit | 9a7a0098a3d28bbafe881ddc0f13727389e2122d (patch) | |
tree | d93fc7dbbc77d5f709f375070d782ffb18a59687 | |
parent | 40e2bb2551291d706522d715209fc51d95afbb1e (diff) | |
download | qt-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.cpp | 17 | ||||
-rw-r--r-- | src/libs/utils/shellcommand.h | 2 | ||||
-rw-r--r-- | src/libs/utils/synchronousprocess.cpp | 16 | ||||
-rw-r--r-- | src/libs/utils/synchronousprocess.h | 9 | ||||
-rw-r--r-- | src/plugins/cmakeprojectmanager/cmakeprojectimporter.cpp | 2 | ||||
-rw-r--r-- | src/plugins/cmakeprojectmanager/cmaketool.cpp | 2 | ||||
-rw-r--r-- | src/plugins/vcsbase/vcscommand.cpp | 9 | ||||
-rw-r--r-- | src/plugins/vcsbase/vcscommand.h | 1 |
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; |