summaryrefslogtreecommitdiff
path: root/sh
diff options
context:
space:
mode:
authorRoy Marples <roy@marples.name>2007-10-29 09:45:49 +0000
committerRoy Marples <roy@marples.name>2007-10-29 09:45:49 +0000
commite372729b8cc489af7b1b2305d6fd9c1895b9c8d4 (patch)
tree5ffa0e392d92a03bd23fe8f00aa2d6a26d41ffbb /sh
parent42c231d7609447cb96d98cbebdc12a197324fb99 (diff)
downloadopenrc-e372729b8cc489af7b1b2305d6fd9c1895b9c8d4.tar.gz
openrc-e372729b8cc489af7b1b2305d6fd9c1895b9c8d4.tar.bz2
openrc-e372729b8cc489af7b1b2305d6fd9c1895b9c8d4.tar.xz
Network config arrays are now split by embedded new lines instead of being evaled into space separated values. This makes it easier to read, maintain and document as discussed on gentoo-dev.
Diffstat (limited to 'sh')
-rwxr-xr-xsh/net.sh48
1 files changed, 30 insertions, 18 deletions
diff --git a/sh/net.sh b/sh/net.sh
index de3164c..427c1fa 100755
--- a/sh/net.sh
+++ b/sh/net.sh
@@ -40,20 +40,24 @@ _shell_var() {
echo -n "$1" | sed -e 's/[^[:alnum:]]/_/g'
}
-# Credit to David Leverton for this function which handily maps a bash array
-# structure to positional parameters so existing configs work :)
-# We'll deprecate arrays at some point though.
+# Support bash arrays - sigh
_get_array() {
+ local _a=
if [ -n "${BASH}" ] ; then
case "$(declare -p "$1" 2>/dev/null)" in
"declare -a "*)
- echo "set -- \"\${$1[@]}\""
- return
+ eval "set -- \"\${$1[@]}\""
+ for _a in "$@"; do
+ printf "%s\n" "${_a}"
+ done
+ return 0
;;
esac
fi
- echo "eval set -- \"\$$1\""
+ eval _a=\$$1
+ printf "%s" "${_a}"
+ [ -n "${_a}" ]
}
_wait_for_carrier() {
@@ -339,20 +343,25 @@ _load_modules() {
}
_load_config() {
- eval "$(_get_array "config_${IFVAR}")"
+ local config="$(_get_array "config_${IFVAR}")"
+ local fallback="$(_get_array fallback_${IFVAR})"
+
if [ "${IFACE}" = "lo" -o "${IFACE}" = "lo0" ] ; then
- set -- "127.0.0.1/8" "$@"
+ config="127.0.0.1/8
+${config}"
else
- if [ $# -eq 0 ] ; then
+ if [ -z "${config}" ] ; then
ewarn "No configuration specified; defaulting to DHCP"
- set -- "dhcp"
+ config="dhcp"
fi
fi
# We store our config in an array like vars
# so modules can influence it
config_index=0
- for cmd in "$@" ; do
+ local IFS="
+"
+ for cmd in ${config}; do
eval config_${config_index}="'${cmd}'"
config_index=$((${config_index} + 1))
done
@@ -360,8 +369,7 @@ _load_config() {
eval config_${config_index}=
config_index=0
- eval "$(_get_array fallback_${IFVAR})"
- for cmd in "$@" ; do
+ for cmd in ${fallback}; do
eval fallback_${config_index}="'${cmd}'"
config_index=$((${config_index} + 1))
done
@@ -483,14 +491,18 @@ start() {
return 1
fi
- local hidefirstroute=false first=true routes=
- eval "$(_get_array "routes_${IFVAR}")"
+ local hidefirstroute=false first=true
+ local routes="$(_get_array "routes_${IFVAR}")"
if [ "${IFACE}" = "lo" -o "${IFACE}" = "lo0" ] ; then
- set -- "127.0.0.0/8 via 127.0.0.1" "$@"
+ routes="127.0.0.0/8 via 127.0.0.1
+${routes}"
hidefirstroute=true
fi
- for cmd in "$@" ; do
- if ${first} ; then
+ local IFS="
+"
+ for cmd in ${routes}; do
+ unset IFS
+ if ${first}; then
first=false
einfo "Adding routes"
fi