libs: merge libs/uci into libs/core
[project/luci.git] / libs / core / root / sbin / luci-reload
diff --git a/libs/core/root/sbin/luci-reload b/libs/core/root/sbin/luci-reload
new file mode 100755 (executable)
index 0000000..24cf760
--- /dev/null
@@ -0,0 +1,40 @@
+#!/bin/sh
+. /etc/functions.sh
+
+apply_config() {
+       config_get init "$1" init
+       config_get exec "$1" exec
+       config_get test "$1" test
+
+       echo "$2" > "/var/run/luci-reload-status"
+
+       [ -n "$init" ] && reload_init "$2" "$init" "$test"
+       [ -n "$exec" ] && reload_exec "$2" "$exec" "$test"
+}
+
+reload_exec() {
+       [ -x $2 ] && {
+               echo "Reloading $1... "
+               $2 >/dev/null 2>&1
+               [ -n "$3" -a "$?" != "$3" ] && echo '!!! Failed to reload' $1 '!!!'
+       }
+}
+
+reload_init() {
+       [ -x /etc/init.d/$2 ] && /etc/init.d/$2 enabled && {
+               echo "Reloading $1... "
+               /etc/init.d/$2 reload >/dev/null 2>&1
+               [ -n "$3" -a "$?" != "$3" ] && echo '!!! Failed to reload' $1 '!!!'
+       }
+}
+
+lock "/var/run/luci-reload"
+
+config_load ucitrack
+
+for i in $*; do
+       config_foreach apply_config $i $i
+done
+
+rm -f "/var/run/luci-reload-status"
+lock -u "/var/run/luci-reload"