X-Git-Url: https://git.rohieb.name/openwrt.git/blobdiff_plain/f4fb35b3911e9c01a4a1f2c6ce8b5e1c766000a9..ab2a8c9f1f6bd7b7d85529ab5b79dd67e712bdb7:/package/base-files/files/lib/config/uci.sh diff --git a/package/base-files/files/lib/config/uci.sh b/package/base-files/files/lib/config/uci.sh index e0293363b..71f20488c 100644 --- a/package/base-files/files/lib/config/uci.sh +++ b/package/base-files/files/lib/config/uci.sh @@ -19,13 +19,7 @@ # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA uci_load() { - local PACKAGE="$1" - config_load "$PACKAGE" - local PACKAGE_BASE="$(basename "$PACKAGE")" - [ -f "/tmp/.uci/${PACKAGE_BASE}" ] && { - . "/tmp/.uci/${PACKAGE_BASE}" 2>/dev/null >/dev/null - config_cb - } + config_load "$1" } uci_apply_defaults() {( @@ -62,10 +56,18 @@ uci_add_update() { local PACKAGE="$1" local UPDATE="$2" local PACKAGE_BASE="$(basename "$PACKAGE")" - + local UCIFILE + + case "$PACKAGE" in + /*) UCIFILE="$PACKAGE";; + *) + UCIFILE="/tmp/.uci/$PACKAGE_BASE" + mkdir -p "/tmp/.uci" + ;; + esac + # FIXME: add locking? - mkdir -p "/tmp/.uci" - echo "$UPDATE" >> "/tmp/.uci/${PACKAGE_BASE}" + echo "$UPDATE" >> "$UCIFILE" } uci_set() { @@ -74,14 +76,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 OLDVAL "$CONFIG" "$OPTION" - if [ "$OLDVAL" != "$VALUE" ]; then - config_get type "$CONFIG" TYPE - [ -z "$type" ] - fi - ) || uci_add_update "$PACKAGE" "config_set '$CONFIG' '$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 [ "x$OLDVAL" != "x$VALUE" ]; then + config_get type "$CONFIG" TYPE + [ -z "$type" ] + fi + ) || uci_add_update "$PACKAGE" "config_set '$CONFIG' '$OPTION' '$VALUE'" + ;; + esac } uci_add() { @@ -116,6 +125,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"