diff options
Diffstat (limited to 'package/base-files/default')
| -rwxr-xr-x | package/base-files/default/etc/functions.sh | 42 | 
1 files changed, 27 insertions, 15 deletions
| diff --git a/package/base-files/default/etc/functions.sh b/package/base-files/default/etc/functions.sh index fbb5a160c..e87515d6e 100755 --- a/package/base-files/default/etc/functions.sh +++ b/package/base-files/default/etc/functions.sh @@ -5,6 +5,8 @@ alias debug=${DEBUG:-:}  N="  " +_C=0 +  # valid interface?  if_valid () (    ifconfig "$1" >&- 2>&- || @@ -23,18 +25,24 @@ append() {  	eval "export ${var}=\"\${${var}:+\${${var}}${value:+$sep}}$value\""  } -config_cb() { -	return 0 -} -option_cb() { -	return 0 +reset_cb() { +	config_cb() { +		return 0 +	} +	option_cb() { +		return 0 +	}  } +reset_cb  config () { -	config_cb "$@" -	_C=$((${_C:-0} + 1)) -	export CONFIG_SECTION="${2:-cfg${_C}}" -	export CONFIG_${CONFIG_SECTION}_TYPE="$1" +	local type="$1" +	local name="$2" +	_C=$(($_C + 1)) +	name="${name:-cfg${_C}}" +	config_cb "$type" "$name" +	export CONFIG_SECTION="$name" +	export CONFIG_${CONFIG_SECTION}_TYPE="$type"  }  option () { @@ -53,12 +61,16 @@ config_clear() {  }  config_load() { -	local CD="" -	if [ \! -e "$1" -a -e "/etc/config/$1" ]; then -		cd /etc/config && local CD=1 -	fi -	[ -e "$1" ] && . $1 -	${CD:+cd - >/dev/null} +	local DIR="./" +	_C=0 +	[ \! -e "$1" -a -e "/etc/config/$1" ] && { +		DIR="/etc/config/" +	} +	[ -e "$DIR$1" ] && { +		CONFIG_FILENAME="$DIR$1" +		. ${CONFIG_FILENAME} +	} || return 1 +	${CD:+cd -} >/dev/null  	${CONFIG_SECTION:+config_cb}  } | 
