diff options
Diffstat (limited to 'package/base-files/files/lib')
| -rw-r--r-- | package/base-files/files/lib/config/uci.awk | 186 | ||||
| -rw-r--r-- | package/base-files/files/lib/config/uci.sh | 174 | ||||
| -rwxr-xr-x | package/base-files/files/lib/network/config.sh | 2 | 
3 files changed, 1 insertions, 361 deletions
| diff --git a/package/base-files/files/lib/config/uci.awk b/package/base-files/files/lib/config/uci.awk deleted file mode 100644 index 5972ad23a..000000000 --- a/package/base-files/files/lib/config/uci.awk +++ /dev/null @@ -1,186 +0,0 @@ -# Configuration update functions - AWK API -# -# Copyright (C) 2006 by Fokus Fraunhofer <carsten.tittel@fokus.fraunhofer.de> -# Copyright (C) 2006 by Felix Fietkau <nbd@openwrt.org> -# -# 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 - -# 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 == "true") || (var == "1") || (var == "on")) return 1 -	if ((var == "disabled") || (var == "false") || (var == "0") || (var == "off")) return 1 -	return (var && var != "0" ? 1 : 0) -} - - -function read_file(filename,  result) { -	while ((getline <filename) == 1) { -		result = result $0 "\n" -	} -	gsub(/\n*$/, "", result) -	return result -} - -function uci_cmd2option(str,  tmp) { -	if (match(str,"=")!=0) { -		res = "\toption " substr(str,1,RSTART-1) "\t'" substr(str,RSTART+1) "'" -	} else { -		res= "" -	} -	return res -} - -function uci_cmd2config(atype,  aname) { -	return "config \"" atype "\" \"" aname "\"" -} - -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") - -	cfg = "" -	for (n = 1; n < linecnt; n++) { -		# stupid parser for quoted arguments (e.g. for the type string). -		# not to be used to gather variable values (backslash escaping doesn't work) -		line = lines[n] -		gsub(/^[ \t]*/, "", line) -		gsub(/#.*$/, "", line) -		i2 = 1 -		delete l -		rest = line -        	while (length(rest)) { -			if (match(rest, /[ \t\"]+/)) { -				if (RSTART>1) { -					l[i2] = substr(rest,1,RSTART-1) -					i2++ -				} -				aidx=index(rest,"\"") -				if (aidx>=RSTART && aidx<=RSTART+RLENGTH) { -					rest=substr(rest,aidx+1) -					# find the end of the string -					match(rest,/\"/) -					l[i2]=substr(rest,1,RSTART-1) -					i2++ -				} -				rest=substr(rest,RSTART+RLENGTH) -			} else { -				l[i2] = rest -				i2++ -				rest = "" -			} -		} -		line = lines[n] -		 -		# when a command wants to set a config value for the current -		# section and a blank line is encountered before an option with -		# the same name, insert it here to maintain some coherency between -		# manually and automatically created option lines -		# if an option with the same name appears after this point, simply -		# ignore it, because it is already set. -		if ((section != "") && (l[1] != "option")) { -			if (line ~ /^[ \t]*$/) { -				if (update ~ "^" section "\\.") { -					gsub("^" section ".", "", update) -					cfg = cfg uci_cmd2option(update) "\n" -					gsub(/=.*$/, "", update) -					update = "-" section "." update -				} -			} -		} - -		if (l[1] == "config") { -			# look for all unset values -			if (section != "") { -				flag=0 -				if (update ~ "^" section "\\.") { -					flag=1 -					gsub("^" section ".", "", update) -					cfg = cfg uci_cmd2option(update) "\n" -					 -					update = "-" section "." update -				}  -				if (flag!=0) cfg = cfg "\n" -			} -			 -			remove = "" -			section = l[3] -			if (!length(section)) { -				section = "cfg" scnt -			}	 -			scnt++ -			if (update == "-" section) { -				remove = "section" -				update = "" -			} else if (update ~ "^@" section "=") { -				update = "" -			} else if (update ~ "^&" section "=") { -				gsub("^&" section "=", "", update) -				line = uci_cmd2config(l[2],update)  -				update = "" -			} -		} -		if (remove == "option") remove = "" -		if (l[1] == "option") { -			if (update ~ "^-" section "\\." l[2] "$") remove = "option" -			# if a supplied config value already exists, replace the whole line -			if (match(update, "^" section "." l[2] "=")) { -				gsub("^" section ".", "", update) -				line = uci_cmd2option(update) -				update = "" -			} -		} -		if (remove == "") cfg = cfg line "\n" -	} -	 -	# any new options for the last section?? -	if (section != "") { -		if (update ~ "^" section "\\.") { -			gsub("^" section ".", "", update) -			cfg = cfg uci_cmd2option(update) "\n" - -			update = "-" section "." update -		}  -	} - -	if (update ~ "^@") { -		# new section -		section = stype = substr(update,2) -		gsub(/=.*$/,"",section) -		gsub(/^.*=/,"",stype) -		cfg = cfg "\nconfig \"" stype "\" \"" section "\"\n" -	} - -	return cfg -} diff --git a/package/base-files/files/lib/config/uci.sh b/package/base-files/files/lib/config/uci.sh deleted file mode 100644 index 71f20488c..000000000 --- a/package/base-files/files/lib/config/uci.sh +++ /dev/null @@ -1,174 +0,0 @@ -#!/bin/sh -# Shell script defining macros for manipulating config files -# -# Copyright (C) 2006        Fokus Fraunhofer <carsten.tittel@fokus.fraunhofer.de> -# Copyright (C) 2006,2007   Felix Fietkau <nbd@openwrt.org> -# -# 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_load() { -	config_load "$1" -} - -uci_apply_defaults() {( -	cd /etc/uci-defaults || return 0 -	files="$(ls)" -	[ -z "$files" ] && return 0 -	mkdir -p /tmp/.uci -	for file in $files; do -		( . "./$(basename $file)" ) && rm -f "$file" -	done -	uci commit -)} - -uci_call_awk() { -	local CMD="$*" -	awk -f $UCI_ROOT/lib/config/uci.awk -f - <<EOF -BEGIN { -	$CMD -} -EOF -} - -uci_do_update() { -	local FILENAME="$1" -	local UPDATE="$2" -	uci_call_awk " -	config = read_file(\"$FILENAME\") -	$UPDATE -	print config -" -} - -uci_add_update() { -	local PACKAGE="$1" -	local UPDATE="$2" -	local PACKAGE_BASE="$(basename "$PACKAGE")" -	local UCIFILE - -	case "$PACKAGE" in -		/*) UCIFILE="$PACKAGE";; -		*) -			UCIFILE="/tmp/.uci/$PACKAGE_BASE" -			mkdir -p "/tmp/.uci" -		;; -	esac - -	# FIXME: add locking? -	echo "$UPDATE" >> "$UCIFILE" -} - -uci_set() { -	local PACKAGE="$1" -	local CONFIG="$2" -	local OPTION="$3" -	local VALUE="$4" - -	case "$PACKAGE" in -		/*) -			uci_add_update "$PACKAGE" "config_set '$CONFIG' '$OPTION' '$VALUE'" -		;; -		*) -			( # spawn a subshell so you don't mess up the current environment -				uci_load "$PACKAGE" -				config_get OLDVAL "$CONFIG" "$OPTION" -				if [ "x$OLDVAL" != "x$VALUE" ]; then -					config_get type "$CONFIG" TYPE -					[ -z "$type" ] -				fi -			) || uci_add_update "$PACKAGE" "config_set '$CONFIG' '$OPTION' '$VALUE'" -		;; -	esac -} - -uci_add() { -	local PACKAGE="$1" -	local TYPE="$2" -	local CONFIG="$3" - -	uci_add_update "$PACKAGE" "config '$TYPE' '$CONFIG'" -} - -uci_rename() { -	local PACKAGE="$1" -	local CONFIG="$2" -	local VALUE="$3" - -	uci_add_update "$PACKAGE" "config_rename '$CONFIG' '$VALUE'" -} - -uci_remove() { -	local PACKAGE="$1" -	local CONFIG="$2" -	local OPTION="$3" - -	if [ -z "$OPTION" ]; then -		uci_add_update "$PACKAGE" "config_clear '$CONFIG'" -	else -		uci_add_update "$PACKAGE" "config_unset '$CONFIG' '$OPTION'" -	fi -} - -uci_commit() { -	local PACKAGE="$1" -	local PACKAGE_BASE="$(basename "$PACKAGE")" - -	case "$PACKAGE" in -		/*) return 0;; -	esac -	mkdir -p /tmp/.uci -	LOCK=`which lock` || LOCK=: -	$LOCK "/tmp/.uci/$PACKAGE_BASE.lock" -	[ -f "/tmp/.uci/$PACKAGE_BASE" ] && ( -		updatestr="" -		 -		# replace handlers -		config() { -			append updatestr "config = uci_update_config(config, \"@$2=$1\")" "$N" -		} -		option() { -			append updatestr "config = uci_update_config(config, \"$CONFIG_SECTION.$1=$2\")" "$N" -		} -		config_rename() { -			append updatestr "config = uci_update_config(config, \"&$1=$2\")" "$N" -		} -		config_unset() { -			append updatestr "config = uci_update_config(config, \"-$1.$2\")" "$N" -		} -		config_clear() { -			append updatestr "config = uci_update_config(config, \"-$1\")" "$N" -		} -		 -		. "/tmp/.uci/$PACKAGE_BASE" - -		# completely disable handlers so that they don't get in the way -		config() { -			return 0 -		} -		option() { -			return 0 -		} -		 -		config_load "$PACKAGE" -		CONFIG_FILENAME="${CONFIG_FILENAME:-$UCI_ROOT/etc/config/$PACKAGE_BASE}" -		uci_do_update "$CONFIG_FILENAME" "$updatestr" > "/tmp/.uci/$PACKAGE_BASE.new" && { -			mv -f "/tmp/.uci/$PACKAGE_BASE.new" "$CONFIG_FILENAME" && \ -			rm -f "/tmp/.uci/$PACKAGE_BASE" -		}  -	) -	$LOCK -u "/tmp/.uci/$PACKAGE_BASE.lock" -} - - diff --git a/package/base-files/files/lib/network/config.sh b/package/base-files/files/lib/network/config.sh index 98d6f1350..611da718c 100755 --- a/package/base-files/files/lib/network/config.sh +++ b/package/base-files/files/lib/network/config.sh @@ -140,7 +140,7 @@ setup_interface() {  	config_get macaddr "$config" macaddr  	grep "$iface:" /proc/net/dev > /dev/null && \  		$DEBUG ifconfig "$iface" ${macaddr:+hw ether "$macaddr"} ${mtu:+mtu $mtu} up -	uci set "/var/state/network.$config.ifname=$iface" +	uci_set_state network "$config" ifname "$iface"  	pidfile="/var/run/$iface.pid"  	case "$proto" in | 
