[arch-projects] [PATCH 3/7] network: cleanup variable declarations

Tom Gundersen teg at jklm.no
Sat Mar 26 18:15:12 EDT 2011


On Saturday 26 March 2011 16:31:59 Dave Reisner wrote:
> * replace use of eval with variable indirection
> * scope variables to functions
> 
> Signed-off-by: Dave Reisner <d at falconindy.com>
> ---
>  network |   48 +++++++++++++++++++++++++++---------------------
>  1 files changed, 27 insertions(+), 21 deletions(-)
> 
> diff --git a/network b/network
> index 2065dfc..5a261b4 100755
> --- a/network
> +++ b/network
> @@ -8,11 +8,12 @@ for s in wireless bonding bridges dhcpcd; do
>  done
> 
>  ifup() {
> +	local ifcfg=${!1}
> +
>  	if [[ ! $1 ]]; then
>  		echo "usage: $0 ifup <interface_name>"
>  		return 1
>  	fi
> -	eval ifcfg="\$${1}"
> 
>  	# Get the name of the interface from the first token in the string
>  	if [[ $ifcfg = dhcp ]]; then
> @@ -36,10 +37,11 @@ ifup() {
>  }
> 
>  wi_up() {
> -	eval iwcfg="\$wlan_${1}"
> -	[[ ! $iwcfg ]] && return 0
> +	local iwcfg=wlan_$1
> +
> +	[[ ${!iwcfg} ]] || return 0
> 
> -	/usr/sbin/iwconfig $iwcfg
> +	/usr/sbin/iwconfig ${!iwcfg}
>  	[[ $WIRELESS_TIMEOUT ]] || WIRELESS_TIMEOUT=2
>  	sleep $WIRELESS_TIMEOUT
> 
> @@ -52,11 +54,13 @@ wi_up() {
>  }
> 
>  ifdown() {
> +	local ifcfg=${!1}
> +
>  	if [[ ! $1 ]]; then
>  		echo "usage: $0 ifdown <interface_name>"
>  		return 1
>  	fi
> -	eval ifcfg="\$${1}"
> +
>  	if [[ $ifcfg = dhcp && -f /var/run/dhcpcd-${1}.pid ]]; then
>  		/sbin/dhcpcd -k ${1} >/dev/null 2>&1
>  	fi
> @@ -71,17 +75,18 @@ iflist() {
>  		else
>  			printf "$ifline:\t"
>  		fi
> -		eval real_ifline=\$${ifline#!}
> -		echo $real_ifline
> +		echo ${!ifline#!}
>  	done
>  }
> 
>  rtup() {
> +	local routecfg=${!1}
> +
>  	if [[ ! $1 ]]; then
>  		echo "usage: $0 rtup <route_name>"
>  		return 1
>  	fi
> -	eval routecfg="\$${1}"
> +
>  	if [[ $routecfg =~ :: ]]; then
>  		/sbin/route -A inet6 add $routecfg
>  	else
> @@ -90,11 +95,13 @@ rtup() {
>  }
> 
>  rtdown() {
> +	local routecfg=${!1}
> +
>  	if [[ ! $1 ]]; then
>  		echo "usage: $0 rtdown <route_name>"
>  		return 1
>  	fi
> -	eval routecfg="\$${1}"
> +
>  	if [[ $routecfg =~ :: ]]; then
>  		/sbin/route -A inet6 del $routecfg
>  	else
> @@ -109,17 +116,16 @@ rtlist() {
>  		else
>  			printf "$rtline:\t"
>  		fi
> -		eval real_rtline=\$${rtline#!}
> -		echo $real_rtline
> +		echo ${!rtline#!}
>  	done
>  }
> 
>  bond_up() {
>  	for ifline in ${BOND_INTERFACES[@]}; do
>  		if [[ $ifline = ${ifline#!} ]]; then
> -			eval bondcfg="\$bond_${ifline}"
> -			if [[ ${bondcfg} ]]; then
> -				/sbin/ifenslave $ifline $bondcfg || error=1
> +			bondcfg="bond_$ifline"
> +			if [[ ${!bondcfg} ]]; then
> +				/sbin/ifenslave $ifline ${!bondcfg} || error=1
>  			fi
>  		fi
>  	done
> @@ -128,8 +134,8 @@ bond_up() {
>  bond_down() {
>  	for ifline in ${BOND_INTERFACES[@]}; do
>  		if [[ $ifline = ${ifline#!} ]]; then
> -			eval bondcfg="\$bond_${ifline}"
> -			/sbin/ifenslave -d $ifline $bondcfg || error=1
> +			bondcfg="bond_$ifline"
> +			/sbin/ifenslave -d $ifline ${!bondcfg} || error=1
>  		fi
>  	done
>  }
> @@ -143,15 +149,15 @@ bridge_up() {
>  				/usr/sbin/brctl delbr $br
>  			fi
>  			/usr/sbin/brctl addbr $br
> -			eval brifs="\$bridge_${br}"
> -			for brif in $brifs; do
> +			brifs="bridge_$br"
> +			for brif in ${!brifs}; do
>  				if [[ $brif = ${brif#!} ]]; then
>  					for ifline in ${BOND_INTERFACES[@]}; do
>  						if [[ $brif = $ifline && $ifline = ${ifline#!} ]]; then
>  							ifup $ifline
> -							eval bondcfg="\$bond_${ifline}"
> -							/sbin/ifenslave $ifline $bondcfg || error=1
> -							unset bond_${ifline}
> +							bondcfg="bond_$ifline"
> +							/sbin/ifenslave $ifline ${!bondcfg} || error=1
> +							unset bond_$ifline
>  						fi
>  					done

Looks fine to me, and I trust your judgement of what bashisms are the best 
ones...

-t


More information about the arch-projects mailing list