Revision: 1041
http://www.exim.org/viewvc/pcre2?view=rev&revision=1041
Author: ph10
Date: 2018-11-15 18:09:02 +0000 (Thu, 15 Nov 2018)
Log Message:
-----------
Implement --disable-percent-zt to avoid %zu and %td even if the environment
claims to be C99 or greater.
Modified Paths:
--------------
code/trunk/CMakeLists.txt
code/trunk/ChangeLog
code/trunk/README
code/trunk/config-cmake.h.in
code/trunk/configure.ac
code/trunk/doc/html/README.txt
code/trunk/doc/html/pcre2build.html
code/trunk/doc/pcre2.txt
code/trunk/doc/pcre2build.3
code/trunk/src/config.h.generic
code/trunk/src/config.h.in
code/trunk/src/pcre2test.c
Modified: code/trunk/CMakeLists.txt
===================================================================
--- code/trunk/CMakeLists.txt 2018-11-14 16:59:19 UTC (rev 1040)
+++ code/trunk/CMakeLists.txt 2018-11-15 18:09:02 UTC (rev 1041)
@@ -136,6 +136,8 @@
OPTION(PCRE2_DEBUG "Include debugging code" OFF)
+OPTION(DISABLE_PERCENT_ZT "Disable the use of %zu and %td (rarely needed)" OFF)
+
SET(PCRE2_EBCDIC OFF CACHE BOOL
"Use EBCDIC coding instead of ASCII. (This is rarely used outside of mainframe systems.)")
Modified: code/trunk/ChangeLog
===================================================================
--- code/trunk/ChangeLog 2018-11-14 16:59:19 UTC (rev 1040)
+++ code/trunk/ChangeLog 2018-11-15 18:09:02 UTC (rev 1041)
@@ -68,7 +68,12 @@
inttypes.h, which are known to exist. A note in the autotools documentation
says (November 2018) that there are none known that are the other way round.
+17. Added --disable-percent-zt to "configure" (and equivalent to CMake) to
+forcibly disable the use of %zu and %td in formatting strings because there is
+at least one version of VMS that claims to be C99 but does not support these
+modifiers.
+
Version 10.32 10-September-2018
-------------------------------
Modified: code/trunk/README
===================================================================
--- code/trunk/README 2018-11-14 16:59:19 UTC (rev 1040)
+++ code/trunk/README 2018-11-15 18:09:02 UTC (rev 1041)
@@ -374,6 +374,15 @@
If you get error messages about missing functions tgetstr, tgetent, tputs,
tgetflag, or tgoto, this is the problem, and linking with the ncurses library
should fix it.
+
+. The C99 standard defines formatting modifiers z and t for size_t and
+ ptrdiff_t values, respectively. By default, PCRE2 uses these modifiers in
+ environments other than Microsoft Visual Studio when __STDC_VERSION__ is
+ defined and has a value greater than or equal to 199901L (indicating C99).
+ However, there is at least one environment that claims to be C99 but does not
+ support these modifiers. If --disable-percent-zt is specified, no use is made
+ of the z or t modifiers. Instead or %td or %zu, %lu is used, with a cast for
+ size_t values.
. There is a special option called --enable-fuzz-support for use by people who
want to run fuzzing tests on PCRE2. At present this applies only to the 8-bit
@@ -888,4 +897,4 @@
Philip Hazel
Email local part: ph10
Email domain: cam.ac.uk
-Last updated: 19 September 2018
+Last updated: 15 November 2018
Modified: code/trunk/config-cmake.h.in
===================================================================
--- code/trunk/config-cmake.h.in 2018-11-14 16:59:19 UTC (rev 1040)
+++ code/trunk/config-cmake.h.in 2018-11-15 18:09:02 UTC (rev 1041)
@@ -18,6 +18,7 @@
#cmakedefine SUPPORT_PCRE2_16 1
#cmakedefine SUPPORT_PCRE2_32 1
#cmakedefine PCRE2_DEBUG 1
+#cmakedefine DISABLE_PERCENT_ZT 1
#cmakedefine SUPPORT_LIBBZ2 1
#cmakedefine SUPPORT_LIBEDIT 1
Modified: code/trunk/configure.ac
===================================================================
--- code/trunk/configure.ac 2018-11-14 16:59:19 UTC (rev 1040)
+++ code/trunk/configure.ac 2018-11-15 18:09:02 UTC (rev 1041)
@@ -131,7 +131,7 @@
, enable_pcre2_32=unset)
AC_SUBST(enable_pcre2_32)
-# Handle --dnable-debug (disabled by default)
+# Handle --enable-debug (disabled by default)
AC_ARG_ENABLE(debug,
AS_HELP_STRING([--enable-debug],
[enable debugging code]),
@@ -343,6 +343,12 @@
# [don't use stack recursion when matching]),
# , enable_stack_for_recursion=yes)
+# Handle --disable-percent_zt (set as "auto" by default)
+AC_ARG_ENABLE(percent-zt,
+ AS_HELP_STRING([--disable-percent-zt],
+ [disable the use of z and t formatting modifiers]),
+ , enable_percent_zt=auto)
+
# Set the default value for pcre2-8
if test "x$enable_pcre2_8" = "xunset"
then
@@ -587,6 +593,14 @@
Define to any value to include debugging code.])
fi
+if test "$enable_percent_zt" = "no"; then
+ AC_DEFINE([DISABLE_PERCENT_ZT], [], [
+ Define to any value to disable the use of the z and t modifiers in
+ formatting settings such as %zu or %td (this is rarely needed).])
+else
+ enable_percent_zt=auto
+fi
+
# Unless running under Windows, JIT support requires pthreads.
if test "$enable_jit" = "yes"; then
@@ -1033,6 +1047,7 @@
Valgrind support ................... : ${enable_valgrind}
Code coverage ...................... : ${enable_coverage}
Fuzzer support ..................... : ${enable_fuzz_support}
+ Use %zu and %td .................... : ${enable_percent_zt}
EOF
Modified: code/trunk/doc/html/README.txt
===================================================================
--- code/trunk/doc/html/README.txt 2018-11-14 16:59:19 UTC (rev 1040)
+++ code/trunk/doc/html/README.txt 2018-11-15 18:09:02 UTC (rev 1041)
@@ -374,6 +374,15 @@
If you get error messages about missing functions tgetstr, tgetent, tputs,
tgetflag, or tgoto, this is the problem, and linking with the ncurses library
should fix it.
+
+. The C99 standard defines formatting modifiers z and t for size_t and
+ ptrdiff_t values, respectively. By default, PCRE2 uses these modifiers in
+ environments other than Microsoft Visual Studio when __STDC_VERSION__ is
+ defined and has a value greater than or equal to 199901L (indicating C99).
+ However, there is at least one environment that claims to be C99 but does not
+ support these modifiers. If --disable-percent-zt is specified, no use is made
+ of the z or t modifiers. Instead or %td or %zu, %lu is used, with a cast for
+ size_t values.
. There is a special option called --enable-fuzz-support for use by people who
want to run fuzzing tests on PCRE2. At present this applies only to the 8-bit
@@ -888,4 +897,4 @@
Philip Hazel
Email local part: ph10
Email domain: cam.ac.uk
-Last updated: 19 September 2018
+Last updated: 15 November 2018
Modified: code/trunk/doc/html/pcre2build.html
===================================================================
--- code/trunk/doc/html/pcre2build.html 2018-11-14 16:59:19 UTC (rev 1040)
+++ code/trunk/doc/html/pcre2build.html 2018-11-15 18:09:02 UTC (rev 1041)
@@ -33,11 +33,12 @@
<li><a name="TOC18" href="#SEC18">INCLUDING DEBUGGING CODE</a>
<li><a name="TOC19" href="#SEC19">DEBUGGING WITH VALGRIND SUPPORT</a>
<li><a name="TOC20" href="#SEC20">CODE COVERAGE REPORTING</a>
-<li><a name="TOC21" href="#SEC21">SUPPORT FOR FUZZERS</a>
-<li><a name="TOC22" href="#SEC22">OBSOLETE OPTION</a>
-<li><a name="TOC23" href="#SEC23">SEE ALSO</a>
-<li><a name="TOC24" href="#SEC24">AUTHOR</a>
-<li><a name="TOC25" href="#SEC25">REVISION</a>
+<li><a name="TOC21" href="#SEC21">DISABLING THE Z AND T FORMATTING MODIFIERS</a>
+<li><a name="TOC22" href="#SEC22">SUPPORT FOR FUZZERS</a>
+<li><a name="TOC23" href="#SEC23">OBSOLETE OPTION</a>
+<li><a name="TOC24" href="#SEC24">SEE ALSO</a>
+<li><a name="TOC25" href="#SEC25">AUTHOR</a>
+<li><a name="TOC26" href="#SEC26">REVISION</a>
</ul>
<br><a name="SEC1" href="#TOC1">BUILDING PCRE2</a><br>
<P>
@@ -523,8 +524,22 @@
information about code coverage, see the <b>gcov</b> and <b>lcov</b>
documentation.
</P>
-<br><a name="SEC21" href="#TOC1">SUPPORT FOR FUZZERS</a><br>
+<br><a name="SEC21" href="#TOC1">DISABLING THE Z AND T FORMATTING MODIFIERS</a><br>
<P>
+The C99 standard defines formatting modifiers z and t for size_t and
+ptrdiff_t values, respectively. By default, PCRE2 uses these modifiers in
+environments other than Microsoft Visual Studio when __STDC_VERSION__ is
+defined and has a value greater than or equal to 199901L (indicating C99).
+However, there is at least one environment that claims to be C99 but does not
+support these modifiers. If
+<pre>
+ --disable-percent-zt
+</pre>
+is specified, no use is made of the z or t modifiers. Instead or %td or %zu,
+%lu is used, with a cast for size_t values.
+</P>
+<br><a name="SEC22" href="#TOC1">SUPPORT FOR FUZZERS</a><br>
+<P>
There is a special option for use by people who want to run fuzzing tests on
PCRE2:
<pre>
@@ -547,7 +562,7 @@
string. Otherwise, it is assumed to be a file name, and the contents of the
file are the test string.
</P>
-<br><a name="SEC22" href="#TOC1">OBSOLETE OPTION</a><br>
+<br><a name="SEC23" href="#TOC1">OBSOLETE OPTION</a><br>
<P>
In versions of PCRE2 prior to 10.30, there were two ways of handling
backtracking in the <b>pcre2_match()</b> function. The default was to use the
@@ -559,11 +574,11 @@
changed (the stack is no longer used) and this option now does nothing except
give a warning.
</P>
-<br><a name="SEC23" href="#TOC1">SEE ALSO</a><br>
+<br><a name="SEC24" href="#TOC1">SEE ALSO</a><br>
<P>
<b>pcre2api</b>(3), <b>pcre2-config</b>(3).
</P>
-<br><a name="SEC24" href="#TOC1">AUTHOR</a><br>
+<br><a name="SEC25" href="#TOC1">AUTHOR</a><br>
<P>
Philip Hazel
<br>
@@ -572,9 +587,9 @@
Cambridge, England.
<br>
</P>
-<br><a name="SEC25" href="#TOC1">REVISION</a><br>
+<br><a name="SEC26" href="#TOC1">REVISION</a><br>
<P>
-Last updated: 26 April 2018
+Last updated: 15 November 2018
<br>
Copyright © 1997-2018 University of Cambridge.
<br>
Modified: code/trunk/doc/pcre2.txt
===================================================================
--- code/trunk/doc/pcre2.txt 2018-11-14 16:59:19 UTC (rev 1040)
+++ code/trunk/doc/pcre2.txt 2018-11-15 18:09:02 UTC (rev 1041)
@@ -4158,6 +4158,21 @@
mentation.
+DISABLING THE Z AND T FORMATTING MODIFIERS
+
+ The C99 standard defines formatting modifiers z and t for size_t and
+ ptrdiff_t values, respectively. By default, PCRE2 uses these modifiers
+ in environments other than Microsoft Visual Studio when __STDC_VER-
+ SION__ is defined and has a value greater than or equal to 199901L
+ (indicating C99). However, there is at least one environment that
+ claims to be C99 but does not support these modifiers. If
+
+ --disable-percent-zt
+
+ is specified, no use is made of the z or t modifiers. Instead or %td or
+ %zu, %lu is used, with a cast for size_t values.
+
+
SUPPORT FOR FUZZERS
There is a special option for use by people who want to run fuzzing
@@ -4210,7 +4225,7 @@
REVISION
- Last updated: 26 April 2018
+ Last updated: 15 November 2018
Copyright (c) 1997-2018 University of Cambridge.
------------------------------------------------------------------------------
Modified: code/trunk/doc/pcre2build.3
===================================================================
--- code/trunk/doc/pcre2build.3 2018-11-14 16:59:19 UTC (rev 1040)
+++ code/trunk/doc/pcre2build.3 2018-11-15 18:09:02 UTC (rev 1041)
@@ -1,4 +1,4 @@
-.TH PCRE2BUILD 3 "26 April 2018" "PCRE2 10.32"
+.TH PCRE2BUILD 3 "15 November 2018" "PCRE2 10.33"
.SH NAME
PCRE2 - Perl-compatible regular expressions (revised API)
.
@@ -533,6 +533,22 @@
documentation.
.
.
+.SH "DISABLING THE Z AND T FORMATTING MODIFIERS"
+.rs
+.sp
+The C99 standard defines formatting modifiers z and t for size_t and
+ptrdiff_t values, respectively. By default, PCRE2 uses these modifiers in
+environments other than Microsoft Visual Studio when __STDC_VERSION__ is
+defined and has a value greater than or equal to 199901L (indicating C99).
+However, there is at least one environment that claims to be C99 but does not
+support these modifiers. If
+.sp
+ --disable-percent-zt
+.sp
+is specified, no use is made of the z or t modifiers. Instead or %td or %zu,
+%lu is used, with a cast for size_t values.
+.
+.
.SH "SUPPORT FOR FUZZERS"
.rs
.sp
@@ -591,6 +607,6 @@
.rs
.sp
.nf
-Last updated: 26 April 2018
+Last updated: 15 November 2018
Copyright (c) 1997-2018 University of Cambridge.
.fi
Modified: code/trunk/src/config.h.generic
===================================================================
--- code/trunk/src/config.h.generic 2018-11-14 16:59:19 UTC (rev 1040)
+++ code/trunk/src/config.h.generic 2018-11-15 18:09:02 UTC (rev 1041)
@@ -35,6 +35,10 @@
*/
/* #undef BSR_ANYCRLF */
+/* Define to any value to disable the use of the z and t modifiers in
+ formatting settings such as %zu or %td (this is rarely needed). */
+/* #undef DISABLE_PERCENT_ZT */
+
/* If you are compiling for a system that uses EBCDIC instead of ASCII
character codes, define this macro to any value. When EBCDIC is set, PCRE2
assumes that all input strings are in EBCDIC. If you do not define this
Modified: code/trunk/src/config.h.in
===================================================================
--- code/trunk/src/config.h.in 2018-11-14 16:59:19 UTC (rev 1040)
+++ code/trunk/src/config.h.in 2018-11-15 18:09:02 UTC (rev 1041)
@@ -35,6 +35,10 @@
*/
#undef BSR_ANYCRLF
+/* Define to any value to disable the use of the z and t modifiers in
+ formatting settings such as %zu or %td (this is rarely needed). */
+#undef DISABLE_PERCENT_ZT
+
/* If you are compiling for a system that uses EBCDIC instead of ASCII
character codes, define this macro to any value. When EBCDIC is set, PCRE2
assumes that all input strings are in EBCDIC. If you do not define this
Modified: code/trunk/src/pcre2test.c
===================================================================
--- code/trunk/src/pcre2test.c 2018-11-14 16:59:19 UTC (rev 1040)
+++ code/trunk/src/pcre2test.c 2018-11-15 18:09:02 UTC (rev 1041)
@@ -169,9 +169,10 @@
/* void vms_setsymbol( char *, char *, int ); Original code from [1]. */
#endif
-/* VC and older compilers don't support %td or %zu. */
+/* VC and older compilers don't support %td or %zu, and even some that claim to
+be C99 don't support it (hence DISABLE_PERCENT_ZT). */
-#if defined(_MSC_VER) || !defined(__STDC_VERSION__) || __STDC_VERSION__ < 199901L
+#if defined(_MSC_VER) || !defined(__STDC_VERSION__) || __STDC_VERSION__ < 199901L || defined(DISABLE_PERCENT_ZT)
#define PTR_FORM "lu"
#define SIZ_FORM "lu"
#define SIZ_CAST (unsigned long int)