#!/bin/sh
#
# S45meow_ntpsync — 开机网络校时（M22）
#
# 只负责把同步器丢到后台并**立即返回**，开机关键路径增加 0 秒。
# 真正的「等网络就绪 + 有限重试 + 总超时」全在 /usr/bin/meow_ntpsync 里。
#
# 为什么排 S45：S40network 只 ifup 了 lo，WiFi 由 S43 之后才起来，租约更晚，
# 所以本脚本启动时大概率还没有网络——同步器自己轮询默认路由（最多 -t 秒）。
# WiFi 在更晚（用户手动连）才就绪的情况，由 udhcpc 钩子
# /usr/share/udhcpc/default.script.d/50meow_ntpsync 在拿到租约时再触发一次。
#
# 失败不阻断 init：所有分支都 exit 0（除非参数错误）。
#
case "$1" in
  start)
	printf "Starting meow_ntpsync: "
	[ -x /usr/bin/meow_ntpsync ] || { echo "SKIP (not installed)"; exit 0; }
	setsid /usr/bin/meow_ntpsync -b -t 120 >/dev/null 2>&1 &
	echo "OK"
	;;
  stop)
	printf "Stopping meow_ntpsync: "
	# 持锁者自证在 <锁目录>/<pid> 子目录里；kill 前再核对 cmdline，
	# 防止 pid 复用误杀无关进程（P2-1 顺带项）
	for d in /tmp/meow_ntpsync.lock/*; do
		[ -d "$d" ] || continue
		pid=${d##*/}
		case "$pid" in
			''|*[!0-9]*) continue ;;
		esac
		cmd=$(tr '\0' ' ' <"/proc/$pid/cmdline" 2>/dev/null)
		case "$cmd" in
			*meow_ntpsync*) kill "$pid" 2>/dev/null ;;
		esac
	done
	echo "OK"
	;;
  restart|reload)
	"$0" stop
	"$0" start
	;;
  *)
	echo "Usage: $0 {start|stop|restart}"
	exit 1
	;;
esac

exit 0
