upgrade to uci 0.5.0, adds list handling support
authorFelix Fietkau <nbd@openwrt.org>
Wed, 20 Aug 2008 15:38:51 +0000 (15:38 +0000)
committerFelix Fietkau <nbd@openwrt.org>
Wed, 20 Aug 2008 15:38:51 +0000 (15:38 +0000)
SVN-Revision: 12353

package/base-files/files/etc/functions.sh
package/uci/Makefile

index 0314692c5f977db31761b38d06367f8476c647ce..28bd792010c5391767af2161c27c5dc88cde9b83 100755 (executable)
@@ -11,6 +11,7 @@ N="
 _C=0
 NO_EXPORT=1
 LOAD_STATE=1
+LIST_SEP=" "
 
 hotplug_dev() {
        env -i ACTION=$1 INTERFACE=$2 /sbin/hotplug-call net
@@ -56,6 +57,7 @@ config_load() {
 reset_cb() {
        config_cb() { return 0; }
        option_cb() { return 0; }
+       list_cb() { return 0; }
 }
 reset_cb
 
@@ -78,11 +80,24 @@ config () {
 option () {
        local varname="$1"; shift
        local value="$*"
-       
+
        export ${NO_EXPORT:+-n} "CONFIG_${CONFIG_SECTION}_${varname}=$value"
        [ -n "$NO_CALLBACK" ] || option_cb "$varname" "$*"
 }
 
+list() {
+       local varname="$1"; shift
+       local value="$*"
+       local len
+
+       config_get len "$CONFIG_SECTION" "${varname}_LENGTH" 
+       len="$((${len:-0} + 1))"
+       config_set "$CONFIG_SECTION" "${varname}_ITEM$len" "$value"
+       config_set "$CONFIG_SECTION" "${varname}_LENGTH" "$len"
+       append "CONFIG_${CONFIG_SECTION}_${varname}" "$value" "$LIST_SEP"
+       list_cb "$varname" "$*"
+}
+
 config_rename() {
        local OLD="$1"
        local NEW="$2"
@@ -162,6 +177,24 @@ config_foreach() {
        done
 }
 
+config_list_foreach() {
+       [ "$#" -ge 3 ] || return 0
+       local section="$1"; shift
+       local option="$1"; shift
+       local function="$1"; shift
+       local val
+       local len
+       local c=1
+
+       config_get len "${section}" "${option}_LENGTH"
+       [ -z "$len" ] && return 0
+       while [ $c -le "$len" ]; do
+               config_get val "${section}" "${option}_ITEM$c"
+               eval "$function \"\$val\" \"$@\""
+               c="$(($c + 1))"
+       done
+}
+
 load_modules() {
        [ -d /etc/modules.d ] && {
                cd /etc/modules.d
index c24ce04ed7f47c79383fb2e69fd6a13087d0b327..ee9d6dca62b6a077f9e2724706801ff868fb4617 100644 (file)
@@ -8,8 +8,8 @@
 
 include $(TOPDIR)/rules.mk
 
-UCI_VERSION=0.4
-UCI_RELEASE=8
+UCI_VERSION=0.5
+UCI_RELEASE=0
 
 PKG_NAME:=uci
 PKG_VERSION:=$(UCI_VERSION)$(if $(UCI_RELEASE),.$(UCI_RELEASE))
@@ -17,7 +17,7 @@ PKG_RELEASE:=1
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
 PKG_SOURCE_URL:=http://downloads.openwrt.org/sources
-PKG_MD5SUM:=1a671895bfaafe86087ce4374dfb8556
+PKG_MD5SUM:=5db883e535d8175a568fa202d0aed190
 
 include $(INCLUDE_DIR)/package.mk