mirror of
https://github.com/topjohnwu/Magisk.git
synced 2025-10-27 15:12:56 +00:00
Use super let to simplify code
This commit is contained in:
@@ -10,11 +10,11 @@ use lz4::{
|
|||||||
};
|
};
|
||||||
use std::cell::Cell;
|
use std::cell::Cell;
|
||||||
use std::fs::File;
|
use std::fs::File;
|
||||||
use std::io::{BufWriter, Read, Stdin, Stdout, Write, stdin, stdout};
|
use std::io::{BufWriter, Read, Write, stdin, stdout};
|
||||||
use std::mem::ManuallyDrop;
|
use std::mem::ManuallyDrop;
|
||||||
use std::num::NonZeroU64;
|
use std::num::NonZeroU64;
|
||||||
use std::ops::DerefMut;
|
use std::ops::DerefMut;
|
||||||
use std::os::fd::{AsRawFd, FromRawFd, RawFd};
|
use std::os::fd::{AsFd, AsRawFd, FromRawFd, RawFd};
|
||||||
use xz2::{
|
use xz2::{
|
||||||
stream::{Check as LzmaCheck, Filters as LzmaFilters, LzmaOptions, Stream as LzmaStream},
|
stream::{Check as LzmaCheck, Filters as LzmaFilters, LzmaOptions, Stream as LzmaStream},
|
||||||
write::{XzDecoder, XzEncoder},
|
write::{XzDecoder, XzEncoder},
|
||||||
@@ -426,36 +426,20 @@ pub fn decompress_bytes(format: FileFormat, in_bytes: &[u8], out_fd: RawFd) {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
enum AsRawFdFile {
|
|
||||||
Stdin(Stdin),
|
|
||||||
Stdout(Stdout),
|
|
||||||
File(File),
|
|
||||||
}
|
|
||||||
|
|
||||||
impl AsRawFd for AsRawFdFile {
|
|
||||||
fn as_raw_fd(&self) -> RawFd {
|
|
||||||
match self {
|
|
||||||
AsRawFdFile::Stdin(stdin) => stdin.as_raw_fd(),
|
|
||||||
AsRawFdFile::Stdout(stdout) => stdout.as_raw_fd(),
|
|
||||||
AsRawFdFile::File(file) => file.as_raw_fd(),
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
pub(crate) fn decompress(infile: &mut String, outfile: Option<&mut String>) -> LoggedResult<()> {
|
pub(crate) fn decompress(infile: &mut String, outfile: Option<&mut String>) -> LoggedResult<()> {
|
||||||
let in_std = infile == "-";
|
let in_std = infile == "-";
|
||||||
let mut rm_in = false;
|
let mut rm_in = false;
|
||||||
|
|
||||||
let raw_in = if in_std {
|
|
||||||
AsRawFdFile::Stdin(stdin())
|
|
||||||
} else {
|
|
||||||
AsRawFdFile::File(Utf8CStr::from_string(infile).open(O_RDONLY)?)
|
|
||||||
};
|
|
||||||
|
|
||||||
let mut buf = [0u8; 4096];
|
let mut buf = [0u8; 4096];
|
||||||
|
let raw_in = if in_std {
|
||||||
let mut in_file = unsafe { File::from_raw_fd(raw_in.as_raw_fd()) };
|
super let mut stdin = stdin();
|
||||||
let _ = in_file.read(&mut buf)?;
|
let _ = stdin.read(&mut buf)?;
|
||||||
|
stdin.as_fd()
|
||||||
|
} else {
|
||||||
|
super let mut infile = Utf8CStr::from_string(infile).open(O_RDONLY)?;
|
||||||
|
let _ = infile.read(&mut buf)?;
|
||||||
|
infile.as_fd()
|
||||||
|
};
|
||||||
|
|
||||||
let format = check_fmt(&buf);
|
let format = check_fmt(&buf);
|
||||||
|
|
||||||
@@ -467,12 +451,15 @@ pub(crate) fn decompress(infile: &mut String, outfile: Option<&mut String>) -> L
|
|||||||
|
|
||||||
let raw_out = if let Some(outfile) = outfile {
|
let raw_out = if let Some(outfile) = outfile {
|
||||||
if outfile == "-" {
|
if outfile == "-" {
|
||||||
AsRawFdFile::Stdout(stdout())
|
super let stdout = stdout();
|
||||||
|
stdout.as_fd()
|
||||||
} else {
|
} else {
|
||||||
AsRawFdFile::File(Utf8CStr::from_string(outfile).create(O_WRONLY | O_TRUNC, 0o644)?)
|
super let outfile = Utf8CStr::from_string(outfile).create(O_WRONLY | O_TRUNC, 0o644)?;
|
||||||
|
outfile.as_fd()
|
||||||
}
|
}
|
||||||
} else if in_std {
|
} else if in_std {
|
||||||
AsRawFdFile::Stdout(stdout())
|
super let stdout = stdout();
|
||||||
|
stdout.as_fd()
|
||||||
} else {
|
} else {
|
||||||
// strip the extension
|
// strip the extension
|
||||||
rm_in = true;
|
rm_in = true;
|
||||||
@@ -486,7 +473,8 @@ pub(crate) fn decompress(infile: &mut String, outfile: Option<&mut String>) -> L
|
|||||||
};
|
};
|
||||||
eprintln!("Decompressing to [{outfile}]");
|
eprintln!("Decompressing to [{outfile}]");
|
||||||
|
|
||||||
AsRawFdFile::File(Utf8CStr::from_string(&mut outfile).create(O_WRONLY | O_TRUNC, 0o644)?)
|
super let outfile = Utf8CStr::from_string(&mut outfile).create(O_WRONLY | O_TRUNC, 0o644)?;
|
||||||
|
outfile.as_fd()
|
||||||
};
|
};
|
||||||
|
|
||||||
decompress_bytes_fd(format, &buf, raw_in.as_raw_fd(), raw_out.as_raw_fd());
|
decompress_bytes_fd(format, &buf, raw_in.as_raw_fd(), raw_out.as_raw_fd());
|
||||||
@@ -511,24 +499,30 @@ pub(crate) fn compress(
|
|||||||
let mut rm_in = false;
|
let mut rm_in = false;
|
||||||
|
|
||||||
let raw_in = if in_std {
|
let raw_in = if in_std {
|
||||||
AsRawFdFile::Stdin(stdin())
|
super let stdin = stdin();
|
||||||
|
stdin.as_fd()
|
||||||
} else {
|
} else {
|
||||||
AsRawFdFile::File(Utf8CStr::from_string(infile).open(O_RDONLY)?)
|
super let infile = Utf8CStr::from_string(infile).open(O_RDONLY)?;
|
||||||
|
infile.as_fd()
|
||||||
};
|
};
|
||||||
|
|
||||||
let raw_out = if let Some(outfile) = outfile {
|
let raw_out = if let Some(outfile) = outfile {
|
||||||
if outfile == "-" {
|
if outfile == "-" {
|
||||||
AsRawFdFile::Stdout(stdout())
|
super let stdout = stdout();
|
||||||
|
stdout.as_fd()
|
||||||
} else {
|
} else {
|
||||||
AsRawFdFile::File(Utf8CStr::from_string(outfile).create(O_WRONLY | O_TRUNC, 0o644)?)
|
super let outfile = Utf8CStr::from_string(outfile).create(O_WRONLY | O_TRUNC, 0o644)?;
|
||||||
|
outfile.as_fd()
|
||||||
}
|
}
|
||||||
} else if in_std {
|
} else if in_std {
|
||||||
AsRawFdFile::Stdout(stdout())
|
super let stdout = stdout();
|
||||||
|
stdout.as_fd()
|
||||||
} else {
|
} else {
|
||||||
let mut outfile = format!("{infile}.{}", method.ext());
|
let mut outfile = format!("{infile}.{}", method.ext());
|
||||||
eprintln!("Compressing to [{outfile}]");
|
eprintln!("Compressing to [{outfile}]");
|
||||||
rm_in = true;
|
rm_in = true;
|
||||||
AsRawFdFile::File(Utf8CStr::from_string(&mut outfile).create(O_WRONLY | O_TRUNC, 0o644)?)
|
super let outfile = Utf8CStr::from_string(&mut outfile).create(O_WRONLY | O_TRUNC, 0o644)?;
|
||||||
|
outfile.as_fd()
|
||||||
};
|
};
|
||||||
|
|
||||||
compress_fd(method, raw_in.as_raw_fd(), raw_out.as_raw_fd());
|
compress_fd(method, raw_in.as_raw_fd(), raw_out.as_raw_fd());
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
#![feature(btree_extract_if)]
|
#![feature(btree_extract_if)]
|
||||||
#![feature(iter_intersperse)]
|
#![feature(iter_intersperse)]
|
||||||
#![feature(try_blocks)]
|
#![feature(try_blocks)]
|
||||||
|
#![feature(super_let)]
|
||||||
|
|
||||||
pub use base;
|
pub use base;
|
||||||
use compress::{compress_bytes, decompress_bytes};
|
use compress::{compress_bytes, decompress_bytes};
|
||||||
|
|||||||
Reference in New Issue
Block a user