Implement --disable-percent-zt to avoid %zu and %td even if the environment
claims to be C99 or greater.
This commit is contained in:
parent
19c50b9d41
commit
149af0e21b
|
@ -136,6 +136,8 @@ OPTION(PCRE2_BUILD_PCRE2_32 "Build 32 bit PCRE2 library" OFF)
|
||||||
|
|
||||||
OPTION(PCRE2_DEBUG "Include debugging code" OFF)
|
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
|
SET(PCRE2_EBCDIC OFF CACHE BOOL
|
||||||
"Use EBCDIC coding instead of ASCII. (This is rarely used outside of mainframe systems.)")
|
"Use EBCDIC coding instead of ASCII. (This is rarely used outside of mainframe systems.)")
|
||||||
|
|
||||||
|
|
|
@ -68,6 +68,11 @@ inttypes.h. This supports environments that do not have stdint.h but do have
|
||||||
inttypes.h, which are known to exist. A note in the autotools documentation
|
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.
|
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
|
Version 10.32 10-September-2018
|
||||||
-------------------------------
|
-------------------------------
|
||||||
|
|
11
README
11
README
|
@ -374,6 +374,15 @@ library. They are also documented in the pcre2build man page.
|
||||||
If you get error messages about missing functions tgetstr, tgetent, tputs,
|
If you get error messages about missing functions tgetstr, tgetent, tputs,
|
||||||
tgetflag, or tgoto, this is the problem, and linking with the ncurses library
|
tgetflag, or tgoto, this is the problem, and linking with the ncurses library
|
||||||
should fix it.
|
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
|
. 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
|
want to run fuzzing tests on PCRE2. At present this applies only to the 8-bit
|
||||||
|
@ -888,4 +897,4 @@ The distribution should contain the files listed below.
|
||||||
Philip Hazel
|
Philip Hazel
|
||||||
Email local part: ph10
|
Email local part: ph10
|
||||||
Email domain: cam.ac.uk
|
Email domain: cam.ac.uk
|
||||||
Last updated: 19 September 2018
|
Last updated: 15 November 2018
|
||||||
|
|
|
@ -18,6 +18,7 @@
|
||||||
#cmakedefine SUPPORT_PCRE2_16 1
|
#cmakedefine SUPPORT_PCRE2_16 1
|
||||||
#cmakedefine SUPPORT_PCRE2_32 1
|
#cmakedefine SUPPORT_PCRE2_32 1
|
||||||
#cmakedefine PCRE2_DEBUG 1
|
#cmakedefine PCRE2_DEBUG 1
|
||||||
|
#cmakedefine DISABLE_PERCENT_ZT 1
|
||||||
|
|
||||||
#cmakedefine SUPPORT_LIBBZ2 1
|
#cmakedefine SUPPORT_LIBBZ2 1
|
||||||
#cmakedefine SUPPORT_LIBEDIT 1
|
#cmakedefine SUPPORT_LIBEDIT 1
|
||||||
|
|
17
configure.ac
17
configure.ac
|
@ -131,7 +131,7 @@ AC_ARG_ENABLE(pcre2-32,
|
||||||
, enable_pcre2_32=unset)
|
, enable_pcre2_32=unset)
|
||||||
AC_SUBST(enable_pcre2_32)
|
AC_SUBST(enable_pcre2_32)
|
||||||
|
|
||||||
# Handle --dnable-debug (disabled by default)
|
# Handle --enable-debug (disabled by default)
|
||||||
AC_ARG_ENABLE(debug,
|
AC_ARG_ENABLE(debug,
|
||||||
AS_HELP_STRING([--enable-debug],
|
AS_HELP_STRING([--enable-debug],
|
||||||
[enable debugging code]),
|
[enable debugging code]),
|
||||||
|
@ -343,6 +343,12 @@ AC_ARG_ENABLE(stack-for-recursion,,
|
||||||
# [don't use stack recursion when matching]),
|
# [don't use stack recursion when matching]),
|
||||||
# , enable_stack_for_recursion=yes)
|
# , 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
|
# Set the default value for pcre2-8
|
||||||
if test "x$enable_pcre2_8" = "xunset"
|
if test "x$enable_pcre2_8" = "xunset"
|
||||||
then
|
then
|
||||||
|
@ -587,6 +593,14 @@ if test "$enable_debug" = "yes"; then
|
||||||
Define to any value to include debugging code.])
|
Define to any value to include debugging code.])
|
||||||
fi
|
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.
|
# Unless running under Windows, JIT support requires pthreads.
|
||||||
|
|
||||||
if test "$enable_jit" = "yes"; then
|
if test "$enable_jit" = "yes"; then
|
||||||
|
@ -1033,6 +1047,7 @@ $PACKAGE-$VERSION configuration summary:
|
||||||
Valgrind support ................... : ${enable_valgrind}
|
Valgrind support ................... : ${enable_valgrind}
|
||||||
Code coverage ...................... : ${enable_coverage}
|
Code coverage ...................... : ${enable_coverage}
|
||||||
Fuzzer support ..................... : ${enable_fuzz_support}
|
Fuzzer support ..................... : ${enable_fuzz_support}
|
||||||
|
Use %zu and %td .................... : ${enable_percent_zt}
|
||||||
|
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
|
|
|
@ -374,6 +374,15 @@ library. They are also documented in the pcre2build man page.
|
||||||
If you get error messages about missing functions tgetstr, tgetent, tputs,
|
If you get error messages about missing functions tgetstr, tgetent, tputs,
|
||||||
tgetflag, or tgoto, this is the problem, and linking with the ncurses library
|
tgetflag, or tgoto, this is the problem, and linking with the ncurses library
|
||||||
should fix it.
|
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
|
. 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
|
want to run fuzzing tests on PCRE2. At present this applies only to the 8-bit
|
||||||
|
@ -888,4 +897,4 @@ The distribution should contain the files listed below.
|
||||||
Philip Hazel
|
Philip Hazel
|
||||||
Email local part: ph10
|
Email local part: ph10
|
||||||
Email domain: cam.ac.uk
|
Email domain: cam.ac.uk
|
||||||
Last updated: 19 September 2018
|
Last updated: 15 November 2018
|
||||||
|
|
|
@ -33,11 +33,12 @@ please consult the man page, in case the conversion went wrong.
|
||||||
<li><a name="TOC18" href="#SEC18">INCLUDING DEBUGGING CODE</a>
|
<li><a name="TOC18" href="#SEC18">INCLUDING DEBUGGING CODE</a>
|
||||||
<li><a name="TOC19" href="#SEC19">DEBUGGING WITH VALGRIND SUPPORT</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="TOC20" href="#SEC20">CODE COVERAGE REPORTING</a>
|
||||||
<li><a name="TOC21" href="#SEC21">SUPPORT FOR FUZZERS</a>
|
<li><a name="TOC21" href="#SEC21">DISABLING THE Z AND T FORMATTING MODIFIERS</a>
|
||||||
<li><a name="TOC22" href="#SEC22">OBSOLETE OPTION</a>
|
<li><a name="TOC22" href="#SEC22">SUPPORT FOR FUZZERS</a>
|
||||||
<li><a name="TOC23" href="#SEC23">SEE ALSO</a>
|
<li><a name="TOC23" href="#SEC23">OBSOLETE OPTION</a>
|
||||||
<li><a name="TOC24" href="#SEC24">AUTHOR</a>
|
<li><a name="TOC24" href="#SEC24">SEE ALSO</a>
|
||||||
<li><a name="TOC25" href="#SEC25">REVISION</a>
|
<li><a name="TOC25" href="#SEC25">AUTHOR</a>
|
||||||
|
<li><a name="TOC26" href="#SEC26">REVISION</a>
|
||||||
</ul>
|
</ul>
|
||||||
<br><a name="SEC1" href="#TOC1">BUILDING PCRE2</a><br>
|
<br><a name="SEC1" href="#TOC1">BUILDING PCRE2</a><br>
|
||||||
<P>
|
<P>
|
||||||
|
@ -523,7 +524,21 @@ This cleans all coverage data including the generated coverage report. For more
|
||||||
information about code coverage, see the <b>gcov</b> and <b>lcov</b>
|
information about code coverage, see the <b>gcov</b> and <b>lcov</b>
|
||||||
documentation.
|
documentation.
|
||||||
</P>
|
</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>
|
<P>
|
||||||
There is a special option for use by people who want to run fuzzing tests on
|
There is a special option for use by people who want to run fuzzing tests on
|
||||||
PCRE2:
|
PCRE2:
|
||||||
|
@ -547,7 +562,7 @@ arguments: if an argument starts with "=" the rest of it is a literal input
|
||||||
string. Otherwise, it is assumed to be a file name, and the contents of the
|
string. Otherwise, it is assumed to be a file name, and the contents of the
|
||||||
file are the test string.
|
file are the test string.
|
||||||
</P>
|
</P>
|
||||||
<br><a name="SEC22" href="#TOC1">OBSOLETE OPTION</a><br>
|
<br><a name="SEC23" href="#TOC1">OBSOLETE OPTION</a><br>
|
||||||
<P>
|
<P>
|
||||||
In versions of PCRE2 prior to 10.30, there were two ways of handling
|
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
|
backtracking in the <b>pcre2_match()</b> function. The default was to use the
|
||||||
|
@ -559,11 +574,11 @@ was set, memory on the heap was used. From release 10.30 onwards this has
|
||||||
changed (the stack is no longer used) and this option now does nothing except
|
changed (the stack is no longer used) and this option now does nothing except
|
||||||
give a warning.
|
give a warning.
|
||||||
</P>
|
</P>
|
||||||
<br><a name="SEC23" href="#TOC1">SEE ALSO</a><br>
|
<br><a name="SEC24" href="#TOC1">SEE ALSO</a><br>
|
||||||
<P>
|
<P>
|
||||||
<b>pcre2api</b>(3), <b>pcre2-config</b>(3).
|
<b>pcre2api</b>(3), <b>pcre2-config</b>(3).
|
||||||
</P>
|
</P>
|
||||||
<br><a name="SEC24" href="#TOC1">AUTHOR</a><br>
|
<br><a name="SEC25" href="#TOC1">AUTHOR</a><br>
|
||||||
<P>
|
<P>
|
||||||
Philip Hazel
|
Philip Hazel
|
||||||
<br>
|
<br>
|
||||||
|
@ -572,9 +587,9 @@ University Computing Service
|
||||||
Cambridge, England.
|
Cambridge, England.
|
||||||
<br>
|
<br>
|
||||||
</P>
|
</P>
|
||||||
<br><a name="SEC25" href="#TOC1">REVISION</a><br>
|
<br><a name="SEC26" href="#TOC1">REVISION</a><br>
|
||||||
<P>
|
<P>
|
||||||
Last updated: 26 April 2018
|
Last updated: 15 November 2018
|
||||||
<br>
|
<br>
|
||||||
Copyright © 1997-2018 University of Cambridge.
|
Copyright © 1997-2018 University of Cambridge.
|
||||||
<br>
|
<br>
|
||||||
|
|
|
@ -4158,6 +4158,21 @@ CODE COVERAGE REPORTING
|
||||||
mentation.
|
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
|
SUPPORT FOR FUZZERS
|
||||||
|
|
||||||
There is a special option for use by people who want to run fuzzing
|
There is a special option for use by people who want to run fuzzing
|
||||||
|
@ -4210,7 +4225,7 @@ AUTHOR
|
||||||
|
|
||||||
REVISION
|
REVISION
|
||||||
|
|
||||||
Last updated: 26 April 2018
|
Last updated: 15 November 2018
|
||||||
Copyright (c) 1997-2018 University of Cambridge.
|
Copyright (c) 1997-2018 University of Cambridge.
|
||||||
------------------------------------------------------------------------------
|
------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
.TH PCRE2BUILD 3 "26 April 2018" "PCRE2 10.32"
|
.TH PCRE2BUILD 3 "15 November 2018" "PCRE2 10.33"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
PCRE2 - Perl-compatible regular expressions (revised API)
|
PCRE2 - Perl-compatible regular expressions (revised API)
|
||||||
.
|
.
|
||||||
|
@ -533,6 +533,22 @@ information about code coverage, see the \fBgcov\fP and \fBlcov\fP
|
||||||
documentation.
|
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"
|
.SH "SUPPORT FOR FUZZERS"
|
||||||
.rs
|
.rs
|
||||||
.sp
|
.sp
|
||||||
|
@ -591,6 +607,6 @@ Cambridge, England.
|
||||||
.rs
|
.rs
|
||||||
.sp
|
.sp
|
||||||
.nf
|
.nf
|
||||||
Last updated: 26 April 2018
|
Last updated: 15 November 2018
|
||||||
Copyright (c) 1997-2018 University of Cambridge.
|
Copyright (c) 1997-2018 University of Cambridge.
|
||||||
.fi
|
.fi
|
||||||
|
|
|
@ -35,6 +35,10 @@ sure both macros are undefined; an emulation function will then be used. */
|
||||||
*/
|
*/
|
||||||
/* #undef BSR_ANYCRLF */
|
/* #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
|
/* 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
|
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
|
assumes that all input strings are in EBCDIC. If you do not define this
|
||||||
|
|
|
@ -35,6 +35,10 @@ sure both macros are undefined; an emulation function will then be used. */
|
||||||
*/
|
*/
|
||||||
#undef BSR_ANYCRLF
|
#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
|
/* 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
|
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
|
assumes that all input strings are in EBCDIC. If you do not define this
|
||||||
|
|
|
@ -169,9 +169,10 @@ commented out the original, but kept it around just in case. */
|
||||||
/* void vms_setsymbol( char *, char *, int ); Original code from [1]. */
|
/* void vms_setsymbol( char *, char *, int ); Original code from [1]. */
|
||||||
#endif
|
#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 PTR_FORM "lu"
|
||||||
#define SIZ_FORM "lu"
|
#define SIZ_FORM "lu"
|
||||||
#define SIZ_CAST (unsigned long int)
|
#define SIZ_CAST (unsigned long int)
|
||||||
|
|
Loading…
Reference in New Issue