1
mirror of https://github.com/topjohnwu/Magisk synced 2024-11-16 00:13:57 +01:00

Add ResultExt

This commit is contained in:
topjohnwu 2023-05-05 23:57:34 -07:00
parent c0d1bf63bc
commit c0c9204848
2 changed files with 37 additions and 10 deletions

View File

@ -1,4 +1,4 @@
use std::fmt::Arguments;
use std::fmt::{Arguments, Display};
use std::io::{stderr, stdout, Write};
use std::process::exit;
@ -155,3 +155,34 @@ macro_rules! debug {
macro_rules! debug {
($($args:tt)+) => {};
}
pub trait ResultExt {
fn ok_or_log(&self);
fn ok_or_msg(&self, args: Arguments);
fn log_on_error(&self) -> &Self;
fn msg_on_error(&self, args: Arguments) -> &Self;
}
impl<R, E: Display> ResultExt for Result<R, E> {
fn ok_or_log(&self) {
if let Err(e) = self {
error!("{}", e);
}
}
fn ok_or_msg(&self, args: Arguments) {
if let Err(e) = self {
error!("{}: {}", args, e);
}
}
fn log_on_error(&self) -> &Self {
self.ok_or_log();
self
}
fn msg_on_error(&self, args: Arguments) -> &Self {
self.ok_or_msg(args);
self
}
}

View File

@ -7,8 +7,8 @@ use byteorder::{BigEndian, ReadBytesExt};
use protobuf::{EnumFull, Message};
use base::libc::c_char;
use base::WriteExt;
use base::{error, ptr_to_str};
use base::ptr_to_str;
use base::{ResultExt, WriteExt};
use crate::ffi;
use crate::update_metadata::install_operation::Type;
@ -148,11 +148,7 @@ fn do_extract_boot_from_payload(in_path: &str, out_path: &str) -> io::Result<()>
pub fn extract_boot_from_payload(in_path: *const c_char, out_path: *const c_char) -> bool {
let in_path = ptr_to_str(in_path);
let out_path = ptr_to_str(out_path);
match do_extract_boot_from_payload(in_path, out_path) {
Ok(_) => true,
Err(err) => {
error!("Failed to extract boot from payload: {}", err);
false
}
}
do_extract_boot_from_payload(in_path, out_path)
.msg_on_error(format_args!("Failed to extract boot from payload"))
.is_ok()
}