Fix RunGrepTest's handling of binary zeros on Solaris by using /usr/xpg4/bin/tr
instead of tr if /usr/xpg4/bin/tr exists.
This commit is contained in:
parent
afb4fc7a01
commit
35e257f294
@ -7,7 +7,10 @@ Version 10.37-RC1 04-January-2021
|
|||||||
1. Change RunGrepTest to use tr instead of sed when testing with binary
|
1. Change RunGrepTest to use tr instead of sed when testing with binary
|
||||||
zero bytes, because sed varies a lot from system to system and has problems
|
zero bytes, because sed varies a lot from system to system and has problems
|
||||||
with binary zeros. This is from Bugzilla #2681. Patch from Jeremie
|
with binary zeros. This is from Bugzilla #2681. Patch from Jeremie
|
||||||
Courreges-Anglas via Nam Nguyen. This fixes RunGrepTest for OpenBSD.
|
Courreges-Anglas via Nam Nguyen. This fixes RunGrepTest for OpenBSD. Later:
|
||||||
|
it broke it for at least one version of Solaris, where tr can't handle binary
|
||||||
|
zeros. However, that system had /usr/xpg4/bin/tr installed, which works OK, so
|
||||||
|
RunGrepTest now checks for that command and use it if found.
|
||||||
|
|
||||||
2. Compiling with gcc 10.2's -fanalyzer option showed up a hypothetical problem
|
2. Compiling with gcc 10.2's -fanalyzer option showed up a hypothetical problem
|
||||||
with a NULL dereference. I don't think this case could ever occur in practice,
|
with a NULL dereference. I don't think this case could ever occur in practice,
|
||||||
|
23
RunGrepTest
23
RunGrepTest
@ -755,16 +755,25 @@ $valgrind $vjs $pcre2grep -n --newline=any "^(abc|def|ghi|jkl)" testNinputgrep >
|
|||||||
printf '%c--------------------------- Test N6 ------------------------------\r\n' - >>testtrygrep
|
printf '%c--------------------------- Test N6 ------------------------------\r\n' - >>testtrygrep
|
||||||
$valgrind $vjs $pcre2grep -n --newline=anycrlf "^(abc|def|ghi|jkl)" testNinputgrep >>testtrygrep
|
$valgrind $vjs $pcre2grep -n --newline=anycrlf "^(abc|def|ghi|jkl)" testNinputgrep >>testtrygrep
|
||||||
|
|
||||||
# It seems impossible to handle NUL characters easily in many operating
|
# This next test involves NUL characters. It seems impossible to handle them
|
||||||
# systems, including Solaris (aka SunOS), where the version of sed explicitly
|
# easily in many operating systems. An earlier version of this script used sed
|
||||||
# doesn't like them, and also MacOS (Darwin), OpenBSD, FreeBSD, NetBSD, and
|
# to translate NUL into the string ZERO, but this didn't work on Solaris (aka
|
||||||
# some Linux distributions like Alpine, even when using GNU sed, so test for
|
# SunOS), where the version of sed explicitly doesn't like them, and also MacOS
|
||||||
# a usable sed and fudge the output so that the comparison works when sed
|
# (Darwin), OpenBSD, FreeBSD, NetBSD, and some Linux distributions like Alpine,
|
||||||
# doesn't.
|
# even when using GNU sed. A user suggested using tr instead, which
|
||||||
|
# necessitates translating to a single character (@). However, on (some
|
||||||
|
# versions of?) Solaris, the normal "tr" cannot handle binary zeros, but if
|
||||||
|
# /usr/xpg4/bin/tr is available, it can do so, so test for that.
|
||||||
|
|
||||||
|
if [ -x /usr/xpg4/bin/tr ] ; then
|
||||||
|
tr=/usr/xpg4/bin/tr
|
||||||
|
else
|
||||||
|
tr=tr
|
||||||
|
fi
|
||||||
|
|
||||||
printf '%c--------------------------- Test N7 ------------------------------\r\n' - >>testtrygrep
|
printf '%c--------------------------- Test N7 ------------------------------\r\n' - >>testtrygrep
|
||||||
printf 'abc\0def' >testNinputgrep
|
printf 'abc\0def' >testNinputgrep
|
||||||
$valgrind $vjs $pcre2grep -na --newline=nul "^(abc|def)" testNinputgrep | tr '\000' '@' >>testtrygrep
|
$valgrind $vjs $pcre2grep -na --newline=nul "^(abc|def)" testNinputgrep | $tr '\000' '@' >>testtrygrep
|
||||||
echo "" >>testtrygrep
|
echo "" >>testtrygrep
|
||||||
|
|
||||||
$cf $srcdir/testdata/grepoutputN testtrygrep
|
$cf $srcdir/testdata/grepoutputN testtrygrep
|
||||||
|
Loading…
Reference in New Issue
Block a user