allow config_* and uci_* functions to work on files outside of /etc/config - these files are assumed to use commands generated by uci_* only (as overlay to regular config files)
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@7636 3c298f89-4303-0410-b956-a3cf2f4a3e73master
parent
c0d94efc1e
commit
7afe6ce158
|
@ -85,7 +85,11 @@ config_clear() {
|
|||
}
|
||||
|
||||
config_load() {
|
||||
local file="$UCI_ROOT/etc/config/$1"
|
||||
local file
|
||||
case "$1" in
|
||||
/*) file="$1";;
|
||||
*) file="$UCI_ROOT/etc/config/$1";;
|
||||
esac
|
||||
_C=0
|
||||
export ${NO_EXPORT:+-n} CONFIG_SECTIONS=
|
||||
export ${NO_EXPORT:+-n} CONFIG_NUM_SECTIONS=0
|
||||
|
|
|
@ -62,10 +62,18 @@ uci_add_update() {
|
|||
local PACKAGE="$1"
|
||||
local UPDATE="$2"
|
||||
local PACKAGE_BASE="$(basename "$PACKAGE")"
|
||||
|
||||
local UCIFILE
|
||||
|
||||
case "$PACKAGE" in
|
||||
/*) UCIFILE="$PACKAGE";;
|
||||
*)
|
||||
UCIDIR="/tmp/.uci/$PACKAGE_BASE"
|
||||
mkdir -p "/tmp/.uci"
|
||||
;;
|
||||
esac
|
||||
|
||||
# FIXME: add locking?
|
||||
mkdir -p "/tmp/.uci"
|
||||
echo "$UPDATE" >> "/tmp/.uci/${PACKAGE_BASE}"
|
||||
echo "$UPDATE" >> "$UCIFILE"
|
||||
}
|
||||
|
||||
uci_set() {
|
||||
|
@ -74,14 +82,21 @@ uci_set() {
|
|||
local OPTION="$3"
|
||||
local VALUE="$4"
|
||||
|
||||
( # spawn a subshell so you don't mess up the current environment
|
||||
uci_load "$PACKAGE"
|
||||
config_get OLDVAL "$CONFIG" "$OPTION"
|
||||
if [ "$OLDVAL" != "$VALUE" ]; then
|
||||
config_get type "$CONFIG" TYPE
|
||||
[ -z "$type" ]
|
||||
fi
|
||||
) || uci_add_update "$PACKAGE" "config_set '$CONFIG' '$OPTION' '$VALUE'"
|
||||
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 [ "$OLDVAL" != "$VALUE" ]; then
|
||||
config_get type "$CONFIG" TYPE
|
||||
[ -z "$type" ]
|
||||
fi
|
||||
) || uci_add_update "$PACKAGE" "config_set '$CONFIG' '$OPTION' '$VALUE'"
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
uci_add() {
|
||||
|
@ -116,6 +131,9 @@ 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"
|
||||
|
|
Loading…
Reference in New Issue