procd: Add wrapper for uci_validate_section()
[openwrt/openwrt.git] / package / system / procd / files / procd.sh
index b4b6faa6627af447108bb6542d7c63af65e818a2..72f25fe0c05bd284ee025d32c6aee09c1e4c074a 100644 (file)
@@ -33,7 +33,7 @@
 #   Send a signal to a service instance (or all instances)
 #
 
-. $IPKG_INSTROOT/usr/share/libubox/jshn.sh
+. "$IPKG_INSTROOT/usr/share/libubox/jshn.sh"
 
 PROCD_RELOAD_DELAY=1000
 _PROCD_SERVICE=
@@ -44,7 +44,7 @@ procd_lock() {
 
        flock -n 1000 &> /dev/null
        if [ "$?" != "0" ]; then
-               exec 1000>/var/lock/procd_${service_name}.lock
+               exec 1000>"$IPKG_INSTROOT/var/lock/procd_${service_name}.lock"
                flock 1000
                if [ "$?" != "0" ]; then
                        logger "warning: procd flock for $service_name failed"
@@ -486,6 +486,23 @@ uci_validate_section()
        return $_error
 }
 
+uci_load_validate() {
+       local _package="$1"
+       local _type="$2"
+       local _name="$3"
+       local _function="$4"
+       local _option
+       local _result
+       shift; shift; shift; shift
+       for _option in "$@"; do
+               eval "local ${_option%%:*}"
+       done
+       uci_validate_section "$_package" "$_type" "$_name" "$@"
+       _result=$?
+       [ -n "$_function" ] || return $_result
+       eval "$_function \"\$_name\" \"\$_result\""
+}
+
 _procd_wrapper \
        procd_open_service \
        procd_close_service \