X-Git-Url: http://git.rohieb.name/openwrt.git/blobdiff_plain/a1aed6ae611ddd61a0aaebbbc591550113c0ff3b..807c2e8108ee7f0f22020f3756b708c2b70cdee3:/package/base-files/files/lib/config/uci.sh?ds=sidebyside diff --git a/package/base-files/files/lib/config/uci.sh b/package/base-files/files/lib/config/uci.sh index e1571cc89..e0cd1763c 100644 --- a/package/base-files/files/lib/config/uci.sh +++ b/package/base-files/files/lib/config/uci.sh @@ -39,26 +39,41 @@ uci_apply_defaults() {( uci commit )} +uci_call_awk() { + local CMD="$*" + awk -f $UCI_ROOT/lib/config/uci.awk -f - <> "/tmp/.uci/${PACKAGE_BASE}" + echo "$UPDATE" >> "$UCIFILE" } uci_set() { @@ -67,11 +82,21 @@ uci_set() { local OPTION="$3" local VALUE="$4" - ( # spawn a subshell so you don't mess up the current environment - uci_load "$PACKAGE" - config_get type "$CONFIG" TYPE - [ -z "$type" ] - ) || uci_add_update "$PACKAGE" "CONFIG_SECTION='$CONFIG'${N}option '$OPTION' '$VALUE'" + case "$PACKAGE" in + /*) + uci_add_update "$PACKAGE" "config_set '$CONFIG' '$OPTION' '$VALUE'" + ;; + *) + ( # spawn a subshell so you don't mess up the current environment + uci_load "$PACKAGE" + config_get OLDVAL "$CONFIG" "$OPTION" + if [ "$OLDVAL" != "$VALUE" ]; then + config_get type "$CONFIG" TYPE + [ -z "$type" ] + fi + ) || uci_add_update "$PACKAGE" "config_set '$CONFIG' '$OPTION' '$VALUE'" + ;; + esac } uci_add() { @@ -106,6 +131,9 @@ uci_commit() { local PACKAGE="$1" local PACKAGE_BASE="$(basename "$PACKAGE")" + case "$PACKAGE" in + /*) return 0;; + esac mkdir -p /tmp/.uci LOCK=`which lock` || LOCK=: $LOCK "/tmp/.uci/$PACKAGE_BASE.lock" @@ -114,19 +142,19 @@ uci_commit() { # replace handlers config() { - append updatestr "config = update_config(config, \"@$2=$1\")" "$N" + append updatestr "config = uci_update_config(config, \"@$2=$1\")" "$N" } option() { - append updatestr "config = update_config(config, \"$CONFIG_SECTION.$1=$2\")" "$N" + append updatestr "config = uci_update_config(config, \"$CONFIG_SECTION.$1=$2\")" "$N" } config_rename() { - append updatestr "config = update_config(config, \"&$1=$2\")" "$N" + append updatestr "config = uci_update_config(config, \"&$1=$2\")" "$N" } config_unset() { - append updatestr "config = update_config(config, \"-$1.$2\")" "$N" + append updatestr "config = uci_update_config(config, \"-$1.$2\")" "$N" } config_clear() { - append updatestr "config = update_config(config, \"-$1\")" "$N" + append updatestr "config = uci_update_config(config, \"-$1\")" "$N" } . "/tmp/.uci/$PACKAGE_BASE"