rename uci-update.awk to uci.awk and add a few config_* functions
SVN-Revision: 6666
This commit is contained in:
parent
c76cdd5781
commit
7f0dd3fa45
3 changed files with 58 additions and 21 deletions
|
@ -120,7 +120,11 @@ config_set() {
|
||||||
local section="$1"
|
local section="$1"
|
||||||
local option="$2"
|
local option="$2"
|
||||||
local value="$3"
|
local value="$3"
|
||||||
export ${NO_EXPORT:+-n} "CONFIG_${section}_${option}=$value"
|
local old_section="$CONFIG_SECTION"
|
||||||
|
|
||||||
|
CONFIG_SECTION="$section"
|
||||||
|
option "$option" "$value"
|
||||||
|
CONFIG_SECTION="$old_section"
|
||||||
}
|
}
|
||||||
|
|
||||||
config_foreach() {
|
config_foreach() {
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
# Configuration update functions
|
# Configuration update functions - AWK API
|
||||||
#
|
#
|
||||||
# Copyright (C) 2006 by Fokus Fraunhofer <carsten.tittel@fokus.fraunhofer.de>
|
# Copyright (C) 2006 by Fokus Fraunhofer <carsten.tittel@fokus.fraunhofer.de>
|
||||||
# Copyright (C) 2006 by Felix Fietkau <nbd@openwrt.org>
|
# Copyright (C) 2006 by Felix Fietkau <nbd@openwrt.org>
|
||||||
|
@ -17,6 +17,32 @@
|
||||||
# along with this program; if not, write to the Free Software
|
# along with this program; if not, write to the Free Software
|
||||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
|
||||||
|
# parameters: 1
|
||||||
|
function config_load(package, var) {
|
||||||
|
while (("/bin/ash -c '. /etc/functions.sh; unset NO_EXPORT; config_load \""package"\"; env | grep \"^CONFIG_\"'" | getline) == 1) {
|
||||||
|
sub("^CONFIG_", "")
|
||||||
|
if (match($0, "=") == 0) {
|
||||||
|
if (var != "") CONFIG[var] = CONFIG[var] "\n" $0
|
||||||
|
next
|
||||||
|
}
|
||||||
|
var=substr($0, 1, RSTART-1)
|
||||||
|
CONFIG[var] = substr($0, RSTART+1, length($0) - RSTART)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# parameters: 2
|
||||||
|
function config_get(package, option) {
|
||||||
|
return CONFIG[package "_" option]
|
||||||
|
}
|
||||||
|
|
||||||
|
# parameters: 3
|
||||||
|
function config_get_bool(package, option, default, var) {
|
||||||
|
var = config_get(package, option);
|
||||||
|
if ((var == "enabled") || (var == "1") || (var == "on")) return 1
|
||||||
|
if ((var == "disabled") || (var == "0") || (var == "off")) return 1
|
||||||
|
return (var && var != "0" ? 1 : 0)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
function read_file(filename, result) {
|
function read_file(filename, result) {
|
||||||
while ((getline <filename) == 1) {
|
while ((getline <filename) == 1) {
|
||||||
|
@ -26,7 +52,7 @@ function read_file(filename, result) {
|
||||||
return result
|
return result
|
||||||
}
|
}
|
||||||
|
|
||||||
function cmd2option(str, tmp) {
|
function uci_cmd2option(str, tmp) {
|
||||||
if (match(str,"=")!=0) {
|
if (match(str,"=")!=0) {
|
||||||
res = "\toption " substr(str,1,RSTART-1) "\t'" substr(str,RSTART+1) "'"
|
res = "\toption " substr(str,1,RSTART-1) "\t'" substr(str,RSTART+1) "'"
|
||||||
} else {
|
} else {
|
||||||
|
@ -35,11 +61,11 @@ function cmd2option(str, tmp) {
|
||||||
return res
|
return res
|
||||||
}
|
}
|
||||||
|
|
||||||
function cmd2config(atype, aname) {
|
function uci_cmd2config(atype, aname) {
|
||||||
return "config \"" atype "\" \"" aname "\""
|
return "config \"" atype "\" \"" aname "\""
|
||||||
}
|
}
|
||||||
|
|
||||||
function update_config(cfg, update, \
|
function uci_update_config(cfg, update, \
|
||||||
lines, line, l, n, i, i2, section, scnt, remove, tmp, aidx, rest) {
|
lines, line, l, n, i, i2, section, scnt, remove, tmp, aidx, rest) {
|
||||||
scnt = 1
|
scnt = 1
|
||||||
linecnt=split(cfg "\n", lines, "\n")
|
linecnt=split(cfg "\n", lines, "\n")
|
||||||
|
@ -87,7 +113,7 @@ function update_config(cfg, update, \
|
||||||
if (line ~ /^[ \t]*$/) {
|
if (line ~ /^[ \t]*$/) {
|
||||||
if (update ~ "^" section "\\.") {
|
if (update ~ "^" section "\\.") {
|
||||||
gsub("^" section ".", "", update)
|
gsub("^" section ".", "", update)
|
||||||
cfg = cfg cmd2option(update) "\n"
|
cfg = cfg uci_cmd2option(update) "\n"
|
||||||
gsub(/=.*$/, "", update)
|
gsub(/=.*$/, "", update)
|
||||||
update = "-" section "." update
|
update = "-" section "." update
|
||||||
}
|
}
|
||||||
|
@ -101,7 +127,7 @@ function update_config(cfg, update, \
|
||||||
if (update ~ "^" section "\\.") {
|
if (update ~ "^" section "\\.") {
|
||||||
flag=1
|
flag=1
|
||||||
gsub("^" section ".", "", update)
|
gsub("^" section ".", "", update)
|
||||||
cfg = cfg cmd2option(update) "\n"
|
cfg = cfg uci_cmd2option(update) "\n"
|
||||||
|
|
||||||
update = "-" section "." update
|
update = "-" section "." update
|
||||||
}
|
}
|
||||||
|
@ -121,7 +147,7 @@ function update_config(cfg, update, \
|
||||||
update = ""
|
update = ""
|
||||||
} else if (update ~ "^&" section "=") {
|
} else if (update ~ "^&" section "=") {
|
||||||
gsub("^&" section "=", "", update)
|
gsub("^&" section "=", "", update)
|
||||||
line = cmd2config(l[2],update)
|
line = uci_cmd2config(l[2],update)
|
||||||
update = ""
|
update = ""
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -131,7 +157,7 @@ function update_config(cfg, update, \
|
||||||
# if a supplied config value already exists, replace the whole line
|
# if a supplied config value already exists, replace the whole line
|
||||||
if (match(update, "^" section "." l[2] "=")) {
|
if (match(update, "^" section "." l[2] "=")) {
|
||||||
gsub("^" section ".", "", update)
|
gsub("^" section ".", "", update)
|
||||||
line = cmd2option(update)
|
line = uci_cmd2option(update)
|
||||||
update = ""
|
update = ""
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -142,7 +168,7 @@ function update_config(cfg, update, \
|
||||||
if (section != "") {
|
if (section != "") {
|
||||||
if (update ~ "^" section "\\.") {
|
if (update ~ "^" section "\\.") {
|
||||||
gsub("^" section ".", "", update)
|
gsub("^" section ".", "", update)
|
||||||
cfg = cfg cmd2option(update) "\n"
|
cfg = cfg uci_cmd2option(update) "\n"
|
||||||
|
|
||||||
update = "-" section "." update
|
update = "-" section "." update
|
||||||
}
|
}
|
|
@ -39,16 +39,23 @@ uci_apply_defaults() {(
|
||||||
uci commit
|
uci commit
|
||||||
)}
|
)}
|
||||||
|
|
||||||
|
uci_call_awk() {
|
||||||
|
local CMD="$*"
|
||||||
|
awk -f $UCI_ROOT/lib/config/uci.awk -f - <<EOF
|
||||||
|
BEGIN {
|
||||||
|
$CMD
|
||||||
|
}
|
||||||
|
EOF
|
||||||
|
}
|
||||||
|
|
||||||
uci_do_update() {
|
uci_do_update() {
|
||||||
local FILENAME="$1"
|
local FILENAME="$1"
|
||||||
local UPDATE="$2"
|
local UPDATE="$2"
|
||||||
awk -f $UCI_ROOT/lib/config/uci-update.awk -f - <<EOF
|
uci_call_awk "
|
||||||
BEGIN {
|
config = read_file(\"$FILENAME\")
|
||||||
config = read_file("$FILENAME")
|
|
||||||
$UPDATE
|
$UPDATE
|
||||||
print config
|
print config
|
||||||
}
|
"
|
||||||
EOF
|
|
||||||
}
|
}
|
||||||
|
|
||||||
uci_add_update() {
|
uci_add_update() {
|
||||||
|
@ -71,7 +78,7 @@ uci_set() {
|
||||||
uci_load "$PACKAGE"
|
uci_load "$PACKAGE"
|
||||||
config_get type "$CONFIG" TYPE
|
config_get type "$CONFIG" TYPE
|
||||||
[ -z "$type" ]
|
[ -z "$type" ]
|
||||||
) || uci_add_update "$PACKAGE" "CONFIG_SECTION='$CONFIG'${N}option '$OPTION' '$VALUE'"
|
) || uci_add_update "$PACKAGE" "config_set '$CONFIG' '$OPTION' '$VALUE'"
|
||||||
}
|
}
|
||||||
|
|
||||||
uci_add() {
|
uci_add() {
|
||||||
|
@ -114,19 +121,19 @@ uci_commit() {
|
||||||
|
|
||||||
# replace handlers
|
# replace handlers
|
||||||
config() {
|
config() {
|
||||||
append updatestr "config = update_config(config, \"@$2=$1\")" "$N"
|
append updatestr "config = uci_update_config(config, \"@$2=$1\")" "$N"
|
||||||
}
|
}
|
||||||
option() {
|
option() {
|
||||||
append updatestr "config = update_config(config, \"$CONFIG_SECTION.$1=$2\")" "$N"
|
append updatestr "config = uci_update_config(config, \"$CONFIG_SECTION.$1=$2\")" "$N"
|
||||||
}
|
}
|
||||||
config_rename() {
|
config_rename() {
|
||||||
append updatestr "config = update_config(config, \"&$1=$2\")" "$N"
|
append updatestr "config = uci_update_config(config, \"&$1=$2\")" "$N"
|
||||||
}
|
}
|
||||||
config_unset() {
|
config_unset() {
|
||||||
append updatestr "config = update_config(config, \"-$1.$2\")" "$N"
|
append updatestr "config = uci_update_config(config, \"-$1.$2\")" "$N"
|
||||||
}
|
}
|
||||||
config_clear() {
|
config_clear() {
|
||||||
append updatestr "config = update_config(config, \"-$1\")" "$N"
|
append updatestr "config = uci_update_config(config, \"-$1\")" "$N"
|
||||||
}
|
}
|
||||||
|
|
||||||
. "/tmp/.uci/$PACKAGE_BASE"
|
. "/tmp/.uci/$PACKAGE_BASE"
|
||||||
|
|
Loading…
Reference in a new issue