examples: add example ntpd service

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
diff --git a/examples/var_service/ntpd/log/run b/examples/var_service/ntpd/log/run
new file mode 100755
index 0000000..560d1b1
--- /dev/null
+++ b/examples/var_service/ntpd/log/run
@@ -0,0 +1,21 @@
+#!/bin/sh
+
+user=logger
+
+logdir="/var/log/service/`(cd ..;basename $PWD)`"
+mkdir -p "$logdir" 2>/dev/null
+chown -R "$user": "$logdir"
+chmod -R go-rwxst,u+rwX "$logdir"
+rm logdir
+ln -s "$logdir" logdir
+
+# make this dir accessible to logger
+chmod a+rX .
+
+exec >/dev/null
+exec 2>&1
+exec \
+env - PATH="$PATH" \
+softlimit \
+setuidgid "$user" \
+svlogd -tt "$logdir"
diff --git a/examples/var_service/ntpd/ntp.script b/examples/var_service/ntpd/ntp.script
new file mode 100755
index 0000000..90299ae
--- /dev/null
+++ b/examples/var_service/ntpd/ntp.script
@@ -0,0 +1,29 @@
+#!/bin/sh
+
+exec 2>/dev/null
+echo "`tail -n 99 "$0.log"`" >"$0.log"
+
+exec >>"$0.log"
+exec 2>&1
+
+dt=`date '+%Y-%m-%d %H:%M:%S'`
+
+if test x"$stratum" != x"" \
+&& test x"$poll_interval" != x"" \
+&& test 4 -ge "$stratum" \
+&& test 128 -le "$poll_interval" \
+; then
+	echo "$dt: $1"\
+		"freq_drift_ppm=$freq_drift_ppm"\
+		"offset=$offset"\
+		"stratum=$stratum"\
+		"poll_interval=$poll_interval,"\
+		"setting hardware clock"
+	exec hwclock --systohc
+fi
+
+echo "$dt: $1"\
+	"freq_drift_ppm=$freq_drift_ppm"\
+	"offset=$offset"\
+	"stratum=$stratum"\
+	"poll_interval=$poll_interval"\
diff --git a/examples/var_service/ntpd/p_log b/examples/var_service/ntpd/p_log
new file mode 100755
index 0000000..a2521be
--- /dev/null
+++ b/examples/var_service/ntpd/p_log
@@ -0,0 +1,4 @@
+#!/bin/sh
+
+cd log/logdir || exit 1
+cat @* current | $PAGER
diff --git a/examples/var_service/ntpd/run b/examples/var_service/ntpd/run
new file mode 100755
index 0000000..581d231
--- /dev/null
+++ b/examples/var_service/ntpd/run
@@ -0,0 +1,60 @@
+#!/bin/bash
+# (using bashism (arrays) in dhcp config)
+
+#exec >/dev/null
+exec 2>&1
+exec </dev/null
+
+user=root
+pool="us.pool.ntp.org" # replace "us" with your country code
+
+service="${PWD##*/}"
+rundir="/var/run/service/$service"
+default_p_opt="-p 0.$pool -p 1.$pool -p 2.$pool -p 3.$pool"
+
+
+# Make sure rundir/ exists
+mkdir -p "$rundir" 2>/dev/null
+chown -R "$user:" "$rundir"
+chmod -R a=rX "$rundir"
+rm -rf rundir 2>/dev/null
+ln -s "$rundir" rundir
+
+
+echo "* Checking network"
+test -f /var/run/service/fw/up || exec sleep 7
+sleep 5  # to let it settle
+
+# Grab config from dhcp
+cfg=-1
+for f in rundir/*.ntpconf; do
+        test -f "$f" || continue
+        . "$f"
+done
+
+# Select peers
+p_opt=""
+cfg=0
+while test x"${ntpip[$cfg]}" != x""; do
+        p_opt="$p_opt -p ${ntpip[$cfg]}"
+        let cfg=cfg+1
+done
+test x"$p_opt" == x"" && p_opt="$default_p_opt"
+
+if test x"$p_opt" == x""; then
+	echo "* No NTP peers configured, stopping"
+	sv o .
+	exec sleep 1
+fi
+
+
+# Let others know that we are up
+date '+%Y-%m-%d %H:%M:%S %Z' >rundir/up
+
+# Go go go
+echo "* Starting ntpd[$$]"
+exec \
+env - PATH="$PATH" \
+softlimit \
+setuidgid "$user" \
+ntpd -ddnNl -S ./ntp.script $p_opt
diff --git a/examples/var_service/ntpd/w_log b/examples/var_service/ntpd/w_log
new file mode 100755
index 0000000..34b19b3
--- /dev/null
+++ b/examples/var_service/ntpd/w_log
@@ -0,0 +1,4 @@
+#!/bin/sh
+
+cd log/logdir || exit 1
+watch -n2 'w=`ttysize w`; h=`ttysize h`; tail -$((h-3)) current 2>&1 | cut -b0-$((w-2))'