diff options
author | Norihiro Tanaka <noritnk@kcn.ne.jp> | 2014-11-08 07:49:27 -0800 |
---|---|---|
committer | Jim Meyering <meyering@fb.com> | 2014-11-08 16:47:40 -0800 |
commit | 7c476caba56c5d25ac0426d2092b3d00af43913e (patch) | |
tree | 9c55345a4876fbd7e48bef49bc7ce8d493373df2 | |
parent | 8435da9d8106513acd5c87b74f8a928073f2cd5d (diff) | |
download | grep-7c476caba56c5d25ac0426d2092b3d00af43913e.tar.gz |
tests: avoid awk+printf+\xHH portability trap
* tests/init.cfg (hex_printf_): Rewrite in terms of printf and sed.
Using awk's printf with \xHH in the format string was not portable
to the awk of Solaris 10, AIX 7 or HP-UX 11.23, as reported in
http://debbugs.gnu.org/18987.
* tests/word-multibyte: Use printf rather than hex_printf_,
and give the character we're printing a name: e_acute (rather
than A-grave), since that is used in other tests.
a trailing \n in the format string, adjust by removing it, and
instead invoking echo.
* tests/multibyte-white-space: Simply remove each trailing \n.
They were not needed.
-rw-r--r-- | tests/init.cfg | 8 | ||||
-rwxr-xr-x | tests/multibyte-white-space | 4 | ||||
-rwxr-xr-x | tests/word-multibyte | 3 |
3 files changed, 8 insertions, 7 deletions
diff --git a/tests/init.cfg b/tests/init.cfg index 9342d3d6..1fb25f53 100644 --- a/tests/init.cfg +++ b/tests/init.cfg @@ -155,10 +155,10 @@ or use the shortcut target of the toplevel Makefile, fi } -# Like printf with a single argument. -# The difference is that while some printf implementations fail to -# handle \xHH escapes, no awk implementation has that problem. +# Like printf with a single argument, but that argument must be a +# sequence of four-byte strings \xHH where each H is a hexadecimal byte. hex_printf_() { - ${AWK-awk} 'BEGIN { printf "'"$1"'" }' </dev/null + printf $(printf '\\%o' \ + $(printf %s "$1"|sed 's,\\x\([0-9a-fA-f][0-9a-fA-f]\), 0x\1,g')) } diff --git a/tests/multibyte-white-space b/tests/multibyte-white-space index bb1bdaf6..abd4dc55 100755 --- a/tests/multibyte-white-space +++ b/tests/multibyte-white-space @@ -58,9 +58,9 @@ EOF fail=0 for i in $utf8_space_characters; do - hex_printf_ "$i\n" | grep -q '^\s$' \ + hex_printf_ "$i" | grep -q '^\s$' \ || { warn_ "$i FAILED to match \\s"; fail=1; } - hex_printf_ "$i\n" | grep -q '\S' + hex_printf_ "$i" | grep -q '\S' test $? = 1 \ || { warn_ "$i vs. \\S FAILED"; fail=1; } done diff --git a/tests/word-multibyte b/tests/word-multibyte index f2caf977..ba37b85d 100755 --- a/tests/word-multibyte +++ b/tests/word-multibyte @@ -4,7 +4,8 @@ require_en_utf8_locale_ -hex_printf_ '\xc3\xa1\n' > in || framework_failure_ +e_acute=$(printf '\303\251') +printf "$e_acute\n" > in || framework_failure_ LC_ALL=en_US.UTF-8 export LC_ALL |