Skip to content

Commit aef1726

Browse files
committed
fix(resetprop): 修复 companion 内置 resetprop 的初始化与语义回归
- 在 companion 的 resetprop 封装里补充 sys_prop 初始化,避免首次调用时因未初始化直接失败 - 将内置 ResetProp 的 skip_svc 恢复为默认写入语义,对齐原先外部 resetprop 的行为 - 恢复删除不存在属性时的失败语义,避免 __DELETE__ 配错键名时被静默吞掉
1 parent b27b288 commit aef1726

1 file changed

Lines changed: 18 additions & 15 deletions

File tree

src/companion.rs

Lines changed: 18 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ use std::{
88
};
99

1010
use log::{error, info, warn};
11-
use prop_rs_android::resetprop::ResetProp;
11+
use prop_rs_android::{resetprop::ResetProp, sys_prop};
1212
use serde::{Deserialize, Serialize};
1313
use zygisk_api::api::{V4, ZygiskApi};
1414

@@ -240,14 +240,22 @@ fn backup_property(key: &str) -> anyhow::Result<String> {
240240
Ok(value)
241241
}
242242

243-
fn apply_resetprop(key: &str, value: &str) -> anyhow::Result<()> {
244-
let rp = ResetProp {
245-
skip_svc: true,
243+
fn new_resetprop() -> anyhow::Result<ResetProp> {
244+
sys_prop::init()
245+
.map_err(|e| anyhow::anyhow!("failed to initialize system property API: {e}"))?;
246+
247+
Ok(ResetProp {
248+
// Match the old external `resetprop key value` behavior instead of forcing `-n`.
249+
skip_svc: false,
246250
persistent: false,
247251
persist_only: false,
248252
verbose: false,
249253
show_context: false,
250-
};
254+
})
255+
}
256+
257+
fn apply_resetprop(key: &str, value: &str) -> anyhow::Result<()> {
258+
let rp = new_resetprop()?;
251259

252260
if rp.set(key, value).is_err() {
253261
anyhow::bail!("resetprop failed for {key}");
@@ -256,18 +264,13 @@ fn apply_resetprop(key: &str, value: &str) -> anyhow::Result<()> {
256264
}
257265

258266
fn resetprop_delete(key: &str) -> anyhow::Result<()> {
259-
let rp = ResetProp {
260-
skip_svc: true,
261-
persistent: false,
262-
persist_only: false,
263-
verbose: false,
264-
show_context: false,
265-
};
267+
let rp = new_resetprop()?;
266268

267-
if rp.delete(key).is_err() {
268-
anyhow::bail!("resetprop delete failed for {key}");
269+
match rp.delete(key) {
270+
Ok(true) => Ok(()),
271+
Ok(false) => anyhow::bail!("resetprop delete failed for {key}: property not found"),
272+
Err(_) => anyhow::bail!("resetprop delete failed for {key}"),
269273
}
270-
Ok(())
271274
}
272275

273276
fn spawn_restore_watcher(

0 commit comments

Comments
 (0)