Преглед изворни кода

upgrade to uci 0.5.0, adds list handling support

SVN-Revision: 12353
Felix Fietkau пре 17 година
родитељ
комит
8a08f95e42
2 измењених фајлова са 37 додато и 4 уклоњено
  1. 34 1
      package/base-files/files/etc/functions.sh
  2. 3 3
      package/uci/Makefile

+ 34 - 1
package/base-files/files/etc/functions.sh

@@ -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

+ 3 - 3
package/uci/Makefile

@@ -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