From f8c80695b93aa9400b53465174665dbaeb01b5d4 Mon Sep 17 00:00:00 2001 From: nbd Date: Wed, 20 Dec 2006 04:15:13 +0000 Subject: add a variable to keep track of the list of sections when loading uci config files. add a function to iterate through sections git-svn-id: svn://svn.openwrt.org/openwrt/trunk@5870 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- package/base-files/files/etc/functions.sh | 25 +++++++++++++++++++++---- 1 file changed, 21 insertions(+), 4 deletions(-) (limited to 'package/base-files/files/etc/functions.sh') diff --git a/package/base-files/files/etc/functions.sh b/package/base-files/files/etc/functions.sh index 0f3618e7f..cc7b70e51 100755 --- a/package/base-files/files/etc/functions.sh +++ b/package/base-files/files/etc/functions.sh @@ -31,9 +31,10 @@ reset_cb config () { local cfgtype="$1" local name="$2" - - _C=$((_C + 1)) - name="${name:-cfg${_C}}" + + CONFIG_NUM_SECTIONS=$(($CONFIG_NUM_SECTIONS + 1)) + name="${name:-cfg$CONFIG_NUM_SECTIONS}" + append CONFIG_SECTIONS "$name" config_cb "$cfgtype" "$name" CONFIG_SECTION="$name" export -n "CONFIG_${CONFIG_SECTION}_TYPE=$cfgtype" @@ -60,6 +61,7 @@ config_rename() { eval "export -n \"$newvar=\${$oldvar}\"" unset "$oldvar" done + CONFIG_SECTIONS="$(echo " $CONFIG_SECTIONS " | sed -e "s, $OLD , $NEW ,")" [ "$CONFIG_SECTION" = "$OLD" ] && CONFIG_SECTION="$NEW" } @@ -72,7 +74,10 @@ config_clear() { local SECTION="$1" local oldvar - for oldvar in `set | grep ^CONFIG_${SECTION}_ | \ + CONFIG_SECTIONS="$(echo " $CONFIG_SECTIONS " | sed -e "s, $OLD , ,")" + CONFIG_SECTIONS="${SECTION:+$CONFIG_SECTIONS}" + + for oldvar in `set | grep ^CONFIG_${SECTION:+$SECTION_} | \ sed -e 's/\(.*\)=.*$/\1/'` ; do unset $oldvar done @@ -81,6 +86,8 @@ config_clear() { config_load() { local file="/etc/config/$1" _C=0 + CONFIG_SECTIONS= + CONFIG_NUM_SECTIONS=0 CONFIG_SECTION= [ -e "$file" ] && { @@ -104,6 +111,16 @@ config_set() { export -n "CONFIG_${section}_${option}=$value" } +config_foreach() { + local function="$1" + local section + + [ -z "$CONFIG_SECTIONS" ] && return 0 + for section in ${CONFIG_SECTIONS}; do + eval "$function \"\$section\"" + done +} + load_modules() { cd /etc/modules.d sed 's/^[^#]/insmod &/' $* | ash 2>&- || : -- cgit v1.2.3