@@ -162,10 +162,10 @@ fn main() {
162162 debug ! ( "Blocklist: {blocklist:?}" ) ;
163163 }
164164 debug ! ( "" ) ;
165- if let Some ( descriptor_file) = extract_descriptor {
165+ if let Some ( descriptor_file) = & extract_descriptor {
166166 info ! ( "Dump flash descriptor to {descriptor_file}" ) ;
167167 }
168- if let Some ( me_file) = extract_me {
168+ if let Some ( me_file) = & extract_me {
169169 info ! ( "Dump ME region to {me_file}" ) ;
170170 }
171171 if let Some ( out_file) = & output {
@@ -191,11 +191,23 @@ fn main() {
191191 } ;
192192 match clean:: clean ( & fw. ifd , & me, & mut data, opts) {
193193 Ok ( data) => {
194- if let Some ( out_file ) = output {
195- let mut file = fs:: File :: create ( out_file ) . unwrap ( ) ;
196- file . write_all ( & data) . unwrap ( ) ;
194+ if let Some ( f ) = output {
195+ let mut f = fs:: File :: create ( f ) . unwrap ( ) ;
196+ f . write_all ( & data) . unwrap ( ) ;
197197 } else {
198- error ! ( "Clean operation failed" ) ;
198+ error ! ( "No output file given" ) ;
199+ }
200+ if let Ok ( ifd) = & fw. ifd {
201+ if let Some ( f) = extract_descriptor {
202+ let mut f = fs:: File :: create ( f) . unwrap ( ) ;
203+ let ifd_range = ifd. regions . ifd_range ( ) ;
204+ f. write_all ( & data[ ifd_range] ) . unwrap ( ) ;
205+ }
206+ if let Some ( f) = extract_me {
207+ let mut f = fs:: File :: create ( f) . unwrap ( ) ;
208+ let me_range = ifd. regions . me_range ( ) ;
209+ f. write_all ( & data[ me_range] ) . unwrap ( ) ;
210+ }
199211 }
200212 }
201213 Err ( e) => {
0 commit comments