diff options
| -rwxr-xr-x | package/base-files/files/etc/functions.sh | 6 | ||||
| -rw-r--r-- | package/base-files/files/lib/config/uci.sh | 40 | 
2 files changed, 34 insertions, 12 deletions
| diff --git a/package/base-files/files/etc/functions.sh b/package/base-files/files/etc/functions.sh index f757ffaf2..7ba59afbb 100755 --- a/package/base-files/files/etc/functions.sh +++ b/package/base-files/files/etc/functions.sh @@ -85,7 +85,11 @@ config_clear() {  }  config_load() { -	local file="$UCI_ROOT/etc/config/$1" +	local file +	case "$1" in +		/*) file="$1";; +		*) file="$UCI_ROOT/etc/config/$1";; +	esac  	_C=0  	export ${NO_EXPORT:+-n} CONFIG_SECTIONS=  	export ${NO_EXPORT:+-n} CONFIG_NUM_SECTIONS=0 diff --git a/package/base-files/files/lib/config/uci.sh b/package/base-files/files/lib/config/uci.sh index e0293363b..e0cd1763c 100644 --- a/package/base-files/files/lib/config/uci.sh +++ b/package/base-files/files/lib/config/uci.sh @@ -62,10 +62,18 @@ uci_add_update() {  	local PACKAGE="$1"  	local UPDATE="$2"  	local PACKAGE_BASE="$(basename "$PACKAGE")" -	 +	local UCIFILE + +	case "$PACKAGE" in +		/*) UCIFILE="$PACKAGE";; +		*) +			UCIDIR="/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 +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 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 [ "$OLDVAL" != "$VALUE" ]; then +					config_get type "$CONFIG" TYPE +					[ -z "$type" ] +				fi +			) || uci_add_update "$PACKAGE" "config_set '$CONFIG' '$OPTION' '$VALUE'" +		;; +	esac  }  uci_add() { @@ -116,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" | 
