aboutsummaryrefslogtreecommitdiffstats
path: root/package
diff options
context:
space:
mode:
authorJo-Philipp Wich <jow@openwrt.org>2010-08-14 00:45:15 +0000
committerJo-Philipp Wich <jow@openwrt.org>2010-08-14 00:45:15 +0000
commit63991ba875e46f40324352a5317d144465567833 (patch)
treed33580ca49e3f28b03fc6b93bcab0336ea64f471 /package
parent6616951c15bef73a09da4cbbe2eb956e74e8b164 (diff)
downloadupstream-63991ba875e46f40324352a5317d144465567833.tar.gz
upstream-63991ba875e46f40324352a5317d144465567833.tar.bz2
upstream-63991ba875e46f40324352a5317d144465567833.zip
base-files, uci: properly revert list state on config_load This fixes a bug where lists end up with duplicate values if config_load was invoked multiple times.
SVN-Revision: 22629
Diffstat (limited to 'package')
-rw-r--r--package/base-files/Makefile2
-rwxr-xr-xpackage/base-files/files/etc/functions.sh1
-rw-r--r--package/uci/Makefile2
-rw-r--r--package/uci/files/lib/config/uci.sh6
4 files changed, 9 insertions, 2 deletions
diff --git a/package/base-files/Makefile b/package/base-files/Makefile
index 137eb62a2f..039326069b 100644
--- a/package/base-files/Makefile
+++ b/package/base-files/Makefile
@@ -10,7 +10,7 @@ include $(TOPDIR)/rules.mk
include $(INCLUDE_DIR)/kernel.mk
PKG_NAME:=base-files
-PKG_RELEASE:=51
+PKG_RELEASE:=52
PKG_FILE_DEPENDS:=$(PLATFORM_DIR)/ $(GENERIC_PLATFORM_DIR)/base-files/
diff --git a/package/base-files/files/etc/functions.sh b/package/base-files/files/etc/functions.sh
index fa0ba0427b..d5ffc13535 100755
--- a/package/base-files/files/etc/functions.sh
+++ b/package/base-files/files/etc/functions.sh
@@ -97,6 +97,7 @@ list() {
local len
config_get len "$CONFIG_SECTION" "${varname}_LENGTH" 0
+ [ $len = 0 ] && append CONFIG_LIST_STATE "${CONFIG_SECTION}_${varname}"
len=$(($len + 1))
config_set "$CONFIG_SECTION" "${varname}_ITEM$len" "$value"
config_set "$CONFIG_SECTION" "${varname}_LENGTH" "$len"
diff --git a/package/uci/Makefile b/package/uci/Makefile
index 925e42fd08..3c88dae37e 100644
--- a/package/uci/Makefile
+++ b/package/uci/Makefile
@@ -8,7 +8,7 @@
include $(TOPDIR)/rules.mk
UCI_VERSION=12012009
-UCI_RELEASE=5
+UCI_RELEASE=6
PKG_NAME:=uci
PKG_VERSION:=$(UCI_VERSION)$(if $(UCI_RELEASE),.$(UCI_RELEASE))
diff --git a/package/uci/files/lib/config/uci.sh b/package/uci/files/lib/config/uci.sh
index d759615bd5..8dcb92b9f8 100644
--- a/package/uci/files/lib/config/uci.sh
+++ b/package/uci/files/lib/config/uci.sh
@@ -23,9 +23,15 @@ uci_load() {
local PACKAGE="$1"
local DATA
local RET
+ local VAR
_C=0
if [ -z "$CONFIG_APPEND" ]; then
+ for VAR in $CONFIG_LIST_STATE; do
+ export ${NO_EXPORT:+-n} CONFIG_${VAR}=
+ export ${NO_EXPORT:+-n} CONFIG_${VAR}_LENGTH=
+ done
+ export ${NO_EXPORT:+-n} CONFIG_LIST_STATE=
export ${NO_EXPORT:+-n} CONFIG_SECTIONS=
export ${NO_EXPORT:+-n} CONFIG_NUM_SECTIONS=0
export ${NO_EXPORT:+-n} CONFIG_SECTION=