@@ -315,6 +315,7 @@ mutable struct Process <: AbstractPipe
315315 termsignal:: Int32
316316 exitnotify:: Condition
317317 closenotify:: Condition
318+ openstream:: Symbol # for open(cmd) deprecation
318319 function Process (cmd:: Cmd , handle:: Ptr{Void} ,
319320 in:: Union{Redirectable, Ptr{Void}} ,
320321 out:: Union{Redirectable, Ptr{Void}} ,
@@ -344,7 +345,9 @@ struct ProcessChain <: AbstractPipe
344345 in:: Redirectable
345346 out:: Redirectable
346347 err:: Redirectable
348+ openstream:: Symbol # for open(cmd) deprecation
347349 ProcessChain (stdios:: StdIOSet ) = new (Process[], stdios[1 ], stdios[2 ], stdios[3 ])
350+ ProcessChain (chain:: ProcessChain , openstream:: Symbol ) = new (chain. processes, chain. in, chain. out, chain. err, openstream) # for open(cmd) deprecation
348351end
349352pipe_reader (p:: ProcessChain ) = p. out
350353pipe_writer (p:: ProcessChain ) = p. in
@@ -589,11 +592,21 @@ function open(cmds::AbstractCmd, mode::AbstractString="r", other::Redirectable=D
589592 out = Pipe ()
590593 processes = spawn (cmds, (in,out,STDERR))
591594 close (out. in)
595+ if isa (processes, ProcessChain) # for open(cmd) deprecation
596+ processes = ProcessChain (processes, :out )
597+ else
598+ processes. openstream = :out
599+ end
592600 elseif mode == " w"
593601 in = Pipe ()
594602 out = other
595603 processes = spawn (cmds, (in,out,STDERR))
596604 close (in. out)
605+ if isa (processes, ProcessChain) # for open(cmd) deprecation
606+ processes = ProcessChain (processes, :in )
607+ else
608+ processes. openstream = :in
609+ end
597610 else
598611 throw (ArgumentError (" mode must be \" r\" or \" w\" , not \" $mode \" " ))
599612 end
0 commit comments