ksud: re-extract ksud when necessary close #1242

This commit is contained in:
weishu
2024-01-04 12:08:58 +08:00
parent 097e291d93
commit b99701d216
4 changed files with 7 additions and 6 deletions

View File

@@ -17,11 +17,12 @@ struct Asset;
#[folder = "bin/x86_64"]
struct Asset;
pub fn ensure_binaries() -> Result<()> {
pub fn ensure_binaries(ignore_if_exist: bool) -> Result<()> {
for file in Asset::iter() {
utils::ensure_binary(
format!("{BINARY_DIR}{file}"),
&Asset::get(&file).unwrap().data,
ignore_if_exist,
)?
}
Ok(())

View File

@@ -126,7 +126,7 @@ pub fn on_post_data_fs() -> Result<()> {
// we should clean the module mount point if it exists
ensure_clean_dir(module_dir)?;
assets::ensure_binaries().with_context(|| "Failed to extract bin assets")?;
assets::ensure_binaries(true).with_context(|| "Failed to extract bin assets")?;
if Path::new(module_update_img).exists() {
if module_update_flag.exists() {
@@ -259,7 +259,7 @@ pub fn install() -> Result<()> {
std::fs::copy("/proc/self/exe", defs::DAEMON_PATH)?;
restorecon::lsetfilecon(defs::DAEMON_PATH, restorecon::ADB_CON)?;
// install binary assets
assets::ensure_binaries().with_context(|| "Failed to extract assets")?;
assets::ensure_binaries(false).with_context(|| "Failed to extract assets")?;
#[cfg(target_os = "android")]
link_ksud_to_bin()?;

View File

@@ -330,7 +330,7 @@ fn _install_module(zip: &str) -> Result<()> {
// print banner
println!(include_str!("banner"));
assets::ensure_binaries().with_context(|| "Failed to extract assets")?;
assets::ensure_binaries(false).with_context(|| "Failed to extract assets")?;
// first check if workding dir is usable
ensure_dir_exists(defs::WORKING_DIR).with_context(|| "Failed to create working dir")?;

View File

@@ -45,8 +45,8 @@ pub fn ensure_dir_exists<T: AsRef<Path>>(dir: T) -> Result<()> {
}
}
pub fn ensure_binary<T: AsRef<Path>>(path: T, contents: &[u8]) -> Result<()> {
if path.as_ref().exists() {
pub fn ensure_binary<T: AsRef<Path>>(path: T, contents: &[u8], ignore_if_exist: bool) -> Result<()> {
if ignore_if_exist && path.as_ref().exists() {
return Ok(());
}