Merge topic 'cmuvprocesschain-input-file'

e329704546 cmUVProcessChain: Add support for SetExternalStream(Stream_INPUT)

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: buildbot <buildbot@kitware.com>
Merge-request: !8552
This commit is contained in:
Brad King
2023-06-13 15:12:59 +00:00
committed by Kitware Robot
3 changed files with 56 additions and 5 deletions

View File

@@ -64,6 +64,7 @@ struct cmUVProcessChain::InternalData
cm::uv_loop_ptr Loop;
StreamData<std::ostream> InputStreamData;
StreamData<std::istream> OutputStreamData;
StreamData<std::istream> ErrorStreamData;
cm::uv_pipe_ptr TempOutputPipe;
@@ -134,9 +135,6 @@ cmUVProcessChainBuilder& cmUVProcessChainBuilder::SetExternalStream(
{
switch (stdio) {
case Stream_INPUT:
// FIXME
break;
case Stream_OUTPUT:
case Stream_ERROR: {
auto& streamData = this->Stdio[stdio];
@@ -184,6 +182,25 @@ bool cmUVProcessChain::InternalData::Prepare(
{
this->Builder = builder;
auto const& input =
this->Builder->Stdio[cmUVProcessChainBuilder::Stream_INPUT];
auto& inputData = this->InputStreamData;
switch (input.Type) {
case cmUVProcessChainBuilder::None:
inputData.Stdio.flags = UV_IGNORE;
break;
case cmUVProcessChainBuilder::Builtin: {
// FIXME
break;
}
case cmUVProcessChainBuilder::External:
inputData.Stdio.flags = UV_INHERIT_FD;
inputData.Stdio.data.fd = input.FileDescriptor;
break;
}
auto const& error =
this->Builder->Stdio[cmUVProcessChainBuilder::Stream_ERROR];
auto& errorData = this->ErrorStreamData;
@@ -328,10 +345,10 @@ void cmUVProcessChain::InternalData::SpawnProcess(
}
std::array<uv_stdio_container_t, 3> stdio;
stdio[0] = uv_stdio_container_t();
if (first) {
stdio[0].flags = UV_IGNORE;
stdio[0] = this->InputStreamData.Stdio;
} else {
stdio[0] = uv_stdio_container_t();
stdio[0].flags = UV_INHERIT_STREAM;
stdio[0].data.stream = process.InputPipe;
}