diff --git a/src/libs/utils/launcherpackets.cpp b/src/libs/utils/launcherpackets.cpp index 0de10253c63..7e7bbfd86ae 100644 --- a/src/libs/utils/launcherpackets.cpp +++ b/src/libs/utils/launcherpackets.cpp @@ -58,12 +58,12 @@ StartProcessPacket::StartProcessPacket(quintptr token) void StartProcessPacket::doSerialize(QDataStream &stream) const { - stream << command << arguments << workingDir << env << openMode << channelMode; + stream << command << arguments << workingDir << env << openMode << channelMode << standardInputFile; } void StartProcessPacket::doDeserialize(QDataStream &stream) { - stream >> command >> arguments >> workingDir >> env >> openMode >> channelMode; + stream >> command >> arguments >> workingDir >> env >> openMode >> channelMode >> standardInputFile; } diff --git a/src/libs/utils/launcherpackets.h b/src/libs/utils/launcherpackets.h index 6844292e07f..cd5a8a35ec2 100644 --- a/src/libs/utils/launcherpackets.h +++ b/src/libs/utils/launcherpackets.h @@ -101,6 +101,7 @@ public: QStringList env; QIODevice::OpenMode openMode = QIODevice::ReadWrite; QProcess::ProcessChannelMode channelMode = QProcess::SeparateChannels; + QString standardInputFile; private: void doSerialize(QDataStream &stream) const override; diff --git a/src/libs/utils/launchersocket.cpp b/src/libs/utils/launchersocket.cpp index cae4265a034..c5b997f3068 100644 --- a/src/libs/utils/launchersocket.cpp +++ b/src/libs/utils/launchersocket.cpp @@ -326,6 +326,7 @@ void LauncherHandle::doStart() p.workingDir = m_workingDirectory; p.openMode = m_openMode; p.channelMode = m_channelMode; + p.standardInputFile = m_standardInputFile; sendPacket(p); } diff --git a/src/libs/utils/launchersocket.h b/src/libs/utils/launchersocket.h index c4a425dbf8b..a8499bd5466 100644 --- a/src/libs/utils/launchersocket.h +++ b/src/libs/utils/launchersocket.h @@ -90,6 +90,7 @@ public: QProcess::ProcessError error() const { QMutexLocker locker(&m_mutex); return m_error; } QString program() const { QMutexLocker locker(&m_mutex); return m_command; } + void setStandardInputFile(const QString &fileName) { QMutexLocker locker(&m_mutex); m_standardInputFile = fileName; } void setProcessChannelMode(QProcess::ProcessChannelMode mode) { QMutexLocker locker(&m_mutex); if (mode != QProcess::SeparateChannels && mode != QProcess::MergedChannels) { @@ -175,6 +176,7 @@ private: QString m_workingDirectory; QIODevice::OpenMode m_openMode = QIODevice::ReadWrite; QProcess::ProcessChannelMode m_channelMode = QProcess::SeparateChannels; + QString m_standardInputFile; CallerHandle *m_callerHandle = nullptr; diff --git a/src/libs/utils/qtcprocess.cpp b/src/libs/utils/qtcprocess.cpp index 81fc9076a2b..824c3eff0b6 100644 --- a/src/libs/utils/qtcprocess.cpp +++ b/src/libs/utils/qtcprocess.cpp @@ -313,7 +313,7 @@ public: qint64 write(const QByteArray &data) override { QTC_CHECK(false); return -1; } void closeWriteChannel() override { /*QTC_CHECK(false);*/ } - void setStandardInputFile(const QString &fileName) override { QTC_CHECK(false); } + void setStandardInputFile(const QString &fileName) override { m_handle->setStandardInputFile(fileName); } void setProcessChannelMode(QProcess::ProcessChannelMode mode) override { m_handle->setProcessChannelMode(mode); } qint64 bytesAvailable() const override { QTC_CHECK(false); return 0; } diff --git a/src/tools/processlauncher/launchersockethandler.cpp b/src/tools/processlauncher/launchersockethandler.cpp index 98beca57d28..bfe08d26fc8 100644 --- a/src/tools/processlauncher/launchersockethandler.cpp +++ b/src/tools/processlauncher/launchersockethandler.cpp @@ -231,6 +231,7 @@ void LauncherSocketHandler::handleStartPacket() process->setEnvironment(packet.env); process->setWorkingDirectory(packet.workingDir); process->setProcessChannelMode(packet.channelMode); + process->setStandardInputFile(packet.standardInputFile); process->start(packet.command, packet.arguments, packet.openMode); process->closeWriteChannel(); }