diff options
Diffstat (limited to 'package/system/procd')
-rw-r--r-- | package/system/procd/files/procd.sh | 60 |
1 files changed, 8 insertions, 52 deletions
diff --git a/package/system/procd/files/procd.sh b/package/system/procd/files/procd.sh index d058c4f..ddb6d95 100644 --- a/package/system/procd/files/procd.sh +++ b/package/system/procd/files/procd.sh @@ -217,59 +217,15 @@ _procd_kill() { uci_validate_section() { - local error=0 - - [ "$4" = "" ] && return 1 - [ "$3" = "" ] && { - json_add_object - json_add_string "package" "$1" - json_add_string "type" "$2" - json_add_object "data" - - shift; shift; shift - - while [ -n "$1" ]; do - local tmp=${1#*:} - json_add_string "${1%%:*}" "${tmp%%:*}" - shift - done - - json_close_object - json_close_object - return 0 - } - - local section="${3}" - config_load "${1}" + local package="$1" + local type="$2" + local name="$3" + local error shift; shift; shift - - while [ -n "$1" ]; do - local name=${1%%:*} - local tmp=${1#*:} - local type=${tmp%%:*} - local default="" - - [ "$tmp" = "$type" ] || default=${tmp#*:} - - shift - config_get "${name}" "${section}" "${name}" - eval val=\$$name - - [ "$type" = "bool" ] && { - case "$val" in - 1|on|true|enabled) val=1;; - 0|off|false|disabled) val=0;; - *) val="";; - esac - } - [ -z "$val" ] && val=${default} - eval $name=\"$val\" - [ -z "$val" ] || { - /sbin/validate_data "${type}" "${val}" - [ $? -eq 0 ] || error="$((error + 1))" - } - done - + local result=`/sbin/validate_data "$package" "$type" "$name" $@ 2> /dev/null` + error=$? + eval "$result" + [ "$error" = "0" ] || `/sbin/validate_data "$package" "$type" "$name" $@ 1> /dev/null` return $error } |