From d253cfe3b20c8540826d57e24fcc6afcbdc0429d Mon Sep 17 00:00:00 2001 From: Jilles Tjoelker Date: Sun, 6 Dec 2015 14:09:31 +0000 Subject: [PATCH] sh: Add limited test for ${#@} and ${#*}. POSIX leaves the result of expanding ${#@} and ${#*} unspecified, but ensure it is numeric. --- bin/sh/tests/parameters/Makefile | 1 + bin/sh/tests/parameters/positional9.0 | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+) create mode 100644 bin/sh/tests/parameters/positional9.0 diff --git a/bin/sh/tests/parameters/Makefile b/bin/sh/tests/parameters/Makefile index d49649226e6..528697df437 100644 --- a/bin/sh/tests/parameters/Makefile +++ b/bin/sh/tests/parameters/Makefile @@ -21,6 +21,7 @@ FILES+= positional5.0 FILES+= positional6.0 FILES+= positional7.0 FILES+= positional8.0 +FILES+= positional9.0 FILES+= pwd1.0 FILES+= pwd2.0 diff --git a/bin/sh/tests/parameters/positional9.0 b/bin/sh/tests/parameters/positional9.0 new file mode 100644 index 00000000000..8571bfaf613 --- /dev/null +++ b/bin/sh/tests/parameters/positional9.0 @@ -0,0 +1,18 @@ +# $FreeBSD$ +# Although POSIX leaves the result of expanding ${#@} and ${#*} unspecified, +# make sure it is at least numeric. + +set -- bb cc ddd +set -f +lengths=${#*}${#@}"${#*}${#@}"$(echo ${#*}${#@}"${#*}${#@}") +IFS= +lengths=$lengths${#*}${#@}"${#*}${#@}"$(echo ${#*}${#@}"${#*}${#@}") +case $lengths in +*[!0-9]*) + printf 'bad: %s\n' "$lengths" + exit 3 ;; +????????????????*) ;; +*) + printf 'too short: %s\n' "$lengths" + exit 3 ;; +esac