allow packages to optionally append config file contents in the environment by settin...
[openwrt/staging/wigyori.git] / package / uci / files / uci / lib / config / uci.sh
index 9428a349dccf9a4cde37467360cd6424971ac814..c226f4fe1a6ab089eb4bff06845e08e89d4b27bd 100644 (file)
 
 uci_load() {
        local PACKAGE="$1"
+       local DATA
+       local RET
 
        _C=0
-       export ${NO_EXPORT:+-n} CONFIG_SECTIONS=
-       export ${NO_EXPORT:+-n} CONFIG_NUM_SECTIONS=0
-       export ${NO_EXPORT:+-n} CONFIG_SECTION=
+       if [ -z "$CONFIG_APPEND" ]; then
+               export ${NO_EXPORT:+-n} CONFIG_SECTIONS=
+               export ${NO_EXPORT:+-n} CONFIG_NUM_SECTIONS=0
+               export ${NO_EXPORT:+-n} CONFIG_SECTION=
+       fi
 
-       eval "$(/sbin/uci ${LOAD_STATE:+-P /var/state} -S -n export "$PACKAGE")"
+       DATA="$(/sbin/uci ${LOAD_STATE:+-P /var/state} -S -n export "$PACKAGE" 2>/dev/null)"
+       RET="$?"
+       [ "$RET" != 0 -o -z "$DATA" ] || eval "$DATA"
+       unset DATA
 
        ${CONFIG_SECTION:+config_cb}
+       return "$RET"
 }
 
 uci_set_default() {
        local PACKAGE="$1"
        /sbin/uci -q show "$1" > /dev/null && return 0
        /sbin/uci import "$1"
+       /sbin/uci commit "$1"
 }
 
 uci_revert_state() {