aboutsummaryrefslogtreecommitdiffstats
path: root/service.sh
blob: 7740dc17847aefc2115cd55fe2339fa458243bb5 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#!/system/bin/sh
# Do NOT assume where your module will be located.
# ALWAYS use $MODDIR if you need to know where this script and module is placed.
# This will make sure your module will still work if Magisk changes its mount point in the future
MODDIR=${0%/*}

export LOG_FILE="${MODDIR}/magisk-fstab.log"
LOG_MAX_LINES=1000

BOOTWAIT_MAX_COUNT=20
BOOTWAIT_COUNT_INTERVAL=15

CONF_MAIN="${MODDIR}/config/main.conf"
CONF_FSTAB="${MODDIR}/config/fstab.conf"

# Check if configs are readable

if [ ! -r "$CONF_MAIN" ]; then
  echo "File '$CONF_MAIN' not readable." >>"${LOG_FILE}" 2>&1
  exit 2
fi

if [ ! -r "$CONF_FSTAB" ]; then
  echo "File '$CONF_FSTAB' not readable." >>"${LOG_FILE}" 2>&1
  exit 2
fi

# Read main config
. "${CONF_MAIN}" >>"${LOG_FILE}" 2>&1

# wait for system boot to complete
bootwait_count=0
while [ "$(getprop sys.boot_completed)" != "1" ] && [ ${bootwait_count} -lt ${BOOTWAIT_MAX_COUNT} ]; do
  sleep ${BOOTWAIT_COUNT_INTERVAL}
  bootwait_count=$((bootwait_count + 1))
done
if [ ${bootwait_count} -ge ${BOOTWAIT_MAX_COUNT} ]; then
  echo "Boot wait timeout" >>"${LOG_FILE}" 2>&1
  exit 1
fi

# prevent log file from growing too large
tail -n "${LOG_MAX_LINES}" "${LOG_FILE}" >"${LOG_FILE}.tmp"
mv "${LOG_FILE}.tmp" "${LOG_FILE}"

echo "=== $(date) ===" >>"${LOG_FILE}" 2>&1

if [ -f "${CONF_FSTAB}" ]; then
  /system/bin/sh "${MODDIR}/fstab.sh" --su-options "${su_options}" --log-file "${LOG_FILE}" "${CONF_FSTAB}" &
else
  echo "${CONF_FSTAB} not found." >>"${LOG_FILE}" 2>&1
fi

wait