11use r_efi:: protocols:: 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////////////////////////////////////////////////////////////////////////////////
@@ -121,63 +121,63 @@ impl Command {
121121 Stdio :: Inherit => Ok ( None ) ,
122122 }
123123 }
124+ }
124125
125- pub fn output ( & mut self ) -> io:: Result < ( ExitStatus , Vec < u8 > , Vec < u8 > ) > {
126- let mut cmd = uefi_command_internal:: Image :: load_image ( & self . prog ) ?;
127-
128- // UEFI adds the bin name by default
129- if !self . args . is_empty ( ) {
130- let args = uefi_command_internal:: create_args ( & self . prog , & self . args ) ;
131- cmd. set_args ( args) ;
132- }
133-
134- // Setup Stdout
135- let stdout = self . stdout . unwrap_or ( Stdio :: MakePipe ) ;
136- let stdout = Self :: create_pipe ( stdout) ?;
137- if let Some ( con) = stdout {
138- cmd. stdout_init ( con)
139- } else {
140- cmd. stdout_inherit ( )
141- } ;
142-
143- // Setup Stderr
144- let stderr = self . stderr . unwrap_or ( Stdio :: MakePipe ) ;
145- let stderr = Self :: create_pipe ( stderr) ?;
146- if let Some ( con) = stderr {
147- cmd. stderr_init ( con)
148- } else {
149- cmd. stderr_inherit ( )
150- } ;
151-
152- let env = env_changes ( & self . env ) ;
153-
154- // Set any new vars
155- if let Some ( e) = & env {
156- for ( k, ( _, v) ) in e {
157- match v {
158- Some ( v) => unsafe { crate :: env:: set_var ( k, v) } ,
159- None => unsafe { crate :: env:: remove_var ( k) } ,
160- }
126+ pub fn output ( command : & mut Command ) -> io:: Result < ( ExitStatus , Vec < u8 > , Vec < u8 > ) > {
127+ let mut cmd = uefi_command_internal:: Image :: load_image ( & command. prog ) ?;
128+
129+ // UEFI adds the bin name by default
130+ if !command. args . is_empty ( ) {
131+ let args = uefi_command_internal:: create_args ( & command. prog , & command. args ) ;
132+ cmd. set_args ( args) ;
133+ }
134+
135+ // Setup Stdout
136+ let stdout = command. stdout . unwrap_or ( Stdio :: MakePipe ) ;
137+ let stdout = Command :: create_pipe ( stdout) ?;
138+ if let Some ( con) = stdout {
139+ cmd. stdout_init ( con)
140+ } else {
141+ cmd. stdout_inherit ( )
142+ } ;
143+
144+ // Setup Stderr
145+ let stderr = command. stderr . unwrap_or ( Stdio :: MakePipe ) ;
146+ let stderr = Command :: create_pipe ( stderr) ?;
147+ if let Some ( con) = stderr {
148+ cmd. stderr_init ( con)
149+ } else {
150+ cmd. stderr_inherit ( )
151+ } ;
152+
153+ let env = env_changes ( & command. env ) ;
154+
155+ // Set any new vars
156+ if let Some ( e) = & env {
157+ for ( k, ( _, v) ) in e {
158+ match v {
159+ Some ( v) => unsafe { crate :: env:: set_var ( k, v) } ,
160+ None => unsafe { crate :: env:: remove_var ( k) } ,
161161 }
162162 }
163+ }
163164
164- let stat = cmd. start_image ( ) ?;
165+ let stat = cmd. start_image ( ) ?;
165166
166- // Rollback any env changes
167- if let Some ( e) = env {
168- for ( k, ( v, _) ) in e {
169- match v {
170- Some ( v) => unsafe { crate :: env:: set_var ( k, v) } ,
171- None => unsafe { crate :: env:: remove_var ( k) } ,
172- }
167+ // Rollback any env changes
168+ if let Some ( e) = env {
169+ for ( k, ( v, _) ) in e {
170+ match v {
171+ Some ( v) => unsafe { crate :: env:: set_var ( k, v) } ,
172+ None => unsafe { crate :: env:: remove_var ( k) } ,
173173 }
174174 }
175+ }
175176
176- let stdout = cmd. stdout ( ) ?;
177- let stderr = cmd. stderr ( ) ?;
177+ let stdout = cmd. stdout ( ) ?;
178+ let stderr = cmd. stderr ( ) ?;
178179
179- Ok ( ( ExitStatus ( stat) , stdout, stderr) )
180- }
180+ Ok ( ( ExitStatus ( stat) , stdout, stderr) )
181181}
182182
183183impl From < AnonPipe > for Stdio {
0 commit comments