|
|
@@ -1,4 +1,4 @@
|
|
|
-# Configuration update functions
|
|
|
+# Configuration update functions - AWK API
|
|
|
#
|
|
|
# Copyright (C) 2006 by Fokus Fraunhofer <[email protected]>
|
|
|
# Copyright (C) 2006 by Felix Fietkau <[email protected]>
|
|
|
@@ -17,6 +17,32 @@
|
|
|
# along with this program; if not, write to the Free Software
|
|
|
# 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) {
|
|
|
while ((getline <filename) == 1) {
|
|
|
@@ -26,7 +52,7 @@ function read_file(filename, result) {
|
|
|
return result
|
|
|
}
|
|
|
|
|
|
-function cmd2option(str, tmp) {
|
|
|
+function uci_cmd2option(str, tmp) {
|
|
|
if (match(str,"=")!=0) {
|
|
|
res = "\toption " substr(str,1,RSTART-1) "\t'" substr(str,RSTART+1) "'"
|
|
|
} else {
|
|
|
@@ -35,11 +61,11 @@ function cmd2option(str, tmp) {
|
|
|
return res
|
|
|
}
|
|
|
|
|
|
-function cmd2config(atype, aname) {
|
|
|
+function uci_cmd2config(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) {
|
|
|
scnt = 1
|
|
|
linecnt=split(cfg "\n", lines, "\n")
|
|
|
@@ -87,7 +113,7 @@ function update_config(cfg, update, \
|
|
|
if (line ~ /^[ \t]*$/) {
|
|
|
if (update ~ "^" section "\\.") {
|
|
|
gsub("^" section ".", "", update)
|
|
|
- cfg = cfg cmd2option(update) "\n"
|
|
|
+ cfg = cfg uci_cmd2option(update) "\n"
|
|
|
gsub(/=.*$/, "", update)
|
|
|
update = "-" section "." update
|
|
|
}
|
|
|
@@ -101,7 +127,7 @@ function update_config(cfg, update, \
|
|
|
if (update ~ "^" section "\\.") {
|
|
|
flag=1
|
|
|
gsub("^" section ".", "", update)
|
|
|
- cfg = cfg cmd2option(update) "\n"
|
|
|
+ cfg = cfg uci_cmd2option(update) "\n"
|
|
|
|
|
|
update = "-" section "." update
|
|
|
}
|
|
|
@@ -121,7 +147,7 @@ function update_config(cfg, update, \
|
|
|
update = ""
|
|
|
} else if (update ~ "^&" section "=") {
|
|
|
gsub("^&" section "=", "", update)
|
|
|
- line = cmd2config(l[2],update)
|
|
|
+ line = uci_cmd2config(l[2],update)
|
|
|
update = ""
|
|
|
}
|
|
|
}
|
|
|
@@ -131,7 +157,7 @@ function update_config(cfg, update, \
|
|
|
# if a supplied config value already exists, replace the whole line
|
|
|
if (match(update, "^" section "." l[2] "=")) {
|
|
|
gsub("^" section ".", "", update)
|
|
|
- line = cmd2option(update)
|
|
|
+ line = uci_cmd2option(update)
|
|
|
update = ""
|
|
|
}
|
|
|
}
|
|
|
@@ -142,7 +168,7 @@ function update_config(cfg, update, \
|
|
|
if (section != "") {
|
|
|
if (update ~ "^" section "\\.") {
|
|
|
gsub("^" section ".", "", update)
|
|
|
- cfg = cfg cmd2option(update) "\n"
|
|
|
+ cfg = cfg uci_cmd2option(update) "\n"
|
|
|
|
|
|
update = "-" section "." update
|
|
|
}
|