summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNorihiro Tanaka <noritnk@kcn.ne.jp>2014-11-08 07:49:27 -0800
committerJim Meyering <meyering@fb.com>2014-11-08 16:47:40 -0800
commit7c476caba56c5d25ac0426d2092b3d00af43913e (patch)
tree9c55345a4876fbd7e48bef49bc7ce8d493373df2
parent8435da9d8106513acd5c87b74f8a928073f2cd5d (diff)
downloadgrep-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.cfg8
-rwxr-xr-xtests/multibyte-white-space4
-rwxr-xr-xtests/word-multibyte3
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