diff --git a/CHANGES b/CHANGES index c913700..c1a7c6c 100644 --- a/CHANGES +++ b/CHANGES @@ -30,6 +30,9 @@ Corrections: multiple times. Test: MULTIPLE_EOF + Newer parts of test.sh used substitutions ${x,,*} or ${x^^*} that are + not implemented in older bash versions. + ####################### V 1.7.3.3: Corrections: diff --git a/test.sh b/test.sh index 4fa2af9..f2c4473 100755 --- a/test.sh +++ b/test.sh @@ -67,6 +67,7 @@ export SOCAT_OPTS="$opts" #debug="1" debug= TESTS="$@"; export TESTS + # for some tests we need a network interface if type ip >/dev/null 2>&1; then INTERFACE=$(ip r get 8.8.8.8 |grep ' dev ' |head -n 1 |sed "s/.*dev[[:space:]][[:space:]]*\([^[:space:]][^[:space:]]*\).*/\1/") @@ -148,6 +149,20 @@ rm -f testsrv6.{crt,key,pem} CAT=cat OD_C="od -c" +toupper () { + case ${BASH_VERSION:0:1} in + [1-3]) echo "$@" |tr a-z A-Z ;; + [4-9]) echo "${@^^*}" ;; + esac +} + +tolower () { + case ${BASH_VERSION:0:1} in + [1-3]) echo "$@" |tr A-Z a-z ;; + [4-9]) echo "${@,,*}" ;; + esac +} + # precision sleep; takes seconds with fractional part psleep () { local T="$1" @@ -215,7 +230,7 @@ else SUBSTUSER="$(grep -v '^[^:]*:^[^:]*:0:' /etc/passwd |tail -n 1 |cut -d: -f1)" fi -if type ip >/dev/null; then +if type ip >/dev/null 2>&1; then if ip -V |grep -q "^ip utility, iproute2-ss"; then IP=$(which ip) else @@ -223,7 +238,7 @@ if type ip >/dev/null; then fi fi -if type ss >/dev/null; then +if type ss >/dev/null 2>&1; then if ss -V |grep -q "^ss utility, iproute2-ss"; then SS=$(which ss) else @@ -11393,7 +11408,7 @@ N=$((N+1)) while read KEYW FEAT ADDR IPPORT; do if [ -z "$KEYW" ]|| [[ "$KEYW" == \#* ]]; then continue; fi -RUNS=${KEYW,,*} +RUNS=$(tolower $KEYW) PROTO=$KEYW proto="$(echo "$PROTO" |tr A-Z a-z)" # test the max-children option on really connection oriented sockets @@ -11410,7 +11425,7 @@ elif ! testaddrs "$FEAT" >/dev/null; then $PRINTF "test $F_n $TEST... ${YELLOW}$FEAT not available${NORMAL}\n" $N numCANT=$((numCANT+1)) elif ! runs$RUNS >/dev/null; then - $PRINTF "test $F_n $TEST... ${YELLOW}${RUNS^^*} not available${NORMAL}\n" $N + $PRINTF "test $F_n $TEST... ${YELLOW}$(toupper $RUNS) not available${NORMAL}\n" $N numCANT=$((numCANT+1)) else case "X$IPPORT" in @@ -11475,7 +11490,7 @@ UNIX unix $td/test\$N.server - while read KEYW FEAT ADDR IPPORT SHUT; do if [ -z "$KEYW" ]|| [[ "$KEYW" == \#* ]]; then continue; fi -RUNS=${KEYW,,*} +RUNS=$(tolower $KEYW) PROTO=$KEYW proto="$(echo "$PROTO" |tr A-Z a-z)" # test the max-children option on pseudo connected sockets @@ -11493,7 +11508,7 @@ elif ! testaddrs "$FEAT" >/dev/null; then $PRINTF "test $F_n $TEST... ${YELLOW}$FEAT not available${NORMAL}\n" $N numCANT=$((numCANT+1)) elif ! runs$RUNS >/dev/null; then - $PRINTF "test $F_n $TEST... ${YELLOW}${RUNS^^*} not available${NORMAL}\n" $N + $PRINTF "test $F_n $TEST... ${YELLOW}$(toupper $RUNS) not available${NORMAL}\n" $N numCANT=$((numCANT+1)) else case "X$IPPORT" in @@ -11877,7 +11892,7 @@ N=$((N+1)) while read ssldist MODE MODULE FIELD TESTADDRESS PEERADDRESS VALUE; do if [ -z "$ssldist" ] || [[ "$ssldist" == \#* ]]; then continue; fi # -SSLDIST=${ssldist^^*} +SSLDIST=$(toupper $ssldist) NAME="ENV_${SSLDIST}_${MODE}_${MODULE}_${FIELD}" case "$TESTS" in *%$N%*|*%functions%*|*%ip4%*|*%ipapp%*|*%tcp%*|*%$ssldist%*|*%envvar%*|*%$NAME%*) @@ -11974,9 +11989,9 @@ while read addr fileopt addropts proto diropt ADDR2; do if [ -z "$addr" ] || [[ "$addr" == \#* ]]; then continue; fi # some passive (listening...) filesystem based addresses did not implement the # umask option -ADDR=${addr^^*} +ADDR=$(toupper $addr) ADDR_=${ADDR/-/_} -PROTO=${proto^^*} +PROTO=$(toupper $proto) if [ "$diropt" = "." ]; then diropt=; fi if [ "$fileopt" = "." ]; then fileopt=; fi if [ "$addropts" = "." ]; then addropts=; fi @@ -12047,9 +12062,9 @@ pipe . . file -u FILE:/dev/null while read addr fileopt addropts proto diropt; do if [ -z "$addr" ] || [[ "$addr" == \#* ]]; then continue; fi # test if passive (listening...) filesystem based addresses implement option perm -ADDR=${addr^^*} +ADDR=$(toupper $addr) ADDR_=${ADDR/-/_} -PROTO=${proto^^*} +PROTO=$(toupper $proto) if [ "$diropt" = "." ]; then diropt=; fi if [ "$fileopt" = "." ]; then fileopt=; fi if [ "$addropts" = "." ]; then addropts=; fi @@ -12119,9 +12134,9 @@ pty link . file . while read addr fileopt addropts proto diropt; do if [ -z "$addr" ] || [[ "$addr" == \#* ]]; then continue; fi # test if passive (listening...) filesystem based addresses implement option user -ADDR=${addr^^*} +ADDR=$(toupper $addr) ADDR_=${ADDR/-/_} -PROTO=${proto^^*} +PROTO=$(toupper $proto) if [ "$diropt" = "." ]; then diropt=; fi if [ "$fileopt" = "." ]; then fileopt=; fi if [ "$addropts" = "." ]; then addropts=; fi @@ -12196,9 +12211,9 @@ while read addr fileopt addropts proto diropt crit ADDR2; do if [ -z "$addr" ] || [[ "$addr" == \#* ]]; then continue; fi # some passive (listening...) filesystem based addresses did not remove the file # system entry at the end -ADDR=${addr^^*} +ADDR=$(toupper $addr) ADDR_=${ADDR/-/_} -PROTO=${proto^^*} +PROTO=$(toupper $proto) if [ "$diropt" = "." ]; then diropt=; fi if [ "$fileopt" = "." ]; then fileopt=; fi if [ "$addropts" = "." ]; then addropts=; fi @@ -12264,9 +12279,9 @@ while read addr fileopt addropts proto diropt crit ADDR2; do if [ -z "$addr" ] || [[ "$addr" == \#* ]]; then continue; fi # some passive (listening...) filesystem based addresses with fork did not remove # the file system entry at the end -ADDR=${addr^^*} +ADDR=$(toupper $addr) ADDR_=${ADDR/-/_} -PROTO=${proto^^*} +PROTO=$(toupper $proto) if [ "$diropt" = "." ]; then diropt=; fi if [ "$fileopt" = "." ]; then fileopt=; fi if [ "$addropts" = "." ]; then addropts=; fi