[Pcre-svn] [538] code/trunk: Documentation detrail and make …

Top Page
Delete this message
Author: Subversion repository
Date:  
To: pcre-svn
Subject: [Pcre-svn] [538] code/trunk: Documentation detrail and make HTML for 10.22-RC1.
Revision: 538
          http://www.exim.org/viewvc/pcre2?view=rev&revision=538
Author:   ph10
Date:     2016-06-29 17:52:05 +0100 (Wed, 29 Jun 2016)
Log Message:
-----------
Documentation detrail and make HTML for 10.22-RC1.


Modified Paths:
--------------
    code/trunk/ChangeLog
    code/trunk/NEWS
    code/trunk/README
    code/trunk/RunGrepTest
    code/trunk/RunTest
    code/trunk/configure.ac
    code/trunk/doc/html/README.txt
    code/trunk/doc/html/pcre2api.html
    code/trunk/doc/html/pcre2build.html
    code/trunk/doc/html/pcre2grep.html
    code/trunk/doc/html/pcre2jit.html
    code/trunk/doc/html/pcre2pattern.html
    code/trunk/doc/html/pcre2posix.html
    code/trunk/doc/html/pcre2sample.html
    code/trunk/doc/html/pcre2serialize.html
    code/trunk/doc/pcre2.txt
    code/trunk/doc/pcre2api.3
    code/trunk/doc/pcre2build.3
    code/trunk/doc/pcre2grep.1
    code/trunk/doc/pcre2grep.txt
    code/trunk/doc/pcre2jit.3
    code/trunk/doc/pcre2pattern.3
    code/trunk/doc/pcre2posix.3
    code/trunk/doc/pcre2sample.3
    code/trunk/doc/pcre2serialize.3
    code/trunk/src/config.h.generic
    code/trunk/src/pcre2.h
    code/trunk/src/pcre2.h.generic
    code/trunk/src/pcre2.h.in
    code/trunk/src/pcre2_compile.c
    code/trunk/src/pcre2_config.c
    code/trunk/src/pcre2_dfa_match.c
    code/trunk/src/pcre2grep.c


Modified: code/trunk/ChangeLog
===================================================================
--- code/trunk/ChangeLog    2016-06-29 16:43:32 UTC (rev 537)
+++ code/trunk/ChangeLog    2016-06-29 16:52:05 UTC (rev 538)
@@ -5,36 +5,36 @@
 Version 10.22 29-June-2016
 --------------------------


-1. Applied Jason Hood's patches to RunTest.bat and testdata/wintestoutput3
+1. Applied Jason Hood's patches to RunTest.bat and testdata/wintestoutput3
to fix problems with running the tests under Windows.

-2. Implemented a facility for quoting literal characters within hexadecimal
-patterns in pcre2test, to make it easier to create patterns with just a few
+2. Implemented a facility for quoting literal characters within hexadecimal
+patterns in pcre2test, to make it easier to create patterns with just a few
non-printing characters.

3. Binary zeros are not supported in pcre2test input files. It now detects them
and gives an error.

-4. Updated the valgrind parameters in RunTest: (a) changed smc-check=all to
-smc-check=all-non-file; (b) changed obj:* in the suppression file to obj:??? so
+4. Updated the valgrind parameters in RunTest: (a) changed smc-check=all to
+smc-check=all-non-file; (b) changed obj:* in the suppression file to obj:??? so
that it matches only unknown objects.

-5. Updated the maintenance script maint/ManyConfigTests to make it easier to
+5. Updated the maintenance script maint/ManyConfigTests to make it easier to
select individual groups of tests.

-6. When the POSIX wrapper function regcomp() is called, the REG_NOSUB option
+6. When the POSIX wrapper function regcomp() is called, the REG_NOSUB option
used to set PCRE2_NO_AUTO_CAPTURE when calling pcre2_compile(). However, this
disables the use of back references (and subroutine calls), which are supported
by other implementations of regcomp() with RE_NOSUB. Therefore, REG_NOSUB no
-longer causes PCRE2_NO_AUTO_CAPTURE to be set, though it still ignores nmatch
+longer causes PCRE2_NO_AUTO_CAPTURE to be set, though it still ignores nmatch
and pmatch when regexec() is called.

-7. Because of 6 above, pcre2test has been modified with a new modifier called
-posix_nosub, to call regcomp() with REG_NOSUB. Previously the no_auto_capture
-modifier had this effect. That option is now ignored when the POSIX API is in
+7. Because of 6 above, pcre2test has been modified with a new modifier called
+posix_nosub, to call regcomp() with REG_NOSUB. Previously the no_auto_capture
+modifier had this effect. That option is now ignored when the POSIX API is in
use.

-8. Minor tidies to the pcre2demo.c sample program, including more comments
+8. Minor tidies to the pcre2demo.c sample program, including more comments
about its 8-bit-ness.

9. Detect unmatched closing parentheses and give the error in the pre-scan
@@ -48,88 +48,88 @@
own data into the regex_t block. In one example the re_pcre2_code field was
left as NULL, which made pcre2test think it had not got a compiled POSIX regex,
so it treated the next line as another pattern line, resulting in a confusing
-error message. A check has been added to pcre2test to see if the data returned
-from a successful call of regcomp() are valid for PCRE2's regcomp(). If they
-are not, an error message is output and the pcre2test run is abandoned. The
-message points out the possibility of a mis-linking. Hopefully this will avoid
+error message. A check has been added to pcre2test to see if the data returned
+from a successful call of regcomp() are valid for PCRE2's regcomp(). If they
+are not, an error message is output and the pcre2test run is abandoned. The
+message points out the possibility of a mis-linking. Hopefully this will avoid
some head-scratching the next time this happens.

-11. A pattern such as /(?<=((?C)0))/, which has a callout inside a lookbehind
-assertion, caused pcre2test to output a very large number of spaces when the
+11. A pattern such as /(?<=((?C)0))/, which has a callout inside a lookbehind
+assertion, caused pcre2test to output a very large number of spaces when the
callout was taken, making the program appearing to loop.

-12. A pattern that included (*ACCEPT) in the middle of a sufficiently deeply
-nested set of parentheses of sufficient size caused an overflow of the
+12. A pattern that included (*ACCEPT) in the middle of a sufficiently deeply
+nested set of parentheses of sufficient size caused an overflow of the
compiling workspace (which was diagnosed, but of course is not desirable).

-13. Detect missing closing parentheses during the pre-pass for group
+13. Detect missing closing parentheses during the pre-pass for group
identification.

-14. Changed some integer variable types and put in a number of casts, following
-a report of compiler warnings from Visual Studio 2013 and a few tests with
+14. Changed some integer variable types and put in a number of casts, following
+a report of compiler warnings from Visual Studio 2013 and a few tests with
gcc's -Wconversion (which still throws up a lot).

-15. Implemented pcre2_code_copy(), and added pushcopy and #popcopy to pcre2test
+15. Implemented pcre2_code_copy(), and added pushcopy and #popcopy to pcre2test
for testing it.

-16. Change 66 for 10.21 introduced the use of snprintf() in PCRE2's version of
-regerror(). When the error buffer is too small, my version of snprintf() puts a
-binary zero in the final byte. Bug #1801 seems to show that other versions do
-not do this, leading to bad output from pcre2test when it was checking for
-buffer overflow. It no longer assumes a binary zero at the end of a too-small
+16. Change 66 for 10.21 introduced the use of snprintf() in PCRE2's version of
+regerror(). When the error buffer is too small, my version of snprintf() puts a
+binary zero in the final byte. Bug #1801 seems to show that other versions do
+not do this, leading to bad output from pcre2test when it was checking for
+buffer overflow. It no longer assumes a binary zero at the end of a too-small
regerror() buffer.

-17. Fixed typo ("&&" for "&") in pcre2_study(). Fortunately, this could not
+17. Fixed typo ("&&" for "&") in pcre2_study(). Fortunately, this could not
actually affect anything, by sheer luck.

-18. Two minor fixes for MSVC compilation: (a) removal of apparently incorrect
-"const" qualifiers in pcre2test and (b) defining snprintf as _snprintf for
-older MSVC compilers. This has been done both in src/pcre2_internal.h for most
-of the library, and also in src/pcre2posix.c, which no longer includes
+18. Two minor fixes for MSVC compilation: (a) removal of apparently incorrect
+"const" qualifiers in pcre2test and (b) defining snprintf as _snprintf for
+older MSVC compilers. This has been done both in src/pcre2_internal.h for most
+of the library, and also in src/pcre2posix.c, which no longer includes
pcre2_internal.h (see 24 below).

19. Applied Chris Wilson's patch (Bugzilla #1681) to CMakeLists.txt for MSVC
static compilation. Subsequently applied Chris Wilson's second patch, putting
-the first patch under a new option instead of being unconditional when
+the first patch under a new option instead of being unconditional when
PCRE_STATIC is set.

20. Updated pcre2grep to set stdout as binary when run under Windows, so as not
-to convert \r\n at the ends of reflected lines into \r\r\n. This required
-ensuring that other output that is written to stdout (e.g. file names) uses the
+to convert \r\n at the ends of reflected lines into \r\r\n. This required
+ensuring that other output that is written to stdout (e.g. file names) uses the
appropriate line terminator: \r\n for Windows, \n otherwise.

-21. When a line is too long for pcre2grep's internal buffer, show the maximum
+21. When a line is too long for pcre2grep's internal buffer, show the maximum
length in the error message.

-22. Added support for string callouts to pcre2grep (Zoltan's patch with PH
+22. Added support for string callouts to pcre2grep (Zoltan's patch with PH
additions).

23. RunTest.bat was missing a "set type" line for test 22.

-24. The pcre2posix.c file was including pcre2_internal.h, and using some
-"private" knowledge of the data structures. This is unnecessary; the code has
+24. The pcre2posix.c file was including pcre2_internal.h, and using some
+"private" knowledge of the data structures. This is unnecessary; the code has
been re-factored and no longer includes pcre2_internal.h.

25. A racing condition is fixed in JIT reported by Mozilla.

-26. Minor code refactor to avoid "array subscript is below array bounds"
+26. Minor code refactor to avoid "array subscript is below array bounds"
compiler warning.

-27. Minor code refactor to avoid "left shift of negative number" warning.
+27. Minor code refactor to avoid "left shift of negative number" warning.

-28. Add a bit more sanity checking to pcre2_serialize_decode() and document
+28. Add a bit more sanity checking to pcre2_serialize_decode() and document
that it expects trusted data.

29. Fix typo in pcre2_jit_test.c

-30. Due to an oversight, pcre2grep was not making use of JIT when available.
+30. Due to an oversight, pcre2grep was not making use of JIT when available.
This is now fixed.

31. The RunGrepTest script is updated to use the valgrind suppressions file
-when testing with JIT under valgrind (compare 10.21/51 below). The suppressions
+when testing with JIT under valgrind (compare 10.21/51 below). The suppressions
file is updated so that is now the same as for PCRE1: it suppresses the
Memcheck warnings Addr16 and Cond in unknown objects (that is, JIT-compiled
-code). Also changed smc-check=all to smc-check=all-non-file as was done for
+code). Also changed smc-check=all to smc-check=all-non-file as was done for
RunTest (see 4 above).

32. Implemented the PCRE2_NO_JIT option for pcre2_match().
@@ -140,30 +140,30 @@

35. Fix potential negative index in pcre2test.

-36. Calls to pcre2_get_error_message() with error numbers that are never
+36. Calls to pcre2_get_error_message() with error numbers that are never
returned by PCRE2 functions were returning empty strings. Now the error code
-PCRE2_ERROR_BADDATA is returned. A facility has been added to pcre2test to
-show the texts for given error numbers (i.e. to call pcre2_get_error_message()
-and display what it returns) and a few representative error codes are now
+PCRE2_ERROR_BADDATA is returned. A facility has been added to pcre2test to
+show the texts for given error numbers (i.e. to call pcre2_get_error_message()
+and display what it returns) and a few representative error codes are now
checked in RunTest.

-37. Added "&& !defined(__INTEL_COMPILER)" to the test for __GNUC__ in
-pcre2_match.c, in anticipation that this is needed for the same reason it was
+37. Added "&& !defined(__INTEL_COMPILER)" to the test for __GNUC__ in
+pcre2_match.c, in anticipation that this is needed for the same reason it was
recently added to pcrecpp.cc in PCRE1.

-38. Using -o with -M in pcre2grep could cause unnecessary repeated output when
-the match extended over a line boundary, as it tried to find more matches "on
+38. Using -o with -M in pcre2grep could cause unnecessary repeated output when
+the match extended over a line boundary, as it tried to find more matches "on
the same line" - but it was already over the end.

-39. Allow \C in lookbehinds and DFA matching in UTF-32 mode (by converting it
+39. Allow \C in lookbehinds and DFA matching in UTF-32 mode (by converting it
to the same code as '.' when PCRE2_DOTALL is set).

-40. Fix two clang compiler warnings in pcre2test when only one code unit width
+40. Fix two clang compiler warnings in pcre2test when only one code unit width
is supported.

-41. Upgrade RunTest to automatically re-run test 2 with a large (64M) stack if
-it fails when running the interpreter with a 16M stack (and if changing the
-stack size via pcre2test is possible). This avoids having to manually set a
+41. Upgrade RunTest to automatically re-run test 2 with a large (64M) stack if
+it fails when running the interpreter with a 16M stack (and if changing the
+stack size via pcre2test is possible). This avoids having to manually set a
large stack size when testing with clang.



Modified: code/trunk/NEWS
===================================================================
--- code/trunk/NEWS    2016-06-29 16:43:32 UTC (rev 537)
+++ code/trunk/NEWS    2016-06-29 16:52:05 UTC (rev 538)
@@ -6,10 +6,10 @@


1. ChangeLog has the details of a number of bug fixes.

-2. The POSIX wrapper function regcomp() did not used to support back references
+2. The POSIX wrapper function regcomp() did not used to support back references
and subroutine calls if called with the REG_NOSUB option. It now does.

-3. A new function, pcre2_code_copy(), is added, to make a copy of a compiled
+3. A new function, pcre2_code_copy(), is added, to make a copy of a compiled
pattern.

4. Support for string callouts is added to pcre2grep.
@@ -16,7 +16,7 @@

5. Added the PCRE2_NO_JIT option to pcre2_match().

-6. The pcre2_get_error_message() function now returns with a negative error
+6. The pcre2_get_error_message() function now returns with a negative error
code if the error number it is given is unknown.

7. Several updates have been made to pcre2test and test scripts (see

Modified: code/trunk/README
===================================================================
--- code/trunk/README    2016-06-29 16:43:32 UTC (rev 537)
+++ code/trunk/README    2016-06-29 16:52:05 UTC (rev 538)
@@ -168,7 +168,7 @@
   built. If you want only the 16-bit or 32-bit library, use --disable-pcre2-8
   to disable building the 8-bit library.


-. If you want to include support for just-in-time (JIT) compiling, which can
+. If you want to include support for just-in-time (JIT) compiling, which can
give large performance improvements on certain platforms, add --enable-jit to
the "configure" command. This support is available only for certain hardware
architectures. If you try to enable it on an unsupported architecture, there
@@ -323,8 +323,8 @@

. When JIT support is enabled, pcre2grep automatically makes use of it, unless
you add --disable-pcre2grep-jit to the "configure" command.
-
-. On non-Windows sytems there is support for calling external scripts during
+
+. On non-Windows sytems there is support for calling external scripts during
matching in the pcre2grep command via PCRE2's callout facility with string
arguments. This support can be disabled by adding --disable-pcre2grep-callout
to the "configure" command.

Modified: code/trunk/RunGrepTest
===================================================================
--- code/trunk/RunGrepTest    2016-06-29 16:43:32 UTC (rev 537)
+++ code/trunk/RunGrepTest    2016-06-29 16:52:05 UTC (rev 538)
@@ -48,8 +48,8 @@
   echo "Testing $pcre2grep_version using valgrind"
   $pcre2test -C jit >/dev/null
   if [ $? -ne 0 ]; then
-    vjs="--suppressions=./testdata/valgrind-jit.supp"  
-  fi   
+    vjs="--suppressions=./testdata/valgrind-jit.supp"
+  fi
 fi


# Set up a suitable "diff" command for comparison. Some systems have a diff
@@ -633,7 +633,7 @@

# If pcre2grep supports script callouts, run some tests on them.

-if $valgrind $vjs $pcre2grep --help | $valgrind $vjs $pcre2grep -q 'Callout scripts in patterns are supported'; then
+if $valgrind $vjs $pcre2grep --help | $valgrind $vjs $pcre2grep -q 'Callout scripts in patterns are supported'; then
echo "Testing pcre2grep script callouts"
$valgrind $vjs $pcre2grep '(T)(..(.))(?C"/bin/echo|Arg1: [$1] [$2] [$3]|Arg2: $|${1}$| ($4) ($14) ($0)")()' $srcdir/testdata/grepinputv >testtrygrep
$valgrind $vjs $pcre2grep '(T)(..(.))()()()()()()()(..)(?C"/bin/echo|Arg1: [$11] [${11}]")' $srcdir/testdata/grepinputv >>testtrygrep
@@ -640,8 +640,8 @@
$cf $srcdir/testdata/grepoutputC testtrygrep
if [ $? != 0 ] ; then exit 1; fi
else
- echo "Script callouts are not supported"
-fi
+ echo "Script callouts are not supported"
+fi

# Finally, some tests to exercise code that is not tested above, just to be
# sure that it runs OK. Doing this improves the coverage statistics. The output

Modified: code/trunk/RunTest
===================================================================
--- code/trunk/RunTest    2016-06-29 16:43:32 UTC (rev 537)
+++ code/trunk/RunTest    2016-06-29 16:52:05 UTC (rev 538)
@@ -314,7 +314,7 @@
 # line, set even bigger numbers. When the compiler is clang, sanitize options
 # require an even bigger stack for test 2, and an increased stack for some of
 # the other tests. Test 2 now has code to automatically try again with a 64M
-# stack if it crashes when test2stack is "-S 16" when matching with the 
+# stack if it crashes when test2stack is "-S 16" when matching with the
 # interpreter.


 $sim ./pcre2test -S 1 /dev/null /dev/null
@@ -502,7 +502,7 @@
     for opt in "" $jitopt; do
       $sim $valgrind ${opt:+$vjs} ./pcre2test -q $test2stack $bmode $opt $testdata/testinput2 testtry
       if [ $? = 0 ] ; then
-        $sim $valgrind ${opt:+$vjs} ./pcre2test -q $bmode $opt -error -63,-62,-2,-1,0,100,188,189 >>testtry 
+        $sim $valgrind ${opt:+$vjs} ./pcre2test -q $bmode $opt -error -63,-62,-2,-1,0,100,188,189 >>testtry
         checkresult $? 2 "$opt"
       else
         echo " "
@@ -520,14 +520,14 @@
         echo $title2 "(excluding UTF-$bits) (64M stack)"
         $sim $valgrind ${opt:+$vjs} ./pcre2test -q -S 64 $bmode $opt $testdata/testinput2 testtry
         if [ $? = 0 ] ; then
-          $sim $valgrind ${opt:+$vjs} ./pcre2test -q $bmode $opt -error -63,-62,-2,-1,0,100,188,189 >>testtry 
+          $sim $valgrind ${opt:+$vjs} ./pcre2test -q $bmode $opt -error -63,-62,-2,-1,0,100,188,189 >>testtry
           checkresult $? 2 "$opt"
         else
           echo " "
-          echo "** Failed with an increased stack size. Tests abandoned."  
+          echo "** Failed with an increased stack size. Tests abandoned."
           echo " "
           exit 1
-        fi   
+        fi
       fi
     done
   fi


Modified: code/trunk/configure.ac
===================================================================
--- code/trunk/configure.ac    2016-06-29 16:43:32 UTC (rev 537)
+++ code/trunk/configure.ac    2016-06-29 16:52:05 UTC (rev 538)
@@ -156,8 +156,8 @@
                                [disable callout script support in pcre2grep]),
                 , enable_pcre2grep_callout=yes)
 else
-  enable_pcre2grep_callout=no                 
-fi                 
+  enable_pcre2grep_callout=no
+fi


 # Handle --enable-rebuild-chartables
 AC_ARG_ENABLE(rebuild-chartables,
@@ -564,12 +564,12 @@
   if test "$HAVE_WINDOWS_H" != "1"; then
     if test "$HAVE_SYS_WAIT_H" != "1"; then
       AC_MSG_ERROR([Callout script support needs sys/wait.h.])
-    fi    
+    fi
     AC_DEFINE([SUPPORT_PCRE2GREP_CALLOUT], [], [
       Define to any value to enable callout script support in pcre2grep.])
   else
     AC_MSG_WARN([Callout script support is not available for Windows: disabled])
-    enable_pcre2grep_callout=no 
+    enable_pcre2grep_callout=no
   fi
 fi



Modified: code/trunk/doc/html/README.txt
===================================================================
--- code/trunk/doc/html/README.txt    2016-06-29 16:43:32 UTC (rev 537)
+++ code/trunk/doc/html/README.txt    2016-06-29 16:52:05 UTC (rev 538)
@@ -168,7 +168,7 @@
   built. If you want only the 16-bit or 32-bit library, use --disable-pcre2-8
   to disable building the 8-bit library.


-. If you want to include support for just-in-time (JIT) compiling, which can
+. If you want to include support for just-in-time (JIT) compiling, which can
give large performance improvements on certain platforms, add --enable-jit to
the "configure" command. This support is available only for certain hardware
architectures. If you try to enable it on an unsupported architecture, there
@@ -323,8 +323,8 @@

. When JIT support is enabled, pcre2grep automatically makes use of it, unless
you add --disable-pcre2grep-jit to the "configure" command.
-
-. On non-Windows sytems there is support for calling external scripts during
+
+. On non-Windows sytems there is support for calling external scripts during
matching in the pcre2grep command via PCRE2's callout facility with string
arguments. This support can be disabled by adding --disable-pcre2grep-callout
to the "configure" command.

Modified: code/trunk/doc/html/pcre2api.html
===================================================================
--- code/trunk/doc/html/pcre2api.html    2016-06-29 16:43:32 UTC (rev 537)
+++ code/trunk/doc/html/pcre2api.html    2016-06-29 16:52:05 UTC (rev 538)
@@ -2542,12 +2542,12 @@
 <b>  PCRE2_SIZE <i>bufflen</i>);</b>
 </P>
 <P>
-A text message for an error code from any PCRE2 function (compile, match, or 
-auxiliary) can be obtained by calling <b>pcre2_get_error_message()</b>. The code 
-is passed as the first argument, with the remaining two arguments specifying a 
-code unit buffer and its length, into which the text message is placed. Note 
-that the message is returned in code units of the appropriate width for the 
-library that is being used. 
+A text message for an error code from any PCRE2 function (compile, match, or
+auxiliary) can be obtained by calling <b>pcre2_get_error_message()</b>. The code
+is passed as the first argument, with the remaining two arguments specifying a
+code unit buffer and its length, into which the text message is placed. Note
+that the message is returned in code units of the appropriate width for the
+library that is being used.
 </P>
 <P>
 The returned message is terminated with a trailing zero, and the function


Modified: code/trunk/doc/html/pcre2build.html
===================================================================
--- code/trunk/doc/html/pcre2build.html    2016-06-29 16:43:32 UTC (rev 537)
+++ code/trunk/doc/html/pcre2build.html    2016-06-29 16:52:05 UTC (rev 538)
@@ -352,12 +352,12 @@
 </P>
 <br><a name="SEC15" href="#TOC1">PCRE2GREP SUPPORT FOR EXTERNAL SCRIPTS</a><br>
 <P>
-By default, on non-Windows systems, <b>pcre2grep</b> supports the use of 
-callouts with string arguments within the patterns it is matching, in order to 
+By default, on non-Windows systems, <b>pcre2grep</b> supports the use of
+callouts with string arguments within the patterns it is matching, in order to
 run external scripts. For details, see the
 <a href="pcre2grep.html"><b>pcre2grep</b></a>
-documentation. This support can be disabled by adding 
---disable-pcre2grep-callout to the <b>configure</b> command. 
+documentation. This support can be disabled by adding
+--disable-pcre2grep-callout to the <b>configure</b> command.
 </P>
 <br><a name="SEC16" href="#TOC1">PCRE2GREP OPTIONS FOR COMPRESSED FILE SUPPORT</a><br>
 <P>


Modified: code/trunk/doc/html/pcre2grep.html
===================================================================
--- code/trunk/doc/html/pcre2grep.html    2016-06-29 16:43:32 UTC (rev 537)
+++ code/trunk/doc/html/pcre2grep.html    2016-06-29 16:52:05 UTC (rev 538)
@@ -511,10 +511,16 @@
 sequence the output ends at the end of that line.
 <br>
 <br>
-When this option is set, the PCRE2 library is called in "multiline" mode.
-However, <b>pcre2grep</b> still processes the input line by line. The difference
-is that a matched string may extend past the end of a line and continue on
-one or more subsequent lines. The newline sequence must be matched as part of
+When this option is set, the PCRE2 library is called in "multiline" mode. This
+allows a matched string to extend past the end of a line and continue on one or
+more subsequent lines. However, <b>pcre2grep</b> still processes the input line
+by line. Once a match has been handled, scanning restarts at the beginning of
+the next line, just as it does when <b>-M</b> is not present. This means that it
+is possible for the second or subsequent lines in a multiline match to be
+output again as part of another match.
+<br>
+<br>
+The newline sequence that separates multiple lines must be matched as part of
 the pattern. For example, to find the phrase "regular expression" in a file
 where "regular" might be at the end of a line and "expression" at the start of
 the next line, you could use this command:
@@ -746,7 +752,7 @@
 patterns are ignored by <b>pcre2grep</b>.
 </P>
 <P>
-A callout in a PCRE2 pattern is of the form (?C&#60;arg&#62;) where the argument is 
+A callout in a PCRE2 pattern is of the form (?C&#60;arg&#62;) where the argument is
 either a number or a quoted string (see the
 <a href="pcre2callout.html"><b>pcre2callout</b></a>
 documentation for details). Numbered callouts are ignored by <b>pcre2grep</b>.
@@ -825,7 +831,7 @@
 </P>
 <br><a name="SEC15" href="#TOC1">REVISION</a><br>
 <P>
-Last updated: 06 April 2016
+Last updated: 19 June 2016
 <br>
 Copyright &copy; 1997-2016 University of Cambridge.
 <br>


Modified: code/trunk/doc/html/pcre2jit.html
===================================================================
--- code/trunk/doc/html/pcre2jit.html    2016-06-29 16:43:32 UTC (rev 537)
+++ code/trunk/doc/html/pcre2jit.html    2016-06-29 16:52:05 UTC (rev 538)
@@ -152,7 +152,7 @@
 PCRE2_ANCHORED option is not supported at match time.
 </P>
 <P>
-If the PCRE2_NO_JIT option is passed to <b>pcre2_match()</b> it disables the 
+If the PCRE2_NO_JIT option is passed to <b>pcre2_match()</b> it disables the
 use of JIT, forcing matching by the interpreter code.
 </P>
 <P>


Modified: code/trunk/doc/html/pcre2pattern.html
===================================================================
--- code/trunk/doc/html/pcre2pattern.html    2016-06-29 16:43:32 UTC (rev 537)
+++ code/trunk/doc/html/pcre2pattern.html    2016-06-29 16:52:05 UTC (rev 538)
@@ -1256,17 +1256,22 @@
 <P>
 PCRE2 does not allow \C to appear in lookbehind assertions
 <a href="#lookbehind">(described below)</a>
-in a UTF mode, because this would make it impossible to calculate the length of
-the lookbehind. Neither the alternative matching function
-<b>pcre2_dfa_match()</b> nor the JIT optimizer support \C in a UTF mode. The
-former gives a match-time error; the latter fails to optimize and so the match
-is always run using the interpreter.
+in UTF-8 or UTF-16 modes, because this would make it impossible to calculate
+the length of the lookbehind. Neither the alternative matching function
+<b>pcre2_dfa_match()</b> nor the JIT optimizer support \C in these UTF modes.
+The former gives a match-time error; the latter fails to optimize and so the
+match is always run using the interpreter.
 </P>
 <P>
+In the 32-bit library, however, \C is always supported (when not explicitly
+locked out) because it always matches a single code unit, whether or not UTF-32
+is specified.
+</P>
+<P>
 In general, the \C escape sequence is best avoided. However, one way of using
-it that avoids the problem of malformed UTF characters is to use a lookahead to
-check the length of the next character, as in this pattern, which could be used
-with a UTF-8 string (ignore white space and line breaks):
+it that avoids the problem of malformed UTF-8 or UTF-16 characters is to use a
+lookahead to check the length of the next character, as in this pattern, which
+could be used with a UTF-8 string (ignore white space and line breaks):
 <pre>
   (?| (?=[\x00-\x7f])(\C) |
       (?=[\x80-\x{7ff}])(\C)(\C) |
@@ -3388,9 +3393,9 @@
 </P>
 <br><a name="SEC30" href="#TOC1">REVISION</a><br>
 <P>
-Last updated: 13 November 2015
+Last updated: 20 June 2016
 <br>
-Copyright &copy; 1997-2015 University of Cambridge.
+Copyright &copy; 1997-2016 University of Cambridge.
 <br>
 <p>
 Return to the <a href="index.html">PCRE2 index page</a>.


Modified: code/trunk/doc/html/pcre2posix.html
===================================================================
--- code/trunk/doc/html/pcre2posix.html    2016-06-29 16:43:32 UTC (rev 537)
+++ code/trunk/doc/html/pcre2posix.html    2016-06-29 16:52:05 UTC (rev 538)
@@ -121,8 +121,8 @@
 </pre>
 When a pattern that is compiled with this flag is passed to <b>regexec()</b> for
 matching, the <i>nmatch</i> and <i>pmatch</i> arguments are ignored, and no
-captured strings are returned. Versions of the PCRE library prior to 10.22 used 
-to set the PCRE2_NO_AUTO_CAPTURE compile option, but this no longer happens 
+captured strings are returned. Versions of the PCRE library prior to 10.22 used
+to set the PCRE2_NO_AUTO_CAPTURE compile option, but this no longer happens
 because it disables the use of back references.
 <pre>
   REG_UCP


Modified: code/trunk/doc/html/pcre2sample.html
===================================================================
--- code/trunk/doc/html/pcre2sample.html    2016-06-29 16:43:32 UTC (rev 537)
+++ code/trunk/doc/html/pcre2sample.html    2016-06-29 16:52:05 UTC (rev 538)
@@ -39,8 +39,8 @@
 <P>
 The code in <b>pcre2demo.c</b> is an 8-bit program that uses the PCRE2 8-bit
 library. It handles strings and characters that are stored in 8-bit code units.
-By default, one character corresponds to one code unit, but if the pattern 
-starts with "(*UTF)", both it and the subject are treated as UTF-8 strings, 
+By default, one character corresponds to one code unit, but if the pattern
+starts with "(*UTF)", both it and the subject are treated as UTF-8 strings,
 where characters may occupy multiple code units.
 </P>
 <P>


Modified: code/trunk/doc/html/pcre2serialize.html
===================================================================
--- code/trunk/doc/html/pcre2serialize.html    2016-06-29 16:43:32 UTC (rev 537)
+++ code/trunk/doc/html/pcre2serialize.html    2016-06-29 16:52:05 UTC (rev 538)
@@ -51,10 +51,10 @@
 </P>
 <br><a name="SEC2" href="#TOC1">SECURITY CONCERNS</a><br>
 <P>
-The facility for saving and restoring compiled patterns is intended for use 
+The facility for saving and restoring compiled patterns is intended for use
 within individual applications. As such, the data supplied to
 <b>pcre2_serialize_decode()</b> is expected to be trusted data, not data from
-arbitrary external sources. There is only some simple consistency checking, not 
+arbitrary external sources. There is only some simple consistency checking, not
 complete validation of what is being re-loaded.
 </P>
 <br><a name="SEC3" href="#TOC1">SAVING COMPILED PATTERNS</a><br>


Modified: code/trunk/doc/pcre2.txt
===================================================================
--- code/trunk/doc/pcre2.txt    2016-06-29 16:43:32 UTC (rev 537)
+++ code/trunk/doc/pcre2.txt    2016-06-29 16:52:05 UTC (rev 538)
@@ -169,8 +169,8 @@
        Last updated: 16 October 2015
        Copyright (c) 1997-2015 University of Cambridge.
 ------------------------------------------------------------------------------
- 
- 
+
+
 PCRE2API(3)                Library Functions Manual                PCRE2API(3)



@@ -3154,8 +3154,8 @@
        Last updated: 17 June 2016
        Copyright (c) 1997-2016 University of Cambridge.
 ------------------------------------------------------------------------------
- 
- 
+
+
 PCRE2BUILD(3)              Library Functions Manual              PCRE2BUILD(3)



@@ -3647,8 +3647,8 @@
        Last updated: 01 April 2016
        Copyright (c) 1997-2016 University of Cambridge.
 ------------------------------------------------------------------------------
- 
- 
+
+
 PCRE2CALLOUT(3)            Library Functions Manual            PCRE2CALLOUT(3)



@@ -4011,8 +4011,8 @@
        Last updated: 23 March 2015
        Copyright (c) 1997-2015 University of Cambridge.
 ------------------------------------------------------------------------------
- 
- 
+
+
 PCRE2COMPAT(3)             Library Functions Manual             PCRE2COMPAT(3)



@@ -4196,8 +4196,8 @@
        Last updated: 15 March 2015
        Copyright (c) 1997-2015 University of Cambridge.
 ------------------------------------------------------------------------------
- 
- 
+
+
 PCRE2JIT(3)                Library Functions Manual                PCRE2JIT(3)



@@ -4593,8 +4593,8 @@
        Last updated: 05 June 2016
        Copyright (c) 1997-2016 University of Cambridge.
 ------------------------------------------------------------------------------
- 
- 
+
+
 PCRE2LIMITS(3)             Library Functions Manual             PCRE2LIMITS(3)



@@ -4671,8 +4671,8 @@
        Last updated: 05 November 2015
        Copyright (c) 1997-2015 University of Cambridge.
 ------------------------------------------------------------------------------
- 
- 
+
+
 PCRE2MATCHING(3)           Library Functions Manual           PCRE2MATCHING(3)



@@ -4890,8 +4890,8 @@
        Last updated: 29 September 2014
        Copyright (c) 1997-2014 University of Cambridge.
 ------------------------------------------------------------------------------
- 
- 
+
+
 PCRE2PARTIAL(3)            Library Functions Manual            PCRE2PARTIAL(3)



@@ -5330,8 +5330,8 @@
        Last updated: 22 December 2014
        Copyright (c) 1997-2014 University of Cambridge.
 ------------------------------------------------------------------------------
- 
- 
+
+
 PCRE2PATTERN(3)            Library Functions Manual            PCRE2PATTERN(3)



@@ -6338,17 +6338,21 @@
        possible to build PCRE2 with the use of \C permanently disabled.


        PCRE2  does  not allow \C to appear in lookbehind assertions (described
-       below) in a UTF mode, because this would make it impossible  to  calcu-
-       late  the  length  of  the lookbehind. Neither the alternative matching
-       function pcre2_dfa_match() nor the JIT optimizer support \C  in  a  UTF
-       mode. The former gives a match-time error; the latter fails to optimize
-       and so the match is always run using the interpreter.
+       below) in UTF-8 or UTF-16 modes, because this would make it  impossible
+       to  calculate  the  length  of  the lookbehind. Neither the alternative
+       matching function pcre2_dfa_match() nor the JIT optimizer support \C in
+       these UTF modes.  The former gives a match-time error; the latter fails
+       to optimize and so the match is always run using the interpreter.


+       In the 32-bit library,  however,  \C  is  always  supported  (when  not
+       explicitly  locked  out)  because it always matches a single code unit,
+       whether or not UTF-32 is specified.
+
        In general, the \C escape sequence is best avoided. However, one way of
-       using  it that avoids the problem of malformed UTF characters is to use
-       a lookahead to check the length of the next character, as in this  pat-
-       tern,  which  could be used with a UTF-8 string (ignore white space and
-       line breaks):
+       using  it  that avoids the problem of malformed UTF-8 or UTF-16 charac-
+       ters is to use a lookahead to check the length of the  next  character,
+       as  in  this  pattern,  which could be used with a UTF-8 string (ignore
+       white space and line breaks):


          (?| (?=[\x00-\x7f])(\C) |
              (?=[\x80-\x{7ff}])(\C)(\C) |
@@ -8363,11 +8367,11 @@


REVISION

-       Last updated: 13 November 2015
-       Copyright (c) 1997-2015 University of Cambridge.
+       Last updated: 20 June 2016
+       Copyright (c) 1997-2016 University of Cambridge.
 ------------------------------------------------------------------------------
- 
- 
+
+
 PCRE2PERFORM(3)            Library Functions Manual            PCRE2PERFORM(3)



@@ -8539,8 +8543,8 @@
        Last updated: 02 January 2015
        Copyright (c) 1997-2015 University of Cambridge.
 ------------------------------------------------------------------------------
- 
- 
+
+
 PCRE2POSIX(3)              Library Functions Manual              PCRE2POSIX(3)



@@ -8815,8 +8819,8 @@
        Last updated: 31 January 2016
        Copyright (c) 1997-2016 University of Cambridge.
 ------------------------------------------------------------------------------
- 
- 
+
+
 PCRE2SAMPLE(3)             Library Functions Manual             PCRE2SAMPLE(3)



@@ -9081,8 +9085,8 @@
        Last updated: 24 May 2016
        Copyright (c) 1997-2016 University of Cambridge.
 ------------------------------------------------------------------------------
- 
- 
+
+
 PCRE2STACK(3)              Library Functions Manual              PCRE2STACK(3)



@@ -9247,8 +9251,8 @@
        Last updated: 21 November 2014
        Copyright (c) 1997-2014 University of Cambridge.
 ------------------------------------------------------------------------------
- 
- 
+
+
 PCRE2SYNTAX(3)             Library Functions Manual             PCRE2SYNTAX(3)



@@ -9683,8 +9687,8 @@
        Last updated: 16 October 2015
        Copyright (c) 1997-2015 University of Cambridge.
 ------------------------------------------------------------------------------
- 
- 
+
+
 PCRE2UNICODE(3)            Library Functions Manual            PCRE2UNICODE(3)



@@ -9922,5 +9926,5 @@
        Last updated: 16 October 2015
        Copyright (c) 1997-2015 University of Cambridge.
 ------------------------------------------------------------------------------
- 
- 
+
+


Modified: code/trunk/doc/pcre2api.3
===================================================================
--- code/trunk/doc/pcre2api.3    2016-06-29 16:43:32 UTC (rev 537)
+++ code/trunk/doc/pcre2api.3    2016-06-29 16:52:05 UTC (rev 538)
@@ -2601,12 +2601,12 @@
 .B "  PCRE2_SIZE \fIbufflen\fP);"
 .fi
 .P
-A text message for an error code from any PCRE2 function (compile, match, or 
-auxiliary) can be obtained by calling \fBpcre2_get_error_message()\fP. The code 
-is passed as the first argument, with the remaining two arguments specifying a 
-code unit buffer and its length, into which the text message is placed. Note 
-that the message is returned in code units of the appropriate width for the 
-library that is being used. 
+A text message for an error code from any PCRE2 function (compile, match, or
+auxiliary) can be obtained by calling \fBpcre2_get_error_message()\fP. The code
+is passed as the first argument, with the remaining two arguments specifying a
+code unit buffer and its length, into which the text message is placed. Note
+that the message is returned in code units of the appropriate width for the
+library that is being used.
 .P
 The returned message is terminated with a trailing zero, and the function
 returns the number of code units used, excluding the trailing zero. If the


Modified: code/trunk/doc/pcre2build.3
===================================================================
--- code/trunk/doc/pcre2build.3    2016-06-29 16:43:32 UTC (rev 537)
+++ code/trunk/doc/pcre2build.3    2016-06-29 16:52:05 UTC (rev 538)
@@ -355,14 +355,14 @@
 .SH "PCRE2GREP SUPPORT FOR EXTERNAL SCRIPTS"
 .rs
 .sp
-By default, on non-Windows systems, \fBpcre2grep\fP supports the use of 
-callouts with string arguments within the patterns it is matching, in order to 
+By default, on non-Windows systems, \fBpcre2grep\fP supports the use of
+callouts with string arguments within the patterns it is matching, in order to
 run external scripts. For details, see the
 .\" HREF
 \fBpcre2grep\fP
 .\"
-documentation. This support can be disabled by adding 
---disable-pcre2grep-callout to the \fBconfigure\fP command. 
+documentation. This support can be disabled by adding
+--disable-pcre2grep-callout to the \fBconfigure\fP command.
 .
 .
 .SH "PCRE2GREP OPTIONS FOR COMPRESSED FILE SUPPORT"


Modified: code/trunk/doc/pcre2grep.1
===================================================================
--- code/trunk/doc/pcre2grep.1    2016-06-29 16:43:32 UTC (rev 537)
+++ code/trunk/doc/pcre2grep.1    2016-06-29 16:52:05 UTC (rev 538)
@@ -444,7 +444,7 @@
 allows a matched string to extend past the end of a line and continue on one or
 more subsequent lines. However, \fBpcre2grep\fP still processes the input line
 by line. Once a match has been handled, scanning restarts at the beginning of
-the next line, just as it does when \fB-M\fP is not present. This means that it 
+the next line, just as it does when \fB-M\fP is not present. This means that it
 is possible for the second or subsequent lines in a multiline match to be
 output again as part of another match.
 .sp
@@ -668,7 +668,7 @@
 with the \fB--help\fP option. If the support is not enabled, all callouts in
 patterns are ignored by \fBpcre2grep\fP.
 .P
-A callout in a PCRE2 pattern is of the form (?C<arg>) where the argument is 
+A callout in a PCRE2 pattern is of the form (?C<arg>) where the argument is
 either a number or a quoted string (see the
 .\" HREF
 \fBpcre2callout\fP


Modified: code/trunk/doc/pcre2grep.txt
===================================================================
--- code/trunk/doc/pcre2grep.txt    2016-06-29 16:43:32 UTC (rev 537)
+++ code/trunk/doc/pcre2grep.txt    2016-06-29 16:52:05 UTC (rev 538)
@@ -493,15 +493,21 @@
                  end of that line.


                  When this option is set, the PCRE2 library is called in "mul-
-                 tiline"  mode.   However, pcre2grep still processes the input
-                 line by line. The difference is that  a  matched  string  may
-                 extend  past  the  end  of a line and continue on one or more
-                 subsequent lines. The newline sequence  must  be  matched  as
-                 part of the pattern. For example, to find the phrase "regular
-                 expression" in a file where "regular" might be at the end  of
-                 a  line  and  "expression" at the start of the next line, you
-                 could use this command:
+                 tiline" mode. This allows a matched string to extend past the
+                 end of a line and continue on one or more  subsequent  lines.
+                 However,  pcre2grep  still  processes the input line by line.
+                 Once a match has  been  handled,  scanning  restarts  at  the
+                 beginning  of  the  next line, just as it does when -M is not
+                 present. This means that it is possible  for  the  second  or
+                 subsequent  lines  in a multiline match to be output again as
+                 part of another match.


+                 The newline sequence that separates multiple  lines  must  be
+                 matched  as  part  of  the  pattern. For example, to find the
+                 phrase "regular expression" in a file where  "regular"  might
+                 be  at the end of a line and "expression" at the start of the
+                 next line, you could use this command:
+
                    pcre2grep -M 'regular\s+expression' <file>


                  The \s escape sequence matches  any  white  space  character,
@@ -816,5 +822,5 @@


REVISION

-       Last updated: 06 April 2016
+       Last updated: 19 June 2016
        Copyright (c) 1997-2016 University of Cambridge.


Modified: code/trunk/doc/pcre2jit.3
===================================================================
--- code/trunk/doc/pcre2jit.3    2016-06-29 16:43:32 UTC (rev 537)
+++ code/trunk/doc/pcre2jit.3    2016-06-29 16:52:05 UTC (rev 538)
@@ -128,7 +128,7 @@
 PCRE2_NO_UTF_CHECK, PCRE2_PARTIAL_HARD, and PCRE2_PARTIAL_SOFT. The
 PCRE2_ANCHORED option is not supported at match time.
 .P
-If the PCRE2_NO_JIT option is passed to \fBpcre2_match()\fP it disables the 
+If the PCRE2_NO_JIT option is passed to \fBpcre2_match()\fP it disables the
 use of JIT, forcing matching by the interpreter code.
 .P
 The only unsupported pattern items are \eC (match a single data unit) when


Modified: code/trunk/doc/pcre2pattern.3
===================================================================
--- code/trunk/doc/pcre2pattern.3    2016-06-29 16:43:32 UTC (rev 537)
+++ code/trunk/doc/pcre2pattern.3    2016-06-29 16:52:05 UTC (rev 538)
@@ -1262,7 +1262,7 @@
 The former gives a match-time error; the latter fails to optimize and so the
 match is always run using the interpreter.
 .P
-In the 32-bit library, however, \eC is always supported (when not explicitly 
+In the 32-bit library, however, \eC is always supported (when not explicitly
 locked out) because it always matches a single code unit, whether or not UTF-32
 is specified.
 .P


Modified: code/trunk/doc/pcre2posix.3
===================================================================
--- code/trunk/doc/pcre2posix.3    2016-06-29 16:43:32 UTC (rev 537)
+++ code/trunk/doc/pcre2posix.3    2016-06-29 16:52:05 UTC (rev 538)
@@ -97,8 +97,8 @@
 .sp
 When a pattern that is compiled with this flag is passed to \fBregexec()\fP for
 matching, the \fInmatch\fP and \fIpmatch\fP arguments are ignored, and no
-captured strings are returned. Versions of the PCRE library prior to 10.22 used 
-to set the PCRE2_NO_AUTO_CAPTURE compile option, but this no longer happens 
+captured strings are returned. Versions of the PCRE library prior to 10.22 used
+to set the PCRE2_NO_AUTO_CAPTURE compile option, but this no longer happens
 because it disables the use of back references.
 .sp
   REG_UCP


Modified: code/trunk/doc/pcre2sample.3
===================================================================
--- code/trunk/doc/pcre2sample.3    2016-06-29 16:43:32 UTC (rev 537)
+++ code/trunk/doc/pcre2sample.3    2016-06-29 16:52:05 UTC (rev 538)
@@ -26,8 +26,8 @@
 .P
 The code in \fBpcre2demo.c\fP is an 8-bit program that uses the PCRE2 8-bit
 library. It handles strings and characters that are stored in 8-bit code units.
-By default, one character corresponds to one code unit, but if the pattern 
-starts with "(*UTF)", both it and the subject are treated as UTF-8 strings, 
+By default, one character corresponds to one code unit, but if the pattern
+starts with "(*UTF)", both it and the subject are treated as UTF-8 strings,
 where characters may occupy multiple code units.
 .P
 If PCRE2 is installed in the standard include and library directories for your


Modified: code/trunk/doc/pcre2serialize.3
===================================================================
--- code/trunk/doc/pcre2serialize.3    2016-06-29 16:43:32 UTC (rev 537)
+++ code/trunk/doc/pcre2serialize.3    2016-06-29 16:52:05 UTC (rev 538)
@@ -33,10 +33,10 @@
 .SH "SECURITY CONCERNS"
 .rs
 .sp
-The facility for saving and restoring compiled patterns is intended for use 
+The facility for saving and restoring compiled patterns is intended for use
 within individual applications. As such, the data supplied to
 \fBpcre2_serialize_decode()\fP is expected to be trusted data, not data from
-arbitrary external sources. There is only some simple consistency checking, not 
+arbitrary external sources. There is only some simple consistency checking, not
 complete validation of what is being re-loaded.
 .
 .


Modified: code/trunk/src/config.h.generic
===================================================================
--- code/trunk/src/config.h.generic    2016-06-29 16:43:32 UTC (rev 537)
+++ code/trunk/src/config.h.generic    2016-06-29 16:52:05 UTC (rev 538)
@@ -111,6 +111,9 @@
 /* Define to 1 if you have the <sys/types.h> header file. */
 /* #undef HAVE_SYS_TYPES_H */


+/* Define to 1 if you have the <sys/wait.h> header file. */
+/* #undef HAVE_SYS_WAIT_H */
+
/* Define to 1 if you have the <unistd.h> header file. */
/* #undef HAVE_UNISTD_H */

@@ -203,7 +206,7 @@
#define PACKAGE_NAME "PCRE2"

/* Define to the full name and version of this package. */
-#define PACKAGE_STRING "PCRE2 10.21"
+#define PACKAGE_STRING "PCRE2 10.22-RC1"

/* Define to the one symbol short name of this package. */
#define PACKAGE_TARNAME "pcre2"
@@ -212,7 +215,7 @@
#define PACKAGE_URL ""

/* Define to the version of this package. */
-#define PACKAGE_VERSION "10.21"
+#define PACKAGE_VERSION "10.22-RC1"

 /* The value of PARENS_NEST_LIMIT specifies the maximum depth of nested
    parentheses (of any kind) in a pattern. This limits the amount of system
@@ -271,6 +274,9 @@
    is able to handle .gz files. */
 /* #undef SUPPORT_LIBZ */


+/* Define to any value to enable callout script support in pcre2grep. */
+/* #undef SUPPORT_PCRE2GREP_CALLOUT */
+
/* Define to any value to enable JIT support in pcre2grep. */
/* #undef SUPPORT_PCRE2GREP_JIT */

@@ -293,7 +299,7 @@
/* #undef SUPPORT_VALGRIND */

/* Version number of package */
-#define VERSION "10.21"
+#define VERSION "10.22-RC1"

/* Define to empty if `const' does not conform to ANSI C. */
/* #undef const */

Modified: code/trunk/src/pcre2.h
===================================================================
--- code/trunk/src/pcre2.h    2016-06-29 16:43:32 UTC (rev 537)
+++ code/trunk/src/pcre2.h    2016-06-29 16:52:05 UTC (rev 538)
@@ -155,7 +155,7 @@
 #define PCRE2_SUBSTITUTE_UNKNOWN_UNSET    0x00000800u
 #define PCRE2_SUBSTITUTE_OVERFLOW_LENGTH  0x00001000u


-/* A further option for pcre2_match(), not allowed for pcre2_dfa_match(),
+/* A further option for pcre2_match(), not allowed for pcre2_dfa_match(),
ignored for pcre2_jit_match(). */

 #define PCRE2_NO_JIT              0x00002000u


Modified: code/trunk/src/pcre2.h.generic
===================================================================
--- code/trunk/src/pcre2.h.generic    2016-06-29 16:43:32 UTC (rev 537)
+++ code/trunk/src/pcre2.h.generic    2016-06-29 16:52:05 UTC (rev 538)
@@ -42,9 +42,9 @@
 /* The current PCRE version information. */


 #define PCRE2_MAJOR          10
-#define PCRE2_MINOR          21
-#define PCRE2_PRERELEASE     
-#define PCRE2_DATE           2016-01-12
+#define PCRE2_MINOR          22
+#define PCRE2_PRERELEASE     -RC1
+#define PCRE2_DATE           2016-06-29


 /* When an application links to a PCRE DLL in Windows, the symbols that are
 imported have to be identified as such. When building PCRE2, the appropriate
@@ -146,7 +146,8 @@
 #define PCRE2_DFA_RESTART         0x00000040u
 #define PCRE2_DFA_SHORTEST        0x00000080u


-/* These are additional options for pcre2_substitute(). */
+/* These are additional options for pcre2_substitute(), which passes any others
+through to pcre2_match(). */

 #define PCRE2_SUBSTITUTE_GLOBAL           0x00000100u
 #define PCRE2_SUBSTITUTE_EXTENDED         0x00000200u
@@ -154,6 +155,11 @@
 #define PCRE2_SUBSTITUTE_UNKNOWN_UNSET    0x00000800u
 #define PCRE2_SUBSTITUTE_OVERFLOW_LENGTH  0x00001000u


+/* A further option for pcre2_match(), not allowed for pcre2_dfa_match(),
+ignored for pcre2_jit_match(). */
+
+#define PCRE2_NO_JIT              0x00002000u
+
 /* Newline and \R settings, for use in compile contexts. The newline values
 must be kept in step with values set in config.h and both sets must all be
 greater than zero. */
@@ -245,6 +251,7 @@
 #define PCRE2_ERROR_BADSUBSTITUTION   (-59)
 #define PCRE2_ERROR_BADSUBSPATTERN    (-60)
 #define PCRE2_ERROR_TOOMANYREPLACE    (-61)
+#define PCRE2_ERROR_BADSERIALIZEDDATA (-62)


/* Request types for pcre2_pattern_info() */

@@ -436,7 +443,9 @@
 PCRE2_EXP_DECL \
   pcre2_code            *pcre2_compile(PCRE2_SPTR, PCRE2_SIZE, uint32_t, \
                            int *, PCRE2_SIZE *, pcre2_compile_context *); \
-PCRE2_EXP_DECL void      pcre2_code_free(pcre2_code *);
+PCRE2_EXP_DECL void      pcre2_code_free(pcre2_code *); \
+PCRE2_EXP_DECL \
+  pcre2_code            *pcre2_code_copy(const pcre2_code *);



/* Functions that give information about a compiled pattern. */
@@ -585,6 +594,7 @@
/* Functions: the complete list in alphabetical order */

 #define pcre2_callout_enumerate               PCRE2_SUFFIX(pcre2_callout_enumerate_)
+#define pcre2_code_copy                       PCRE2_SUFFIX(pcre2_code_copy_)
 #define pcre2_code_free                       PCRE2_SUFFIX(pcre2_code_free_)
 #define pcre2_compile                         PCRE2_SUFFIX(pcre2_compile_)
 #define pcre2_compile_context_copy            PCRE2_SUFFIX(pcre2_compile_context_copy_)


Modified: code/trunk/src/pcre2.h.in
===================================================================
--- code/trunk/src/pcre2.h.in    2016-06-29 16:43:32 UTC (rev 537)
+++ code/trunk/src/pcre2.h.in    2016-06-29 16:52:05 UTC (rev 538)
@@ -155,7 +155,7 @@
 #define PCRE2_SUBSTITUTE_UNKNOWN_UNSET    0x00000800u
 #define PCRE2_SUBSTITUTE_OVERFLOW_LENGTH  0x00001000u


-/* A further option for pcre2_match(), not allowed for pcre2_dfa_match(),
+/* A further option for pcre2_match(), not allowed for pcre2_dfa_match(),
ignored for pcre2_jit_match(). */

 #define PCRE2_NO_JIT              0x00002000u


Modified: code/trunk/src/pcre2_compile.c
===================================================================
--- code/trunk/src/pcre2_compile.c    2016-06-29 16:43:32 UTC (rev 537)
+++ code/trunk/src/pcre2_compile.c    2016-06-29 16:52:05 UTC (rev 538)
@@ -149,13 +149,13 @@


#define OFLOW_MAX (INT_MAX - 20)

-/* Macro for setting individual bits in class bitmaps. It took some
-experimenting to figure out how to stop gcc 5.3.0 from warning with
+/* Macro for setting individual bits in class bitmaps. It took some
+experimenting to figure out how to stop gcc 5.3.0 from warning with
-Wconversion. This version gets a warning:

- #define SETBIT(a,b) a[(b)/8] |= (uint8_t)(1 << ((b)&7))
-
-Let's hope the apparently less efficient version isn't actually so bad if the
+ #define SETBIT(a,b) a[(b)/8] |= (uint8_t)(1 << ((b)&7))
+
+Let's hope the apparently less efficient version isn't actually so bad if the
compiler is clever with identical subexpressions. */

 #define SETBIT(a,b) a[(b)/8] = (uint8_t)(a[(b)/8] | (1 << ((b)&7)))
@@ -733,7 +733,7 @@
 *               Copy compiled code               *
 *************************************************/


-/* Compiled JIT code cannot be copied, so the new compiled block has no
+/* Compiled JIT code cannot be copied, so the new compiled block has no
associated JIT data. */

PCRE2_EXP_DEFN pcre2_code * PCRE2_CALL_CONVENTION
@@ -748,7 +748,7 @@
memcpy(newcode, code, code->blocksize);
newcode->executable_jit = NULL;

-/* If the code is one that has been deserialized, increment the reference count
+/* If the code is one that has been deserialized, increment the reference count
in the decoded tables. */

if ((code->flags & PCRE2_DEREF_TABLES) != 0)
@@ -755,7 +755,7 @@
{
ref_count = (PCRE2_SIZE *)(code->tables + tables_length);
(*ref_count)++;
- }
+ }

 return newcode;
 }
@@ -881,7 +881,7 @@
              or -2 if there is no fixed length,
              or -3 if \C was encountered (in UTF mode only)
              or -4 if length is too long
-             or -5 if regex is too complicated 
+             or -5 if regex is too complicated
              or -6 if an unknown opcode was encountered (internal error)
 */


@@ -1117,7 +1117,7 @@
     cc++;
     break;


-    /* The single-byte matcher isn't allowed. This only happens in UTF-8 or 
+    /* The single-byte matcher isn't allowed. This only happens in UTF-8 or
     UTF-16 mode; otherwise \C is coded as OP_ALLANY. */


     case OP_ANYBYTE:
@@ -3515,7 +3515,7 @@
           case CHAR_U:
           break;


-          default:  
+          default:
           errorcode = ERR11;
           ptr--;    /* Correct the offset */
           goto FAILED;
@@ -3810,7 +3810,7 @@
   return 0;
   }


-/* We give a special error for a missing closing parentheses after (?# because
+/* We give a special error for a missing closing parentheses after (?# because
it might otherwise be hard to see where the missing character is. */

errorcode = (skiptoket == CHAR_NUMBER_SIGN)? ERR18 : ERR14;
@@ -3963,11 +3963,11 @@
uint32_t subreqcu, subfirstcu;
int32_t subreqcuflags, subfirstcuflags; /* Must be signed */
PCRE2_UCHAR mcbuffer[8];
-
+
/* Come here to restart the loop. */
-
- REDO_LOOP:

+ REDO_LOOP:
+
/* Get next character in the pattern */

   c = *ptr;
@@ -4249,7 +4249,7 @@
       {
       cb->nestptr[0] = ptr + 7;
       ptr = sub_start_of_word;
-      goto REDO_LOOP; 
+      goto REDO_LOOP;
       }


     if (PRIV(strncmp_c8)(ptr+1, STRING_WEIRD_ENDWORD, 6) == 0)
@@ -4256,7 +4256,7 @@
       {
       cb->nestptr[0] = ptr + 7;
       ptr = sub_end_of_word;
-      goto REDO_LOOP; 
+      goto REDO_LOOP;
       }


     /* Handle a real character class. */
@@ -7430,7 +7430,7 @@
           *code++ = (escape == ESC_C)? OP_ALLANY : escape;
 #else
           *code++ = (!utf && escape == ESC_C)? OP_ALLANY : escape;
-#endif          
+#endif
           }
         }
       continue;


Modified: code/trunk/src/pcre2_config.c
===================================================================
--- code/trunk/src/pcre2_config.c    2016-06-29 16:43:32 UTC (rev 537)
+++ code/trunk/src/pcre2_config.c    2016-06-29 16:52:05 UTC (rev 538)
@@ -68,7 +68,7 @@
   where            where to put the information


 Returns:           0 if a numerical value is returned
-                   >= 0 if a string value 
+                   >= 0 if a string value
                    PCRE2_ERROR_BADOPTION if "where" not recognized
                      or JIT target requested when JIT not enabled
 */


Modified: code/trunk/src/pcre2_dfa_match.c
===================================================================
--- code/trunk/src/pcre2_dfa_match.c    2016-06-29 16:43:32 UTC (rev 537)
+++ code/trunk/src/pcre2_dfa_match.c    2016-06-29 16:52:05 UTC (rev 538)
@@ -2783,7 +2783,7 @@
 #endif
             if (charcount > 0)
               {
-              ADD_NEW_DATA(-(state_offset + LINK_SIZE + 1), 0, 
+              ADD_NEW_DATA(-(state_offset + LINK_SIZE + 1), 0,
                 (int)(charcount - 1));
               }
             else
@@ -3337,7 +3337,7 @@
       {
       first_cu2 = TABLE_GET(first_cu, mb->tables + fcc_offset, first_cu);
 #if defined SUPPORT_UNICODE && PCRE2_CODE_UNIT_WIDTH != 8
-      if (utf && first_cu > 127) 
+      if (utf && first_cu > 127)
         first_cu2 = (PCRE2_UCHAR)UCD_OTHERCASE(first_cu);
 #endif
       }


Modified: code/trunk/src/pcre2grep.c
===================================================================
--- code/trunk/src/pcre2grep.c    2016-06-29 16:43:32 UTC (rev 537)
+++ code/trunk/src/pcre2grep.c    2016-06-29 16:52:05 UTC (rev 538)
@@ -1977,7 +1977,7 @@


match = match_patterns(matchptr, length, options, startoffset, &mrc);
options = PCRE2_NOTEMPTY;
-
+
/* If it's a match or a not-match (as required), do what's wanted. */

if (match != invert)
@@ -2794,7 +2794,7 @@
}

sprintf((char *)buffer, "%s%.*s%s", prefix[popts], patlen, ps, suffix[popts]);
-p->compiled = pcre2_compile(buffer, PCRE2_ZERO_TERMINATED, options, &errcode,
+p->compiled = pcre2_compile(buffer, PCRE2_ZERO_TERMINATED, options, &errcode,
&erroffset, compile_context);

/* Handle successful compile */