From 6244bcbe84aad1e1f62c063bfc47c76c6ebb66b4 Mon Sep 17 00:00:00 2001 From: Roy Marples Date: Thu, 10 Jan 2008 18:11:02 +0000 Subject: [PATCH] massage netmask to cidr for buggy shells. --- sh/net.sh | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/sh/net.sh b/sh/net.sh index 05081a7d..ab648a07 100755 --- a/sh/net.sh +++ b/sh/net.sh @@ -134,8 +134,22 @@ _wait_for_carrier() { } _netmask2cidr() { - local i= len=0 + # Some shells cannot handle hex arithmetic, so we massage it slightly + # Buggy shells include FreeBSD sh, dash and busybox. + # bash and NetBSD sh don't need this. + case $1 in + 0x*) + local hex=${1#0x*} quad= + while [ -n "${hex}" ]; do + local lastbut2=${hex#??*} + quad=${quad}${quad:+.}0x${hex%${lastbut2}*} + hex=${lastbut2} + done + set -- ${quad} + ;; + esac + local i= len= local IFS=. for i in $1; do while [ ${i} != "0" ]; do