aboutsummaryrefslogtreecommitdiffstats
path: root/service.sh
diff options
context:
space:
mode:
authorclifforama <clifforama@users.noreply.github.com>2021-11-03 16:26:40 -0400
committerclifforama <clifforama@users.noreply.github.com>2021-11-03 16:26:40 -0400
commit36a1d9a55459f65740f7f39582b753339efc17dc (patch)
tree6f7eb462cf66a2cbcebb35dedf680a3e09d30d9a /service.sh
downloadmulti-mount-36a1d9a55459f65740f7f39582b753339efc17dc.tar.gz
Initial commit
Diffstat (limited to 'service.sh')
-rw-r--r--service.sh41
1 files changed, 41 insertions, 0 deletions
diff --git a/service.sh b/service.sh
new file mode 100644
index 0000000..4e3e5a6
--- /dev/null
+++ b/service.sh
@@ -0,0 +1,41 @@
+#!/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}/multi-mount.log"
+LOG_MAX_LINES=1000
+
+BOOTWAIT_MAX_COUNT=20
+BOOTWAIT_COUNT_INTERVAL=15s
+
+CONF_DIR="/sdcard/.multi-mount"
+CONF_FILESPEC="${CONF_DIR}/*.conf"
+
+# wait for system boot to complete
+bootwait_count=0
+until [[ $(getprop sys.boot_completed) || ${bootwait_count} -ge ${BOOTWAIT_MAX_COUNT} ]]; do
+ sleep ${BOOTWAIT_COUNT_INTERVAL}
+ bootwait_count=$((bootwait_count+1))
+done
+if [ ${bootwait_count} -ge ${BOOTWAIT_MAX_COUNT} ]; then
+ exit 1
+fi
+
+# prevent log file from growing too large
+tail -n "${LOG_MAX_LINES}" "${LOG_FILE}" > "${LOGFILE}.tmp"
+mv "${LOGFILE}.tmp" "${LOG_FILE}"
+
+echo "=== $(date) ===" >> "${LOG_FILE}" 2>&1
+
+# process config files in parallel
+config_file_count=0
+for f in ${CONF_FILESPEC}; do
+ config_file_count=$((config_file_count+1))
+ "${MODDIR}/mount-from-config.sh" "${f}" &
+done
+if [ "${config_file_count}" -eq 0 ]; then
+ echo "No config files found." >> "${LOG_FILE}" 2>&1
+fi
+wait