1
1
use r_efi:: protocols:: { simple_text_input, simple_text_output} ;
2
2
3
+ use super :: env:: { CommandEnv , CommandEnvs } ;
3
4
use crate :: collections:: BTreeMap ;
4
5
pub use crate :: ffi:: OsString as EnvKey ;
5
6
use crate :: ffi:: { OsStr , OsString } ;
@@ -10,7 +11,6 @@ use crate::sys::pal::helpers;
10
11
use crate :: sys:: pal:: os:: error_string;
11
12
use crate :: sys:: pipe:: AnonPipe ;
12
13
use crate :: sys:: unsupported;
13
- use crate :: sys_common:: process:: { CommandEnv , CommandEnvs } ;
14
14
use crate :: { fmt, io} ;
15
15
16
16
////////////////////////////////////////////////////////////////////////////////
@@ -139,72 +139,72 @@ impl Command {
139
139
Stdio :: MakePipe => unsupported ( ) ,
140
140
}
141
141
}
142
+ }
142
143
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) } ,
188
188
}
189
189
}
190
+ }
190
191
191
- let stat = cmd. start_image ( ) ?;
192
+ let stat = cmd. start_image ( ) ?;
192
193
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) } ,
200
200
}
201
201
}
202
+ }
202
203
203
- let stdout = cmd. stdout ( ) ?;
204
- let stderr = cmd. stderr ( ) ?;
204
+ let stdout = cmd. stdout ( ) ?;
205
+ let stderr = cmd. stderr ( ) ?;
205
206
206
- Ok ( ( ExitStatus ( stat) , stdout, stderr) )
207
- }
207
+ Ok ( ( ExitStatus ( stat) , stdout, stderr) )
208
208
}
209
209
210
210
impl From < AnonPipe > for Stdio {
0 commit comments