packages/net/mac-to-devinfo/files/devinfo-functions.sh

123 lines
2.8 KiB
Bash
Raw Normal View History

#!/bin/sh
# Shell script compatibility wrappers for /sbin/uci
#
# Copyright (C) 2008 Felix Fietkau <nbd@openwrt.org>
# Copyright (C) 2009 Daniel Dickinson
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
# $UCI and $UCISTATE must be set
CONFIG_APPEND=
_C=0
LOAD_STATE=1
LIST_SEP=" "
config_load() {
local PACKAGE="$1"
local DATA
local RET
_C=0
if [ -z "$CONFIG_APPEND" ]; then
CONFIG_SECTIONS=
CONFIG_NUM_SECTIONS=0
CONFIG_SECTION=
fi
export NO_EXPORT=
DATA="$($UCI -P $UCISTATE -S -n export "$PACKAGE" 2>/dev/null)"
RET="$?"
[ "$RET" != 0 -o -z "$DATA" ] || eval "$DATA"
unset DATA
${CONFIG_SECTION:+config_cb}
return "$RET"
}
reset_cb() {
config_cb() { return 0; }
option_cb() { return 0; }
list_cb() { return 0; }
}
reset_cb
config () {
local cfgtype="$1"
local name="$2"
CONFIG_NUM_SECTIONS=$(($CONFIG_NUM_SECTIONS + 1))
name="${name:-cfg$CONFIG_NUM_SECTIONS}"
append CONFIG_SECTIONS "$name"
[ -n "$NO_CALLBACK" ] || config_cb "$cfgtype" "$name"
CONFIG_SECTION="$name"
eval "CONFIG_${CONFIG_SECTION}_TYPE=\"$cfgtype\""
}
option () {
local varname="$1"; shift
local value="$*"
eval "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_get() {
case "$3" in
"") eval "echo \"\${CONFIG_${1}_${2}}\"";;
*) eval "$1=\${CONFIG_${2}_${3}}";;
esac
}
config_foreach() {
local function="$1"
[ "$#" -ge 1 ] && shift
local type="$1"
[ "$#" -ge 1 ] && shift
local section cfgtype
[ -z "$CONFIG_SECTIONS" ] && return 0
for section in ${CONFIG_SECTIONS}; do
config_get cfgtype "$section" TYPE
[ -n "$type" -a "x$cfgtype" != "x$type" ] && continue
$function "$section" "$@"
done
}
package() {
return 0
}
append() {
local var="$1"
local value="$2"
local sep="${3:- }"
eval "$var=\${$var:+\${$var}\${value:+\$sep}}\$value"
}