Skip to content

Commit 45a80d6

Browse files
committed
main: return Result with io::Error, get rid of unwrap()s
Signed-off-by: Daniel Maslowski <[email protected]>
1 parent c9d5a12 commit 45a80d6

File tree

1 file changed

+28
-18
lines changed

1 file changed

+28
-18
lines changed

src/main.rs

Lines changed: 28 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,10 @@
99
//! image in its entirety. This tool brings together all publicly known details.
1010
1111
use std::fs;
12-
use std::io::Write;
12+
use std::io::{self, Write};
1313

1414
use clap::{Parser, Subcommand};
15-
use log::{debug, error, info};
15+
use log::{debug, error, info, warn};
1616

1717
mod clean;
1818
mod show;
@@ -111,7 +111,7 @@ struct Cli {
111111
verbose: bool,
112112
}
113113

114-
fn main() {
114+
fn main() -> Result<(), io::Error> {
115115
println!("Intel Firmware Tool 🔧");
116116
// Default to log level "info". Otherwise, you get no "regular" logs.
117117
let env = env_logger::Env::default().default_filter_or("info");
@@ -170,16 +170,23 @@ fn main() {
170170
info!("Output will be written to: {out_file}");
171171
}
172172
info!("Reading {file_name}...");
173-
let mut data = fs::read(file_name).unwrap();
173+
let mut data = fs::read(file_name)?;
174174
let fw = Firmware::parse(&data, debug);
175175
show::show(&fw, verbose);
176176
println!();
177177

178-
let Some(me_res) = fw.me else {
179-
return;
178+
let me_res = match fw.me {
179+
Some(r) => r,
180+
None => {
181+
return Err(io::Error::new(
182+
io::ErrorKind::NotFound,
183+
"no ME firmware recognized",
184+
));
185+
}
180186
};
181-
let Ok(me) = me_res else {
182-
return;
187+
let me = match me_res {
188+
Ok(r) => r,
189+
Err(e) => return Err(io::Error::new(io::ErrorKind::InvalidData, e)),
183190
};
184191
if check {
185192
let fpt = &me.fpt_area.fpt;
@@ -202,7 +209,7 @@ fn main() {
202209
Err(e) => println!(" {n}: signature error: {e}"),
203210
}
204211
}
205-
return;
212+
return Ok(());
206213
}
207214
let opts = clean::Options {
208215
keep_modules,
@@ -215,42 +222,45 @@ fn main() {
215222
match clean::clean(&fw.ifd, &me, &mut data, opts) {
216223
Ok(data) => {
217224
if let Some(f) = output {
218-
let mut f = fs::File::create(f).unwrap();
219-
f.write_all(&data).unwrap();
225+
let mut f = fs::File::create(f)?;
226+
f.write_all(&data)?;
220227
} else {
221-
error!("No output file given");
228+
warn!("No output file given");
222229
}
223230
if let Ok(ifd) = &fw.ifd {
224231
if let Some(f) = extract_descriptor {
225-
let mut f = fs::File::create(f).unwrap();
232+
let mut f = fs::File::create(f)?;
226233
let ifd_range = ifd.regions.ifd_range();
227-
f.write_all(&data[ifd_range]).unwrap();
234+
f.write_all(&data[ifd_range])?;
228235
}
229236
if let Some(f) = extract_me {
230-
let mut f = fs::File::create(f).unwrap();
237+
let mut f = fs::File::create(f)?;
231238
let me_range = ifd.regions.me_range();
232-
f.write_all(&data[me_range]).unwrap();
239+
f.write_all(&data[me_range])?;
233240
}
234241
}
235242
}
236243
Err(e) => {
237244
error!("Clean operation failed: {e}");
245+
return Err(io::Error::other(e));
238246
}
239247
}
240248
}
241249
MeCommand::Scan { file_name } => {
242-
let data = fs::read(file_name).unwrap();
250+
let data = fs::read(file_name)?;
243251
let fw = Firmware::scan(&data, debug);
244252
show::show(&fw, verbose);
245253
}
246254
MeCommand::Check { file_name } => {
247255
todo!("check {file_name}")
248256
}
249257
MeCommand::Show { file_name } => {
250-
let data = fs::read(file_name).unwrap();
258+
let data = fs::read(file_name)?;
251259
let fw = Firmware::parse(&data, debug);
252260
show::show(&fw, verbose);
253261
}
254262
},
255263
}
264+
265+
Ok(())
256266
}

0 commit comments

Comments
 (0)