Cheers,

-- 
Cristian
--- busybox-svn/examples/udhcp/simple.script	(revision 26144)
+++ busybox-svn/examples/udhcp/simple.script	(working copy)
@@ -2,45 +2,70 @@
 
 # udhcpc script edited by Tim Riker <[email protected]>
 
-[ -z "$1" ] && echo "Error: should be called from udhcpc" && exit 1
+tag="${0##*/}[$$]"
 
-RESOLV_CONF="/etc/resolv.conf"
-NETMASK=""
-[ -n "$subnet" ] && NETMASK="netmask $subnet"
+croak() {
+	echo "$tag: $*" >&2
+}
+
+[ $# -gt 0 ] && [ "$1" ] || {
+	croak "missing or empty argument(s)"
+	exit 1
+}
+
+RESOLV_CONF=/etc/resolv.conf
+NETMASK=
+[ -z "$subnet" ] || NETMASK="netmask $subnet"
 BROADCAST="broadcast +"
-[ -n "$broadcast" ] && BROADCAST="broadcast $broadcast"
+[ -z "$broadcast" ] || BROADCAST="broadcast $broadcast"
 
 case "$1" in
 	deconfig)
 		echo "Setting IP address 0.0.0.0 on $interface"
-		ifconfig $interface 0.0.0.0
+		ifconfig $interface 0.0.0.0 || {
+			croak "failed to $1 $interface"
+			exit 1
+		}
 		;;
 
 	renew|bound)
 		echo "Setting IP address $ip on $interface"
-		ifconfig $interface $ip $NETMASK $BROADCAST
+		ifconfig $interface $ip $NETMASK $BROADCAST || {
+			croak "failed to $1 $interface"
+			exit 1
+		}
 
-		if [ -n "$router" ] ; then
+		if [ "$router" ]; then
 			echo "Deleting routers"
-			while route del default gw 0.0.0.0 dev $interface ; do
+			while route del default gw 0.0.0.0 dev $interface; do
 				:
 			done
 
 			metric=0
-			for i in $router ; do
-				echo "Adding router $i"
-				route add default gw $i dev $interface metric $((metric++))
+			for r in $router; do
+				echo "Adding router $r"
+				route add default gw $r dev $interface \
+					metric $((metric++)) || {
+				    croak "failed"
+				    exit 1
+				}
 			done
 		fi
 
-		echo "Recreating $RESOLV_CONF"
-		echo -n > $RESOLV_CONF-$$
-		[ -n "$domain" ] && echo search $domain >> $RESOLV_CONF-$$
-		for i in $dns ; do
-			echo " Adding DNS server $i"
-			echo nameserver $i >> $RESOLV_CONF-$$
-		done
-		mv $RESOLV_CONF-$$ $RESOLV_CONF
+		if [ "$dns" ]; then
+			echo "Recreating $RESOLV_CONF"
+			echo -n > $RESOLV_CONF-$$ || {
+				croak "failed; readonly fs?"
+				exit 1
+			}
+			[ -z "$domain" ] ||
+				echo search $domain >> $RESOLV_CONF-$$
+			for d in $dns; do
+				echo " Adding DNS server $d"
+				echo nameserver $d >> $RESOLV_CONF-$$
+			done
+			mv -f $RESOLV_CONF-$$ $RESOLV_CONF
+		fi
 		;;
 esac
 
_______________________________________________
busybox mailing list
[email protected]
http://lists.busybox.net/mailman/listinfo/busybox

Reply via email to