11use r_efi:: protocols:: { simple_text_input, simple_text_output} ;
22
3+ use super :: env:: { CommandEnv , CommandEnvs } ;
34use crate :: collections:: BTreeMap ;
45pub use crate :: ffi:: OsString as EnvKey ;
56use crate :: ffi:: { OsStr , OsString } ;
@@ -10,7 +11,6 @@ use crate::sys::pal::helpers;
1011use crate :: sys:: pal:: os:: error_string;
1112use crate :: sys:: pipe:: AnonPipe ;
1213use crate :: sys:: unsupported;
13- use crate :: sys_common:: process:: { CommandEnv , CommandEnvs } ;
1414use crate :: { fmt, io} ;
1515
1616////////////////////////////////////////////////////////////////////////////////
@@ -139,72 +139,72 @@ impl Command {
139139 Stdio :: MakePipe => unsupported ( ) ,
140140 }
141141 }
142+ }
142143
143- pub fn output ( & mut self ) -> io:: Result < ( ExitStatus , Vec < u8 > , Vec < u8 > ) > {
144- let mut cmd = uefi_command_internal:: Image :: load_image ( & self . prog ) ?;
145-
146- // UEFI adds the bin name by default
147- if !self . args . is_empty ( ) {
148- let args = uefi_command_internal:: create_args ( & self . prog , & self . args ) ;
149- cmd. set_args ( args) ;
150- }
151-
152- // Setup Stdout
153- let stdout = self . stdout . unwrap_or ( Stdio :: MakePipe ) ;
154- let stdout = Self :: create_pipe ( stdout) ?;
155- if let Some ( con) = stdout {
156- cmd. stdout_init ( con)
157- } else {
158- cmd. stdout_inherit ( )
159- } ;
160-
161- // Setup Stderr
162- let stderr = self . stderr . unwrap_or ( Stdio :: MakePipe ) ;
163- let stderr = Self :: create_pipe ( stderr) ?;
164- if let Some ( con) = stderr {
165- cmd. stderr_init ( con)
166- } else {
167- cmd. stderr_inherit ( )
168- } ;
169-
170- // Setup Stdin
171- let stdin = self . stdin . unwrap_or ( Stdio :: Null ) ;
172- let stdin = Self :: create_stdin ( stdin) ?;
173- if let Some ( con) = stdin {
174- cmd. stdin_init ( con)
175- } else {
176- cmd. stdin_inherit ( )
177- } ;
178-
179- let env = env_changes ( & self . env ) ;
180-
181- // Set any new vars
182- if let Some ( e) = & env {
183- for ( k, ( _, v) ) in e {
184- match v {
185- Some ( v) => unsafe { crate :: env:: set_var ( k, v) } ,
186- None => unsafe { crate :: env:: remove_var ( k) } ,
187- }
144+ pub fn output ( command : & mut Command ) -> io:: Result < ( ExitStatus , Vec < u8 > , Vec < u8 > ) > {
145+ let mut cmd = uefi_command_internal:: Image :: load_image ( & command. prog ) ?;
146+
147+ // UEFI adds the bin name by default
148+ if !command. args . is_empty ( ) {
149+ let args = uefi_command_internal:: create_args ( & command. prog , & command. args ) ;
150+ cmd. set_args ( args) ;
151+ }
152+
153+ // Setup Stdout
154+ let stdout = command. stdout . unwrap_or ( Stdio :: MakePipe ) ;
155+ let stdout = Command :: create_pipe ( stdout) ?;
156+ if let Some ( con) = stdout {
157+ cmd. stdout_init ( con)
158+ } else {
159+ cmd. stdout_inherit ( )
160+ } ;
161+
162+ // Setup Stderr
163+ let stderr = command. stderr . unwrap_or ( Stdio :: MakePipe ) ;
164+ let stderr = Command :: create_pipe ( stderr) ?;
165+ if let Some ( con) = stderr {
166+ cmd. stderr_init ( con)
167+ } else {
168+ cmd. stderr_inherit ( )
169+ } ;
170+
171+ // Setup Stdin
172+ let stdin = command. stdin . unwrap_or ( Stdio :: Null ) ;
173+ let stdin = Command :: create_stdin ( stdin) ?;
174+ if let Some ( con) = stdin {
175+ cmd. stdin_init ( con)
176+ } else {
177+ cmd. stdin_inherit ( )
178+ } ;
179+
180+ let env = env_changes ( & command. env ) ;
181+
182+ // Set any new vars
183+ if let Some ( e) = & env {
184+ for ( k, ( _, v) ) in e {
185+ match v {
186+ Some ( v) => unsafe { crate :: env:: set_var ( k, v) } ,
187+ None => unsafe { crate :: env:: remove_var ( k) } ,
188188 }
189189 }
190+ }
190191
191- let stat = cmd. start_image ( ) ?;
192+ let stat = cmd. start_image ( ) ?;
192193
193- // Rollback any env changes
194- if let Some ( e) = env {
195- for ( k, ( v, _) ) in e {
196- match v {
197- Some ( v) => unsafe { crate :: env:: set_var ( k, v) } ,
198- None => unsafe { crate :: env:: remove_var ( k) } ,
199- }
194+ // Rollback any env changes
195+ if let Some ( e) = env {
196+ for ( k, ( v, _) ) in e {
197+ match v {
198+ Some ( v) => unsafe { crate :: env:: set_var ( k, v) } ,
199+ None => unsafe { crate :: env:: remove_var ( k) } ,
200200 }
201201 }
202+ }
202203
203- let stdout = cmd. stdout ( ) ?;
204- let stderr = cmd. stderr ( ) ?;
204+ let stdout = cmd. stdout ( ) ?;
205+ let stderr = cmd. stderr ( ) ?;
205206
206- Ok ( ( ExitStatus ( stat) , stdout, stderr) )
207- }
207+ Ok ( ( ExitStatus ( stat) , stdout, stderr) )
208208}
209209
210210impl From < AnonPipe > for Stdio {
0 commit comments