1- RESETPROP=" resetprop -n"
2- [ -f /data/adb/magisk/util_functions.sh ] && [ " $( grep MAGISK_VER_CODE /data/adb/magisk/util_functions.sh | cut -d= -f2) " -lt 27003 ] && RESETPROP=resetprop_hexpatch
3-
4- # persistprop <prop name> <new value>
5- persistprop () {
6- local NAME=" $1 "
7- local NEWVALUE=" $2 "
8- local CURVALUE=" $( resetprop " $NAME " ) "
9-
10- if ! grep -q " $NAME " $MODPATH /uninstall.sh 2> /dev/null; then
11- if [ " $CURVALUE " ]; then
12- [ " $NEWVALUE " = " $CURVALUE " ] || echo " resetprop -n -p \" $NAME \" \" $CURVALUE \" " >> $MODPATH /uninstall.sh
13- else
14- echo " resetprop -p --delete \" $NAME \" " >> $MODPATH /uninstall.sh
15- fi
16- fi
17- resetprop -n -p " $NAME " " $NEWVALUE "
18- }
19-
20- # resetprop_hexpatch [-f|--force] <prop name> <new value>
21- resetprop_hexpatch () {
22- case " $1 " in
23- -f|--force) local FORCE=1; shift ;;
24- esac
25-
26- local NAME=" $1 "
27- local NEWVALUE=" $2 "
28- local CURVALUE=" $( resetprop " $NAME " ) "
29-
30- [ ! " $NEWVALUE " -o ! " $CURVALUE " ] && return 1
31- [ " $NEWVALUE " = " $CURVALUE " -a ! " $FORCE " ] && return 2
32-
33- local NEWLEN=${# NEWVALUE}
34- if [ -f /dev/__properties__ ]; then
35- local PROPFILE=/dev/__properties__
36- else
37- local PROPFILE=" /dev/__properties__/$( resetprop -Z " $NAME " ) "
38- fi
39- [ ! -f " $PROPFILE " ] && return 3
40- local NAMEOFFSET=$( echo $( strings -t d " $PROPFILE " | grep " $NAME " ) | cut -d ' ' -f 1)
41-
42- # <hex 2-byte change counter><flags byte><hex length of prop value><prop value + nul padding to 92 bytes><prop name>
43- local NEWHEX=" $( printf ' %02x' " $NEWLEN " ) $( printf " $NEWVALUE " | od -A n -t x1 -v | tr -d ' \n' ) $( printf " %$(( 92 - NEWLEN)) s" | sed ' s/ /00/g' ) "
44-
45- printf " Patch '$NAME ' to '$NEWVALUE ' in '$PROPFILE ' @ 0x%08x -> \n[0000??$NEWHEX ]\n" $(( NAMEOFFSET- 96 ))
46-
47- echo -ne " \x00\x00" \
48- | dd obs=1 count=2 seek=$(( NAMEOFFSET- 96 )) conv=notrunc of=" $PROPFILE "
49- echo -ne " $( printf " $NEWHEX " | sed -e ' s/.\{2\}/&\\x/g' -e ' s/^/\\x/' -e ' s/\\x$//' ) " \
50- | dd obs=1 count=93 seek=$(( NAMEOFFSET- 93 )) conv=notrunc of=" $PROPFILE "
51- }
52-
531# resetprop_if_diff <prop name> <expected value>
542resetprop_if_diff () {
553 local NAME=" $1 "
564 local EXPECTED=" $2 "
575 local CURRENT=" $( resetprop " $NAME " ) "
586
59- [ -z " $CURRENT " ] || [ " $CURRENT " = " $EXPECTED " ] || $RESETPROP " $NAME " " $EXPECTED "
7+ [ -z " $CURRENT " ] || [ " $CURRENT " = " $EXPECTED " ] || resetprop -n " $NAME " " $EXPECTED "
608}
619
6210# resetprop_if_match <prop name> <value match string> <new value>
@@ -65,7 +13,7 @@ resetprop_if_match() {
6513 local CONTAINS=" $2 "
6614 local VALUE=" $3 "
6715
68- [[ " $( resetprop " $NAME " ) " = * " $CONTAINS " * ]] && $RESETPROP " $NAME " " $VALUE "
16+ [[ " $( resetprop " $NAME " ) " = * " $CONTAINS " * ]] && resetprop -n " $NAME " " $VALUE "
6917}
7018
7119# stub for boot-time
0 commit comments