X-Git-Url: https://git.rohieb.name/openwrt.git/blobdiff_plain/2d32a51fd3a4a914dd4940281ddb504ead47506c..f0845034ee1e6babeef0949390122a54dff3a156:/package/base-files/default/etc/functions.sh?ds=inline

diff --git a/package/base-files/default/etc/functions.sh b/package/base-files/default/etc/functions.sh
index 03fd23807..9c3057ed0 100755
--- a/package/base-files/default/etc/functions.sh
+++ b/package/base-files/default/etc/functions.sh
@@ -25,7 +25,7 @@ append() {
 	local var="$1"
 	local value="$2"
 	local sep="${3:- }"
-	eval "export ${var}=\"\${${var}:+\${${var}}${value:+$sep}}$value\""
+	eval "export ${var}=\"\${${var}:+\${${var}}${value:+$sep}}\$value\""
 }
 
 reset_cb() {
@@ -39,13 +39,13 @@ reset_cb() {
 reset_cb
 
 config () {
-    local type="$1"
+    local cfgtype="$1"
     local name="$2"
     _C=$(($_C + 1))
     name="${name:-cfg${_C}}"
-    config_cb "$type" "$name"
+    config_cb "$cfgtype" "$name"
     export CONFIG_SECTION="$name"
-    export CONFIG_${CONFIG_SECTION}_TYPE="$type"
+    export CONFIG_${CONFIG_SECTION}_TYPE="$cfgtype"
 }
 
 option () {
@@ -54,6 +54,26 @@ option () {
 	option_cb "$varname" "$*"
 }
 
+config_rename() {
+	local OLD="$1"
+	local NEW="$2"
+	local oldsetting
+	local newvar
+	
+	[ -z "$OLD" -o -z "$NEW" ] && return
+	for oldsetting in `set | grep ^CONFIG_${OLD}_ | \
+		sed -e 's/\(.*\)=.*$/\1/'` ; do
+		newvar="CONFIG_${NEW}_${oldsetting##CONFIG_${OLD}_}"
+		eval "${newvar}=\${$oldsetting}"
+		unset "$oldsetting"
+	done
+	[ "$CONFIG_SECTION" = "$OLD" ] && CONFIG_SECTION="$NEW"
+}
+
+config_unset() {
+	config_set "$1" "$2" ""
+}
+
 config_clear() {
 	[ -z "$CONFIG_SECTION" ] && return
 	for oldsetting in `set | grep ^CONFIG_${CONFIG_SECTION}_ | \
@@ -79,7 +99,7 @@ config_load() {
 
 config_get() {
 	case "$3" in
-		"") eval "echo \${CONFIG_${1}_${2}}";;
+		"") eval "echo \"\${CONFIG_${1}_${2}}\"";;
 		*) eval "$1=\"\${CONFIG_${2}_${3}}\"";;
 	esac
 }
@@ -93,7 +113,7 @@ load_modules() {
 }
 
 include() {
-	for file in $(ls /lib/$1/*.sh 2>/dev/null); do
+	for file in $(ls $1/*.sh 2>/dev/null); do
 		. $file
 	done
 }