1
1
use r_efi:: protocols:: 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
////////////////////////////////////////////////////////////////////////////////
@@ -121,63 +121,63 @@ impl Command {
121
121
Stdio :: Inherit => Ok ( None ) ,
122
122
}
123
123
}
124
+ }
124
125
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) } ,
161
161
}
162
162
}
163
+ }
163
164
164
- let stat = cmd. start_image ( ) ?;
165
+ let stat = cmd. start_image ( ) ?;
165
166
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) } ,
173
173
}
174
174
}
175
+ }
175
176
176
- let stdout = cmd. stdout ( ) ?;
177
- let stderr = cmd. stderr ( ) ?;
177
+ let stdout = cmd. stdout ( ) ?;
178
+ let stderr = cmd. stderr ( ) ?;
178
179
179
- Ok ( ( ExitStatus ( stat) , stdout, stderr) )
180
- }
180
+ Ok ( ( ExitStatus ( stat) , stdout, stderr) )
181
181
}
182
182
183
183
impl From < AnonPipe > for Stdio {
0 commit comments