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