Skip to content

Commit 73de7a4

Browse files
committed
Fewer unwrap()s
1 parent 510c6a9 commit 73de7a4

File tree

3 files changed

+27
-35
lines changed

3 files changed

+27
-35
lines changed

boring-sys/build/main.rs

Lines changed: 23 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,8 @@ fn get_boringssl_source_path(config: &Config) -> &PathBuf {
135135
}
136136

137137
let _ = fs::remove_dir_all(&src_path);
138-
fs_extra::dir::copy(submodule_path, &config.out_dir, &Default::default()).unwrap();
138+
fs_extra::dir::copy(submodule_path, &config.out_dir, &Default::default())
139+
.expect("out dir copy");
139140

140141
// NOTE: .git can be both file and dir, depening on whether it was copied from a submodule
141142
// or created by the patches code.
@@ -370,31 +371,23 @@ fn get_extra_clang_args_for_bindgen(config: &Config) -> Vec<String> {
370371
let mut params = Vec::new();
371372

372373
// Add platform-specific parameters.
373-
#[allow(clippy::single_match)]
374374
match &*config.target_os {
375375
"ios" | "macos" => {
376376
// When cross-compiling for Apple targets, tell bindgen to use SDK sysroot,
377377
// and *don't* use system headers of the host macOS.
378378
let sdk = get_apple_sdk_name(config);
379-
let output = std::process::Command::new("xcrun")
380-
.args(["--show-sdk-path", "--sdk", sdk])
381-
.output()
382-
.unwrap();
383-
if !output.status.success() {
384-
if let Some(exit_code) = output.status.code() {
385-
println!("cargo:warning=xcrun failed: exit code {exit_code}");
386-
} else {
387-
println!("cargo:warning=xcrun failed: killed");
379+
match run_command(Command::new("xcrun").args(["--show-sdk-path", "--sdk", sdk])) {
380+
Ok(output) => {
381+
let sysroot = std::str::from_utf8(&output.stdout).expect("xcrun output");
382+
params.push("-isysroot".to_string());
383+
// There is typically a newline at the end which confuses clang.
384+
params.push(sysroot.trim_end().to_string());
385+
}
386+
Err(e) => {
387+
println!("cargo:warning={e}");
388+
// Uh... let's try anyway, I guess?
388389
}
389-
std::io::stderr().write_all(&output.stderr).unwrap();
390-
// Uh... let's try anyway, I guess?
391-
return params;
392390
}
393-
let mut sysroot = String::from_utf8(output.stdout).unwrap();
394-
// There is typically a newline at the end which confuses clang.
395-
sysroot.truncate(sysroot.trim_end().len());
396-
params.push("-isysroot".to_string());
397-
params.push(sysroot);
398391
}
399392
"android" => {
400393
let mut android_sysroot = config
@@ -405,20 +398,18 @@ fn get_extra_clang_args_for_bindgen(config: &Config) -> Vec<String> {
405398

406399
android_sysroot.extend(["toolchains", "llvm", "prebuilt"]);
407400

408-
let toolchain = match pick_best_android_ndk_toolchain(&android_sysroot) {
409-
Ok(toolchain) => toolchain,
401+
match pick_best_android_ndk_toolchain(&android_sysroot) {
402+
Ok(toolchain) => {
403+
android_sysroot.push(toolchain);
404+
android_sysroot.push("sysroot");
405+
params.push("--sysroot".to_string());
406+
params.push(android_sysroot.into_os_string().into_string().unwrap());
407+
}
410408
Err(e) => {
411-
println!(
412-
"cargo:warning=failed to find prebuilt Android NDK toolchain for bindgen: {e}"
413-
);
409+
println!("cargo:warning=failed to find prebuilt Android NDK toolchain for bindgen: {e}");
414410
// Uh... let's try anyway, I guess?
415-
return params;
416411
}
417-
};
418-
android_sysroot.push(toolchain);
419-
android_sysroot.push("sysroot");
420-
params.push("--sysroot".to_string());
421-
params.push(android_sysroot.into_os_string().into_string().unwrap());
412+
}
422413
}
423414
_ => {}
424415
}
@@ -502,8 +493,8 @@ fn apply_patch(config: &Config, patch_name: &str) -> io::Result<()> {
502493
fn run_command(command: &mut Command) -> io::Result<Output> {
503494
let out = command.output()?;
504495

505-
println!("{}", std::str::from_utf8(&out.stdout).unwrap());
506-
eprintln!("{}", std::str::from_utf8(&out.stderr).unwrap());
496+
std::io::stderr().write_all(&out.stderr)?;
497+
std::io::stdout().write_all(&out.stdout)?;
507498

508499
if !out.status.success() {
509500
let err = match out.status.code() {

boring/src/macros.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,8 @@ macro_rules! private_key_from_pem {
77
unsafe {
88
ffi::init();
99
let bio = crate::bio::MemBioSlice::new(pem)?;
10-
let passphrase = ::std::ffi::CString::new(passphrase).unwrap();
10+
let passphrase = ::std::ffi::CString::new(passphrase)
11+
.map_err(crate::error::ErrorStack::internal_error)?;
1112
cvt_p($f(bio.as_ptr(),
1213
ptr::null_mut(),
1314
None,

boring/src/ssl/mod.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1466,7 +1466,7 @@ impl SslContextBuilder {
14661466
/// [`ciphers`]: https://www.openssl.org/docs/manmaster/apps/ciphers.html
14671467
#[corresponds(SSL_CTX_set_cipher_list)]
14681468
pub fn set_cipher_list(&mut self, cipher_list: &str) -> Result<(), ErrorStack> {
1469-
let cipher_list = CString::new(cipher_list).unwrap();
1469+
let cipher_list = CString::new(cipher_list).map_err(ErrorStack::internal_error)?;
14701470
unsafe {
14711471
cvt(ffi::SSL_CTX_set_cipher_list(
14721472
self.as_ptr(),
@@ -1488,7 +1488,7 @@ impl SslContextBuilder {
14881488
/// [`ciphers`]: <https://docs.openssl.org/master/man1/openssl-ciphers/>.
14891489
#[corresponds(SSL_CTX_set_strict_cipher_list)]
14901490
pub fn set_strict_cipher_list(&mut self, cipher_list: &str) -> Result<(), ErrorStack> {
1491-
let cipher_list = CString::new(cipher_list).unwrap();
1491+
let cipher_list = CString::new(cipher_list).map_err(ErrorStack::internal_error)?;
14921492
unsafe {
14931493
cvt(ffi::SSL_CTX_set_strict_cipher_list(
14941494
self.as_ptr(),

0 commit comments

Comments
 (0)