From 365a05640bfe54f5aa74e2841e0695fab3968de7 Mon Sep 17 00:00:00 2001 From: Jarek Kobus Date: Mon, 4 Apr 2022 10:24:37 +0200 Subject: [PATCH] QtcProcess: Get rid of setErrorString() method It's internal method, not meant to be used outside. It's only used in case of FailedToStart error. Remove it also from ProcessInterface. Leave it inside DefaultImpl and its subclasses only. Remove m_errorString field from ProcessSetupData. Change-Id: Ie605b95c2ff605ab1259045f1a5b16049207c1d3 Reviewed-by: hjk --- src/libs/ssh/sshremoteprocess.cpp | 10 +++++++++- src/libs/ssh/sshremoteprocess.h | 2 ++ src/libs/utils/launchersocket.cpp | 9 +++++---- src/libs/utils/launchersocket.h | 1 + src/libs/utils/processinterface.h | 3 --- src/libs/utils/qtcprocess.cpp | 13 ++----------- src/libs/utils/qtcprocess.h | 1 - src/libs/utils/terminalprocess_p.h | 1 - 8 files changed, 19 insertions(+), 21 deletions(-) diff --git a/src/libs/ssh/sshremoteprocess.cpp b/src/libs/ssh/sshremoteprocess.cpp index e58cf5750d2..088c8f868bd 100644 --- a/src/libs/ssh/sshremoteprocess.cpp +++ b/src/libs/ssh/sshremoteprocess.cpp @@ -61,7 +61,7 @@ SshRemoteProcess::SshRemoteProcess(const QString &command, const QStringList &co void SshRemoteProcess::emitFinished() { if (exitStatus() == QProcess::CrashExit) - setErrorString(tr("The ssh process crashed: %1").arg(errorString())); + m_errorString = tr("The ssh process crashed: %1").arg(errorString()); emit finished(); } @@ -75,6 +75,7 @@ void SshRemoteProcess::emitErrorOccurred(QProcess::ProcessError error) void SshRemoteProcess::start() { QTC_ASSERT(!isRunning(), return); + m_errorString.clear(); const CommandLine cmd = fullLocalCommandLine(); if (!m_displayName.isEmpty()) { Environment env = environment(); @@ -86,6 +87,13 @@ void SshRemoteProcess::start() QtcProcess::start(); } +QString SshRemoteProcess::errorString() const +{ + if (!m_errorString.isEmpty()) + return m_errorString; + return QtcProcess::errorString(); +} + void SshRemoteProcess::requestX11Forwarding(const QString &displayName) { m_displayName = displayName; diff --git a/src/libs/ssh/sshremoteprocess.h b/src/libs/ssh/sshremoteprocess.h index f89a7313c6a..99aa01a1cec 100644 --- a/src/libs/ssh/sshremoteprocess.h +++ b/src/libs/ssh/sshremoteprocess.h @@ -42,6 +42,7 @@ public: void requestX11Forwarding(const QString &displayName); void start() override; + QString errorString() const override; Utils::CommandLine fullLocalCommandLine(bool inTerminal = false) const; @@ -55,6 +56,7 @@ private: QString m_remoteCommand; QStringList m_connectionArgs; QString m_displayName; + QString m_errorString; }; } // namespace QSsh diff --git a/src/libs/utils/launchersocket.cpp b/src/libs/utils/launchersocket.cpp index fb73bca0df7..bab0bbe45cb 100644 --- a/src/libs/utils/launchersocket.cpp +++ b/src/libs/utils/launchersocket.cpp @@ -205,7 +205,8 @@ void CallerHandle::handleError(const ErrorSignal *launcherSignal) QTC_ASSERT(isCalledFromCallersThread(), return); m_processState = QProcess::NotRunning; m_error = launcherSignal->error(); - m_setup->m_errorString = launcherSignal->errorString(); + if (!launcherSignal->errorString().isEmpty()) + m_errorString = launcherSignal->errorString(); if (m_error == QProcess::FailedToStart) m_exitCode = 255; // This code is being returned by QProcess when FailedToStart error occurred emit errorOccurred(m_error); @@ -314,7 +315,7 @@ void CallerHandle::cancel() case QProcess::NotRunning: break; case QProcess::Starting: - m_setup->m_errorString = QCoreApplication::translate("Utils::LauncherHandle", + m_errorString = QCoreApplication::translate("Utils::LauncherHandle", "Process was canceled before it was started."); m_error = QProcess::FailedToStart; if (LauncherInterface::isReady()) // TODO: race condition with m_processState??? @@ -355,13 +356,13 @@ int CallerHandle::exitCode() const QString CallerHandle::errorString() const { QTC_ASSERT(isCalledFromCallersThread(), return {}); - return m_setup->m_errorString; + return m_errorString; } void CallerHandle::setErrorString(const QString &str) { QTC_ASSERT(isCalledFromCallersThread(), return); - m_setup->m_errorString = str; + m_errorString = str; } void CallerHandle::start(const QString &program, const QStringList &arguments) diff --git a/src/libs/utils/launchersocket.h b/src/libs/utils/launchersocket.h index 0a9fabd1674..3e147019735 100644 --- a/src/libs/utils/launchersocket.h +++ b/src/libs/utils/launchersocket.h @@ -164,6 +164,7 @@ private: QByteArray m_stdout; QByteArray m_stderr; QProcess::ProcessError m_error = QProcess::UnknownError; + QString m_errorString; QString m_command; QStringList m_arguments; diff --git a/src/libs/utils/processinterface.h b/src/libs/utils/processinterface.h index 8d6a3046075..f6f2cb9ec6e 100644 --- a/src/libs/utils/processinterface.h +++ b/src/libs/utils/processinterface.h @@ -52,7 +52,6 @@ public: QProcess::ProcessChannelMode m_processChannelMode = QProcess::SeparateChannels; QVariantHash m_extraData; QString m_standardInputFile; - QString m_errorString; // partial internal QString m_nativeArguments; // internal, dependent on specific code path bool m_abortOnMetaChars = true; @@ -89,7 +88,6 @@ public: virtual QProcess::ProcessError error() const = 0; virtual QString errorString() const = 0; - virtual void setErrorString(const QString &str) = 0; virtual bool waitForStarted(int msecs) = 0; virtual bool waitForReadyRead(int msecs) = 0; @@ -147,7 +145,6 @@ public: QProcess::ProcessError error() const override { return m_target->error(); } QString errorString() const override { return m_target->errorString(); } - void setErrorString(const QString &str) override { m_target->setErrorString(str); } bool waitForStarted(int msecs) override { return m_target->waitForStarted(msecs); } bool waitForReadyRead(int msecs) override { return m_target->waitForReadyRead(msecs); } diff --git a/src/libs/utils/qtcprocess.cpp b/src/libs/utils/qtcprocess.cpp index 4bdad3bb518..7bd20d76b38 100644 --- a/src/libs/utils/qtcprocess.cpp +++ b/src/libs/utils/qtcprocess.cpp @@ -221,6 +221,7 @@ protected: void defaultStart(); private: + virtual void setErrorString(const QString &str) = 0; virtual void doDefaultStart(const QString &program, const QStringList &arguments) = 0; bool dissolveCommand(QString *program, QStringList *arguments); bool ensureProgramExists(const QString &program); @@ -394,7 +395,6 @@ private: m_process->setWorkingDirectory(m_setup->m_workingDirectory.path()); m_process->setStandardInputFile(m_setup->m_standardInputFile); m_process->setProcessChannelMode(m_setup->m_processChannelMode); - m_process->setErrorString(m_setup->m_errorString); if (m_setup->m_lowPriority) m_process->setLowPriority(); if (m_setup->m_unixTerminalDisabled) @@ -525,7 +525,6 @@ public: void setProcessInterface(ProcessInterface *process) { m_process.reset(process); - m_setup.m_errorString.clear(); m_process->setParent(this); connect(m_process.get(), &ProcessInterface::started, @@ -1182,15 +1181,7 @@ QString QtcProcess::errorString() const { if (d->m_process) return d->m_process->errorString(); - return d->m_setup.m_errorString; -} - -void QtcProcess::setErrorString(const QString &str) -{ - if (d->m_process) - d->m_process->setErrorString(str); - else - d->m_setup.m_errorString = str; + return {}; } qint64 QtcProcess::processId() const diff --git a/src/libs/utils/qtcprocess.h b/src/libs/utils/qtcprocess.h index 93759904ae1..1e73b0176f3 100644 --- a/src/libs/utils/qtcprocess.h +++ b/src/libs/utils/qtcprocess.h @@ -75,7 +75,6 @@ public: QProcess::ProcessError error() const; virtual QString errorString() const; - void setErrorString(const QString &str); bool waitForStarted(int msecs = 30000); bool waitForReadyRead(int msecs = 30000); diff --git a/src/libs/utils/terminalprocess_p.h b/src/libs/utils/terminalprocess_p.h index 5e8341a11c2..e30c8651c86 100644 --- a/src/libs/utils/terminalprocess_p.h +++ b/src/libs/utils/terminalprocess_p.h @@ -49,7 +49,6 @@ public: QByteArray readAllStandardError() final { QTC_CHECK(false); return {}; } qint64 write(const QByteArray &) final { QTC_CHECK(false); return -1; } - void setErrorString(const QString &) final { QTC_CHECK(false); } void terminate() final { stopProcess(); } void kill() final { stopProcess(); }