diff --git a/userspace/ksud/src/event.rs b/userspace/ksud/src/event.rs index 6b79d8ee..c2a1514e 100644 --- a/userspace/ksud/src/event.rs +++ b/userspace/ksud/src/event.rs @@ -195,25 +195,29 @@ pub fn on_post_data_fs() -> Result<()> { Ok(()) } -pub fn on_services() -> Result<()> { +fn run_stage(stage: &str) { utils::umask(0); if utils::has_magisk() { - warn!("Magisk detected, skip services!"); - return Ok(()); + warn!("Magisk detected, skip {stage}"); + return; } if crate::utils::is_safe_mode() { - warn!("safe mode, skip service.d scripts"); - return Ok(()); + warn!("safe mode, skip {stage} scripts"); + return; } - if let Err(e) = crate::module::exec_common_scripts("service.d", false) { - warn!("Failed to exec common service scripts: {}", e); + if let Err(e) = crate::module::exec_common_scripts(&format!("{stage}.d"), false) { + warn!("Failed to exec common {stage} scripts: {e}"); } - if let Err(e) = crate::module::exec_services() { - warn!("Failed to exec service scripts: {}", e); + if let Err(e) = crate::module::exec_stage_scripts(stage) { + warn!("Failed to exec {stage} scripts: {e}"); } +} + +pub fn on_services() -> Result<()> { + run_stage("service"); Ok(()) } @@ -232,6 +236,9 @@ pub fn on_boot_completed() -> Result<()> { std::fs::remove_file(module_update_img).with_context(|| "Failed to remove image!")?; } } + + run_stage("boot-completed"); + Ok(()) } diff --git a/userspace/ksud/src/module.rs b/userspace/ksud/src/module.rs index 96de5374..f7b5827b 100644 --- a/userspace/ksud/src/module.rs +++ b/userspace/ksud/src/module.rs @@ -276,10 +276,10 @@ pub fn exec_common_scripts(dir: &str, wait: bool) -> Result<()> { Ok(()) } -/// execute every modules' service.sh -pub fn exec_services() -> Result<()> { +/// execute every modules' [stage].sh (service.sh, boot-completed.sh) +pub fn exec_stage_scripts(stage: &str) -> Result<()> { foreach_active_module(|module| { - let service = module.join("service.sh"); + let service = module.join(format!("{stage}.sh")); if !service.exists() { return Ok(()); }