make the pipe setup code less convoluted
Change-Id: Ied870c892cc3dbbf24a3d9416f685e51a74e5c17 Reviewed-by: Lars Knoll <lars.knoll@digia.com> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com> Reviewed-by: Maurice Kalinowski <maurice.kalinowski@digia.com>bb10
parent
4e5c2834a2
commit
dd9d6b3d5b
|
|
@ -155,28 +155,33 @@ bool QProcessPrivate::createChannel(Channel &channel)
|
|||
|
||||
if (channel.type == Channel::Normal) {
|
||||
// we're piping this channel to our own process
|
||||
const bool isStdInChannel = (&channel == &stdinChannel);
|
||||
if (isStdInChannel || processChannelMode != QProcess::ForwardedChannels)
|
||||
qt_create_pipe(channel.pipe, isStdInChannel);
|
||||
else
|
||||
duplicateStdWriteChannel(channel.pipe, (&channel == &stdoutChannel) ? STD_OUTPUT_HANDLE : STD_ERROR_HANDLE);
|
||||
|
||||
if (processChannelMode != QProcess::ForwardedChannels) {
|
||||
if (&channel == &stdinChannel) {
|
||||
qt_create_pipe(channel.pipe, true);
|
||||
} else {
|
||||
QWindowsPipeReader *pipeReader = 0;
|
||||
if (&channel == &stdoutChannel) {
|
||||
if (!stdoutReader) {
|
||||
stdoutReader = new QWindowsPipeReader(q);
|
||||
q->connect(stdoutReader, SIGNAL(readyRead()), SLOT(_q_canReadStandardOutput()));
|
||||
if (processChannelMode != QProcess::ForwardedChannels) {
|
||||
if (!stdoutReader) {
|
||||
stdoutReader = new QWindowsPipeReader(q);
|
||||
q->connect(stdoutReader, SIGNAL(readyRead()), SLOT(_q_canReadStandardOutput()));
|
||||
}
|
||||
pipeReader = stdoutReader;
|
||||
} else {
|
||||
duplicateStdWriteChannel(channel.pipe, STD_OUTPUT_HANDLE);
|
||||
}
|
||||
pipeReader = stdoutReader;
|
||||
} else if (&channel == &stderrChannel) {
|
||||
if (!stderrReader) {
|
||||
stderrReader = new QWindowsPipeReader(q);
|
||||
q->connect(stderrReader, SIGNAL(readyRead()), SLOT(_q_canReadStandardError()));
|
||||
} else /* if (&channel == &stderrChannel) */ {
|
||||
if (processChannelMode != QProcess::ForwardedChannels) {
|
||||
if (!stderrReader) {
|
||||
stderrReader = new QWindowsPipeReader(q);
|
||||
q->connect(stderrReader, SIGNAL(readyRead()), SLOT(_q_canReadStandardError()));
|
||||
}
|
||||
pipeReader = stderrReader;
|
||||
} else {
|
||||
duplicateStdWriteChannel(channel.pipe, STD_ERROR_HANDLE);
|
||||
}
|
||||
pipeReader = stderrReader;
|
||||
}
|
||||
if (pipeReader) {
|
||||
qt_create_pipe(channel.pipe, false);
|
||||
pipeReader->setHandle(channel.pipe[0]);
|
||||
pipeReader->startAsyncRead();
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue