[Pcre-svn] [1278] code/trunk: Fix binary zero issue (Bugzill…

Top Page
Delete this message
Author: Subversion repository
Date:  
To: pcre-svn
Subject: [Pcre-svn] [1278] code/trunk: Fix binary zero issue (Bugzilla #2628) in RunGrepTest.
Revision: 1278
          http://www.exim.org/viewvc/pcre2?view=rev&revision=1278
Author:   ph10
Date:     2020-10-09 16:25:27 +0100 (Fri, 09 Oct 2020)
Log Message:
-----------
Fix binary zero issue (Bugzilla #2628) in RunGrepTest.


Modified Paths:
--------------
    code/trunk/ChangeLog
    code/trunk/RunGrepTest


Modified: code/trunk/ChangeLog
===================================================================
--- code/trunk/ChangeLog    2020-10-07 16:27:20 UTC (rev 1277)
+++ code/trunk/ChangeLog    2020-10-09 15:25:27 UTC (rev 1278)
@@ -86,7 +86,11 @@
 sequences $x{...} and $o{...} have been introduced, to allow for characters 
 whose code points are greater than 255 in Unicode mode.


+17. Applied the patch from Bugzilla #2628 to RunGrepTest. This does an explicit
+test for a version of sed that can handle binary zero, instead of assuming that
+any Linux version will work.

+
Version 10.35 09-May-2020
---------------------------


Modified: code/trunk/RunGrepTest
===================================================================
--- code/trunk/RunGrepTest    2020-10-07 16:27:20 UTC (rev 1277)
+++ code/trunk/RunGrepTest    2020-10-09 15:25:27 UTC (rev 1278)
@@ -757,22 +757,20 @@


# It seems impossible to handle NUL characters easily in many operating
# systems, including Solaris (aka SunOS), where the version of sed explicitly
-# doesn't like them, and also MacOS (Darwin), OpenBSD, FreeBSD, and NetBSD. So
-# now we run this test only on OS that are known to work. For the rest, we
-# fudge the output so that the comparison works.
+# doesn't like them, and also MacOS (Darwin), OpenBSD, FreeBSD, NetBSD, and
+# some Linux distributions like Alpine, even when using GNU sed, so test for
+# a usable sed and fudge the output so that the comparison works when sed
+# doesn't.

 printf '%c--------------------------- Test N7 ------------------------------\r\n' - >>testtrygrep
-uname=`uname`
-case $uname in
-  Linux)
-    printf 'abc\0def' >testNinputgrep
-    $valgrind $vjs $pcre2grep -na --newline=nul "^(abc|def)" testNinputgrep | sed 's/\x00/ZERO/g' >>testtrygrep
-    echo "" >>testtrygrep
-    ;;
-  *)
-    echo '1:abcZERO2:defZERO' >>testtrygrep
-    ;;
-esac
+Z=$(printf '\0' | sed 's/\x00/Z/g')
+if [ "$Z" = "Z" ]; then
+  printf 'abc\0def' >testNinputgrep
+  $valgrind $vjs $pcre2grep -na --newline=nul "^(abc|def)" testNinputgrep | sed 's/\x00/ZERO/g' >>testtrygrep
+  echo "" >>testtrygrep
+else
+  echo '1:abcZERO2:defZERO' >>testtrygrep
+fi


$cf $srcdir/testdata/grepoutputN testtrygrep
if [ $? != 0 ] ; then exit 1; fi