[graphite2] 05/69: Imported Debian patch 0.9.4.dfsg-4
This is an automated email from the git hooks/post-receive script.
rene pushed a commit to branch master
in repository graphite2.
commit 20164a766d3f519a126c6e5609e17eda2aee4123
Author: Rene Engelhard <rene@debian.org>
Date: Thu Jul 14 14:50:55 2011 +0200
Imported Debian patch 0.9.4.dfsg-4
---
debian/changelog | 6 +
debian/patches/debian-changes-0.9.4-2 | 7097 ---------------------------------
debian/patches/series | 1 -
3 files changed, 6 insertions(+), 7098 deletions(-)
diff --git a/debian/changelog b/debian/changelog
index 317d65b..fcb3f8d 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,9 @@
+graphite2 (0.9.4.dfsg-4) unstable; urgency=low
+
+ * grr, remove dpkg-source generated patch which readds ppport.h...
+
+ -- Rene Engelhard <rene@debian.org> Thu, 14 Jul 2011 14:50:55 +0200
+
graphite2 (0.9.4.dfsg-3) unstable; urgency=low
* upload to unstable
diff --git a/debian/patches/debian-changes-0.9.4-2 b/debian/patches/debian-changes-0.9.4-2
deleted file mode 100644
index 7be1645..0000000
--- a/debian/patches/debian-changes-0.9.4-2
+++ /dev/null
@@ -1,7097 +0,0 @@
-Description: Upstream changes introduced in version 0.9.4-2
- This patch has been created by dpkg-source during the package build.
- Here's the last changelog entry, hopefully it gives details on why
- those changes were made:
- .
- graphite2 (0.9.4-2) experimental; urgency=low
- .
- * remove perl/pport.h and tests/fonts/* from .orig
- .
- * debian/changelog: update
- * debian/control: build-depend on ttf-sil-padauk, ttf-sil-scheherazade
- * debian/rules: symlink to Debian's versions pf Padauk and Scheherazade,
- though....
- * debian/patches/disable_font_tests.diff: disable them (fail)
- .
- The person named in the Author field signed this changelog entry.
-Author: Rene Engelhard <rene@debian.org>
-
----
-The information above should follow the Patch Tagging Guidelines, please
-checkout http://dep.debian.net/deps/dep3/ to learn about the format. Here
-are templates for supplementary fields that you might want to add:
-
-Origin: <vendor|upstream|other>, <url of original patch>
-Bug: <url in upstream bugtracker>
-Bug-Debian: http://bugs.debian.org/<bugnumber>
-Bug-Ubuntu: https://launchpad.net/bugs/<bugnumber>
-Forwarded: <no|not-needed|url proving that it has been forwarded>
-Reviewed-By: <name and email of someone who approved the patch>
-Last-Update: <YYYY-MM-DD>
-
---- /dev/null
-+++ graphite2-0.9.4/perl/ppport.h
-@@ -0,0 +1,7063 @@
-+#if 0
-+<<'SKIP';
-+#endif
-+/*
-+----------------------------------------------------------------------
-+
-+ Graphite2/ppport.h -- Perl/Pollution/Portability Version 3.19
-+
-+ Automatically created by Devel::PPPort running under perl 5.010000.
-+
-+ Do NOT edit this file directly! -- Edit PPPort_pm.PL and the
-+ includes in parts/inc/ instead.
-+
-+ Use 'perldoc Graphite2/ppport.h' to view the documentation below.
-+
-+----------------------------------------------------------------------
-+
-+SKIP
-+
-+=pod
-+
-+=head1 NAME
-+
-+Graphite2/ppport.h - Perl/Pollution/Portability version 3.19
-+
-+=head1 SYNOPSIS
-+
-+ perl Graphite2/ppport.h [options] [source files]
-+
-+ Searches current directory for files if no [source files] are given
-+
-+ --help show short help
-+
-+ --version show version
-+
-+ --patch=file write one patch file with changes
-+ --copy=suffix write changed copies with suffix
-+ --diff=program use diff program and options
-+
-+ --compat-version=version provide compatibility with Perl version
-+ --cplusplus accept C++ comments
-+
-+ --quiet don't output anything except fatal errors
-+ --nodiag don't show diagnostics
-+ --nohints don't show hints
-+ --nochanges don't suggest changes
-+ --nofilter don't filter input files
-+
-+ --strip strip all script and doc functionality from
-+ Graphite2/ppport.h
-+
-+ --list-provided list provided API
-+ --list-unsupported list unsupported API
-+ --api-info=name show Perl API portability information
-+
-+=head1 COMPATIBILITY
-+
-+This version of F<Graphite2/ppport.h> is designed to support operation with Perl
-+installations back to 5.003, and has been tested up to 5.10.0.
-+
-+=head1 OPTIONS
-+
-+=head2 --help
-+
-+Display a brief usage summary.
-+
-+=head2 --version
-+
-+Display the version of F<Graphite2/ppport.h>.
-+
-+=head2 --patch=I<file>
-+
-+If this option is given, a single patch file will be created if
-+any changes are suggested. This requires a working diff program
-+to be installed on your system.
-+
-+=head2 --copy=I<suffix>
-+
-+If this option is given, a copy of each file will be saved with
-+the given suffix that contains the suggested changes. This does
-+not require any external programs. Note that this does not
-+automagially add a dot between the original filename and the
-+suffix. If you want the dot, you have to include it in the option
-+argument.
-+
-+If neither C<--patch> or C<--copy> are given, the default is to
-+simply print the diffs for each file. This requires either
-+C<Text::Diff> or a C<diff> program to be installed.
-+
-+=head2 --diff=I<program>
-+
-+Manually set the diff program and options to use. The default
-+is to use C<Text::Diff>, when installed, and output unified
-+context diffs.
-+
-+=head2 --compat-version=I<version>
-+
-+Tell F<Graphite2/ppport.h> to check for compatibility with the given
-+Perl version. The default is to check for compatibility with Perl
-+version 5.003. You can use this option to reduce the output
-+of F<Graphite2/ppport.h> if you intend to be backward compatible only
-+down to a certain Perl version.
-+
-+=head2 --cplusplus
-+
-+Usually, F<Graphite2/ppport.h> will detect C++ style comments and
-+replace them with C style comments for portability reasons.
-+Using this option instructs F<Graphite2/ppport.h> to leave C++
-+comments untouched.
-+
-+=head2 --quiet
-+
-+Be quiet. Don't print anything except fatal errors.
-+
-+=head2 --nodiag
-+
-+Don't output any diagnostic messages. Only portability
-+alerts will be printed.
-+
-+=head2 --nohints
-+
-+Don't output any hints. Hints often contain useful portability
-+notes. Warnings will still be displayed.
-+
-+=head2 --nochanges
-+
-+Don't suggest any changes. Only give diagnostic output and hints
-+unless these are also deactivated.
-+
-+=head2 --nofilter
-+
-+Don't filter the list of input files. By default, files not looking
-+like source code (i.e. not *.xs, *.c, *.cc, *.cpp or *.h) are skipped.
-+
-+=head2 --strip
-+
-+Strip all script and documentation functionality from F<Graphite2/ppport.h>.
-+This reduces the size of F<Graphite2/ppport.h> dramatically and may be useful
-+if you want to include F<Graphite2/ppport.h> in smaller modules without
-+increasing their distribution size too much.
-+
-+The stripped F<Graphite2/ppport.h> will have a C<--unstrip> option that allows
-+you to undo the stripping, but only if an appropriate C<Devel::PPPort>
-+module is installed.
-+
-+=head2 --list-provided
-+
-+Lists the API elements for which compatibility is provided by
-+F<Graphite2/ppport.h>. Also lists if it must be explicitly requested,
-+if it has dependencies, and if there are hints or warnings for it.
-+
-+=head2 --list-unsupported
-+
-+Lists the API elements that are known not to be supported by
-+F<Graphite2/ppport.h> and below which version of Perl they probably
-+won't be available or work.
-+
-+=head2 --api-info=I<name>
-+
-+Show portability information for API elements matching I<name>.
-+If I<name> is surrounded by slashes, it is interpreted as a regular
-+expression.
-+
-+=head1 DESCRIPTION
-+
-+In order for a Perl extension (XS) module to be as portable as possible
-+across differing versions of Perl itself, certain steps need to be taken.
-+
-+=over 4
-+
-+=item *
-+
-+Including this header is the first major one. This alone will give you
-+access to a large part of the Perl API that hasn't been available in
-+earlier Perl releases. Use
-+
-+ perl Graphite2/ppport.h --list-provided
-+
-+to see which API elements are provided by Graphite2/ppport.h.
-+
-+=item *
-+
-+You should avoid using deprecated parts of the API. For example, using
-+global Perl variables without the C<PL_> prefix is deprecated. Also,
-+some API functions used to have a C<perl_> prefix. Using this form is
-+also deprecated. You can safely use the supported API, as F<Graphite2/ppport.h>
-+will provide wrappers for older Perl versions.
-+
-+=item *
-+
-+If you use one of a few functions or variables that were not present in
-+earlier versions of Perl, and that can't be provided using a macro, you
-+have to explicitly request support for these functions by adding one or
-+more C<#define>s in your source code before the inclusion of F<Graphite2/ppport.h>.
-+
-+These functions or variables will be marked C<explicit> in the list shown
-+by C<--list-provided>.
-+
-+Depending on whether you module has a single or multiple files that
-+use such functions or variables, you want either C<static> or global
-+variants.
-+
-+For a C<static> function or variable (used only in a single source
-+file), use:
-+
-+ #define NEED_function
-+ #define NEED_variable
-+
-+For a global function or variable (used in multiple source files),
-+use:
-+
-+ #define NEED_function_GLOBAL
-+ #define NEED_variable_GLOBAL
-+
-+Note that you mustn't have more than one global request for the
-+same function or variable in your project.
-+
-+ Function / Variable Static Request Global Request
-+ -----------------------------------------------------------------------------------------
-+ PL_parser NEED_PL_parser NEED_PL_parser_GLOBAL
-+ PL_signals NEED_PL_signals NEED_PL_signals_GLOBAL
-+ eval_pv() NEED_eval_pv NEED_eval_pv_GLOBAL
-+ grok_bin() NEED_grok_bin NEED_grok_bin_GLOBAL
-+ grok_hex() NEED_grok_hex NEED_grok_hex_GLOBAL
-+ grok_number() NEED_grok_number NEED_grok_number_GLOBAL
-+ grok_numeric_radix() NEED_grok_numeric_radix NEED_grok_numeric_radix_GLOBAL
-+ grok_oct() NEED_grok_oct NEED_grok_oct_GLOBAL
-+ load_module() NEED_load_module NEED_load_module_GLOBAL
-+ my_snprintf() NEED_my_snprintf NEED_my_snprintf_GLOBAL
-+ my_sprintf() NEED_my_sprintf NEED_my_sprintf_GLOBAL
-+ my_strlcat() NEED_my_strlcat NEED_my_strlcat_GLOBAL
-+ my_strlcpy() NEED_my_strlcpy NEED_my_strlcpy_GLOBAL
-+ newCONSTSUB() NEED_newCONSTSUB NEED_newCONSTSUB_GLOBAL
-+ newRV_noinc() NEED_newRV_noinc NEED_newRV_noinc_GLOBAL
-+ newSV_type() NEED_newSV_type NEED_newSV_type_GLOBAL
-+ newSVpvn_flags() NEED_newSVpvn_flags NEED_newSVpvn_flags_GLOBAL
-+ newSVpvn_share() NEED_newSVpvn_share NEED_newSVpvn_share_GLOBAL
-+ pv_display() NEED_pv_display NEED_pv_display_GLOBAL
-+ pv_escape() NEED_pv_escape NEED_pv_escape_GLOBAL
-+ pv_pretty() NEED_pv_pretty NEED_pv_pretty_GLOBAL
-+ sv_2pv_flags() NEED_sv_2pv_flags NEED_sv_2pv_flags_GLOBAL
-+ sv_2pvbyte() NEED_sv_2pvbyte NEED_sv_2pvbyte_GLOBAL
-+ sv_catpvf_mg() NEED_sv_catpvf_mg NEED_sv_catpvf_mg_GLOBAL
-+ sv_catpvf_mg_nocontext() NEED_sv_catpvf_mg_nocontext NEED_sv_catpvf_mg_nocontext_GLOBAL
-+ sv_pvn_force_flags() NEED_sv_pvn_force_flags NEED_sv_pvn_force_flags_GLOBAL
-+ sv_setpvf_mg() NEED_sv_setpvf_mg NEED_sv_setpvf_mg_GLOBAL
-+ sv_setpvf_mg_nocontext() NEED_sv_setpvf_mg_nocontext NEED_sv_setpvf_mg_nocontext_GLOBAL
-+ vload_module() NEED_vload_module NEED_vload_module_GLOBAL
-+ vnewSVpvf() NEED_vnewSVpvf NEED_vnewSVpvf_GLOBAL
-+ warner() NEED_warner NEED_warner_GLOBAL
-+
-+To avoid namespace conflicts, you can change the namespace of the
-+explicitly exported functions / variables using the C<DPPP_NAMESPACE>
-+macro. Just C<#define> the macro before including C<Graphite2/ppport.h>:
-+
-+ #define DPPP_NAMESPACE MyOwnNamespace_
-+ #include "Graphite2/ppport.h"
-+
-+The default namespace is C<DPPP_>.
-+
-+=back
-+
-+The good thing is that most of the above can be checked by running
-+F<Graphite2/ppport.h> on your source code. See the next section for
-+details.
-+
-+=head1 EXAMPLES
-+
-+To verify whether F<Graphite2/ppport.h> is needed for your module, whether you
-+should make any changes to your code, and whether any special defines
-+should be used, F<Graphite2/ppport.h> can be run as a Perl script to check your
-+source code. Simply say:
-+
-+ perl Graphite2/ppport.h
-+
-+The result will usually be a list of patches suggesting changes
-+that should at least be acceptable, if not necessarily the most
-+efficient solution, or a fix for all possible problems.
-+
-+If you know that your XS module uses features only available in
-+newer Perl releases, if you're aware that it uses C++ comments,
-+and if you want all suggestions as a single patch file, you could
-+use something like this:
-+
-+ perl Graphite2/ppport.h --compat-version=5.6.0 --cplusplus --patch=test.diff
-+
-+If you only want your code to be scanned without any suggestions
-+for changes, use:
-+
-+ perl Graphite2/ppport.h --nochanges
-+
-+You can specify a different C<diff> program or options, using
-+the C<--diff> option:
-+
-+ perl Graphite2/ppport.h --diff='diff -C 10'
-+
-+This would output context diffs with 10 lines of context.
-+
-+If you want to create patched copies of your files instead, use:
-+
-+ perl Graphite2/ppport.h --copy=.new
-+
-+To display portability information for the C<newSVpvn> function,
-+use:
-+
-+ perl Graphite2/ppport.h --api-info=newSVpvn
-+
-+Since the argument to C<--api-info> can be a regular expression,
-+you can use
-+
-+ perl Graphite2/ppport.h --api-info=/_nomg$/
-+
-+to display portability information for all C<_nomg> functions or
-+
-+ perl Graphite2/ppport.h --api-info=/./
-+
-+to display information for all known API elements.
-+
-+=head1 BUGS
-+
-+If this version of F<Graphite2/ppport.h> is causing failure during
-+the compilation of this module, please check if newer versions
-+of either this module or C<Devel::PPPort> are available on CPAN
-+before sending a bug report.
-+
-+If F<Graphite2/ppport.h> was generated using the latest version of
-+C<Devel::PPPort> and is causing failure of this module, please
-+file a bug report using the CPAN Request Tracker at L<http://rt.cpan.org/>.
-+
-+Please include the following information:
-+
-+=over 4
-+
-+=item 1.
-+
-+The complete output from running "perl -V"
-+
-+=item 2.
-+
-+This file.
-+
-+=item 3.
-+
-+The name and version of the module you were trying to build.
-+
-+=item 4.
-+
-+A full log of the build that failed.
-+
-+=item 5.
-+
-+Any other information that you think could be relevant.
-+
-+=back
-+
-+For the latest version of this code, please get the C<Devel::PPPort>
-+module from CPAN.
-+
-+=head1 COPYRIGHT
-+
-+Version 3.x, Copyright (c) 2004-2009, Marcus Holland-Moritz.
-+
-+Version 2.x, Copyright (C) 2001, Paul Marquess.
-+
-+Version 1.x, Copyright (C) 1999, Kenneth Albanowski.
-+
-+This program is free software; you can redistribute it and/or
-+modify it under the same terms as Perl itself.
-+
-+=head1 SEE ALSO
-+
-+See L<Devel::PPPort>.
-+
-+=cut
-+
-+use strict;
-+
-+# Disable broken TRIE-optimization
-+BEGIN { eval '${^RE_TRIE_MAXBUF} = -1' if $] >= 5.009004 && $] <= 5.009005 }
-+
-+my $VERSION = 3.19;
-+
-+my %opt = (
-+ quiet => 0,
-+ diag => 1,
-+ hints => 1,
-+ changes => 1,
-+ cplusplus => 0,
-+ filter => 1,
-+ strip => 0,
-+ version => 0,
-+);
-+
-+my($ppport) = $0 =~ /([\w.]+)$/;
-+my $LF = '(?:\r\n|[\r\n])'; # line feed
-+my $HS = "[ \t]"; # horizontal whitespace
-+
-+# Never use C comments in this file!
-+my $ccs = '/'.'*';
-+my $cce = '*'.'/';
-+my $rccs = quotemeta $ccs;
-+my $rcce = quotemeta $cce;
-+
-+eval {
-+ require Getopt::Long;
-+ Getopt::Long::GetOptions(\%opt, qw(
-+ help quiet diag! filter! hints! changes! cplusplus strip version
-+ patch=s copy=s diff=s compat-version=s
-+ list-provided list-unsupported api-info=s
-+ )) or usage();
-+};
-+
-+if ($@ and grep /^-/, @ARGV) {
-+ usage() if "@ARGV" =~ /^--?h(?:elp)?$/;
-+ die "Getopt::Long not found. Please don't use any options.\n";
-+}
-+
-+if ($opt{version}) {
-+ print "This is $0 $VERSION.\n";
-+ exit 0;
-+}
-+
-+usage() if $opt{help};
-+strip() if $opt{strip};
-+
-+if (exists $opt{'compat-version'}) {
-+ my($r,$v,$s) = eval { parse_version($opt{'compat-version'}) };
-+ if ($@) {
-+ die "Invalid version number format: '$opt{'compat-version'}'\n";
-+ }
-+ die "Only Perl 5 is supported\n" if $r != 5;
-+ die "Invalid version number: $opt{'compat-version'}\n" if $v >= 1000 || $s >= 1000;
-+ $opt{'compat-version'} = sprintf "%d.%03d%03d", $r, $v, $s;
-+}
-+else {
-+ $opt{'compat-version'} = 5;
-+}
-+
-+my %API = map { /^(\w+)\|([^|]*)\|([^|]*)\|(\w*)$/
-+ ? ( $1 => {
-+ ($2 ? ( base => $2 ) : ()),
-+ ($3 ? ( todo => $3 ) : ()),
-+ (index($4, 'v') >= 0 ? ( varargs => 1 ) : ()),
-+ (index($4, 'p') >= 0 ? ( provided => 1 ) : ()),
-+ (index($4, 'n') >= 0 ? ( nothxarg => 1 ) : ()),
-+ } )
-+ : die "invalid spec: $_" } qw(
-+AvFILLp|5.004050||p
-+AvFILL|||
-+CLASS|||n
-+CPERLscope|5.005000||p
-+CX_CURPAD_SAVE|||
-+CX_CURPAD_SV|||
-+CopFILEAV|5.006000||p
-+CopFILEGV_set|5.006000||p
-+CopFILEGV|5.006000||p
-+CopFILESV|5.006000||p
-+CopFILE_set|5.006000||p
-+CopFILE|5.006000||p
-+CopSTASHPV_set|5.006000||p
-+CopSTASHPV|5.006000||p
-+CopSTASH_eq|5.006000||p
-+CopSTASH_set|5.006000||p
-+CopSTASH|5.006000||p
-+CopyD|5.009002||p
-+Copy|||
-+CvPADLIST|||
-+CvSTASH|||
-+CvWEAKOUTSIDE|||
-+DEFSV_set|5.011000||p
-+DEFSV|5.004050||p
-+END_EXTERN_C|5.005000||p
-+ENTER|||
-+ERRSV|5.004050||p
-+EXTEND|||
-+EXTERN_C|5.005000||p
-+F0convert|||n
-+FREETMPS|||
-+GIMME_V||5.004000|n
-+GIMME|||n
-+GROK_NUMERIC_RADIX|5.007002||p
-+G_ARRAY|||
-+G_DISCARD|||
-+G_EVAL|||
-+G_METHOD|5.006001||p
-+G_NOARGS|||
-+G_SCALAR|||
-+G_VOID||5.004000|
-+GetVars|||
-+GvSVn|5.009003||p
-+GvSV|||
-+Gv_AMupdate|||
-+HEf_SVKEY||5.004000|
-+HeHASH||5.004000|
-+HeKEY||5.004000|
-+HeKLEN||5.004000|
-+HePV||5.004000|
-+HeSVKEY_force||5.004000|
-+HeSVKEY_set||5.004000|
-+HeSVKEY||5.004000|
-+HeUTF8||5.011000|
-+HeVAL||5.004000|
-+HvNAMELEN_get|5.009003||p
-+HvNAME_get|5.009003||p
-+HvNAME|||
-+INT2PTR|5.006000||p
-+IN_LOCALE_COMPILETIME|5.007002||p
-+IN_LOCALE_RUNTIME|5.007002||p
-+IN_LOCALE|5.007002||p
-+IN_PERL_COMPILETIME|5.008001||p
-+IS_NUMBER_GREATER_THAN_UV_MAX|5.007002||p
-+IS_NUMBER_INFINITY|5.007002||p
-+IS_NUMBER_IN_UV|5.007002||p
-+IS_NUMBER_NAN|5.007003||p
-+IS_NUMBER_NEG|5.007002||p
-+IS_NUMBER_NOT_INT|5.007002||p
-+IVSIZE|5.006000||p
-+IVTYPE|5.006000||p
-+IVdf|5.006000||p
-+LEAVE|||
-+LVRET|||
-+MARK|||
-+MULTICALL||5.011000|
-+MY_CXT_CLONE|5.009002||p
-+MY_CXT_INIT|5.007003||p
-+MY_CXT|5.007003||p
-+MoveD|5.009002||p
-+Move|||
-+NOOP|5.005000||p
-+NUM2PTR|5.006000||p
-+NVTYPE|5.006000||p
-+NVef|5.006001||p
-+NVff|5.006001||p
-+NVgf|5.006001||p
-+Newxc|5.009003||p
-+Newxz|5.009003||p
-+Newx|5.009003||p
-+Nullav|||
-+Nullch|||
-+Nullcv|||
-+Nullhv|||
-+Nullsv|||
-+ORIGMARK|||
-+PAD_BASE_SV|||
-+PAD_CLONE_VARS|||
-+PAD_COMPNAME_FLAGS|||
-+PAD_COMPNAME_GEN_set|||
-+PAD_COMPNAME_GEN|||
-+PAD_COMPNAME_OURSTASH|||
-+PAD_COMPNAME_PV|||
-+PAD_COMPNAME_TYPE|||
-+PAD_DUP|||
-+PAD_RESTORE_LOCAL|||
-+PAD_SAVE_LOCAL|||
-+PAD_SAVE_SETNULLPAD|||
-+PAD_SETSV|||
-+PAD_SET_CUR_NOSAVE|||
-+PAD_SET_CUR|||
-+PAD_SVl|||
-+PAD_SV|||
-+PERLIO_FUNCS_CAST|5.009003||p
-+PERLIO_FUNCS_DECL|5.009003||p
-+PERL_ABS|5.008001||p
-+PERL_BCDVERSION|5.011000||p
-+PERL_GCC_BRACE_GROUPS_FORBIDDEN|5.008001||p
-+PERL_HASH|5.004000||p
-+PERL_INT_MAX|5.004000||p
-+PERL_INT_MIN|5.004000||p
-+PERL_LONG_MAX|5.004000||p
-+PERL_LONG_MIN|5.004000||p
-+PERL_MAGIC_arylen|5.007002||p
-+PERL_MAGIC_backref|5.007002||p
-+PERL_MAGIC_bm|5.007002||p
-+PERL_MAGIC_collxfrm|5.007002||p
-+PERL_MAGIC_dbfile|5.007002||p
-+PERL_MAGIC_dbline|5.007002||p
-+PERL_MAGIC_defelem|5.007002||p
-+PERL_MAGIC_envelem|5.007002||p
-+PERL_MAGIC_env|5.007002||p
-+PERL_MAGIC_ext|5.007002||p
-+PERL_MAGIC_fm|5.007002||p
-+PERL_MAGIC_glob|5.011000||p
-+PERL_MAGIC_isaelem|5.007002||p
-+PERL_MAGIC_isa|5.007002||p
-+PERL_MAGIC_mutex|5.011000||p
-+PERL_MAGIC_nkeys|5.007002||p
-+PERL_MAGIC_overload_elem|5.007002||p
-+PERL_MAGIC_overload_table|5.007002||p
-+PERL_MAGIC_overload|5.007002||p
-+PERL_MAGIC_pos|5.007002||p
-+PERL_MAGIC_qr|5.007002||p
-+PERL_MAGIC_regdata|5.007002||p
-+PERL_MAGIC_regdatum|5.007002||p
-+PERL_MAGIC_regex_global|5.007002||p
-+PERL_MAGIC_shared_scalar|5.007003||p
-+PERL_MAGIC_shared|5.007003||p
-+PERL_MAGIC_sigelem|5.007002||p
-+PERL_MAGIC_sig|5.007002||p
-+PERL_MAGIC_substr|5.007002||p
-+PERL_MAGIC_sv|5.007002||p
-+PERL_MAGIC_taint|5.007002||p
-+PERL_MAGIC_tiedelem|5.007002||p
-+PERL_MAGIC_tiedscalar|5.007002||p
-+PERL_MAGIC_tied|5.007002||p
-+PERL_MAGIC_utf8|5.008001||p
-+PERL_MAGIC_uvar_elem|5.007003||p
-+PERL_MAGIC_uvar|5.007002||p
-+PERL_MAGIC_vec|5.007002||p
-+PERL_MAGIC_vstring|5.008001||p
-+PERL_PV_ESCAPE_ALL|5.009004||p
-+PERL_PV_ESCAPE_FIRSTCHAR|5.009004||p
-+PERL_PV_ESCAPE_NOBACKSLASH|5.009004||p
-+PERL_PV_ESCAPE_NOCLEAR|5.009004||p
-+PERL_PV_ESCAPE_QUOTE|5.009004||p
-+PERL_PV_ESCAPE_RE|5.009005||p
-+PERL_PV_ESCAPE_UNI_DETECT|5.009004||p
-+PERL_PV_ESCAPE_UNI|5.009004||p
-+PERL_PV_PRETTY_DUMP|5.009004||p
-+PERL_PV_PRETTY_ELLIPSES|5.010000||p
-+PERL_PV_PRETTY_LTGT|5.009004||p
-+PERL_PV_PRETTY_NOCLEAR|5.010000||p
-+PERL_PV_PRETTY_QUOTE|5.009004||p
-+PERL_PV_PRETTY_REGPROP|5.009004||p
-+PERL_QUAD_MAX|5.004000||p
-+PERL_QUAD_MIN|5.004000||p
-+PERL_REVISION|5.006000||p
-+PERL_SCAN_ALLOW_UNDERSCORES|5.007003||p
-+PERL_SCAN_DISALLOW_PREFIX|5.007003||p
-+PERL_SCAN_GREATER_THAN_UV_MAX|5.007003||p
-+PERL_SCAN_SILENT_ILLDIGIT|5.008001||p
-+PERL_SHORT_MAX|5.004000||p
-+PERL_SHORT_MIN|5.004000||p
-+PERL_SIGNALS_UNSAFE_FLAG|5.008001||p
-+PERL_SUBVERSION|5.006000||p
-+PERL_SYS_INIT3||5.006000|
-+PERL_SYS_INIT|||
-+PERL_SYS_TERM||5.011000|
-+PERL_UCHAR_MAX|5.004000||p
-+PERL_UCHAR_MIN|5.004000||p
-+PERL_UINT_MAX|5.004000||p
-+PERL_UINT_MIN|5.004000||p
-+PERL_ULONG_MAX|5.004000||p
-+PERL_ULONG_MIN|5.004000||p
-+PERL_UNUSED_ARG|5.009003||p
-+PERL_UNUSED_CONTEXT|5.009004||p
-+PERL_UNUSED_DECL|5.007002||p
-+PERL_UNUSED_VAR|5.007002||p
-+PERL_UQUAD_MAX|5.004000||p
-+PERL_UQUAD_MIN|5.004000||p
-+PERL_USE_GCC_BRACE_GROUPS|5.009004||p
-+PERL_USHORT_MAX|5.004000||p
-+PERL_USHORT_MIN|5.004000||p
-+PERL_VERSION|5.006000||p
-+PL_DBsignal|5.005000||p
-+PL_DBsingle|||pn
-+PL_DBsub|||pn
-+PL_DBtrace|||pn
-+PL_Sv|5.005000||p
-+PL_bufend|5.011000||p
-+PL_bufptr|5.011000||p
-+PL_compiling|5.004050||p
-+PL_copline|5.011000||p
-+PL_curcop|5.004050||p
-+PL_curstash|5.004050||p
-+PL_debstash|5.004050||p
-+PL_defgv|5.004050||p
-+PL_diehook|5.004050||p
-+PL_dirty|5.004050||p
-+PL_dowarn|||pn
-+PL_errgv|5.004050||p
-+PL_error_count|5.011000||p
-+PL_expect|5.011000||p
-+PL_hexdigit|5.005000||p
-+PL_hints|5.005000||p
-+PL_in_my_stash|5.011000||p
-+PL_in_my|5.011000||p
-+PL_last_in_gv|||n
-+PL_laststatval|5.005000||p
-+PL_lex_state|5.011000||p
-+PL_lex_stuff|5.011000||p
-+PL_linestr|5.011000||p
-+PL_modglobal||5.005000|n
-+PL_na|5.004050||pn
-+PL_no_modify|5.006000||p
-+PL_ofsgv|||n
-+PL_parser|5.009005||p
-+PL_perl_destruct_level|5.004050||p
-+PL_perldb|5.004050||p
-+PL_ppaddr|5.006000||p
-+PL_rsfp_filters|5.004050||p
-+PL_rsfp|5.004050||p
-+PL_rs|||n
-+PL_signals|5.008001||p
-+PL_stack_base|5.004050||p
-+PL_stack_sp|5.004050||p
-+PL_statcache|5.005000||p
-+PL_stdingv|5.004050||p
-+PL_sv_arenaroot|5.004050||p
-+PL_sv_no|5.004050||pn
-+PL_sv_undef|5.004050||pn
-+PL_sv_yes|5.004050||pn
-+PL_tainted|5.004050||p
-+PL_tainting|5.004050||p
-+PL_tokenbuf|5.011000||p
-+POP_MULTICALL||5.011000|
-+POPi|||n
-+POPl|||n
-+POPn|||n
-+POPpbytex||5.007001|n
-+POPpx||5.005030|n
-+POPp|||n
-+POPs|||n
-+PTR2IV|5.006000||p
-+PTR2NV|5.006000||p
-+PTR2UV|5.006000||p
-+PTR2nat|5.009003||p
-+PTR2ul|5.007001||p
-+PTRV|5.006000||p
-+PUSHMARK|||
-+PUSH_MULTICALL||5.011000|
-+PUSHi|||
-+PUSHmortal|5.009002||p
-+PUSHn|||
-+PUSHp|||
-+PUSHs|||
-+PUSHu|5.004000||p
-+PUTBACK|||
-+PerlIO_clearerr||5.007003|
-+PerlIO_close||5.007003|
-+PerlIO_context_layers||5.009004|
-+PerlIO_eof||5.007003|
-+PerlIO_error||5.007003|
-+PerlIO_fileno||5.007003|
-+PerlIO_fill||5.007003|
-+PerlIO_flush||5.007003|
-+PerlIO_get_base||5.007003|
-+PerlIO_get_bufsiz||5.007003|
-+PerlIO_get_cnt||5.007003|
-+PerlIO_get_ptr||5.007003|
-+PerlIO_read||5.007003|
-+PerlIO_seek||5.007003|
-+PerlIO_set_cnt||5.007003|
-+PerlIO_set_ptrcnt||5.007003|
-+PerlIO_setlinebuf||5.007003|
-+PerlIO_stderr||5.007003|
-+PerlIO_stdin||5.007003|
-+PerlIO_stdout||5.007003|
-+PerlIO_tell||5.007003|
-+PerlIO_unread||5.007003|
-+PerlIO_write||5.007003|
-+Perl_signbit||5.009005|n
-+PoisonFree|5.009004||p
-+PoisonNew|5.009004||p
-+PoisonWith|5.009004||p
-+Poison|5.008000||p
-+RETVAL|||n
-+Renewc|||
-+Renew|||
-+SAVECLEARSV|||
-+SAVECOMPPAD|||
-+SAVEPADSV|||
-+SAVETMPS|||
-+SAVE_DEFSV|5.004050||p
-+SPAGAIN|||
-+SP|||
-+START_EXTERN_C|5.005000||p
-+START_MY_CXT|5.007003||p
-+STMT_END|||p
-+STMT_START|||p
-+STR_WITH_LEN|5.009003||p
-+ST|||
-+SV_CONST_RETURN|5.009003||p
-+SV_COW_DROP_PV|5.008001||p
-+SV_COW_SHARED_HASH_KEYS|5.009005||p
-+SV_GMAGIC|5.007002||p
-+SV_HAS_TRAILING_NUL|5.009004||p
-+SV_IMMEDIATE_UNREF|5.007001||p
-+SV_MUTABLE_RETURN|5.009003||p
-+SV_NOSTEAL|5.009002||p
-+SV_SMAGIC|5.009003||p
-+SV_UTF8_NO_ENCODING|5.008001||p
-+SVfARG|5.009005||p
-+SVf_UTF8|5.006000||p
-+SVf|5.006000||p
-+SVt_IV|||
-+SVt_NV|||
-+SVt_PVAV|||
-+SVt_PVCV|||
-+SVt_PVHV|||
-+SVt_PVMG|||
-+SVt_PV|||
-+Safefree|||
-+Slab_Alloc|||
-+Slab_Free|||
-+Slab_to_rw|||
-+StructCopy|||
-+SvCUR_set|||
-+SvCUR|||
-+SvEND|||
-+SvGAMAGIC||5.006001|
-+SvGETMAGIC|5.004050||p
-+SvGROW|||
-+SvIOK_UV||5.006000|
-+SvIOK_notUV||5.006000|
-+SvIOK_off|||
-+SvIOK_only_UV||5.006000|
-+SvIOK_only|||
-+SvIOK_on|||
-+SvIOKp|||
-+SvIOK|||
-+SvIVX|||
-+SvIV_nomg|5.009001||p
-+SvIV_set|||
-+SvIVx|||
-+SvIV|||
-+SvIsCOW_shared_hash||5.008003|
-+SvIsCOW||5.008003|
-+SvLEN_set|||
-+SvLEN|||
-+SvLOCK||5.007003|
-+SvMAGIC_set|5.009003||p
-+SvNIOK_off|||
-+SvNIOKp|||
-+SvNIOK|||
-+SvNOK_off|||
-+SvNOK_only|||
-+SvNOK_on|||
-+SvNOKp|||
-+SvNOK|||
-+SvNVX|||
-+SvNV_set|||
-+SvNVx|||
-+SvNV|||
-+SvOK|||
-+SvOOK_offset||5.011000|
-+SvOOK|||
-+SvPOK_off|||
-+SvPOK_only_UTF8||5.006000|
-+SvPOK_only|||
-+SvPOK_on|||
-+SvPOKp|||
-+SvPOK|||
-+SvPVX_const|5.009003||p
-+SvPVX_mutable|5.009003||p
-+SvPVX|||
-+SvPV_const|5.009003||p
-+SvPV_flags_const_nolen|5.009003||p
-+SvPV_flags_const|5.009003||p
-+SvPV_flags_mutable|5.009003||p
-+SvPV_flags|5.007002||p
-+SvPV_force_flags_mutable|5.009003||p
-+SvPV_force_flags_nolen|5.009003||p
-+SvPV_force_flags|5.007002||p
-+SvPV_force_mutable|5.009003||p
-+SvPV_force_nolen|5.009003||p
-+SvPV_force_nomg_nolen|5.009003||p
-+SvPV_force_nomg|5.007002||p
-+SvPV_force|||p
-+SvPV_mutable|5.009003||p
-+SvPV_nolen_const|5.009003||p
-+SvPV_nolen|5.006000||p
-+SvPV_nomg_const_nolen|5.009003||p
-+SvPV_nomg_const|5.009003||p
-+SvPV_nomg|5.007002||p
-+SvPV_renew|5.009003||p
-+SvPV_set|||
-+SvPVbyte_force||5.009002|
-+SvPVbyte_nolen||5.006000|
-+SvPVbytex_force||5.006000|
-+SvPVbytex||5.006000|
-+SvPVbyte|5.006000||p
-+SvPVutf8_force||5.006000|
-+SvPVutf8_nolen||5.006000|
-+SvPVutf8x_force||5.006000|
-+SvPVutf8x||5.006000|
-+SvPVutf8||5.006000|
-+SvPVx|||
-+SvPV|||
-+SvREFCNT_dec|||
-+SvREFCNT_inc_NN|5.009004||p
-+SvREFCNT_inc_simple_NN|5.009004||p
-+SvREFCNT_inc_simple_void_NN|5.009004||p
-+SvREFCNT_inc_simple_void|5.009004||p
-+SvREFCNT_inc_simple|5.009004||p
-+SvREFCNT_inc_void_NN|5.009004||p
-+SvREFCNT_inc_void|5.009004||p
-+SvREFCNT_inc|||p
-+SvREFCNT|||
-+SvROK_off|||
-+SvROK_on|||
-+SvROK|||
-+SvRV_set|5.009003||p
-+SvRV|||
-+SvRXOK||5.009005|
-+SvRX||5.009005|
-+SvSETMAGIC|||
-+SvSHARED_HASH|5.009003||p
-+SvSHARE||5.007003|
-+SvSTASH_set|5.009003||p
-+SvSTASH|||
-+SvSetMagicSV_nosteal||5.004000|
-+SvSetMagicSV||5.004000|
-+SvSetSV_nosteal||5.004000|
-+SvSetSV|||
-+SvTAINTED_off||5.004000|
-+SvTAINTED_on||5.004000|
-+SvTAINTED||5.004000|
-+SvTAINT|||
-+SvTRUE|||
-+SvTYPE|||
-+SvUNLOCK||5.007003|
-+SvUOK|5.007001|5.006000|p
-+SvUPGRADE|||
-+SvUTF8_off||5.006000|
-+SvUTF8_on||5.006000|
-+SvUTF8||5.006000|
-+SvUVXx|5.004000||p
-+SvUVX|5.004000||p
-+SvUV_nomg|5.009001||p
-+SvUV_set|5.009003||p
-+SvUVx|5.004000||p
-+SvUV|5.004000||p
-+SvVOK||5.008001|
-+SvVSTRING_mg|5.009004||p
-+THIS|||n
-+UNDERBAR|5.009002||p
-+UTF8_MAXBYTES|5.009002||p
-+UVSIZE|5.006000||p
-+UVTYPE|5.006000||p
-+UVXf|5.007001||p
-+UVof|5.006000||p
-+UVuf|5.006000||p
-+UVxf|5.006000||p
-+WARN_ALL|5.006000||p
-+WARN_AMBIGUOUS|5.006000||p
-+WARN_ASSERTIONS|5.011000||p
-+WARN_BAREWORD|5.006000||p
-+WARN_CLOSED|5.006000||p
-+WARN_CLOSURE|5.006000||p
-+WARN_DEBUGGING|5.006000||p
-+WARN_DEPRECATED|5.006000||p
-+WARN_DIGIT|5.006000||p
-+WARN_EXEC|5.006000||p
-+WARN_EXITING|5.006000||p
-+WARN_GLOB|5.006000||p
-+WARN_INPLACE|5.006000||p
-+WARN_INTERNAL|5.006000||p
-+WARN_IO|5.006000||p
-+WARN_LAYER|5.008000||p
-+WARN_MALLOC|5.006000||p
-+WARN_MISC|5.006000||p
-+WARN_NEWLINE|5.006000||p
-+WARN_NUMERIC|5.006000||p
-+WARN_ONCE|5.006000||p
-+WARN_OVERFLOW|5.006000||p
-+WARN_PACK|5.006000||p
-+WARN_PARENTHESIS|5.006000||p
-+WARN_PIPE|5.006000||p
-+WARN_PORTABLE|5.006000||p
-+WARN_PRECEDENCE|5.006000||p
-+WARN_PRINTF|5.006000||p
-+WARN_PROTOTYPE|5.006000||p
-+WARN_QW|5.006000||p
-+WARN_RECURSION|5.006000||p
-+WARN_REDEFINE|5.006000||p
-+WARN_REGEXP|5.006000||p
-+WARN_RESERVED|5.006000||p
-+WARN_SEMICOLON|5.006000||p
-+WARN_SEVERE|5.006000||p
-+WARN_SIGNAL|5.006000||p
-+WARN_SUBSTR|5.006000||p
-+WARN_SYNTAX|5.006000||p
-+WARN_TAINT|5.006000||p
-+WARN_THREADS|5.008000||p
-+WARN_UNINITIALIZED|5.006000||p
-+WARN_UNOPENED|5.006000||p
-+WARN_UNPACK|5.006000||p
-+WARN_UNTIE|5.006000||p
-+WARN_UTF8|5.006000||p
-+WARN_VOID|5.006000||p
-+XCPT_CATCH|5.009002||p
-+XCPT_RETHROW|5.009002||p
-+XCPT_TRY_END|5.009002||p
-+XCPT_TRY_START|5.009002||p
-+XPUSHi|||
-+XPUSHmortal|5.009002||p
-+XPUSHn|||
-+XPUSHp|||
-+XPUSHs|||
-+XPUSHu|5.004000||p
-+XSPROTO|5.010000||p
-+XSRETURN_EMPTY|||
-+XSRETURN_IV|||
-+XSRETURN_NO|||
-+XSRETURN_NV|||
-+XSRETURN_PV|||
-+XSRETURN_UNDEF|||
-+XSRETURN_UV|5.008001||p
-+XSRETURN_YES|||
-+XSRETURN|||p
-+XST_mIV|||
-+XST_mNO|||
-+XST_mNV|||
-+XST_mPV|||
-+XST_mUNDEF|||
-+XST_mUV|5.008001||p
-+XST_mYES|||
-+XS_VERSION_BOOTCHECK|||
-+XS_VERSION|||
-+XSprePUSH|5.006000||p
-+XS|||
-+ZeroD|5.009002||p
-+Zero|||
-+_aMY_CXT|5.007003||p
-+_pMY_CXT|5.007003||p
-+aMY_CXT_|5.007003||p
-+aMY_CXT|5.007003||p
-+aTHXR_|5.011000||p
-+aTHXR|5.011000||p
-+aTHX_|5.006000||p
-+aTHX|5.006000||p
-+add_data|||n
-+addmad|||
-+allocmy|||
-+amagic_call|||
-+amagic_cmp_locale|||
-+amagic_cmp|||
-+amagic_i_ncmp|||
-+amagic_ncmp|||
-+any_dup|||
-+ao|||
-+append_elem|||
-+append_list|||
-+append_madprops|||
-+apply_attrs_my|||
-+apply_attrs_string||5.006001|
-+apply_attrs|||
-+apply|||
-+atfork_lock||5.007003|n
-+atfork_unlock||5.007003|n
-+av_arylen_p||5.009003|
-+av_clear|||
-+av_create_and_push||5.009005|
-+av_create_and_unshift_one||5.009005|
-+av_delete||5.006000|
-+av_exists||5.006000|
-+av_extend|||
-+av_fetch|||
-+av_fill|||
-+av_iter_p||5.011000|
-+av_len|||
-+av_make|||
-+av_pop|||
-+av_push|||
-+av_reify|||
-+av_shift|||
-+av_store|||
-+av_undef|||
-+av_unshift|||
-+ax|||n
-+bad_type|||
-+bind_match|||
-+block_end|||
-+block_gimme||5.004000|
-+block_start|||
-+boolSV|5.004000||p
-+boot_core_PerlIO|||
-+boot_core_UNIVERSAL|||
-+boot_core_mro|||
-+bytes_from_utf8||5.007001|
-+bytes_to_uni|||n
-+bytes_to_utf8||5.006001|
-+call_argv|5.006000||p
-+call_atexit||5.006000|
-+call_list||5.004000|
-+call_method|5.006000||p
-+call_pv|5.006000||p
-+call_sv|5.006000||p
-+calloc||5.007002|n
-+cando|||
-+cast_i32||5.006000|
-+cast_iv||5.006000|
-+cast_ulong||5.006000|
-+cast_uv||5.006000|
-+check_type_and_open|||
-+check_uni|||
-+checkcomma|||
-+checkposixcc|||
-+ckWARN|5.006000||p
-+ck_anoncode|||
-+ck_bitop|||
-+ck_concat|||
-+ck_defined|||
-+ck_delete|||
-+ck_die|||
-+ck_each|||
-+ck_eof|||
-+ck_eval|||
-+ck_exec|||
-+ck_exists|||
-+ck_exit|||
-+ck_ftst|||
-+ck_fun|||
-+ck_glob|||
-+ck_grep|||
-+ck_index|||
-+ck_join|||
-+ck_lfun|||
-+ck_listiob|||
-+ck_match|||
-+ck_method|||
-+ck_null|||
-+ck_open|||
-+ck_readline|||
-+ck_repeat|||
-+ck_require|||
-+ck_return|||
-+ck_rfun|||
-+ck_rvconst|||
-+ck_sassign|||
-+ck_select|||
-+ck_shift|||
-+ck_sort|||
-+ck_spair|||
-+ck_split|||
-+ck_subr|||
-+ck_substr|||
-+ck_svconst|||
-+ck_trunc|||
-+ck_unpack|||
-+ckwarn_d||5.009003|
-+ckwarn||5.009003|
-+cl_and|||n
-+cl_anything|||n
-+cl_init_zero|||n
-+cl_init|||n
-+cl_is_anything|||n
-+cl_or|||n
-+clear_placeholders|||
-+closest_cop|||
-+convert|||
-+cop_free|||
-+cr_textfilter|||
-+create_eval_scope|||
-+croak_nocontext|||vn
-+croak_xs_usage||5.011000|
-+croak|||v
-+csighandler||5.009003|n
-+curmad|||
-+custom_op_desc||5.007003|
-+custom_op_name||5.007003|
-+cv_ckproto_len|||
-+cv_clone|||
-+cv_const_sv||5.004000|
-+cv_dump|||
-+cv_undef|||
-+cx_dump||5.005000|
-+cx_dup|||
-+cxinc|||
-+dAXMARK|5.009003||p
-+dAX|5.007002||p
-+dITEMS|5.007002||p
-+dMARK|||
-+dMULTICALL||5.009003|
-+dMY_CXT_SV|5.007003||p
-+dMY_CXT|5.007003||p
-+dNOOP|5.006000||p
-+dORIGMARK|||
-+dSP|||
-+dTHR|5.004050||p
-+dTHXR|5.011000||p
-+dTHXa|5.006000||p
-+dTHXoa|5.006000||p
-+dTHX|5.006000||p
-+dUNDERBAR|5.009002||p
-+dVAR|5.009003||p
-+dXCPT|5.009002||p
-+dXSARGS|||
-+dXSI32|||
-+dXSTARG|5.006000||p
-+deb_curcv|||
-+deb_nocontext|||vn
-+deb_stack_all|||
-+deb_stack_n|||
-+debop||5.005000|
-+debprofdump||5.005000|
-+debprof|||
-+debstackptrs||5.007003|
-+debstack||5.007003|
-+debug_start_match|||
-+deb||5.007003|v
-+del_sv|||
-+delete_eval_scope|||
-+delimcpy||5.004000|
-+deprecate_old|||
-+deprecate|||
-+despatch_signals||5.007001|
-+destroy_matcher|||
-+die_nocontext|||vn
-+die_where|||
-+die|||v
-+dirp_dup|||
-+div128|||
-+djSP|||
-+do_aexec5|||
-+do_aexec|||
-+do_aspawn|||
-+do_binmode||5.004050|
-+do_chomp|||
-+do_chop|||
-+do_close|||
-+do_dump_pad|||
-+do_eof|||
-+do_exec3|||
-+do_execfree|||
-+do_exec|||
-+do_gv_dump||5.006000|
-+do_gvgv_dump||5.006000|
-+do_hv_dump||5.006000|
-+do_ipcctl|||
-+do_ipcget|||
-+do_join|||
-+do_kv|||
-+do_magic_dump||5.006000|
-+do_msgrcv|||
-+do_msgsnd|||
-+do_oddball|||
-+do_op_dump||5.006000|
-+do_op_xmldump|||
-+do_open9||5.006000|
-+do_openn||5.007001|
-+do_open||5.004000|
-+do_pmop_dump||5.006000|
-+do_pmop_xmldump|||
-+do_print|||
-+do_readline|||
-+do_seek|||
-+do_semop|||
-+do_shmio|||
-+do_smartmatch|||
-+do_spawn_nowait|||
-+do_spawn|||
-+do_sprintf|||
-+do_sv_dump||5.006000|
-+do_sysseek|||
-+do_tell|||
-+do_trans_complex_utf8|||
-+do_trans_complex|||
-+do_trans_count_utf8|||
-+do_trans_count|||
-+do_trans_simple_utf8|||
-+do_trans_simple|||
-+do_trans|||
-+do_vecget|||
-+do_vecset|||
-+do_vop|||
-+docatch|||
-+doeval|||
-+dofile|||
-+dofindlabel|||
-+doform|||
-+doing_taint||5.008001|n
-+dooneliner|||
-+doopen_pm|||
-+doparseform|||
-+dopoptoeval|||
-+dopoptogiven|||
-+dopoptolabel|||
-+dopoptoloop|||
-+dopoptosub_at|||
-+dopoptowhen|||
-+doref||5.009003|
-+dounwind|||
-+dowantarray|||
-+dump_all||5.006000|
-+dump_eval||5.006000|
-+dump_exec_pos|||
-+dump_fds|||
-+dump_form||5.006000|
-+dump_indent||5.006000|v
-+dump_mstats|||
-+dump_packsubs||5.006000|
-+dump_sub||5.006000|
-+dump_sv_child|||
-+dump_trie_interim_list|||
-+dump_trie_interim_table|||
-+dump_trie|||
-+dump_vindent||5.006000|
-+dumpuntil|||
-+dup_attrlist|||
-+emulate_cop_io|||
-+eval_pv|5.006000||p
-+eval_sv|5.006000||p
-+exec_failed|||
-+expect_number|||
-+fbm_compile||5.005000|
-+fbm_instr||5.005000|
-+feature_is_enabled|||
-+fetch_cop_label||5.011000|
-+filter_add|||
-+filter_del|||
-+filter_gets|||
-+filter_read|||
-+find_and_forget_pmops|||
-+find_array_subscript|||
-+find_beginning|||
-+find_byclass|||
-+find_hash_subscript|||
-+find_in_my_stash|||
-+find_runcv||5.008001|
-+find_rundefsvoffset||5.009002|
-+find_script|||
-+find_uninit_var|||
-+first_symbol|||n
-+fold_constants|||
-+forbid_setid|||
-+force_ident|||
-+force_list|||
-+force_next|||
-+force_version|||
-+force_word|||
-+forget_pmop|||
-+form_nocontext|||vn
-+form||5.004000|v
-+fp_dup|||
-+fprintf_nocontext|||vn
-+free_global_struct|||
-+free_tied_hv_pool|||
-+free_tmps|||
-+gen_constant_list|||
-+get_arena|||
-+get_aux_mg|||
-+get_av|5.006000||p
-+get_context||5.006000|n
-+get_cvn_flags||5.009005|
-+get_cv|5.006000||p
-+get_db_sub|||
-+get_debug_opts|||
-+get_hash_seed|||
-+get_hv|5.006000||p
-+get_isa_hash|||
-+get_mstats|||
-+get_no_modify|||
-+get_num|||
-+get_op_descs||5.005000|
-+get_op_names||5.005000|
-+get_opargs|||
-+get_ppaddr||5.006000|
-+get_re_arg|||
-+get_sv|5.006000||p
-+get_vtbl||5.005030|
-+getcwd_sv||5.007002|
-+getenv_len|||
-+glob_2number|||
-+glob_assign_glob|||
-+glob_assign_ref|||
-+gp_dup|||
-+gp_free|||
-+gp_ref|||
-+grok_bin|5.007003||p
-+grok_hex|5.007003||p
-+grok_number|5.007002||p
-+grok_numeric_radix|5.007002||p
-+grok_oct|5.007003||p
-+group_end|||
-+gv_AVadd|||
-+gv_HVadd|||
-+gv_IOadd|||
-+gv_SVadd|||
-+gv_autoload4||5.004000|
-+gv_check|||
-+gv_const_sv||5.009003|
-+gv_dump||5.006000|
-+gv_efullname3||5.004000|
-+gv_efullname4||5.006001|
-+gv_efullname|||
-+gv_ename|||
-+gv_fetchfile_flags||5.009005|
-+gv_fetchfile|||
-+gv_fetchmeth_autoload||5.007003|
-+gv_fetchmethod_autoload||5.004000|
-+gv_fetchmethod_flags||5.011000|
-+gv_fetchmethod|||
-+gv_fetchmeth|||
-+gv_fetchpvn_flags|5.009002||p
-+gv_fetchpvs|5.009004||p
-+gv_fetchpv|||
-+gv_fetchsv||5.009002|
-+gv_fullname3||5.004000|
-+gv_fullname4||5.006001|
-+gv_fullname|||
-+gv_get_super_pkg|||
-+gv_handler||5.007001|
-+gv_init_sv|||
-+gv_init|||
-+gv_name_set||5.009004|
-+gv_stashpvn|5.004000||p
-+gv_stashpvs|5.009003||p
-+gv_stashpv|||
-+gv_stashsv|||
-+he_dup|||
-+hek_dup|||
-+hfreeentries|||
-+hsplit|||
-+hv_assert||5.011000|
-+hv_auxinit|||n
-+hv_backreferences_p|||
-+hv_clear_placeholders||5.009001|
-+hv_clear|||
-+hv_common_key_len||5.010000|
-+hv_common||5.010000|
-+hv_copy_hints_hv|||
-+hv_delayfree_ent||5.004000|
-+hv_delete_common|||
-+hv_delete_ent||5.004000|
-+hv_delete|||
-+hv_eiter_p||5.009003|
-+hv_eiter_set||5.009003|
-+hv_exists_ent||5.004000|
-+hv_exists|||
-+hv_fetch_ent||5.004000|
-+hv_fetchs|5.009003||p
-+hv_fetch|||
-+hv_free_ent||5.004000|
-+hv_iterinit|||
-+hv_iterkeysv||5.004000|
-+hv_iterkey|||
-+hv_iternext_flags||5.008000|
-+hv_iternextsv|||
-+hv_iternext|||
-+hv_iterval|||
-+hv_kill_backrefs|||
-+hv_ksplit||5.004000|
-+hv_magic_check|||n
-+hv_magic|||
-+hv_name_set||5.009003|
-+hv_notallowed|||
-+hv_placeholders_get||5.009003|
-+hv_placeholders_p||5.009003|
-+hv_placeholders_set||5.009003|
-+hv_riter_p||5.009003|
-+hv_riter_set||5.009003|
-+hv_scalar||5.009001|
-+hv_store_ent||5.004000|
-+hv_store_flags||5.008000|
-+hv_stores|5.009004||p
-+hv_store|||
-+hv_undef|||
-+ibcmp_locale||5.004000|
-+ibcmp_utf8||5.007003|
-+ibcmp|||
-+incline|||
-+incpush_if_exists|||
-+incpush_use_sep|||
-+incpush|||
-+ingroup|||
-+init_argv_symbols|||
-+init_debugger|||
-+init_global_struct|||
-+init_i18nl10n||5.006000|
-+init_i18nl14n||5.006000|
-+init_ids|||
-+init_interp|||
-+init_main_stash|||
-+init_perllib|||
-+init_postdump_symbols|||
-+init_predump_symbols|||
-+init_stacks||5.005000|
-+init_tm||5.007002|
-+instr|||
-+intro_my|||
-+intuit_method|||
-+intuit_more|||
-+invert|||
-+io_close|||
-+isALNUMC|5.006000||p
-+isALNUM|||
-+isALPHA|||
-+isASCII|5.006000||p
-+isBLANK|5.006001||p
-+isCNTRL|5.006000||p
-+isDIGIT|||
-+isGRAPH|5.006000||p
-+isGV_with_GP|5.009004||p
-+isLOWER|||
-+isPRINT|5.004000||p
-+isPSXSPC|5.006001||p
-+isPUNCT|5.006000||p
-+isSPACE|||
-+isUPPER|||
-+isXDIGIT|5.006000||p
-+is_an_int|||
-+is_gv_magical_sv|||
-+is_handle_constructor|||n
-+is_list_assignment|||
-+is_lvalue_sub||5.007001|
-+is_uni_alnum_lc||5.006000|
-+is_uni_alnumc_lc||5.006000|
-+is_uni_alnumc||5.006000|
-+is_uni_alnum||5.006000|
-+is_uni_alpha_lc||5.006000|
-+is_uni_alpha||5.006000|
-+is_uni_ascii_lc||5.006000|
-+is_uni_ascii||5.006000|
-+is_uni_cntrl_lc||5.006000|
-+is_uni_cntrl||5.006000|
-+is_uni_digit_lc||5.006000|
-+is_uni_digit||5.006000|
-+is_uni_graph_lc||5.006000|
-+is_uni_graph||5.006000|
-+is_uni_idfirst_lc||5.006000|
-+is_uni_idfirst||5.006000|
-+is_uni_lower_lc||5.006000|
-+is_uni_lower||5.006000|
-+is_uni_print_lc||5.006000|
-+is_uni_print||5.006000|
-+is_uni_punct_lc||5.006000|
-+is_uni_punct||5.006000|
-+is_uni_space_lc||5.006000|
-+is_uni_space||5.006000|
-+is_uni_upper_lc||5.006000|
-+is_uni_upper||5.006000|
-+is_uni_xdigit_lc||5.006000|
-+is_uni_xdigit||5.006000|
-+is_utf8_alnumc||5.006000|
-+is_utf8_alnum||5.006000|
-+is_utf8_alpha||5.006000|
-+is_utf8_ascii||5.006000|
-+is_utf8_char_slow|||n
-+is_utf8_char||5.006000|
-+is_utf8_cntrl||5.006000|
-+is_utf8_common|||
-+is_utf8_digit||5.006000|
-+is_utf8_graph||5.006000|
-+is_utf8_idcont||5.008000|
-+is_utf8_idfirst||5.006000|
-+is_utf8_lower||5.006000|
-+is_utf8_mark||5.006000|
-+is_utf8_print||5.006000|
-+is_utf8_punct||5.006000|
-+is_utf8_space||5.006000|
-+is_utf8_string_loclen||5.009003|
-+is_utf8_string_loc||5.008001|
-+is_utf8_string||5.006001|
-+is_utf8_upper||5.006000|
-+is_utf8_xdigit||5.006000|
-+isa_lookup|||
-+items|||n
-+ix|||n
-+jmaybe|||
-+join_exact|||
-+keyword|||
-+leave_scope|||
-+lex_end|||
-+lex_start|||
-+linklist|||
-+listkids|||
-+list|||
-+load_module_nocontext|||vn
-+load_module|5.006000||pv
-+localize|||
-+looks_like_bool|||
-+looks_like_number|||
-+lop|||
-+mPUSHi|5.009002||p
-+mPUSHn|5.009002||p
-+mPUSHp|5.009002||p
-+mPUSHs|5.011000||p
-+mPUSHu|5.009002||p
-+mXPUSHi|5.009002||p
-+mXPUSHn|5.009002||p
-+mXPUSHp|5.009002||p
-+mXPUSHs|5.011000||p
-+mXPUSHu|5.009002||p
-+mad_free|||
-+madlex|||
-+madparse|||
-+magic_clear_all_env|||
-+magic_clearenv|||
-+magic_clearhint|||
-+magic_clearisa|||
-+magic_clearpack|||
-+magic_clearsig|||
-+magic_dump||5.006000|
-+magic_existspack|||
-+magic_freearylen_p|||
-+magic_freeovrld|||
-+magic_getarylen|||
-+magic_getdefelem|||
-+magic_getnkeys|||
-+magic_getpack|||
-+magic_getpos|||
-+magic_getsig|||
-+magic_getsubstr|||
-+magic_gettaint|||
-+magic_getuvar|||
-+magic_getvec|||
-+magic_get|||
-+magic_killbackrefs|||
-+magic_len|||
-+magic_methcall|||
-+magic_methpack|||
-+magic_nextpack|||
-+magic_regdata_cnt|||
-+magic_regdatum_get|||
-+magic_regdatum_set|||
-+magic_scalarpack|||
-+magic_set_all_env|||
-+magic_setamagic|||
-+magic_setarylen|||
-+magic_setcollxfrm|||
-+magic_setdbline|||
-+magic_setdefelem|||
-+magic_setenv|||
-+magic_sethint|||
-+magic_setisa|||
-+magic_setmglob|||
-+magic_setnkeys|||
-+magic_setpack|||
-+magic_setpos|||
-+magic_setregexp|||
-+magic_setsig|||
-+magic_setsubstr|||
-+magic_settaint|||
-+magic_setutf8|||
-+magic_setuvar|||
-+magic_setvec|||
-+magic_set|||
-+magic_sizepack|||
-+magic_wipepack|||
-+make_matcher|||
-+make_trie_failtable|||
-+make_trie|||
-+malloc_good_size|||n
-+malloced_size|||n
-+malloc||5.007002|n
-+markstack_grow|||
-+matcher_matches_sv|||
-+measure_struct|||
-+memEQ|5.004000||p
-+memNE|5.004000||p
-+mem_collxfrm|||
-+mem_log_common|||n
-+mess_alloc|||
-+mess_nocontext|||vn
-+mess||5.006000|v
-+method_common|||
-+mfree||5.007002|n
-+mg_clear|||
-+mg_copy|||
-+mg_dup|||
-+mg_find|||
-+mg_free|||
-+mg_get|||
-+mg_length||5.005000|
-+mg_localize|||
-+mg_magical|||
-+mg_set|||
-+mg_size||5.005000|
-+mini_mktime||5.007002|
-+missingterm|||
-+mode_from_discipline|||
-+modkids|||
-+mod|||
-+more_bodies|||
-+more_sv|||
-+moreswitches|||
-+mro_get_from_name||5.011000|
-+mro_get_linear_isa_dfs|||
-+mro_get_linear_isa||5.009005|
-+mro_get_private_data||5.011000|
-+mro_isa_changed_in|||
-+mro_meta_dup|||
-+mro_meta_init|||
-+mro_method_changed_in||5.009005|
-+mro_register||5.011000|
-+mro_set_mro||5.011000|
-+mro_set_private_data||5.011000|
-+mul128|||
-+mulexp10|||n
-+my_atof2||5.007002|
-+my_atof||5.006000|
-+my_attrs|||
-+my_bcopy|||n
-+my_betoh16|||n
-+my_betoh32|||n
-+my_betoh64|||n
-+my_betohi|||n
-+my_betohl|||n
-+my_betohs|||n
-+my_bzero|||n
-+my_chsize|||
-+my_clearenv|||
-+my_cxt_index|||
-+my_cxt_init|||
-+my_dirfd||5.009005|
-+my_exit_jump|||
-+my_exit|||
-+my_failure_exit||5.004000|
-+my_fflush_all||5.006000|
-+my_fork||5.007003|n
-+my_htobe16|||n
-+my_htobe32|||n
-+my_htobe64|||n
-+my_htobei|||n
-+my_htobel|||n
-+my_htobes|||n
-+my_htole16|||n
-+my_htole32|||n
-+my_htole64|||n
-+my_htolei|||n
-+my_htolel|||n
-+my_htoles|||n
-+my_htonl|||
-+my_kid|||
-+my_letoh16|||n
-+my_letoh32|||n
-+my_letoh64|||n
-+my_letohi|||n
-+my_letohl|||n
-+my_letohs|||n
-+my_lstat|||
-+my_memcmp||5.004000|n
-+my_memset|||n
-+my_ntohl|||
-+my_pclose||5.004000|
-+my_popen_list||5.007001|
-+my_popen||5.004000|
-+my_setenv|||
-+my_snprintf|5.009004||pvn
-+my_socketpair||5.007003|n
-+my_sprintf|5.009003||pvn
-+my_stat|||
-+my_strftime||5.007002|
-+my_strlcat|5.009004||pn
-+my_strlcpy|5.009004||pn
-+my_swabn|||n
-+my_swap|||
-+my_unexec|||
-+my_vsnprintf||5.009004|n
-+need_utf8|||n
-+newANONATTRSUB||5.006000|
-+newANONHASH|||
-+newANONLIST|||
-+newANONSUB|||
-+newASSIGNOP|||
-+newATTRSUB||5.006000|
-+newAVREF|||
-+newAV|||
-+newBINOP|||
-+newCONDOP|||
-+newCONSTSUB|5.004050||p
-+newCVREF|||
-+newDEFSVOP|||
-+newFORM|||
-+newFOROP|||
-+newGIVENOP||5.009003|
-+newGIVWHENOP|||
-+newGP|||
-+newGVOP|||
-+newGVREF|||
-+newGVgen|||
-+newHVREF|||
-+newHVhv||5.005000|
-+newHV|||
-+newIO|||
-+newLISTOP|||
-+newLOGOP|||
-+newLOOPEX|||
-+newLOOPOP|||
-+newMADPROP|||
-+newMADsv|||
-+newMYSUB|||
-+newNULLLIST|||
-+newOP|||
-+newPADOP|||
-+newPMOP|||
-+newPROG|||
-+newPVOP|||
-+newRANGE|||
-+newRV_inc|5.004000||p
-+newRV_noinc|5.004000||p
-+newRV|||
-+newSLICEOP|||
-+newSTATEOP|||
-+newSUB|||
-+newSVOP|||
-+newSVREF|||
-+newSV_type|5.009005||p
-+newSVhek||5.009003|
-+newSViv|||
-+newSVnv|||
-+newSVpvf_nocontext|||vn
-+newSVpvf||5.004000|v
-+newSVpvn_flags|5.011000||p
-+newSVpvn_share|5.007001||p
-+newSVpvn_utf8|5.011000||p
-+newSVpvn|5.004050||p
-+newSVpvs_flags|5.011000||p
-+newSVpvs_share||5.009003|
-+newSVpvs|5.009003||p
-+newSVpv|||
-+newSVrv|||
-+newSVsv|||
-+newSVuv|5.006000||p
-+newSV|||
-+newTOKEN|||
-+newUNOP|||
-+newWHENOP||5.009003|
-+newWHILEOP||5.009003|
-+newXS_flags||5.009004|
-+newXSproto||5.006000|
-+newXS||5.006000|
-+new_collate||5.006000|
-+new_constant|||
-+new_ctype||5.006000|
-+new_he|||
-+new_logop|||
-+new_numeric||5.006000|
-+new_stackinfo||5.005000|
-+new_version||5.009000|
-+new_warnings_bitfield|||
-+next_symbol|||
-+nextargv|||
-+nextchar|||
-+ninstr|||
-+no_bareword_allowed|||
-+no_fh_allowed|||
-+no_op|||
-+not_a_number|||
-+nothreadhook||5.008000|
-+nuke_stacks|||
-+num_overflow|||n
-+offer_nice_chunk|||
-+oopsAV|||
-+oopsHV|||
-+op_clear|||
-+op_const_sv|||
-+op_dump||5.006000|
-+op_free|||
-+op_getmad_weak|||
-+op_getmad|||
-+op_null||5.007002|
-+op_refcnt_dec|||
-+op_refcnt_inc|||
-+op_refcnt_lock||5.009002|
-+op_refcnt_unlock||5.009002|
-+op_xmldump|||
-+open_script|||
-+pMY_CXT_|5.007003||p
-+pMY_CXT|5.007003||p
-+pTHX_|5.006000||p
-+pTHX|5.006000||p
-+packWARN|5.007003||p
-+pack_cat||5.007003|
-+pack_rec|||
-+package|||
-+packlist||5.008001|
-+pad_add_anon|||
-+pad_add_name|||
-+pad_alloc|||
-+pad_block_start|||
-+pad_check_dup|||
-+pad_compname_type|||
-+pad_findlex|||
-+pad_findmy|||
-+pad_fixup_inner_anons|||
-+pad_free|||
-+pad_leavemy|||
-+pad_new|||
-+pad_peg|||n
-+pad_push|||
-+pad_reset|||
-+pad_setsv|||
-+pad_sv||5.011000|
-+pad_swipe|||
-+pad_tidy|||
-+pad_undef|||
-+parse_body|||
-+parse_unicode_opts|||
-+parser_dup|||
-+parser_free|||
-+path_is_absolute|||n
-+peep|||
-+pending_Slabs_to_ro|||
-+perl_alloc_using|||n
-+perl_alloc|||n
-+perl_clone_using|||n
-+perl_clone|||n
-+perl_construct|||n
-+perl_destruct||5.007003|n
-+perl_free|||n
-+perl_parse||5.006000|n
-+perl_run|||n
-+pidgone|||
-+pm_description|||
-+pmflag|||
-+pmop_dump||5.006000|
-+pmop_xmldump|||
-+pmruntime|||
-+pmtrans|||
-+pop_scope|||
-+pregcomp||5.009005|
-+pregexec|||
-+pregfree2||5.011000|
-+pregfree|||
-+prepend_elem|||
-+prepend_madprops|||
-+printbuf|||
-+printf_nocontext|||vn
-+process_special_blocks|||
-+ptr_table_clear||5.009005|
-+ptr_table_fetch||5.009005|
-+ptr_table_find|||n
-+ptr_table_free||5.009005|
-+ptr_table_new||5.009005|
-+ptr_table_split||5.009005|
-+ptr_table_store||5.009005|
-+push_scope|||
-+put_byte|||
-+pv_display|5.006000||p
-+pv_escape|5.009004||p
-+pv_pretty|5.009004||p
-+pv_uni_display||5.007003|
-+qerror|||
-+qsortsvu|||
-+re_compile||5.009005|
-+re_croak2|||
-+re_dup_guts|||
-+re_intuit_start||5.009005|
-+re_intuit_string||5.006000|
-+readpipe_override|||
-+realloc||5.007002|n
-+reentrant_free|||
-+reentrant_init|||
-+reentrant_retry|||vn
-+reentrant_size|||
-+ref_array_or_hash|||
-+refcounted_he_chain_2hv|||
-+refcounted_he_fetch|||
-+refcounted_he_free|||
-+refcounted_he_new_common|||
-+refcounted_he_new|||
-+refcounted_he_value|||
-+refkids|||
-+refto|||
-+ref||5.011000|
-+reg_check_named_buff_matched|||
-+reg_named_buff_all||5.009005|
-+reg_named_buff_exists||5.009005|
-+reg_named_buff_fetch||5.009005|
-+reg_named_buff_firstkey||5.009005|
-+reg_named_buff_iter|||
-+reg_named_buff_nextkey||5.009005|
-+reg_named_buff_scalar||5.009005|
-+reg_named_buff|||
-+reg_namedseq|||
-+reg_node|||
-+reg_numbered_buff_fetch|||
-+reg_numbered_buff_length|||
-+reg_numbered_buff_store|||
-+reg_qr_package|||
-+reg_recode|||
-+reg_scan_name|||
-+reg_skipcomment|||
-+reg_temp_copy|||
-+reganode|||
-+regatom|||
-+regbranch|||
-+regclass_swash||5.009004|
-+regclass|||
-+regcppop|||
-+regcppush|||
-+regcurly|||n
-+regdump_extflags|||
-+regdump||5.005000|
-+regdupe_internal|||
-+regexec_flags||5.005000|
-+regfree_internal||5.009005|
-+reghop3|||n
-+reghop4|||n
-+reghopmaybe3|||n
-+reginclass|||
-+reginitcolors||5.006000|
-+reginsert|||
-+regmatch|||
-+regnext||5.005000|
-+regpiece|||
-+regpposixcc|||
-+regprop|||
-+regrepeat|||
-+regtail_study|||
-+regtail|||
-+regtry|||
-+reguni|||
-+regwhite|||n
-+reg|||
-+repeatcpy|||
-+report_evil_fh|||
-+report_uninit|||
-+require_pv||5.006000|
-+require_tie_mod|||
-+restore_magic|||
-+rninstr|||
-+rsignal_restore|||
-+rsignal_save|||
-+rsignal_state||5.004000|
-+rsignal||5.004000|
-+run_body|||
-+run_user_filter|||
-+runops_debug||5.005000|
-+runops_standard||5.005000|
-+rvpv_dup|||
-+rxres_free|||
-+rxres_restore|||
-+rxres_save|||
-+safesyscalloc||5.006000|n
-+safesysfree||5.006000|n
-+safesysmalloc||5.006000|n
-+safesysrealloc||5.006000|n
-+same_dirent|||
-+save_I16||5.004000|
-+save_I32|||
-+save_I8||5.006000|
-+save_adelete||5.011000|
-+save_aelem||5.004050|
-+save_alloc||5.006000|
-+save_aptr|||
-+save_ary|||
-+save_bool||5.008001|
-+save_clearsv|||
-+save_delete|||
-+save_destructor_x||5.006000|
-+save_destructor||5.006000|
-+save_freeop|||
-+save_freepv|||
-+save_freesv|||
-+save_generic_pvref||5.006001|
-+save_generic_svref||5.005030|
-+save_gp||5.004000|
-+save_hash|||
-+save_hek_flags|||n
-+save_helem_flags||5.011000|
-+save_helem||5.004050|
-+save_hints|||
-+save_hptr|||
-+save_int|||
-+save_item|||
-+save_iv||5.005000|
-+save_lines|||
-+save_list|||
-+save_long|||
-+save_magic|||
-+save_mortalizesv||5.007001|
-+save_nogv|||
-+save_op|||
-+save_padsv_and_mortalize||5.011000|
-+save_pptr|||
-+save_pushi32ptr|||
-+save_pushptri32ptr|||
-+save_pushptrptr|||
-+save_pushptr||5.011000|
-+save_re_context||5.006000|
-+save_scalar_at|||
-+save_scalar|||
-+save_set_svflags||5.009000|
-+save_shared_pvref||5.007003|
-+save_sptr|||
-+save_svref|||
-+save_vptr||5.006000|
-+savepvn|||
-+savepvs||5.009003|
-+savepv|||
-+savesharedpvn||5.009005|
-+savesharedpv||5.007003|
-+savestack_grow_cnt||5.008001|
-+savestack_grow|||
-+savesvpv||5.009002|
-+sawparens|||
-+scalar_mod_type|||n
-+scalarboolean|||
-+scalarkids|||
-+scalarseq|||
-+scalarvoid|||
-+scalar|||
-+scan_bin||5.006000|
-+scan_commit|||
-+scan_const|||
-+scan_formline|||
-+scan_heredoc|||
-+scan_hex|||
-+scan_ident|||
-+scan_inputsymbol|||
-+scan_num||5.007001|
-+scan_oct|||
-+scan_pat|||
-+scan_str|||
-+scan_subst|||
-+scan_trans|||
-+scan_version||5.009001|
-+scan_vstring||5.009005|
-+scan_word|||
-+scope|||
-+screaminstr||5.005000|
-+search_const|||
-+seed||5.008001|
-+sequence_num|||
-+sequence_tail|||
-+sequence|||
-+set_context||5.006000|n
-+set_numeric_local||5.006000|
-+set_numeric_radix||5.006000|
-+set_numeric_standard||5.006000|
-+setdefout|||
-+share_hek_flags|||
-+share_hek||5.004000|
-+si_dup|||
-+sighandler|||n
-+simplify_sort|||
-+skipspace0|||
-+skipspace1|||
-+skipspace2|||
-+skipspace|||
-+softref2xv|||
-+sortcv_stacked|||
-+sortcv_xsub|||
-+sortcv|||
-+sortsv_flags||5.009003|
-+sortsv||5.007003|
-+space_join_names_mortal|||
-+ss_dup|||
-+stack_grow|||
-+start_force|||
-+start_glob|||
-+start_subparse||5.004000|
-+stashpv_hvname_match||5.011000|
-+stdize_locale|||
-+store_cop_label|||
-+strEQ|||
-+strGE|||
-+strGT|||
-+strLE|||
-+strLT|||
-+strNE|||
-+str_to_version||5.006000|
-+strip_return|||
-+strnEQ|||
-+strnNE|||
-+study_chunk|||
-+sub_crush_depth|||
-+sublex_done|||
-+sublex_push|||
-+sublex_start|||
-+sv_2bool|||
-+sv_2cv|||
-+sv_2io|||
-+sv_2iuv_common|||
-+sv_2iuv_non_preserve|||
-+sv_2iv_flags||5.009001|
-+sv_2iv|||
-+sv_2mortal|||
-+sv_2num|||
-+sv_2nv|||
-+sv_2pv_flags|5.007002||p
-+sv_2pv_nolen|5.006000||p
-+sv_2pvbyte_nolen|5.006000||p
-+sv_2pvbyte|5.006000||p
-+sv_2pvutf8_nolen||5.006000|
-+sv_2pvutf8||5.006000|
-+sv_2pv|||
-+sv_2uv_flags||5.009001|
-+sv_2uv|5.004000||p
-+sv_add_arena|||
-+sv_add_backref|||
-+sv_backoff|||
-+sv_bless|||
-+sv_cat_decode||5.008001|
-+sv_catpv_mg|5.004050||p
-+sv_catpvf_mg_nocontext|||pvn
-+sv_catpvf_mg|5.006000|5.004000|pv
-+sv_catpvf_nocontext|||vn
-+sv_catpvf||5.004000|v
-+sv_catpvn_flags||5.007002|
-+sv_catpvn_mg|5.004050||p
-+sv_catpvn_nomg|5.007002||p
-+sv_catpvn|||
-+sv_catpvs|5.009003||p
-+sv_catpv|||
-+sv_catsv_flags||5.007002|
-+sv_catsv_mg|5.004050||p
-+sv_catsv_nomg|5.007002||p
-+sv_catsv|||
-+sv_catxmlpvn|||
-+sv_catxmlsv|||
-+sv_chop|||
-+sv_clean_all|||
-+sv_clean_objs|||
-+sv_clear|||
-+sv_cmp_locale||5.004000|
-+sv_cmp|||
-+sv_collxfrm|||
-+sv_compile_2op||5.008001|
-+sv_copypv||5.007003|
-+sv_dec|||
-+sv_del_backref|||
-+sv_derived_from||5.004000|
-+sv_destroyable||5.010000|
-+sv_does||5.009004|
-+sv_dump|||
-+sv_dup_inc_multiple|||
-+sv_dup|||
-+sv_eq|||
-+sv_exp_grow|||
-+sv_force_normal_flags||5.007001|
-+sv_force_normal||5.006000|
-+sv_free2|||
-+sv_free_arenas|||
-+sv_free|||
-+sv_gets||5.004000|
-+sv_grow|||
-+sv_i_ncmp|||
-+sv_inc|||
-+sv_insert_flags||5.011000|
-+sv_insert|||
-+sv_isa|||
-+sv_isobject|||
-+sv_iv||5.005000|
-+sv_kill_backrefs|||
-+sv_len_utf8||5.006000|
-+sv_len|||
-+sv_magic_portable|5.011000|5.004000|p
-+sv_magicext||5.007003|
-+sv_magic|||
-+sv_mortalcopy|||
-+sv_ncmp|||
-+sv_newmortal|||
-+sv_newref|||
-+sv_nolocking||5.007003|
-+sv_nosharing||5.007003|
-+sv_nounlocking|||
-+sv_nv||5.005000|
-+sv_peek||5.005000|
-+sv_pos_b2u_midway|||
-+sv_pos_b2u||5.006000|
-+sv_pos_u2b_cached|||
-+sv_pos_u2b_forwards|||n
-+sv_pos_u2b_midway|||n
-+sv_pos_u2b||5.006000|
-+sv_pvbyten_force||5.006000|
-+sv_pvbyten||5.006000|
-+sv_pvbyte||5.006000|
-+sv_pvn_force_flags|5.007002||p
-+sv_pvn_force|||
-+sv_pvn_nomg|5.007003|5.005000|p
-+sv_pvn||5.005000|
-+sv_pvutf8n_force||5.006000|
-+sv_pvutf8n||5.006000|
-+sv_pvutf8||5.006000|
-+sv_pv||5.006000|
-+sv_recode_to_utf8||5.007003|
-+sv_reftype|||
-+sv_release_COW|||
-+sv_replace|||
-+sv_report_used|||
-+sv_reset|||
-+sv_rvweaken||5.006000|
-+sv_setiv_mg|5.004050||p
-+sv_setiv|||
-+sv_setnv_mg|5.006000||p
-+sv_setnv|||
-+sv_setpv_mg|5.004050||p
-+sv_setpvf_mg_nocontext|||pvn
-+sv_setpvf_mg|5.006000|5.004000|pv
-+sv_setpvf_nocontext|||vn
-+sv_setpvf||5.004000|v
-+sv_setpviv_mg||5.008001|
-+sv_setpviv||5.008001|
-+sv_setpvn_mg|5.004050||p
-+sv_setpvn|||
-+sv_setpvs|5.009004||p
-+sv_setpv|||
-+sv_setref_iv|||
-+sv_setref_nv|||
-+sv_setref_pvn|||
-+sv_setref_pv|||
-+sv_setref_uv||5.007001|
-+sv_setsv_cow|||
-+sv_setsv_flags||5.007002|
-+sv_setsv_mg|5.004050||p
-+sv_setsv_nomg|5.007002||p
-+sv_setsv|||
-+sv_setuv_mg|5.004050||p
-+sv_setuv|5.004000||p
-+sv_tainted||5.004000|
-+sv_taint||5.004000|
-+sv_true||5.005000|
-+sv_unglob|||
-+sv_uni_display||5.007003|
-+sv_unmagic|||
-+sv_unref_flags||5.007001|
-+sv_unref|||
-+sv_untaint||5.004000|
-+sv_upgrade|||
-+sv_usepvn_flags||5.009004|
-+sv_usepvn_mg|5.004050||p
-+sv_usepvn|||
-+sv_utf8_decode||5.006000|
-+sv_utf8_downgrade||5.006000|
-+sv_utf8_encode||5.006000|
-+sv_utf8_upgrade_flags_grow||5.011000|
-+sv_utf8_upgrade_flags||5.007002|
-+sv_utf8_upgrade_nomg||5.007002|
-+sv_utf8_upgrade||5.007001|
-+sv_uv|5.005000||p
-+sv_vcatpvf_mg|5.006000|5.004000|p
-+sv_vcatpvfn||5.004000|
-+sv_vcatpvf|5.006000|5.004000|p
-+sv_vsetpvf_mg|5.006000|5.004000|p
-+sv_vsetpvfn||5.004000|
-+sv_vsetpvf|5.006000|5.004000|p
-+sv_xmlpeek|||
-+svtype|||
-+swallow_bom|||
-+swap_match_buff|||
-+swash_fetch||5.007002|
-+swash_get|||
-+swash_init||5.006000|
-+sys_init3||5.010000|n
-+sys_init||5.010000|n
-+sys_intern_clear|||
-+sys_intern_dup|||
-+sys_intern_init|||
-+sys_term||5.010000|n
-+taint_env|||
-+taint_proper|||
-+tmps_grow||5.006000|
-+toLOWER|||
-+toUPPER|||
-+to_byte_substr|||
-+to_uni_fold||5.007003|
-+to_uni_lower_lc||5.006000|
-+to_uni_lower||5.007003|
-+to_uni_title_lc||5.006000|
-+to_uni_title||5.007003|
-+to_uni_upper_lc||5.006000|
-+to_uni_upper||5.007003|
-+to_utf8_case||5.007003|
-+to_utf8_fold||5.007003|
-+to_utf8_lower||5.007003|
-+to_utf8_substr|||
-+to_utf8_title||5.007003|
-+to_utf8_upper||5.007003|
-+token_free|||
-+token_getmad|||
-+tokenize_use|||
-+tokeq|||
-+tokereport|||
-+too_few_arguments|||
-+too_many_arguments|||
-+uiv_2buf|||n
-+unlnk|||
-+unpack_rec|||
-+unpack_str||5.007003|
-+unpackstring||5.008001|
-+unshare_hek_or_pvn|||
-+unshare_hek|||
-+unsharepvn||5.004000|
-+unwind_handler_stack|||
-+update_debugger_info|||
-+upg_version||5.009005|
-+usage|||
-+utf16_to_utf8_reversed||5.006001|
-+utf16_to_utf8||5.006001|
-+utf8_distance||5.006000|
-+utf8_hop||5.006000|
-+utf8_length||5.007001|
-+utf8_mg_pos_cache_update|||
-+utf8_to_bytes||5.006001|
-+utf8_to_uvchr||5.007001|
-+utf8_to_uvuni||5.007001|
-+utf8n_to_uvchr|||
-+utf8n_to_uvuni||5.007001|
-+utilize|||
-+uvchr_to_utf8_flags||5.007003|
-+uvchr_to_utf8|||
-+uvuni_to_utf8_flags||5.007003|
-+uvuni_to_utf8||5.007001|
-+validate_suid|||
-+varname|||
-+vcmp||5.009000|
-+vcroak||5.006000|
-+vdeb||5.007003|
-+vdie_common|||
-+vdie_croak_common|||
-+vdie|||
-+vform||5.006000|
-+visit|||
-+vivify_defelem|||
-+vivify_ref|||
-+vload_module|5.006000||p
-+vmess||5.006000|
-+vnewSVpvf|5.006000|5.004000|p
-+vnormal||5.009002|
-+vnumify||5.009000|
-+vstringify||5.009000|
-+vverify||5.009003|
-+vwarner||5.006000|
-+vwarn||5.006000|
-+wait4pid|||
-+warn_nocontext|||vn
-+warner_nocontext|||vn
-+warner|5.006000|5.004000|pv
-+warn|||v
-+watch|||
-+whichsig|||
-+write_no_mem|||
-+write_to_stderr|||
-+xmldump_all|||
-+xmldump_attr|||
-+xmldump_eval|||
-+xmldump_form|||
-+xmldump_indent|||v
-+xmldump_packsubs|||
-+xmldump_sub|||
-+xmldump_vindent|||
-+yyerror|||
-+yylex|||
-+yyparse|||
-+yywarn|||
-+);
-+
-+if (exists $opt{'list-unsupported'}) {
-+ my $f;
-+ for $f (sort { lc $a cmp lc $b } keys %API) {
-+ next unless $API{$f}{todo};
-+ print "$f ", '.'x(40-length($f)), " ", format_version($API{$f}{todo}), "\n";
-+ }
-+ exit 0;
-+}
-+
-+# Scan for possible replacement candidates
-+
-+my(%replace, %need, %hints, %warnings, %depends);
-+my $replace = 0;
-+my($hint, $define, $function);
-+
-+sub find_api
-+{
-+ my $code = shift;
-+ $code =~ s{
-+ / (?: \*[^*]*\*+(?:[^$ccs][^*]*\*+)* / | /[^\r\n]*)
-+ | "[^"\\]*(?:\\.[^"\\]*)*"
-+ | '[^'\\]*(?:\\.[^'\\]*)*' }{}egsx;
-+ grep { exists $API{$_} } $code =~ /(\w+)/mg;
-+}
-+
-+while (<DATA>) {
-+ if ($hint) {
-+ my $h = $hint->[0] eq 'Hint' ? \%hints : \%warnings;
-+ if (m{^\s*\*\s(.*?)\s*$}) {
-+ for (@{$hint->[1]}) {
-+ $h->{$_} ||= ''; # suppress warning with older perls
-+ $h->{$_} .= "$1\n";
-+ }
-+ }
-+ else { undef $hint }
-+ }
-+
-+ $hint = [$1, [split /,?\s+/, $2]]
-+ if m{^\s*$rccs\s+(Hint|Warning):\s+(\w+(?:,?\s+\w+)*)\s*$};
-+
-+ if ($define) {
-+ if ($define->[1] =~ /\\$/) {
-+ $define->[1] .= $_;
-+ }
-+ else {
-+ if (exists $API{$define->[0]} && $define->[1] !~ /^DPPP_\(/) {
-+ my @n = find_api($define->[1]);
-+ push @{$depends{$define->[0]}}, @n if @n
-+ }
-+ undef $define;
-+ }
-+ }
-+
-+ $define = [$1, $2] if m{^\s*#\s*define\s+(\w+)(?:\([^)]*\))?\s+(.*)};
-+
-+ if ($function) {
-+ if (/^}/) {
-+ if (exists $API{$function->[0]}) {
-+ my @n = find_api($function->[1]);
-+ push @{$depends{$function->[0]}}, @n if @n
-+ }
-+ undef $function;
-+ }
-+ else {
-+ $function->[1] .= $_;
-+ }
-+ }
-+
-+ $function = [$1, ''] if m{^DPPP_\(my_(\w+)\)};
-+
-+ $replace = $1 if m{^\s*$rccs\s+Replace:\s+(\d+)\s+$rcce\s*$};
-+ $replace{$2} = $1 if $replace and m{^\s*#\s*define\s+(\w+)(?:\([^)]*\))?\s+(\w+)};
-+ $replace{$2} = $1 if m{^\s*#\s*define\s+(\w+)(?:\([^)]*\))?\s+(\w+).*$rccs\s+Replace\s+$rcce};
-+ $replace{$1} = $2 if m{^\s*$rccs\s+Replace (\w+) with (\w+)\s+$rcce\s*$};
-+
-+ if (m{^\s*$rccs\s+(\w+(\s*,\s*\w+)*)\s+depends\s+on\s+(\w+(\s*,\s*\w+)*)\s+$rcce\s*$}) {
-+ my @deps = map { s/\s+//g; $_ } split /,/, $3;
-+ my $d;
-+ for $d (map { s/\s+//g; $_ } split /,/, $1) {
-+ push @{$depends{$d}}, @deps;
-+ }
-+ }
-+
-+ $need{$1} = 1 if m{^#if\s+defined\(NEED_(\w+)(?:_GLOBAL)?\)};
-+}
-+
-+for (values %depends) {
-+ my %s;
-+ $_ = [sort grep !$s{$_}++, @$_];
-+}
-+
-+if (exists $opt{'api-info'}) {
-+ my $f;
-+ my $count = 0;
-+ my $match = $opt{'api-info'} =~ m!^/(.*)/$! ? $1 : "^\Q$opt{'api-info'}\E\$";
-+ for $f (sort { lc $a cmp lc $b } keys %API) {
-+ next unless $f =~ /$match/;
-+ print "\n=== $f ===\n\n";
-+ my $info = 0;
-+ if ($API{$f}{base} || $API{$f}{todo}) {
-+ my $base = format_version($API{$f}{base} || $API{$f}{todo});
-+ print "Supported at least starting from perl-$base.\n";
-+ $info++;
-+ }
-+ if ($API{$f}{provided}) {
-+ my $todo = $API{$f}{todo} ? format_version($API{$f}{todo}) : "5.003";
-+ print "Support by $ppport provided back to perl-$todo.\n";
-+ print "Support needs to be explicitly requested by NEED_$f.\n" if exists $need{$f};
-+ print "Depends on: ", join(', ', @{$depends{$f}}), ".\n" if exists $depends{$f};
-+ print "\n$hints{$f}" if exists $hints{$f};
-+ print "\nWARNING:\n$warnings{$f}" if exists $warnings{$f};
-+ $info++;
-+ }
-+ print "No portability information available.\n" unless $info;
-+ $count++;
-+ }
-+ $count or print "Found no API matching '$opt{'api-info'}'.";
-+ print "\n";
-+ exit 0;
-+}
-+
-+if (exists $opt{'list-provided'}) {
-+ my $f;
-+ for $f (sort { lc $a cmp lc $b } keys %API) {
-+ next unless $API{$f}{provided};
-+ my @flags;
-+ push @flags, 'explicit' if exists $need{$f};
-+ push @flags, 'depend' if exists $depends{$f};
-+ push @flags, 'hint' if exists $hints{$f};
-+ push @flags, 'warning' if exists $warnings{$f};
-+ my $flags = @flags ? ' ['.join(', ', @flags).']' : '';
-+ print "$f$flags\n";
-+ }
-+ exit 0;
-+}
-+
-+my @files;
-+my @srcext = qw( .xs .c .h .cc .cpp -c.inc -xs.inc );
-+my $srcext = join '|', map { quotemeta $_ } @srcext;
-+
-+if (@ARGV) {
-+ my %seen;
-+ for (@ARGV) {
-+ if (-e) {
-+ if (-f) {
-+ push @files, $_ unless $seen{$_}++;
-+ }
-+ else { warn "'$_' is not a file.\n" }
-+ }
-+ else {
-+ my @new = grep { -f } glob $_
-+ or warn "'$_' does not exist.\n";
-+ push @files, grep { !$seen{$_}++ } @new;
-+ }
-+ }
-+}
-+else {
-+ eval {
-+ require File::Find;
-+ File::Find::find(sub {
-+ $File::Find::name =~ /($srcext)$/i
-+ and push @files, $File::Find::name;
-+ }, '.');
-+ };
-+ if ($@) {
-+ @files = map { glob "*$_" } @srcext;
-+ }
-+}
-+
-+if (!@ARGV || $opt{filter}) {
-+ my(@in, @out);
-+ my %xsc = map { /(.*)\.xs$/ ? ("$1.c" => 1, "$1.cc" => 1) : () } @files;
-+ for (@files) {
-+ my $out = exists $xsc{$_} || /\b\Q$ppport\E$/i || !/($srcext)$/i;
-+ push @{ $out ? \@out : \@in }, $_;
-+ }
-+ if (@ARGV && @out) {
-+ warning("Skipping the following files (use --nofilter to avoid this):\n| ", join "\n| ", @out);
-+ }
-+ @files = @in;
-+}
-+
-+die "No input files given!\n" unless @files;
-+
-+my(%files, %global, %revreplace);
-+%revreplace = reverse %replace;
-+my $filename;
-+my $patch_opened = 0;
-+
-+for $filename (@files) {
-+ unless (open IN, "<$filename") {
-+ warn "Unable to read from $filename: $!\n";
-+ next;
-+ }
-+
-+ info("Scanning $filename ...");
-+
-+ my $c = do { local $/; <IN> };
-+ close IN;
-+
-+ my %file = (orig => $c, changes => 0);
-+
-+ # Temporarily remove C/XS comments and strings from the code
-+ my @ccom;
-+
-+ $c =~ s{
-+ ( ^$HS*\#$HS*include\b[^\r\n]+\b(?:\Q$ppport\E|XSUB\.h)\b[^\r\n]*
-+ | ^$HS*\#$HS*(?:define|elif|if(?:def)?)\b[^\r\n]* )
-+ | ( ^$HS*\#[^\r\n]*
-+ | "[^"\\]*(?:\\.[^"\\]*)*"
-+ | '[^'\\]*(?:\\.[^'\\]*)*'
-+ | / (?: \*[^*]*\*+(?:[^$ccs][^*]*\*+)* / | /[^\r\n]* ) )
-+ }{ defined $2 and push @ccom, $2;
-+ defined $1 ? $1 : "$ccs$#ccom$cce" }mgsex;
-+
-+ $file{ccom} = \@ccom;
-+ $file{code} = $c;
-+ $file{has_inc_ppport} = $c =~ /^$HS*#$HS*include[^\r\n]+\b\Q$ppport\E\b/m;
-+
-+ my $func;
-+
-+ for $func (keys %API) {
-+ my $match = $func;
-+ $match .= "|$revreplace{$func}" if exists $revreplace{$func};
-+ if ($c =~ /\b(?:Perl_)?($match)\b/) {
-+ $file{uses_replace}{$1}++ if exists $revreplace{$func} && $1 eq $revreplace{$func};
-+ $file{uses_Perl}{$func}++ if $c =~ /\bPerl_$func\b/;
-+ if (exists $API{$func}{provided}) {
-+ $file{uses_provided}{$func}++;
-+ if (!exists $API{$func}{base} || $API{$func}{base} > $opt{'compat-version'}) {
-+ $file{uses}{$func}++;
-+ my @deps = rec_depend($func);
-+ if (@deps) {
-+ $file{uses_deps}{$func} = \@deps;
-+ for (@deps) {
-+ $file{uses}{$_} = 0 unless exists $file{uses}{$_};
-+ }
-+ }
-+ for ($func, @deps) {
-+ $file{needs}{$_} = 'static' if exists $need{$_};
-+ }
-+ }
-+ }
-+ if (exists $API{$func}{todo} && $API{$func}{todo} > $opt{'compat-version'}) {
-+ if ($c =~ /\b$func\b/) {
-+ $file{uses_todo}{$func}++;
-+ }
-+ }
-+ }
-+ }
-+
-+ while ($c =~ /^$HS*#$HS*define$HS+(NEED_(\w+?)(_GLOBAL)?)\b/mg) {
-+ if (exists $need{$2}) {
-+ $file{defined $3 ? 'needed_global' : 'needed_static'}{$2}++;
-+ }
-+ else { warning("Possibly wrong #define $1 in $filename") }
-+ }
-+
-+ for (qw(uses needs uses_todo needed_global needed_static)) {
-+ for $func (keys %{$file{$_}}) {
-+ push @{$global{$_}{$func}}, $filename;
-+ }
-+ }
-+
-+ $files{$filename} = \%file;
-+}
-+
-+# Globally resolve NEED_'s
-+my $need;
-+for $need (keys %{$global{needs}}) {
-+ if (@{$global{needs}{$need}} > 1) {
-+ my @targets = @{$global{needs}{$need}};
-+ my @t = grep $files{$_}{needed_global}{$need}, @targets;
-+ @targets = @t if @t;
-+ @t = grep /\.xs$/i, @targets;
-+ @targets = @t if @t;
-+ my $target = shift @targets;
-+ $files{$target}{needs}{$need} = 'global';
-+ for (@{$global{needs}{$need}}) {
-+ $files{$_}{needs}{$need} = 'extern' if $_ ne $target;
-+ }
-+ }
-+}
-+
-+for $filename (@files) {
-+ exists $files{$filename} or next;
-+
-+ info("=== Analyzing $filename ===");
-+
-+ my %file = %{$files{$filename}};
-+ my $func;
-+ my $c = $file{code};
-+ my $warnings = 0;
-+
-+ for $func (sort keys %{$file{uses_Perl}}) {
-+ if ($API{$func}{varargs}) {
-+ unless ($API{$func}{nothxarg}) {
-+ my $changes = ($c =~ s{\b(Perl_$func\s*\(\s*)(?!aTHX_?)(\)|[^\s)]*\))}
-+ { $1 . ($2 eq ')' ? 'aTHX' : 'aTHX_ ') . $2 }ge);
-+ if ($changes) {
-+ warning("Doesn't pass interpreter argument aTHX to Perl_$func");
-+ $file{changes} += $changes;
-+ }
-+ }
-+ }
-+ else {
-+ warning("Uses Perl_$func instead of $func");
-+ $file{changes} += ($c =~ s{\bPerl_$func(\s*)\((\s*aTHX_?)?\s*}
-+ {$func$1(}g);
-+ }
-+ }
-+
-+ for $func (sort keys %{$file{uses_replace}}) {
-+ warning("Uses $func instead of $replace{$func}");
-+ $file{changes} += ($c =~ s/\b$func\b/$replace{$func}/g);
-+ }
-+
-+ for $func (sort keys %{$file{uses_provided}}) {
-+ if ($file{uses}{$func}) {
-+ if (exists $file{uses_deps}{$func}) {
-+ diag("Uses $func, which depends on ", join(', ', @{$file{uses_deps}{$func}}));
-+ }
-+ else {
-+ diag("Uses $func");
-+ }
-+ }
-+ $warnings += hint($func);
-+ }
-+
-+ unless ($opt{quiet}) {
-+ for $func (sort keys %{$file{uses_todo}}) {
-+ print "*** WARNING: Uses $func, which may not be portable below perl ",
-+ format_version($API{$func}{todo}), ", even with '$ppport'\n";
-+ $warnings++;
-+ }
-+ }
-+
-+ for $func (sort keys %{$file{needed_static}}) {
-+ my $message = '';
-+ if (not exists $file{uses}{$func}) {
-+ $message = "No need to define NEED_$func if $func is never used";
-+ }
-+ elsif (exists $file{needs}{$func} && $file{needs}{$func} ne 'static') {
-+ $message = "No need to define NEED_$func when already needed globally";
-+ }
-+ if ($message) {
-+ diag($message);
-+ $file{changes} += ($c =~ s/^$HS*#$HS*define$HS+NEED_$func\b.*$LF//mg);
-+ }
-+ }
-+
-+ for $func (sort keys %{$file{needed_global}}) {
-+ my $message = '';
-+ if (not exists $global{uses}{$func}) {
-+ $message = "No need to define NEED_${func}_GLOBAL if $func is never used";
-+ }
-+ elsif (exists $file{needs}{$func}) {
-+ if ($file{needs}{$func} eq 'extern') {
-+ $message = "No need to define NEED_${func}_GLOBAL when already needed globally";
-+ }
-+ elsif ($file{needs}{$func} eq 'static') {
-+ $message = "No need to define NEED_${func}_GLOBAL when only used in this file";
-+ }
-+ }
-+ if ($message) {
-+ diag($message);
-+ $file{changes} += ($c =~ s/^$HS*#$HS*define$HS+NEED_${func}_GLOBAL\b.*$LF//mg);
-+ }
-+ }
-+
-+ $file{needs_inc_ppport} = keys %{$file{uses}};
-+
-+ if ($file{needs_inc_ppport}) {
-+ my $pp = '';
-+
-+ for $func (sort keys %{$file{needs}}) {
-+ my $type = $file{needs}{$func};
-+ next if $type eq 'extern';
-+ my $suffix = $type eq 'global' ? '_GLOBAL' : '';
-+ unless (exists $file{"needed_$type"}{$func}) {
-+ if ($type eq 'global') {
-+ diag("Files [@{$global{needs}{$func}}] need $func, adding global request");
-+ }
-+ else {
-+ diag("File needs $func, adding static request");
-+ }
-+ $pp .= "#define NEED_$func$suffix\n";
-+ }
-+ }
-+
-+ if ($pp && ($c =~ s/^(?=$HS*#$HS*define$HS+NEED_\w+)/$pp/m)) {
-+ $pp = '';
-+ $file{changes}++;
-+ }
-+
-+ unless ($file{has_inc_ppport}) {
-+ diag("Needs to include '$ppport'");
-+ $pp .= qq(#include "$ppport"\n)
-+ }
-+
-+ if ($pp) {
-+ $file{changes} += ($c =~ s/^($HS*#$HS*define$HS+NEED_\w+.*?)^/$1$pp/ms)
-+ || ($c =~ s/^(?=$HS*#$HS*include.*\Q$ppport\E)/$pp/m)
-+ || ($c =~ s/^($HS*#$HS*include.*XSUB.*\s*?)^/$1$pp/m)
-+ || ($c =~ s/^/$pp/);
-+ }
-+ }
-+ else {
-+ if ($file{has_inc_ppport}) {
-+ diag("No need to include '$ppport'");
-+ $file{changes} += ($c =~ s/^$HS*?#$HS*include.*\Q$ppport\E.*?$LF//m);
-+ }
-+ }
-+
-+ # put back in our C comments
-+ my $ix;
-+ my $cppc = 0;
-+ my @ccom = @{$file{ccom}};
-+ for $ix (0 .. $#ccom) {
-+ if (!$opt{cplusplus} && $ccom[$ix] =~ s!^//!!) {
-+ $cppc++;
-+ $file{changes} += $c =~ s/$rccs$ix$rcce/$ccs$ccom[$ix] $cce/;
-+ }
-+ else {
-+ $c =~ s/$rccs$ix$rcce/$ccom[$ix]/;
-+ }
-+ }
-+
-+ if ($cppc) {
-+ my $s = $cppc != 1 ? 's' : '';
-+ warning("Uses $cppc C++ style comment$s, which is not portable");
-+ }
-+
-+ my $s = $warnings != 1 ? 's' : '';
-+ my $warn = $warnings ? " ($warnings warning$s)" : '';
-+ info("Analysis completed$warn");
-+
-+ if ($file{changes}) {
-+ if (exists $opt{copy}) {
-+ my $newfile = "$filename$opt{copy}";
-+ if (-e $newfile) {
-+ error("'$newfile' already exists, refusing to write copy of '$filename'");
-+ }
-+ else {
-+ local *F;
-+ if (open F, ">$newfile") {
-+ info("Writing copy of '$filename' with changes to '$newfile'");
-+ print F $c;
-+ close F;
-+ }
-+ else {
-+ error("Cannot open '$newfile' for writing: $!");
-+ }
-+ }
-+ }
-+ elsif (exists $opt{patch} || $opt{changes}) {
-+ if (exists $opt{patch}) {
-+ unless ($patch_opened) {
-+ if (open PATCH, ">$opt{patch}") {
-+ $patch_opened = 1;
-+ }
-+ else {
-+ error("Cannot open '$opt{patch}' for writing: $!");
-+ delete $opt{patch};
-+ $opt{changes} = 1;
-+ goto fallback;
-+ }
-+ }
-+ mydiff(\*PATCH, $filename, $c);
-+ }
-+ else {
-+fallback:
-+ info("Suggested changes:");
-+ mydiff(\*STDOUT, $filename, $c);
-+ }
-+ }
-+ else {
-+ my $s = $file{changes} == 1 ? '' : 's';
-+ info("$file{changes} potentially required change$s detected");
-+ }
-+ }
-+ else {
-+ info("Looks good");
-+ }
-+}
-+
-+close PATCH if $patch_opened;
-+
-+exit 0;
-+
-+
-+sub try_use { eval "use @_;"; return $@ eq '' }
-+
-+sub mydiff
-+{
-+ local *F = shift;
-+ my($file, $str) = @_;
-+ my $diff;
-+
-+ if (exists $opt{diff}) {
-+ $diff = run_diff($opt{diff}, $file, $str);
-+ }
-+
-+ if (!defined $diff and try_use('Text::Diff')) {
-+ $diff = Text::Diff::diff($file, \$str, { STYLE => 'Unified' });
-+ $diff = <<HEADER . $diff;
-+--- $file
-++++ $file.patched
-+HEADER
-+ }
-+
-+ if (!defined $diff) {
-+ $diff = run_diff('diff -u', $file, $str);
-+ }
-+
-+ if (!defined $diff) {
-+ $diff = run_diff('diff', $file, $str);
-+ }
-+
-+ if (!defined $diff) {
-+ error("Cannot generate a diff. Please install Text::Diff or use --copy.");
-+ return;
-+ }
-+
-+ print F $diff;
-+}
-+
-+sub run_diff
-+{
-+ my($prog, $file, $str) = @_;
-+ my $tmp = 'dppptemp';
-+ my $suf = 'aaa';
-+ my $diff = '';
-+ local *F;
-+
-+ while (-e "$tmp.$suf") { $suf++ }
-+ $tmp = "$tmp.$suf";
-+
-+ if (open F, ">$tmp") {
-+ print F $str;
-+ close F;
-+
-+ if (open F, "$prog $file $tmp |") {
-+ while (<F>) {
-+ s/\Q$tmp\E/$file.patched/;
-+ $diff .= $_;
-+ }
-+ close F;
-+ unlink $tmp;
-+ return $diff;
-+ }
-+
-+ unlink $tmp;
-+ }
-+ else {
-+ error("Cannot open '$tmp' for writing: $!");
-+ }
-+
-+ return undef;
-+}
-+
-+sub rec_depend
-+{
-+ my($func, $seen) = @_;
-+ return () unless exists $depends{$func};
-+ $seen = {%{$seen||{}}};
-+ return () if $seen->{$func}++;
-+ my %s;
-+ grep !$s{$_}++, map { ($_, rec_depend($_, $seen)) } @{$depends{$func}};
-+}
-+
-+sub parse_version
-+{
-+ my $ver = shift;
-+
-+ if ($ver =~ /^(\d+)\.(\d+)\.(\d+)$/) {
-+ return ($1, $2, $3);
-+ }
-+ elsif ($ver !~ /^\d+\.[\d_]+$/) {
-+ die "cannot parse version '$ver'\n";
-+ }
-+
-+ $ver =~ s/_//g;
-+ $ver =~ s/$/000000/;
-+
-+ my($r,$v,$s) = $ver =~ /(\d+)\.(\d{3})(\d{3})/;
-+
-+ $v = int $v;
-+ $s = int $s;
-+
-+ if ($r < 5 || ($r == 5 && $v < 6)) {
-+ if ($s % 10) {
-+ die "cannot parse version '$ver'\n";
-+ }
-+ }
-+
-+ return ($r, $v, $s);
-+}
-+
-+sub format_version
-+{
-+ my $ver = shift;
-+
-+ $ver =~ s/$/000000/;
-+ my($r,$v,$s) = $ver =~ /(\d+)\.(\d{3})(\d{3})/;
-+
-+ $v = int $v;
-+ $s = int $s;
-+
-+ if ($r < 5 || ($r == 5 && $v < 6)) {
-+ if ($s % 10) {
-+ die "invalid version '$ver'\n";
-+ }
-+ $s /= 10;
-+
-+ $ver = sprintf "%d.%03d", $r, $v;
-+ $s > 0 and $ver .= sprintf "_%02d", $s;
-+
-+ return $ver;
-+ }
-+
-+ return sprintf "%d.%d.%d", $r, $v, $s;
-+}
-+
-+sub info
-+{
-+ $opt{quiet} and return;
-+ print @_, "\n";
-+}
-+
-+sub diag
-+{
-+ $opt{quiet} and return;
-+ $opt{diag} and print @_, "\n";
-+}
-+
-+sub warning
-+{
-+ $opt{quiet} and return;
-+ print "*** ", @_, "\n";
-+}
-+
-+sub error
-+{
-+ print "*** ERROR: ", @_, "\n";
-+}
-+
-+my %given_hints;
-+my %given_warnings;
-+sub hint
-+{
-+ $opt{quiet} and return;
-+ my $func = shift;
-+ my $rv = 0;
-+ if (exists $warnings{$func} && !$given_warnings{$func}++) {
-+ my $warn = $warnings{$func};
-+ $warn =~ s!^!*** !mg;
-+ print "*** WARNING: $func\n", $warn;
-+ $rv++;
-+ }
-+ if ($opt{hints} && exists $hints{$func} && !$given_hints{$func}++) {
-+ my $hint = $hints{$func};
-+ $hint =~ s/^/ /mg;
-+ print " --- hint for $func ---\n", $hint;
-+ }
-+ $rv;
-+}
-+
-+sub usage
-+{
-+ my($usage) = do { local(@ARGV,$/)=($0); <> } =~ /^=head\d$HS+SYNOPSIS\s*^(.*?)\s*^=/ms;
-+ my %M = ( 'I' => '*' );
-+ $usage =~ s/^\s*perl\s+\S+/$^X $0/;
-+ $usage =~ s/([A-Z])<([^>]+)>/$M{$1}$2$M{$1}/g;
-+
-+ print <<ENDUSAGE;
-+
-+Usage: $usage
-+
-+See perldoc $0 for details.
-+
-+ENDUSAGE
-+
-+ exit 2;
-+}
-+
-+sub strip
-+{
-+ my $self = do { local(@ARGV,$/)=($0); <> };
-+ my($copy) = $self =~ /^=head\d\s+COPYRIGHT\s*^(.*?)^=\w+/ms;
-+ $copy =~ s/^(?=\S+)/ /gms;
-+ $self =~ s/^$HS+Do NOT edit.*?(?=^-)/$copy/ms;
-+ $self =~ s/^SKIP.*(?=^__DATA__)/SKIP
-+if (\@ARGV && \$ARGV[0] eq '--unstrip') {
-+ eval { require Devel::PPPort };
-+ \$@ and die "Cannot require Devel::PPPort, please install.\\n";
-+ if (eval \$Devel::PPPort::VERSION < $VERSION) {
-+ die "$0 was originally generated with Devel::PPPort $VERSION.\\n"
-+ . "Your Devel::PPPort is only version \$Devel::PPPort::VERSION.\\n"
-+ . "Please install a newer version, or --unstrip will not work.\\n";
-+ }
-+ Devel::PPPort::WriteFile(\$0);
-+ exit 0;
-+}
-+print <<END;
-+
-+Sorry, but this is a stripped version of \$0.
-+
-+To be able to use its original script and doc functionality,
-+please try to regenerate this file using:
-+
-+ \$^X \$0 --unstrip
-+
-+END
-+/ms;
-+ my($pl, $c) = $self =~ /(.*^__DATA__)(.*)/ms;
-+ $c =~ s{
-+ / (?: \*[^*]*\*+(?:[^$ccs][^*]*\*+)* / | /[^\r\n]*)
-+ | ( "[^"\\]*(?:\\.[^"\\]*)*"
-+ | '[^'\\]*(?:\\.[^'\\]*)*' )
-+ | ($HS+) }{ defined $2 ? ' ' : ($1 || '') }gsex;
-+ $c =~ s!\s+$!!mg;
-+ $c =~ s!^$LF!!mg;
-+ $c =~ s!^\s*#\s*!#!mg;
-+ $c =~ s!^\s+!!mg;
-+
-+ open OUT, ">$0" or die "cannot strip $0: $!\n";
-+ print OUT "$pl$c\n";
-+
-+ exit 0;
-+}
-+
-+__DATA__
-+*/
-+
-+#ifndef _P_P_PORTABILITY_H_
-+#define _P_P_PORTABILITY_H_
-+
-+#ifndef DPPP_NAMESPACE
-+# define DPPP_NAMESPACE DPPP_
-+#endif
-+
-+#define DPPP_CAT2(x,y) CAT2(x,y)
-+#define DPPP_(name) DPPP_CAT2(DPPP_NAMESPACE, name)
-+
-+#ifndef PERL_REVISION
-+# if !defined(__PATCHLEVEL_H_INCLUDED__) && !(defined(PATCHLEVEL) && defined(SUBVERSION))
-+# define PERL_PATCHLEVEL_H_IMPLICIT
-+# include <patchlevel.h>
-+# endif
-+# if !(defined(PERL_VERSION) || (defined(SUBVERSION) && defined(PATCHLEVEL)))
-+# include <could_not_find_Perl_patchlevel.h>
-+# endif
-+# ifndef PERL_REVISION
-+# define PERL_REVISION (5)
-+ /* Replace: 1 */
-+# define PERL_VERSION PATCHLEVEL
-+# define PERL_SUBVERSION SUBVERSION
-+ /* Replace PERL_PATCHLEVEL with PERL_VERSION */
-+ /* Replace: 0 */
-+# endif
-+#endif
-+
-+#define _dpppDEC2BCD(dec) ((((dec)/100)<<8)|((((dec)%100)/10)<<4)|((dec)%10))
-+#define PERL_BCDVERSION ((_dpppDEC2BCD(PERL_REVISION)<<24)|(_dpppDEC2BCD(PERL_VERSION)<<12)|_dpppDEC2BCD(PERL_SUBVERSION))
-+
-+/* It is very unlikely that anyone will try to use this with Perl 6
-+ (or greater), but who knows.
-+ */
-+#if PERL_REVISION != 5
-+# error Graphite2/ppport.h only works with Perl version 5
-+#endif /* PERL_REVISION != 5 */
-+#ifndef dTHR
-+# define dTHR dNOOP
-+#endif
-+#ifndef dTHX
-+# define dTHX dNOOP
-+#endif
-+
-+#ifndef dTHXa
-+# define dTHXa(x) dNOOP
-+#endif
-+#ifndef pTHX
-+# define pTHX void
-+#endif
-+
-+#ifndef pTHX_
-+# define pTHX_
-+#endif
-+
-+#ifndef aTHX
-+# define aTHX
-+#endif
-+
-+#ifndef aTHX_
-+# define aTHX_
-+#endif
-+
-+#if (PERL_BCDVERSION < 0x5006000)
-+# ifdef USE_THREADS
-+# define aTHXR thr
-+# define aTHXR_ thr,
-+# else
-+# define aTHXR
-+# define aTHXR_
-+# endif
-+# define dTHXR dTHR
-+#else
-+# define aTHXR aTHX
-+# define aTHXR_ aTHX_
-+# define dTHXR dTHX
-+#endif
-+#ifndef dTHXoa
-+# define dTHXoa(x) dTHXa(x)
-+#endif
-+
-+#ifdef I_LIMITS
-+# include <limits.h>
-+#endif
-+
-+#ifndef PERL_UCHAR_MIN
-+# define PERL_UCHAR_MIN ((unsigned char)0)
-+#endif
-+
-+#ifndef PERL_UCHAR_MAX
-+# ifdef UCHAR_MAX
-+# define PERL_UCHAR_MAX ((unsigned char)UCHAR_MAX)
-+# else
-+# ifdef MAXUCHAR
-+# define PERL_UCHAR_MAX ((unsigned char)MAXUCHAR)
-+# else
-+# define PERL_UCHAR_MAX ((unsigned char)~(unsigned)0)
-+# endif
-+# endif
-+#endif
-+
-+#ifndef PERL_USHORT_MIN
-+# define PERL_USHORT_MIN ((unsigned short)0)
-+#endif
-+
-+#ifndef PERL_USHORT_MAX
-+# ifdef USHORT_MAX
-+# define PERL_USHORT_MAX ((unsigned short)USHORT_MAX)
-+# else
-+# ifdef MAXUSHORT
-+# define PERL_USHORT_MAX ((unsigned short)MAXUSHORT)
-+# else
-+# ifdef USHRT_MAX
-+# define PERL_USHORT_MAX ((unsigned short)USHRT_MAX)
-+# else
-+# define PERL_USHORT_MAX ((unsigned short)~(unsigned)0)
-+# endif
-+# endif
-+# endif
-+#endif
-+
-+#ifndef PERL_SHORT_MAX
-+# ifdef SHORT_MAX
-+# define PERL_SHORT_MAX ((short)SHORT_MAX)
-+# else
-+# ifdef MAXSHORT /* Often used in <values.h> */
-+# define PERL_SHORT_MAX ((short)MAXSHORT)
-+# else
-+# ifdef SHRT_MAX
-+# define PERL_SHORT_MAX ((short)SHRT_MAX)
-+# else
-+# define PERL_SHORT_MAX ((short) (PERL_USHORT_MAX >> 1))
-+# endif
-+# endif
-+# endif
-+#endif
-+
-+#ifndef PERL_SHORT_MIN
-+# ifdef SHORT_MIN
-+# define PERL_SHORT_MIN ((short)SHORT_MIN)
-+# else
-+# ifdef MINSHORT
-+# define PERL_SHORT_MIN ((short)MINSHORT)
-+# else
-+# ifdef SHRT_MIN
-+# define PERL_SHORT_MIN ((short)SHRT_MIN)
-+# else
-+# define PERL_SHORT_MIN (-PERL_SHORT_MAX - ((3 & -1) == 3))
-+# endif
-+# endif
-+# endif
-+#endif
-+
-+#ifndef PERL_UINT_MAX
-+# ifdef UINT_MAX
-+# define PERL_UINT_MAX ((unsigned int)UINT_MAX)
-+# else
-+# ifdef MAXUINT
-+# define PERL_UINT_MAX ((unsigned int)MAXUINT)
-+# else
-+# define PERL_UINT_MAX (~(unsigned int)0)
-+# endif
-+# endif
-+#endif
-+
-+#ifndef PERL_UINT_MIN
-+# define PERL_UINT_MIN ((unsigned int)0)
-+#endif
-+
-+#ifndef PERL_INT_MAX
-+# ifdef INT_MAX
-+# define PERL_INT_MAX ((int)INT_MAX)
-+# else
-+# ifdef MAXINT /* Often used in <values.h> */
-+# define PERL_INT_MAX ((int)MAXINT)
-+# else
-+# define PERL_INT_MAX ((int)(PERL_UINT_MAX >> 1))
-+# endif
-+# endif
-+#endif
-+
-+#ifndef PERL_INT_MIN
-+# ifdef INT_MIN
-+# define PERL_INT_MIN ((int)INT_MIN)
-+# else
-+# ifdef MININT
-+# define PERL_INT_MIN ((int)MININT)
-+# else
-+# define PERL_INT_MIN (-PERL_INT_MAX - ((3 & -1) == 3))
-+# endif
-+# endif
-+#endif
-+
-+#ifndef PERL_ULONG_MAX
-+# ifdef ULONG_MAX
-+# define PERL_ULONG_MAX ((unsigned long)ULONG_MAX)
-+# else
-+# ifdef MAXULONG
-+# define PERL_ULONG_MAX ((unsigned long)MAXULONG)
-+# else
-+# define PERL_ULONG_MAX (~(unsigned long)0)
-+# endif
-+# endif
-+#endif
-+
-+#ifndef PERL_ULONG_MIN
-+# define PERL_ULONG_MIN ((unsigned long)0L)
-+#endif
-+
-+#ifndef PERL_LONG_MAX
-+# ifdef LONG_MAX
-+# define PERL_LONG_MAX ((long)LONG_MAX)
-+# else
-+# ifdef MAXLONG
-+# define PERL_LONG_MAX ((long)MAXLONG)
-+# else
-+# define PERL_LONG_MAX ((long) (PERL_ULONG_MAX >> 1))
-+# endif
-+# endif
-+#endif
-+
-+#ifndef PERL_LONG_MIN
-+# ifdef LONG_MIN
-+# define PERL_LONG_MIN ((long)LONG_MIN)
-+# else
-+# ifdef MINLONG
-+# define PERL_LONG_MIN ((long)MINLONG)
-+# else
-+# define PERL_LONG_MIN (-PERL_LONG_MAX - ((3 & -1) == 3))
-+# endif
-+# endif
-+#endif
-+
-+#if defined(HAS_QUAD) && (defined(convex) || defined(uts))
-+# ifndef PERL_UQUAD_MAX
-+# ifdef ULONGLONG_MAX
-+# define PERL_UQUAD_MAX ((unsigned long long)ULONGLONG_MAX)
-+# else
-+# ifdef MAXULONGLONG
-+# define PERL_UQUAD_MAX ((unsigned long long)MAXULONGLONG)
-+# else
-+# define PERL_UQUAD_MAX (~(unsigned long long)0)
-+# endif
-+# endif
-+# endif
-+
-+# ifndef PERL_UQUAD_MIN
-+# define PERL_UQUAD_MIN ((unsigned long long)0L)
-+# endif
-+
-+# ifndef PERL_QUAD_MAX
-+# ifdef LONGLONG_MAX
-+# define PERL_QUAD_MAX ((long long)LONGLONG_MAX)
-+# else
-+# ifdef MAXLONGLONG
-+# define PERL_QUAD_MAX ((long long)MAXLONGLONG)
-+# else
-+# define PERL_QUAD_MAX ((long long) (PERL_UQUAD_MAX >> 1))
-+# endif
-+# endif
-+# endif
-+
-+# ifndef PERL_QUAD_MIN
-+# ifdef LONGLONG_MIN
-+# define PERL_QUAD_MIN ((long long)LONGLONG_MIN)
-+# else
-+# ifdef MINLONGLONG
-+# define PERL_QUAD_MIN ((long long)MINLONGLONG)
-+# else
-+# define PERL_QUAD_MIN (-PERL_QUAD_MAX - ((3 & -1) == 3))
-+# endif
-+# endif
-+# endif
-+#endif
-+
-+/* This is based on code from 5.003 perl.h */
-+#ifdef HAS_QUAD
-+# ifdef cray
-+#ifndef IVTYPE
-+# define IVTYPE int
-+#endif
-+
-+#ifndef IV_MIN
-+# define IV_MIN PERL_INT_MIN
-+#endif
-+
-+#ifndef IV_MAX
-+# define IV_MAX PERL_INT_MAX
-+#endif
-+
-+#ifndef UV_MIN
-+# define UV_MIN PERL_UINT_MIN
-+#endif
-+
-+#ifndef UV_MAX
-+# define UV_MAX PERL_UINT_MAX
-+#endif
-+
-+# ifdef INTSIZE
-+#ifndef IVSIZE
-+# define IVSIZE INTSIZE
-+#endif
-+
-+# endif
-+# else
-+# if defined(convex) || defined(uts)
-+#ifndef IVTYPE
-+# define IVTYPE long long
-+#endif
-+
-+#ifndef IV_MIN
-+# define IV_MIN PERL_QUAD_MIN
-+#endif
-+
-+#ifndef IV_MAX
-+# define IV_MAX PERL_QUAD_MAX
-+#endif
-+
-+#ifndef UV_MIN
-+# define UV_MIN PERL_UQUAD_MIN
-+#endif
-+
-+#ifndef UV_MAX
-+# define UV_MAX PERL_UQUAD_MAX
-+#endif
-+
-+# ifdef LONGLONGSIZE
-+#ifndef IVSIZE
-+# define IVSIZE LONGLONGSIZE
-+#endif
-+
-+# endif
-+# else
-+#ifndef IVTYPE
-+# define IVTYPE long
-+#endif
-+
-+#ifndef IV_MIN
-+# define IV_MIN PERL_LONG_MIN
-+#endif
-+
-+#ifndef IV_MAX
-+# define IV_MAX PERL_LONG_MAX
-+#endif
-+
-+#ifndef UV_MIN
-+# define UV_MIN PERL_ULONG_MIN
-+#endif
-+
-+#ifndef UV_MAX
-+# define UV_MAX PERL_ULONG_MAX
-+#endif
-+
-+# ifdef LONGSIZE
-+#ifndef IVSIZE
-+# define IVSIZE LONGSIZE
-+#endif
-+
-+# endif
-+# endif
-+# endif
-+#ifndef IVSIZE
-+# define IVSIZE 8
-+#endif
-+
-+#ifndef PERL_QUAD_MIN
-+# define PERL_QUAD_MIN IV_MIN
-+#endif
-+
-+#ifndef PERL_QUAD_MAX
-+# define PERL_QUAD_MAX IV_MAX
-+#endif
-+
-+#ifndef PERL_UQUAD_MIN
-+# define PERL_UQUAD_MIN UV_MIN
-+#endif
-+
-+#ifndef PERL_UQUAD_MAX
-+# define PERL_UQUAD_MAX UV_MAX
-+#endif
-+
-+#else
-+#ifndef IVTYPE
-+# define IVTYPE long
-+#endif
-+
-+#ifndef IV_MIN
-+# define IV_MIN PERL_LONG_MIN
-+#endif
-+
-+#ifndef IV_MAX
-+# define IV_MAX PERL_LONG_MAX
-+#endif
-+
-+#ifndef UV_MIN
-+# define UV_MIN PERL_ULONG_MIN
-+#endif
-+
-+#ifndef UV_MAX
-+# define UV_MAX PERL_ULONG_MAX
-+#endif
-+
-+#endif
-+
-+#ifndef IVSIZE
-+# ifdef LONGSIZE
-+# define IVSIZE LONGSIZE
-+# else
-+# define IVSIZE 4 /* A bold guess, but the best we can make. */
-+# endif
-+#endif
-+#ifndef UVTYPE
-+# define UVTYPE unsigned IVTYPE
-+#endif
-+
-+#ifndef UVSIZE
-+# define UVSIZE IVSIZE
-+#endif
-+#ifndef sv_setuv
-+# define sv_setuv(sv, uv) \
-+ STMT_START { \
-+ UV TeMpUv = uv; \
-+ if (TeMpUv <= IV_MAX) \
-+ sv_setiv(sv, TeMpUv); \
-+ else \
-+ sv_setnv(sv, (double)TeMpUv); \
-+ } STMT_END
-+#endif
-+#ifndef newSVuv
-+# define newSVuv(uv) ((uv) <= IV_MAX ? newSViv((IV)uv) : newSVnv((NV)uv))
-+#endif
-+#ifndef sv_2uv
-+# define sv_2uv(sv) ((PL_Sv = (sv)), (UV) (SvNOK(PL_Sv) ? SvNV(PL_Sv) : sv_2nv(PL_Sv)))
-+#endif
-+
-+#ifndef SvUVX
-+# define SvUVX(sv) ((UV)SvIVX(sv))
-+#endif
-+
-+#ifndef SvUVXx
-+# define SvUVXx(sv) SvUVX(sv)
-+#endif
-+
-+#ifndef SvUV
-+# define SvUV(sv) (SvIOK(sv) ? SvUVX(sv) : sv_2uv(sv))
-+#endif
-+
-+#ifndef SvUVx
-+# define SvUVx(sv) ((PL_Sv = (sv)), SvUV(PL_Sv))
-+#endif
-+
-+/* Hint: sv_uv
-+ * Always use the SvUVx() macro instead of sv_uv().
-+ */
-+#ifndef sv_uv
-+# define sv_uv(sv) SvUVx(sv)
-+#endif
-+
-+#if !defined(SvUOK) && defined(SvIOK_UV)
-+# define SvUOK(sv) SvIOK_UV(sv)
-+#endif
-+#ifndef XST_mUV
-+# define XST_mUV(i,v) (ST(i) = sv_2mortal(newSVuv(v)) )
-+#endif
-+
-+#ifndef XSRETURN_UV
-+# define XSRETURN_UV(v) STMT_START { XST_mUV(0,v); XSRETURN(1); } STMT_END
-+#endif
-+#ifndef PUSHu
-+# define PUSHu(u) STMT_START { sv_setuv(TARG, (UV)(u)); PUSHTARG; } STMT_END
-+#endif
-+
-+#ifndef XPUSHu
-+# define XPUSHu(u) STMT_START { sv_setuv(TARG, (UV)(u)); XPUSHTARG; } STMT_END
-+#endif
-+
-+#ifdef HAS_MEMCMP
-+#ifndef memNE
-+# define memNE(s1,s2,l) (memcmp(s1,s2,l))
-+#endif
-+
-+#ifndef memEQ
-+# define memEQ(s1,s2,l) (!memcmp(s1,s2,l))
-+#endif
-+
-+#else
-+#ifndef memNE
-+# define memNE(s1,s2,l) (bcmp(s1,s2,l))
-+#endif
-+
-+#ifndef memEQ
-+# define memEQ(s1,s2,l) (!bcmp(s1,s2,l))
-+#endif
-+
-+#endif
-+#ifndef MoveD
-+# define MoveD(s,d,n,t) memmove((char*)(d),(char*)(s), (n) * sizeof(t))
-+#endif
-+
-+#ifndef CopyD
-+# define CopyD(s,d,n,t) memcpy((char*)(d),(char*)(s), (n) * sizeof(t))
-+#endif
-+
-+#ifdef HAS_MEMSET
-+#ifndef ZeroD
-+# define ZeroD(d,n,t) memzero((char*)(d), (n) * sizeof(t))
-+#endif
-+
-+#else
-+#ifndef ZeroD
-+# define ZeroD(d,n,t) ((void)memzero((char*)(d), (n) * sizeof(t)), d)
-+#endif
-+
-+#endif
-+#ifndef PoisonWith
-+# define PoisonWith(d,n,t,b) (void)memset((char*)(d), (U8)(b), (n) * sizeof(t))
-+#endif
-+
-+#ifndef PoisonNew
-+# define PoisonNew(d,n,t) PoisonWith(d,n,t,0xAB)
-+#endif
-+
-+#ifndef PoisonFree
-+# define PoisonFree(d,n,t) PoisonWith(d,n,t,0xEF)
-+#endif
-+
-+#ifndef Poison
-+# define Poison(d,n,t) PoisonFree(d,n,t)
-+#endif
-+#ifndef Newx
-+# define Newx(v,n,t) New(0,v,n,t)
-+#endif
-+
-+#ifndef Newxc
-+# define Newxc(v,n,t,c) Newc(0,v,n,t,c)
-+#endif
-+
-+#ifndef Newxz
-+# define Newxz(v,n,t) Newz(0,v,n,t)
-+#endif
-+
-+#ifndef PERL_UNUSED_DECL
-+# ifdef HASATTRIBUTE
-+# if (defined(__GNUC__) && defined(__cplusplus)) || defined(__INTEL_COMPILER)
-+# define PERL_UNUSED_DECL
-+# else
-+# define PERL_UNUSED_DECL __attribute__((unused))
-+# endif
-+# else
-+# define PERL_UNUSED_DECL
-+# endif
-+#endif
-+
-+#ifndef PERL_UNUSED_ARG
-+# if defined(lint) && defined(S_SPLINT_S) /* www.splint.org */
-+# include <note.h>
-+# define PERL_UNUSED_ARG(x) NOTE(ARGUNUSED(x))
-+# else
-+# define PERL_UNUSED_ARG(x) ((void)x)
-+# endif
-+#endif
-+
-+#ifndef PERL_UNUSED_VAR
-+# define PERL_UNUSED_VAR(x) ((void)x)
-+#endif
-+
-+#ifndef PERL_UNUSED_CONTEXT
-+# ifdef USE_ITHREADS
-+# define PERL_UNUSED_CONTEXT PERL_UNUSED_ARG(my_perl)
-+# else
-+# define PERL_UNUSED_CONTEXT
-+# endif
-+#endif
-+#ifndef NOOP
-+# define NOOP /*EMPTY*/(void)0
-+#endif
-+
-+#ifndef dNOOP
-+# define dNOOP extern int /*@unused@*/ Perl___notused PERL_UNUSED_DECL
-+#endif
-+
-+#ifndef NVTYPE
-+# if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
-+# define NVTYPE long double
-+# else
-+# define NVTYPE double
-+# endif
-+typedef NVTYPE NV;
-+#endif
-+
-+#ifndef INT2PTR
-+# if (IVSIZE == PTRSIZE) && (UVSIZE == PTRSIZE)
-+# define PTRV UV
-+# define INT2PTR(any,d) (any)(d)
-+# else
-+# if PTRSIZE == LONGSIZE
-+# define PTRV unsigned long
-+# else
-+# define PTRV unsigned
-+# endif
-+# define INT2PTR(any,d) (any)(PTRV)(d)
-+# endif
-+#endif
-+
-+#ifndef PTR2ul
-+# if PTRSIZE == LONGSIZE
-+# define PTR2ul(p) (unsigned long)(p)
-+# else
-+# define PTR2ul(p) INT2PTR(unsigned long,p)
-+# endif
-+#endif
-+#ifndef PTR2nat
-+# define PTR2nat(p) (PTRV)(p)
-+#endif
-+
-+#ifndef NUM2PTR
-+# define NUM2PTR(any,d) (any)PTR2nat(d)
-+#endif
-+
-+#ifndef PTR2IV
-+# define PTR2IV(p) INT2PTR(IV,p)
-+#endif
-+
-+#ifndef PTR2UV
-+# define PTR2UV(p) INT2PTR(UV,p)
-+#endif
-+
-+#ifndef PTR2NV
-+# define PTR2NV(p) NUM2PTR(NV,p)
-+#endif
-+
-+#undef START_EXTERN_C
-+#undef END_EXTERN_C
-+#undef EXTERN_C
-+#ifdef __cplusplus
-+# define START_EXTERN_C extern "C" {
-+# define END_EXTERN_C }
-+# define EXTERN_C extern "C"
-+#else
-+# define START_EXTERN_C
-+# define END_EXTERN_C
-+# define EXTERN_C extern
-+#endif
-+
-+#if defined(PERL_GCC_PEDANTIC)
-+# ifndef PERL_GCC_BRACE_GROUPS_FORBIDDEN
-+# define PERL_GCC_BRACE_GROUPS_FORBIDDEN
-+# endif
-+#endif
-+
-+#if defined(__GNUC__) && !defined(PERL_GCC_BRACE_GROUPS_FORBIDDEN) && !defined(__cplusplus)
-+# ifndef PERL_USE_GCC_BRACE_GROUPS
-+# define PERL_USE_GCC_BRACE_GROUPS
-+# endif
-+#endif
-+
-+#undef STMT_START
-+#undef STMT_END
-+#ifdef PERL_USE_GCC_BRACE_GROUPS
-+# define STMT_START (void)( /* gcc supports ``({ STATEMENTS; })'' */
-+# define STMT_END )
-+#else
-+# if defined(VOIDFLAGS) && (VOIDFLAGS) && (defined(sun) || defined(__sun__)) && !defined(__GNUC__)
-+# define STMT_START if (1)
-+# define STMT_END else (void)0
-+# else
-+# define STMT_START do
-+# define STMT_END while (0)
-+# endif
-+#endif
-+#ifndef boolSV
-+# define boolSV(b) ((b) ? &PL_sv_yes : &PL_sv_no)
-+#endif
-+
-+/* DEFSV appears first in 5.004_56 */
-+#ifndef DEFSV
-+# define DEFSV GvSV(PL_defgv)
-+#endif
-+
-+#ifndef SAVE_DEFSV
-+# define SAVE_DEFSV SAVESPTR(GvSV(PL_defgv))
-+#endif
-+
-+#ifndef DEFSV_set
-+# define DEFSV_set(sv) (DEFSV = (sv))
-+#endif
-+
-+/* Older perls (<=5.003) lack AvFILLp */
-+#ifndef AvFILLp
-+# define AvFILLp AvFILL
-+#endif
-+#ifndef ERRSV
-+# define ERRSV get_sv("@",FALSE)
-+#endif
-+
-+/* Hint: gv_stashpvn
-+ * This function's backport doesn't support the length parameter, but
-+ * rather ignores it. Portability can only be ensured if the length
-+ * parameter is used for speed reasons, but the length can always be
-+ * correctly computed from the string argument.
-+ */
-+#ifndef gv_stashpvn
-+# define gv_stashpvn(str,len,create) gv_stashpv(str,create)
-+#endif
-+
-+/* Replace: 1 */
-+#ifndef get_cv
-+# define get_cv perl_get_cv
-+#endif
-+
-+#ifndef get_sv
-+# define get_sv perl_get_sv
-+#endif
-+
-+#ifndef get_av
-+# define get_av perl_get_av
-+#endif
-+
-+#ifndef get_hv
-+# define get_hv perl_get_hv
-+#endif
-+
-+/* Replace: 0 */
-+#ifndef dUNDERBAR
-+# define dUNDERBAR dNOOP
-+#endif
-+
-+#ifndef UNDERBAR
-+# define UNDERBAR DEFSV
-+#endif
-+#ifndef dAX
-+# define dAX I32 ax = MARK - PL_stack_base + 1
-+#endif
-+
-+#ifndef dITEMS
-+# define dITEMS I32 items = SP - MARK
-+#endif
-+#ifndef dXSTARG
-+# define dXSTARG SV * targ = sv_newmortal()
-+#endif
-+#ifndef dAXMARK
-+# define dAXMARK I32 ax = POPMARK; \
-+ register SV ** const mark = PL_stack_base + ax++
-+#endif
-+#ifndef XSprePUSH
-+# define XSprePUSH (sp = PL_stack_base + ax - 1)
-+#endif
-+
-+#if (PERL_BCDVERSION < 0x5005000)
-+# undef XSRETURN
-+# define XSRETURN(off) \
-+ STMT_START { \
-+ PL_stack_sp = PL_stack_base + ax + ((off) - 1); \
-+ return; \
-+ } STMT_END
-+#endif
-+#ifndef XSPROTO
-+# define XSPROTO(name) void name(pTHX_ CV* cv)
-+#endif
-+
-+#ifndef SVfARG
-+# define SVfARG(p) ((void*)(p))
-+#endif
-+#ifndef PERL_ABS
-+# define PERL_ABS(x) ((x) < 0 ? -(x) : (x))
-+#endif
-+#ifndef dVAR
-+# define dVAR dNOOP
-+#endif
-+#ifndef SVf
-+# define SVf "_"
-+#endif
-+#ifndef UTF8_MAXBYTES
-+# define UTF8_MAXBYTES UTF8_MAXLEN
-+#endif
-+#ifndef CPERLscope
-+# define CPERLscope(x) x
-+#endif
-+#ifndef PERL_HASH
-+# define PERL_HASH(hash,str,len) \
-+ STMT_START { \
-+ const char *s_PeRlHaSh = str; \
-+ I32 i_PeRlHaSh = len; \
-+ U32 hash_PeRlHaSh = 0; \
-+ while (i_PeRlHaSh--) \
-+ hash_PeRlHaSh = hash_PeRlHaSh * 33 + *s_PeRlHaSh++; \
-+ (hash) = hash_PeRlHaSh; \
-+ } STMT_END
-+#endif
-+
-+#ifndef PERLIO_FUNCS_DECL
-+# ifdef PERLIO_FUNCS_CONST
-+# define PERLIO_FUNCS_DECL(funcs) const PerlIO_funcs funcs
-+# define PERLIO_FUNCS_CAST(funcs) (PerlIO_funcs*)(funcs)
-+# else
-+# define PERLIO_FUNCS_DECL(funcs) PerlIO_funcs funcs
-+# define PERLIO_FUNCS_CAST(funcs) (funcs)
-+# endif
-+#endif
-+
-+/* provide these typedefs for older perls */
-+#if (PERL_BCDVERSION < 0x5009003)
-+
-+# ifdef ARGSproto
-+typedef OP* (CPERLscope(*Perl_ppaddr_t))(ARGSproto);
-+# else
-+typedef OP* (CPERLscope(*Perl_ppaddr_t))(pTHX);
-+# endif
-+
-+typedef OP* (CPERLscope(*Perl_check_t)) (pTHX_ OP*);
-+
-+#endif
-+#ifndef isPSXSPC
-+# define isPSXSPC(c) (isSPACE(c) || (c) == '\v')
-+#endif
-+
-+#ifndef isBLANK
-+# define isBLANK(c) ((c) == ' ' || (c) == '\t')
-+#endif
-+
-+#ifdef EBCDIC
-+#ifndef isALNUMC
-+# define isALNUMC(c) isalnum(c)
-+#endif
-+
-+#ifndef isASCII
-+# define isASCII(c) isascii(c)
-+#endif
-+
-+#ifndef isCNTRL
-+# define isCNTRL(c) iscntrl(c)
-+#endif
-+
-+#ifndef isGRAPH
-+# define isGRAPH(c) isgraph(c)
-+#endif
-+
-+#ifndef isPRINT
-+# define isPRINT(c) isprint(c)
-+#endif
-+
-+#ifndef isPUNCT
-+# define isPUNCT(c) ispunct(c)
-+#endif
-+
-+#ifndef isXDIGIT
-+# define isXDIGIT(c) isxdigit(c)
-+#endif
-+
-+#else
-+# if (PERL_BCDVERSION < 0x5010000)
-+/* Hint: isPRINT
-+ * The implementation in older perl versions includes all of the
-+ * isSPACE() characters, which is wrong. The version provided by
-+ * Devel::PPPort always overrides a present buggy version.
-+ */
-+# undef isPRINT
-+# endif
-+#ifndef isALNUMC
-+# define isALNUMC(c) (isALPHA(c) || isDIGIT(c))
-+#endif
-+
-+#ifndef isASCII
-+# define isASCII(c) ((c) <= 127)
-+#endif
-+
-+#ifndef isCNTRL
-+# define isCNTRL(c) ((c) < ' ' || (c) == 127)
-+#endif
-+
-+#ifndef isGRAPH
-+# define isGRAPH(c) (isALNUM(c) || isPUNCT(c))
-+#endif
-+
-+#ifndef isPRINT
-+# define isPRINT(c) (((c) >= 32 && (c) < 127))
-+#endif
-+
-+#ifndef isPUNCT
-+# define isPUNCT(c) (((c) >= 33 && (c) <= 47) || ((c) >= 58 && (c) <= 64) || ((c) >= 91 && (c) <= 96) || ((c) >= 123 && (c) <= 126))
-+#endif
-+
-+#ifndef isXDIGIT
-+# define isXDIGIT(c) (isDIGIT(c) || ((c) >= 'a' && (c) <= 'f') || ((c) >= 'A' && (c) <= 'F'))
-+#endif
-+
-+#endif
-+
-+#ifndef PERL_SIGNALS_UNSAFE_FLAG
-+
-+#define PERL_SIGNALS_UNSAFE_FLAG 0x0001
-+
-+#if (PERL_BCDVERSION < 0x5008000)
-+# define D_PPP_PERL_SIGNALS_INIT PERL_SIGNALS_UNSAFE_FLAG
-+#else
-+# define D_PPP_PERL_SIGNALS_INIT 0
-+#endif
-+
-+#if defined(NEED_PL_signals)
-+static U32 DPPP_(my_PL_signals) = D_PPP_PERL_SIGNALS_INIT;
-+#elif defined(NEED_PL_signals_GLOBAL)
-+U32 DPPP_(my_PL_signals) = D_PPP_PERL_SIGNALS_INIT;
-+#else
-+extern U32 DPPP_(my_PL_signals);
-+#endif
-+#define PL_signals DPPP_(my_PL_signals)
-+
-+#endif
-+
-+/* Hint: PL_ppaddr
-+ * Calling an op via PL_ppaddr requires passing a context argument
-+ * for threaded builds. Since the context argument is different for
-+ * 5.005 perls, you can use aTHXR (supplied by Graphite2/ppport.h), which will
-+ * automatically be defined as the correct argument.
-+ */
-+
-+#if (PERL_BCDVERSION <= 0x5005005)
-+/* Replace: 1 */
-+# define PL_ppaddr ppaddr
-+# define PL_no_modify no_modify
-+/* Replace: 0 */
-+#endif
-+
-+#if (PERL_BCDVERSION <= 0x5004005)
-+/* Replace: 1 */
-+# define PL_DBsignal DBsignal
-+# define PL_DBsingle DBsingle
-+# define PL_DBsub DBsub
-+# define PL_DBtrace DBtrace
-+# define PL_Sv Sv
-+# define PL_bufend bufend
-+# define PL_bufptr bufptr
-+# define PL_compiling compiling
-+# define PL_copline copline
-+# define PL_curcop curcop
-+# define PL_curstash curstash
-+# define PL_debstash debstash
-+# define PL_defgv defgv
-+# define PL_diehook diehook
-+# define PL_dirty dirty
-+# define PL_dowarn dowarn
-+# define PL_errgv errgv
-+# define PL_error_count error_count
-+# define PL_expect expect
-+# define PL_hexdigit hexdigit
-+# define PL_hints hints
-+# define PL_in_my in_my
-+# define PL_laststatval laststatval
-+# define PL_lex_state lex_state
-+# define PL_lex_stuff lex_stuff
-+# define PL_linestr linestr
-+# define PL_na na
-+# define PL_perl_destruct_level perl_destruct_level
-+# define PL_perldb perldb
-+# define PL_rsfp_filters rsfp_filters
-+# define PL_rsfp rsfp
-+# define PL_stack_base stack_base
-+# define PL_stack_sp stack_sp
-+# define PL_statcache statcache
-+# define PL_stdingv stdingv
-+# define PL_sv_arenaroot sv_arenaroot
-+# define PL_sv_no sv_no
-+# define PL_sv_undef sv_undef
-+# define PL_sv_yes sv_yes
-+# define PL_tainted tainted
-+# define PL_tainting tainting
-+# define PL_tokenbuf tokenbuf
-+/* Replace: 0 */
-+#endif
-+
-+/* Warning: PL_parser
-+ * For perl versions earlier than 5.9.5, this is an always
-+ * non-NULL dummy. Also, it cannot be dereferenced. Don't
-+ * use it if you can avoid is and unless you absolutely know
-+ * what you're doing.
-+ * If you always check that PL_parser is non-NULL, you can
-+ * define DPPP_PL_parser_NO_DUMMY to avoid the creation of
-+ * a dummy parser structure.
-+ */
-+
-+#if (PERL_BCDVERSION >= 0x5009005)
-+# ifdef DPPP_PL_parser_NO_DUMMY
-+# define D_PPP_my_PL_parser_var(var) ((PL_parser ? PL_parser : \
-+ (croak("panic: PL_parser == NULL in %s:%d", \
-+ __FILE__, __LINE__), (yy_parser *) NULL))->var)
-+# else
-+# ifdef DPPP_PL_parser_NO_DUMMY_WARNING
-+# define D_PPP_parser_dummy_warning(var)
-+# else
-+# define D_PPP_parser_dummy_warning(var) \
-+ warn("warning: dummy PL_" #var " used in %s:%d", __FILE__, __LINE__),
-+# endif
-+# define D_PPP_my_PL_parser_var(var) ((PL_parser ? PL_parser : \
-+ (D_PPP_parser_dummy_warning(var) &DPPP_(dummy_PL_parser)))->var)
-+#if defined(NEED_PL_parser)
-+static yy_parser DPPP_(dummy_PL_parser);
-+#elif defined(NEED_PL_parser_GLOBAL)
-+yy_parser DPPP_(dummy_PL_parser);
-+#else
-+extern yy_parser DPPP_(dummy_PL_parser);
-+#endif
-+
-+# endif
-+
-+/* PL_expect, PL_copline, PL_rsfp, PL_rsfp_filters, PL_linestr, PL_bufptr, PL_bufend, PL_lex_state, PL_lex_stuff, PL_tokenbuf depends on PL_parser */
-+/* Warning: PL_expect, PL_copline, PL_rsfp, PL_rsfp_filters, PL_linestr, PL_bufptr, PL_bufend, PL_lex_state, PL_lex_stuff, PL_tokenbuf
-+ * Do not use this variable unless you know exactly what you're
-+ * doint. It is internal to the perl parser and may change or even
-+ * be removed in the future. As of perl 5.9.5, you have to check
-+ * for (PL_parser != NULL) for this variable to have any effect.
-+ * An always non-NULL PL_parser dummy is provided for earlier
-+ * perl versions.
-+ * If PL_parser is NULL when you try to access this variable, a
-+ * dummy is being accessed instead and a warning is issued unless
-+ * you define DPPP_PL_parser_NO_DUMMY_WARNING.
-+ * If DPPP_PL_parser_NO_DUMMY is defined, the code trying to access
-+ * this variable will croak with a panic message.
-+ */
-+
-+# define PL_expect D_PPP_my_PL_parser_var(expect)
-+# define PL_copline D_PPP_my_PL_parser_var(copline)
-+# define PL_rsfp D_PPP_my_PL_parser_var(rsfp)
-+# define PL_rsfp_filters D_PPP_my_PL_parser_var(rsfp_filters)
-+# define PL_linestr D_PPP_my_PL_parser_var(linestr)
-+# define PL_bufptr D_PPP_my_PL_parser_var(bufptr)
-+# define PL_bufend D_PPP_my_PL_parser_var(bufend)
-+# define PL_lex_state D_PPP_my_PL_parser_var(lex_state)
-+# define PL_lex_stuff D_PPP_my_PL_parser_var(lex_stuff)
-+# define PL_tokenbuf D_PPP_my_PL_parser_var(tokenbuf)
-+# define PL_in_my D_PPP_my_PL_parser_var(in_my)
-+# define PL_in_my_stash D_PPP_my_PL_parser_var(in_my_stash)
-+# define PL_error_count D_PPP_my_PL_parser_var(error_count)
-+
-+
-+#else
-+
-+/* ensure that PL_parser != NULL and cannot be dereferenced */
-+# define PL_parser ((void *) 1)
-+
-+#endif
-+#ifndef mPUSHs
-+# define mPUSHs(s) PUSHs(sv_2mortal(s))
-+#endif
-+
-+#ifndef PUSHmortal
-+# define PUSHmortal PUSHs(sv_newmortal())
-+#endif
-+
-+#ifndef mPUSHp
-+# define mPUSHp(p,l) sv_setpvn(PUSHmortal, (p), (l))
-+#endif
-+
-+#ifndef mPUSHn
-+# define mPUSHn(n) sv_setnv(PUSHmortal, (NV)(n))
-+#endif
-+
-+#ifndef mPUSHi
-+# define mPUSHi(i) sv_setiv(PUSHmortal, (IV)(i))
-+#endif
-+
-+#ifndef mPUSHu
-+# define mPUSHu(u) sv_setuv(PUSHmortal, (UV)(u))
-+#endif
-+#ifndef mXPUSHs
-+# define mXPUSHs(s) XPUSHs(sv_2mortal(s))
-+#endif
-+
-+#ifndef XPUSHmortal
-+# define XPUSHmortal XPUSHs(sv_newmortal())
-+#endif
-+
-+#ifndef mXPUSHp
-+# define mXPUSHp(p,l) STMT_START { EXTEND(sp,1); sv_setpvn(PUSHmortal, (p), (l)); } STMT_END
-+#endif
-+
-+#ifndef mXPUSHn
-+# define mXPUSHn(n) STMT_START { EXTEND(sp,1); sv_setnv(PUSHmortal, (NV)(n)); } STMT_END
-+#endif
-+
-+#ifndef mXPUSHi
-+# define mXPUSHi(i) STMT_START { EXTEND(sp,1); sv_setiv(PUSHmortal, (IV)(i)); } STMT_END
-+#endif
-+
-+#ifndef mXPUSHu
-+# define mXPUSHu(u) STMT_START { EXTEND(sp,1); sv_setuv(PUSHmortal, (UV)(u)); } STMT_END
-+#endif
-+
-+/* Replace: 1 */
-+#ifndef call_sv
-+# define call_sv perl_call_sv
-+#endif
-+
-+#ifndef call_pv
-+# define call_pv perl_call_pv
-+#endif
-+
-+#ifndef call_argv
-+# define call_argv perl_call_argv
-+#endif
-+
-+#ifndef call_method
-+# define call_method perl_call_method
-+#endif
-+#ifndef eval_sv
-+# define eval_sv perl_eval_sv
-+#endif
-+
-+/* Replace: 0 */
-+#ifndef PERL_LOADMOD_DENY
-+# define PERL_LOADMOD_DENY 0x1
-+#endif
-+
-+#ifndef PERL_LOADMOD_NOIMPORT
-+# define PERL_LOADMOD_NOIMPORT 0x2
-+#endif
-+
-+#ifndef PERL_LOADMOD_IMPORT_OPS
-+# define PERL_LOADMOD_IMPORT_OPS 0x4
-+#endif
-+
-+#ifndef G_METHOD
-+# define G_METHOD 64
-+# ifdef call_sv
-+# undef call_sv
-+# endif
-+# if (PERL_BCDVERSION < 0x5006000)
-+# define call_sv(sv, flags) ((flags) & G_METHOD ? perl_call_method((char *) SvPV_nolen_const(sv), \
-+ (flags) & ~G_METHOD) : perl_call_sv(sv, flags))
-+# else
-+# define call_sv(sv, flags) ((flags) & G_METHOD ? Perl_call_method(aTHX_ (char *) SvPV_nolen_const(sv), \
-+ (flags) & ~G_METHOD) : Perl_call_sv(aTHX_ sv, flags))
-+# endif
-+#endif
-+
-+/* Replace perl_eval_pv with eval_pv */
-+
-+#ifndef eval_pv
-+#if defined(NEED_eval_pv)
-+static SV* DPPP_(my_eval_pv)(char *p, I32 croak_on_error);
-+static
-+#else
-+extern SV* DPPP_(my_eval_pv)(char *p, I32 croak_on_error);
-+#endif
-+
-+#ifdef eval_pv
-+# undef eval_pv
-+#endif
-+#define eval_pv(a,b) DPPP_(my_eval_pv)(aTHX_ a,b)
-+#define Perl_eval_pv DPPP_(my_eval_pv)
-+
-+#if defined(NEED_eval_pv) || defined(NEED_eval_pv_GLOBAL)
-+
-+SV*
-+DPPP_(my_eval_pv)(char *p, I32 croak_on_error)
-+{
-+ dSP;
-+ SV* sv = newSVpv(p, 0);
-+
-+ PUSHMARK(sp);
-+ eval_sv(sv, G_SCALAR);
-+ SvREFCNT_dec(sv);
-+
-+ SPAGAIN;
-+ sv = POPs;
-+ PUTBACK;
-+
-+ if (croak_on_error && SvTRUE(GvSV(errgv)))
-+ croak(SvPVx(GvSV(errgv), na));
-+
-+ return sv;
-+}
-+
-+#endif
-+#endif
-+
-+#ifndef vload_module
-+#if defined(NEED_vload_module)
-+static void DPPP_(my_vload_module)(U32 flags, SV *name, SV *ver, va_list *args);
-+static
-+#else
-+extern void DPPP_(my_vload_module)(U32 flags, SV *name, SV *ver, va_list *args);
-+#endif
-+
-+#ifdef vload_module
-+# undef vload_module
-+#endif
-+#define vload_module(a,b,c,d) DPPP_(my_vload_module)(aTHX_ a,b,c,d)
-+#define Perl_vload_module DPPP_(my_vload_module)
-+
-+#if defined(NEED_vload_module) || defined(NEED_vload_module_GLOBAL)
-+
-+void
-+DPPP_(my_vload_module)(U32 flags, SV *name, SV *ver, va_list *args)
-+{
-+ dTHR;
-+ dVAR;
-+ OP *veop, *imop;
-+
-+ OP * const modname = newSVOP(OP_CONST, 0, name);
-+ /* 5.005 has a somewhat hacky force_normal that doesn't croak on
-+ SvREADONLY() if PL_compling is true. Current perls take care in
-+ ck_require() to correctly turn off SvREADONLY before calling
-+ force_normal_flags(). This seems a better fix than fudging PL_compling
-+ */
-+ SvREADONLY_off(((SVOP*)modname)->op_sv);
-+ modname->op_private |= OPpCONST_BARE;
-+ if (ver) {
-+ veop = newSVOP(OP_CONST, 0, ver);
-+ }
-+ else
-+ veop = NULL;
-+ if (flags & PERL_LOADMOD_NOIMPORT) {
-+ imop = sawparens(newNULLLIST());
-+ }
-+ else if (flags & PERL_LOADMOD_IMPORT_OPS) {
-+ imop = va_arg(*args, OP*);
-+ }
-+ else {
-+ SV *sv;
-+ imop = NULL;
-+ sv = va_arg(*args, SV*);
-+ while (sv) {
-+ imop = append_elem(OP_LIST, imop, newSVOP(OP_CONST, 0, sv));
-+ sv = va_arg(*args, SV*);
-+ }
-+ }
-+ {
-+ const line_t ocopline = PL_copline;
-+ COP * const ocurcop = PL_curcop;
-+ const int oexpect = PL_expect;
-+
-+#if (PERL_BCDVERSION >= 0x5004000)
-+ utilize(!(flags & PERL_LOADMOD_DENY), start_subparse(FALSE, 0),
-+ veop, modname, imop);
-+#else
-+ utilize(!(flags & PERL_LOADMOD_DENY), start_subparse(),
-+ modname, imop);
-+#endif
-+ PL_expect = oexpect;
-+ PL_copline = ocopline;
-+ PL_curcop = ocurcop;
-+ }
-+}
-+
-+#endif
-+#endif
-+
-+#ifndef load_module
-+#if defined(NEED_load_module)
-+static void DPPP_(my_load_module)(U32 flags, SV *name, SV *ver, ...);
-+static
-+#else
-+extern void DPPP_(my_load_module)(U32 flags, SV *name, SV *ver, ...);
-+#endif
-+
-+#ifdef load_module
-+# undef load_module
-+#endif
-+#define load_module DPPP_(my_load_module)
-+#define Perl_load_module DPPP_(my_load_module)
-+
-+#if defined(NEED_load_module) || defined(NEED_load_module_GLOBAL)
-+
-+void
-+DPPP_(my_load_module)(U32 flags, SV *name, SV *ver, ...)
-+{
-+ va_list args;
-+ va_start(args, ver);
-+ vload_module(flags, name, ver, &args);
-+ va_end(args);
-+}
-+
-+#endif
-+#endif
-+#ifndef newRV_inc
-+# define newRV_inc(sv) newRV(sv) /* Replace */
-+#endif
-+
-+#ifndef newRV_noinc
-+#if defined(NEED_newRV_noinc)
-+static SV * DPPP_(my_newRV_noinc)(SV *sv);
-+static
-+#else
-+extern SV * DPPP_(my_newRV_noinc)(SV *sv);
-+#endif
-+
-+#ifdef newRV_noinc
-+# undef newRV_noinc
-+#endif
-+#define newRV_noinc(a) DPPP_(my_newRV_noinc)(aTHX_ a)
-+#define Perl_newRV_noinc DPPP_(my_newRV_noinc)
-+
-+#if defined(NEED_newRV_noinc) || defined(NEED_newRV_noinc_GLOBAL)
-+SV *
-+DPPP_(my_newRV_noinc)(SV *sv)
-+{
-+ SV *rv = (SV *)newRV(sv);
-+ SvREFCNT_dec(sv);
-+ return rv;
-+}
-+#endif
-+#endif
-+
-+/* Hint: newCONSTSUB
-+ * Returns a CV* as of perl-5.7.1. This return value is not supported
-+ * by Devel::PPPort.
-+ */
-+
-+/* newCONSTSUB from IO.xs is in the core starting with 5.004_63 */
-+#if (PERL_BCDVERSION < 0x5004063) && (PERL_BCDVERSION != 0x5004005)
-+#if defined(NEED_newCONSTSUB)
-+static void DPPP_(my_newCONSTSUB)(HV *stash, const char *name, SV *sv);
-+static
-+#else
-+extern void DPPP_(my_newCONSTSUB)(HV *stash, const char *name, SV *sv);
-+#endif
-+
-+#ifdef newCONSTSUB
-+# undef newCONSTSUB
-+#endif
-+#define newCONSTSUB(a,b,c) DPPP_(my_newCONSTSUB)(aTHX_ a,b,c)
-+#define Perl_newCONSTSUB DPPP_(my_newCONSTSUB)
-+
-+#if defined(NEED_newCONSTSUB) || defined(NEED_newCONSTSUB_GLOBAL)
-+
-+/* This is just a trick to avoid a dependency of newCONSTSUB on PL_parser */
-+/* (There's no PL_parser in perl < 5.005, so this is completely safe) */
-+#define D_PPP_PL_copline PL_copline
-+
-+void
-+DPPP_(my_newCONSTSUB)(HV *stash, const char *name, SV *sv)
-+{
-+ U32 oldhints = PL_hints;
-+ HV *old_cop_stash = PL_curcop->cop_stash;
-+ HV *old_curstash = PL_curstash;
-+ line_t oldline = PL_curcop->cop_line;
-+ PL_curcop->cop_line = D_PPP_PL_copline;
-+
-+ PL_hints &= ~HINT_BLOCK_SCOPE;
-+ if (stash)
-+ PL_curstash = PL_curcop->cop_stash = stash;
-+
-+ newSUB(
-+
-+#if (PERL_BCDVERSION < 0x5003022)
-+ start_subparse(),
-+#elif (PERL_BCDVERSION == 0x5003022)
-+ start_subparse(0),
-+#else /* 5.003_23 onwards */
-+ start_subparse(FALSE, 0),
-+#endif
-+
-+ newSVOP(OP_CONST, 0, newSVpv((char *) name, 0)),
-+ newSVOP(OP_CONST, 0, &PL_sv_no), /* SvPV(&PL_sv_no) == "" -- GMB */
-+ newSTATEOP(0, Nullch, newSVOP(OP_CONST, 0, sv))
-+ );
-+
-+ PL_hints = oldhints;
-+ PL_curcop->cop_stash = old_cop_stash;
-+ PL_curstash = old_curstash;
-+ PL_curcop->cop_line = oldline;
-+}
-+#endif
-+#endif
-+
-+/*
-+ * Boilerplate macros for initializing and accessing interpreter-local
-+ * data from C. All statics in extensions should be reworked to use
-+ * this, if you want to make the extension thread-safe. See ext/re/re.xs
-+ * for an example of the use of these macros.
-+ *
-+ * Code that uses these macros is responsible for the following:
-+ * 1. #define MY_CXT_KEY to a unique string, e.g. "DynaLoader_guts"
-+ * 2. Declare a typedef named my_cxt_t that is a structure that contains
-+ * all the data that needs to be interpreter-local.
-+ * 3. Use the START_MY_CXT macro after the declaration of my_cxt_t.
-+ * 4. Use the MY_CXT_INIT macro such that it is called exactly once
-+ * (typically put in the BOOT: section).
-+ * 5. Use the members of the my_cxt_t structure everywhere as
-+ * MY_CXT.member.
-+ * 6. Use the dMY_CXT macro (a declaration) in all the functions that
-+ * access MY_CXT.
-+ */
-+
-+#if defined(MULTIPLICITY) || defined(PERL_OBJECT) || \
-+ defined(PERL_CAPI) || defined(PERL_IMPLICIT_CONTEXT)
-+
-+#ifndef START_MY_CXT
-+
-+/* This must appear in all extensions that define a my_cxt_t structure,
-+ * right after the definition (i.e. at file scope). The non-threads
-+ * case below uses it to declare the data as static. */
-+#define START_MY_CXT
-+
-+#if (PERL_BCDVERSION < 0x5004068)
-+/* Fetches the SV that keeps the per-interpreter data. */
-+#define dMY_CXT_SV \
-+ SV *my_cxt_sv = get_sv(MY_CXT_KEY, FALSE)
-+#else /* >= perl5.004_68 */
-+#define dMY_CXT_SV \
-+ SV *my_cxt_sv = *hv_fetch(PL_modglobal, MY_CXT_KEY, \
-+ sizeof(MY_CXT_KEY)-1, TRUE)
-+#endif /* < perl5.004_68 */
-+
-+/* This declaration should be used within all functions that use the
-+ * interpreter-local data. */
-+#define dMY_CXT \
-+ dMY_CXT_SV; \
-+ my_cxt_t *my_cxtp = INT2PTR(my_cxt_t*,SvUV(my_cxt_sv))
-+
-+/* Creates and zeroes the per-interpreter data.
-+ * (We allocate my_cxtp in a Perl SV so that it will be released when
-+ * the interpreter goes away.) */
-+#define MY_CXT_INIT \
-+ dMY_CXT_SV; \
-+ /* newSV() allocates one more than needed */ \
-+ my_cxt_t *my_cxtp = (my_cxt_t*)SvPVX(newSV(sizeof(my_cxt_t)-1));\
-+ Zero(my_cxtp, 1, my_cxt_t); \
-+ sv_setuv(my_cxt_sv, PTR2UV(my_cxtp))
-+
-+/* This macro must be used to access members of the my_cxt_t structure.
-+ * e.g. MYCXT.some_data */
-+#define MY_CXT (*my_cxtp)
-+
-+/* Judicious use of these macros can reduce the number of times dMY_CXT
-+ * is used. Use is similar to pTHX, aTHX etc. */
-+#define pMY_CXT my_cxt_t *my_cxtp
-+#define pMY_CXT_ pMY_CXT,
-+#define _pMY_CXT ,pMY_CXT
-+#define aMY_CXT my_cxtp
-+#define aMY_CXT_ aMY_CXT,
-+#define _aMY_CXT ,aMY_CXT
-+
-+#endif /* START_MY_CXT */
-+
-+#ifndef MY_CXT_CLONE
-+/* Clones the per-interpreter data. */
-+#define MY_CXT_CLONE \
-+ dMY_CXT_SV; \
-+ my_cxt_t *my_cxtp = (my_cxt_t*)SvPVX(newSV(sizeof(my_cxt_t)-1));\
-+ Copy(INT2PTR(my_cxt_t*, SvUV(my_cxt_sv)), my_cxtp, 1, my_cxt_t);\
-+ sv_setuv(my_cxt_sv, PTR2UV(my_cxtp))
-+#endif
-+
-+#else /* single interpreter */
-+
-+#ifndef START_MY_CXT
-+
-+#define START_MY_CXT static my_cxt_t my_cxt;
-+#define dMY_CXT_SV dNOOP
-+#define dMY_CXT dNOOP
-+#define MY_CXT_INIT NOOP
-+#define MY_CXT my_cxt
-+
-+#define pMY_CXT void
-+#define pMY_CXT_
-+#define _pMY_CXT
-+#define aMY_CXT
-+#define aMY_CXT_
-+#define _aMY_CXT
-+
-+#endif /* START_MY_CXT */
-+
-+#ifndef MY_CXT_CLONE
-+#define MY_CXT_CLONE NOOP
-+#endif
-+
-+#endif
-+
-+#ifndef IVdf
-+# if IVSIZE == LONGSIZE
-+# define IVdf "ld"
-+# define UVuf "lu"
-+# define UVof "lo"
-+# define UVxf "lx"
-+# define UVXf "lX"
-+# else
-+# if IVSIZE == INTSIZE
-+# define IVdf "d"
-+# define UVuf "u"
-+# define UVof "o"
-+# define UVxf "x"
-+# define UVXf "X"
-+# endif
-+# endif
-+#endif
-+
-+#ifndef NVef
-+# if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE) && \
-+ defined(PERL_PRIfldbl) && (PERL_BCDVERSION != 0x5006000)
-+ /* Not very likely, but let's try anyway. */
-+# define NVef PERL_PRIeldbl
-+# define NVff PERL_PRIfldbl
-+# define NVgf PERL_PRIgldbl
-+# else
-+# define NVef "e"
-+# define NVff "f"
-+# define NVgf "g"
-+# endif
-+#endif
-+
-+#ifndef SvREFCNT_inc
-+# ifdef PERL_USE_GCC_BRACE_GROUPS
-+# define SvREFCNT_inc(sv) \
-+ ({ \
-+ SV * const _sv = (SV*)(sv); \
-+ if (_sv) \
-+ (SvREFCNT(_sv))++; \
-+ _sv; \
-+ })
-+# else
-+# define SvREFCNT_inc(sv) \
-+ ((PL_Sv=(SV*)(sv)) ? (++(SvREFCNT(PL_Sv)),PL_Sv) : NULL)
-+# endif
-+#endif
-+
-+#ifndef SvREFCNT_inc_simple
-+# ifdef PERL_USE_GCC_BRACE_GROUPS
-+# define SvREFCNT_inc_simple(sv) \
-+ ({ \
-+ if (sv) \
-+ (SvREFCNT(sv))++; \
-+ (SV *)(sv); \
-+ })
-+# else
-+# define SvREFCNT_inc_simple(sv) \
-+ ((sv) ? (SvREFCNT(sv)++,(SV*)(sv)) : NULL)
-+# endif
-+#endif
-+
-+#ifndef SvREFCNT_inc_NN
-+# ifdef PERL_USE_GCC_BRACE_GROUPS
-+# define SvREFCNT_inc_NN(sv) \
-+ ({ \
-+ SV * const _sv = (SV*)(sv); \
-+ SvREFCNT(_sv)++; \
-+ _sv; \
-+ })
-+# else
-+# define SvREFCNT_inc_NN(sv) \
-+ (PL_Sv=(SV*)(sv),++(SvREFCNT(PL_Sv)),PL_Sv)
-+# endif
-+#endif
-+
-+#ifndef SvREFCNT_inc_void
-+# ifdef PERL_USE_GCC_BRACE_GROUPS
-+# define SvREFCNT_inc_void(sv) \
-+ ({ \
-+ SV * const _sv = (SV*)(sv); \
-+ if (_sv) \
-+ (void)(SvREFCNT(_sv)++); \
-+ })
-+# else
-+# define SvREFCNT_inc_void(sv) \
-+ (void)((PL_Sv=(SV*)(sv)) ? ++(SvREFCNT(PL_Sv)) : 0)
-+# endif
-+#endif
-+#ifndef SvREFCNT_inc_simple_void
-+# define SvREFCNT_inc_simple_void(sv) STMT_START { if (sv) SvREFCNT(sv)++; } STMT_END
-+#endif
-+
-+#ifndef SvREFCNT_inc_simple_NN
-+# define SvREFCNT_inc_simple_NN(sv) (++SvREFCNT(sv), (SV*)(sv))
-+#endif
-+
-+#ifndef SvREFCNT_inc_void_NN
-+# define SvREFCNT_inc_void_NN(sv) (void)(++SvREFCNT((SV*)(sv)))
-+#endif
-+
-+#ifndef SvREFCNT_inc_simple_void_NN
-+# define SvREFCNT_inc_simple_void_NN(sv) (void)(++SvREFCNT((SV*)(sv)))
-+#endif
-+
-+#ifndef newSV_type
-+
-+#if defined(NEED_newSV_type)
-+static SV* DPPP_(my_newSV_type)(pTHX_ svtype const t);
-+static
-+#else
-+extern SV* DPPP_(my_newSV_type)(pTHX_ svtype const t);
-+#endif
-+
-+#ifdef newSV_type
-+# undef newSV_type
-+#endif
-+#define newSV_type(a) DPPP_(my_newSV_type)(aTHX_ a)
-+#define Perl_newSV_type DPPP_(my_newSV_type)
-+
-+#if defined(NEED_newSV_type) || defined(NEED_newSV_type_GLOBAL)
-+
-+SV*
-+DPPP_(my_newSV_type)(pTHX_ svtype const t)
-+{
-+ SV* const sv = newSV(0);
-+ sv_upgrade(sv, t);
-+ return sv;
-+}
-+
-+#endif
-+
-+#endif
-+
-+#if (PERL_BCDVERSION < 0x5006000)
-+# define D_PPP_CONSTPV_ARG(x) ((char *) (x))
-+#else
-+# define D_PPP_CONSTPV_ARG(x) (x)
-+#endif
-+#ifndef newSVpvn
-+# define newSVpvn(data,len) ((data) \
-+ ? ((len) ? newSVpv((data), (len)) : newSVpv("", 0)) \
-+ : newSV(0))
-+#endif
-+#ifndef newSVpvn_utf8
-+# define newSVpvn_utf8(s, len, u) newSVpvn_flags((s), (len), (u) ? SVf_UTF8 : 0)
-+#endif
-+#ifndef SVf_UTF8
-+# define SVf_UTF8 0
-+#endif
-+
-+#ifndef newSVpvn_flags
-+
-+#if defined(NEED_newSVpvn_flags)
-+static SV * DPPP_(my_newSVpvn_flags)(pTHX_ const char *s, STRLEN len, U32 flags);
-+static
-+#else
-+extern SV * DPPP_(my_newSVpvn_flags)(pTHX_ const char *s, STRLEN len, U32 flags);
-+#endif
-+
-+#ifdef newSVpvn_flags
-+# undef newSVpvn_flags
-+#endif
-+#define newSVpvn_flags(a,b,c) DPPP_(my_newSVpvn_flags)(aTHX_ a,b,c)
-+#define Perl_newSVpvn_flags DPPP_(my_newSVpvn_flags)
-+
-+#if defined(NEED_newSVpvn_flags) || defined(NEED_newSVpvn_flags_GLOBAL)
-+
-+SV *
-+DPPP_(my_newSVpvn_flags)(pTHX_ const char *s, STRLEN len, U32 flags)
-+{
-+ SV *sv = newSVpvn(D_PPP_CONSTPV_ARG(s), len);
-+ SvFLAGS(sv) |= (flags & SVf_UTF8);
-+ return (flags & SVs_TEMP) ? sv_2mortal(sv) : sv;
-+}
-+
-+#endif
-+
-+#endif
-+
-+/* Backwards compatibility stuff... :-( */
-+#if !defined(NEED_sv_2pv_flags) && defined(NEED_sv_2pv_nolen)
-+# define NEED_sv_2pv_flags
-+#endif
-+#if !defined(NEED_sv_2pv_flags_GLOBAL) && defined(NEED_sv_2pv_nolen_GLOBAL)
-+# define NEED_sv_2pv_flags_GLOBAL
-+#endif
-+
-+/* Hint: sv_2pv_nolen
-+ * Use the SvPV_nolen() or SvPV_nolen_const() macros instead of sv_2pv_nolen().
-+ */
-+#ifndef sv_2pv_nolen
-+# define sv_2pv_nolen(sv) SvPV_nolen(sv)
-+#endif
-+
-+#ifdef SvPVbyte
-+
-+/* Hint: SvPVbyte
-+ * Does not work in perl-5.6.1, Graphite2/ppport.h implements a version
-+ * borrowed from perl-5.7.3.
-+ */
-+
-+#if (PERL_BCDVERSION < 0x5007000)
-+
-+#if defined(NEED_sv_2pvbyte)
-+static char * DPPP_(my_sv_2pvbyte)(pTHX_ SV *sv, STRLEN *lp);
-+static
-+#else
-+extern char * DPPP_(my_sv_2pvbyte)(pTHX_ SV *sv, STRLEN *lp);
-+#endif
-+
-+#ifdef sv_2pvbyte
-+# undef sv_2pvbyte
-+#endif
-+#define sv_2pvbyte(a,b) DPPP_(my_sv_2pvbyte)(aTHX_ a,b)
-+#define Perl_sv_2pvbyte DPPP_(my_sv_2pvbyte)
-+
-+#if defined(NEED_sv_2pvbyte) || defined(NEED_sv_2pvbyte_GLOBAL)
-+
-+char *
-+DPPP_(my_sv_2pvbyte)(pTHX_ SV *sv, STRLEN *lp)
-+{
-+ sv_utf8_downgrade(sv,0);
-+ return SvPV(sv,*lp);
-+}
-+
-+#endif
-+
-+/* Hint: sv_2pvbyte
-+ * Use the SvPVbyte() macro instead of sv_2pvbyte().
-+ */
-+
-+#undef SvPVbyte
-+
-+#define SvPVbyte(sv, lp) \
-+ ((SvFLAGS(sv) & (SVf_POK|SVf_UTF8)) == (SVf_POK) \
-+ ? ((lp = SvCUR(sv)), SvPVX(sv)) : sv_2pvbyte(sv, &lp))
-+
-+#endif
-+
-+#else
-+
-+# define SvPVbyte SvPV
-+# define sv_2pvbyte sv_2pv
-+
-+#endif
-+#ifndef sv_2pvbyte_nolen
-+# define sv_2pvbyte_nolen(sv) sv_2pv_nolen(sv)
-+#endif
-+
-+/* Hint: sv_pvn
-+ * Always use the SvPV() macro instead of sv_pvn().
-+ */
-+
-+/* Hint: sv_pvn_force
-+ * Always use the SvPV_force() macro instead of sv_pvn_force().
-+ */
-+
-+/* If these are undefined, they're not handled by the core anyway */
-+#ifndef SV_IMMEDIATE_UNREF
-+# define SV_IMMEDIATE_UNREF 0
-+#endif
-+
-+#ifndef SV_GMAGIC
-+# define SV_GMAGIC 0
-+#endif
-+
-+#ifndef SV_COW_DROP_PV
-+# define SV_COW_DROP_PV 0
-+#endif
-+
-+#ifndef SV_UTF8_NO_ENCODING
-+# define SV_UTF8_NO_ENCODING 0
-+#endif
-+
-+#ifndef SV_NOSTEAL
-+# define SV_NOSTEAL 0
-+#endif
-+
-+#ifndef SV_CONST_RETURN
-+# define SV_CONST_RETURN 0
-+#endif
-+
-+#ifndef SV_MUTABLE_RETURN
-+# define SV_MUTABLE_RETURN 0
-+#endif
-+
-+#ifndef SV_SMAGIC
-+# define SV_SMAGIC 0
-+#endif
-+
-+#ifndef SV_HAS_TRAILING_NUL
-+# define SV_HAS_TRAILING_NUL 0
-+#endif
-+
-+#ifndef SV_COW_SHARED_HASH_KEYS
-+# define SV_COW_SHARED_HASH_KEYS 0
-+#endif
-+
-+#if (PERL_BCDVERSION < 0x5007002)
-+
-+#if defined(NEED_sv_2pv_flags)
-+static char * DPPP_(my_sv_2pv_flags)(pTHX_ SV *sv, STRLEN *lp, I32 flags);
-+static
-+#else
-+extern char * DPPP_(my_sv_2pv_flags)(pTHX_ SV *sv, STRLEN *lp, I32 flags);
-+#endif
-+
-+#ifdef sv_2pv_flags
-+# undef sv_2pv_flags
-+#endif
-+#define sv_2pv_flags(a,b,c) DPPP_(my_sv_2pv_flags)(aTHX_ a,b,c)
-+#define Perl_sv_2pv_flags DPPP_(my_sv_2pv_flags)
-+
-+#if defined(NEED_sv_2pv_flags) || defined(NEED_sv_2pv_flags_GLOBAL)
-+
-+char *
-+DPPP_(my_sv_2pv_flags)(pTHX_ SV *sv, STRLEN *lp, I32 flags)
-+{
-+ STRLEN n_a = (STRLEN) flags;
-+ return sv_2pv(sv, lp ? lp : &n_a);
-+}
-+
-+#endif
-+
-+#if defined(NEED_sv_pvn_force_flags)
-+static char * DPPP_(my_sv_pvn_force_flags)(pTHX_ SV *sv, STRLEN *lp, I32 flags);
-+static
-+#else
-+extern char * DPPP_(my_sv_pvn_force_flags)(pTHX_ SV *sv, STRLEN *lp, I32 flags);
-+#endif
-+
-+#ifdef sv_pvn_force_flags
-+# undef sv_pvn_force_flags
-+#endif
-+#define sv_pvn_force_flags(a,b,c) DPPP_(my_sv_pvn_force_flags)(aTHX_ a,b,c)
-+#define Perl_sv_pvn_force_flags DPPP_(my_sv_pvn_force_flags)
-+
-+#if defined(NEED_sv_pvn_force_flags) || defined(NEED_sv_pvn_force_flags_GLOBAL)
-+
-+char *
-+DPPP_(my_sv_pvn_force_flags)(pTHX_ SV *sv, STRLEN *lp, I32 flags)
-+{
-+ STRLEN n_a = (STRLEN) flags;
-+ return sv_pvn_force(sv, lp ? lp : &n_a);
-+}
-+
-+#endif
-+
-+#endif
-+
-+#if (PERL_BCDVERSION < 0x5008008) || ( (PERL_BCDVERSION >= 0x5009000) && (PERL_BCDVERSION < 0x5009003) )
-+# define DPPP_SVPV_NOLEN_LP_ARG &PL_na
-+#else
-+# define DPPP_SVPV_NOLEN_LP_ARG 0
-+#endif
-+#ifndef SvPV_const
-+# define SvPV_const(sv, lp) SvPV_flags_const(sv, lp, SV_GMAGIC)
-+#endif
-+
-+#ifndef SvPV_mutable
-+# define SvPV_mutable(sv, lp) SvPV_flags_mutable(sv, lp, SV_GMAGIC)
-+#endif
-+#ifndef SvPV_flags
-+# define SvPV_flags(sv, lp, flags) \
-+ ((SvFLAGS(sv) & (SVf_POK)) == SVf_POK \
-+ ? ((lp = SvCUR(sv)), SvPVX(sv)) : sv_2pv_flags(sv, &lp, flags))
-+#endif
-+#ifndef SvPV_flags_const
-+# define SvPV_flags_const(sv, lp, flags) \
-+ ((SvFLAGS(sv) & (SVf_POK)) == SVf_POK \
-+ ? ((lp = SvCUR(sv)), SvPVX_const(sv)) : \
-+ (const char*) sv_2pv_flags(sv, &lp, flags|SV_CONST_RETURN))
-+#endif
-+#ifndef SvPV_flags_const_nolen
-+# define SvPV_flags_const_nolen(sv, flags) \
-+ ((SvFLAGS(sv) & (SVf_POK)) == SVf_POK \
-+ ? SvPVX_const(sv) : \
-+ (const char*) sv_2pv_flags(sv, DPPP_SVPV_NOLEN_LP_ARG, flags|SV_CONST_RETURN))
-+#endif
-+#ifndef SvPV_flags_mutable
-+# define SvPV_flags_mutable(sv, lp, flags) \
-+ ((SvFLAGS(sv) & (SVf_POK)) == SVf_POK \
-+ ? ((lp = SvCUR(sv)), SvPVX_mutable(sv)) : \
-+ sv_2pv_flags(sv, &lp, flags|SV_MUTABLE_RETURN))
-+#endif
-+#ifndef SvPV_force
-+# define SvPV_force(sv, lp) SvPV_force_flags(sv, lp, SV_GMAGIC)
-+#endif
-+
-+#ifndef SvPV_force_nolen
-+# define SvPV_force_nolen(sv) SvPV_force_flags_nolen(sv, SV_GMAGIC)
-+#endif
-+
-+#ifndef SvPV_force_mutable
-+# define SvPV_force_mutable(sv, lp) SvPV_force_flags_mutable(sv, lp, SV_GMAGIC)
-+#endif
-+
-+#ifndef SvPV_force_nomg
-+# define SvPV_force_nomg(sv, lp) SvPV_force_flags(sv, lp, 0)
-+#endif
-+
-+#ifndef SvPV_force_nomg_nolen
-+# define SvPV_force_nomg_nolen(sv) SvPV_force_flags_nolen(sv, 0)
-+#endif
-+#ifndef SvPV_force_flags
-+# define SvPV_force_flags(sv, lp, flags) \
-+ ((SvFLAGS(sv) & (SVf_POK|SVf_THINKFIRST)) == SVf_POK \
-+ ? ((lp = SvCUR(sv)), SvPVX(sv)) : sv_pvn_force_flags(sv, &lp, flags))
-+#endif
-+#ifndef SvPV_force_flags_nolen
-+# define SvPV_force_flags_nolen(sv, flags) \
-+ ((SvFLAGS(sv) & (SVf_POK|SVf_THINKFIRST)) == SVf_POK \
-+ ? SvPVX(sv) : sv_pvn_force_flags(sv, DPPP_SVPV_NOLEN_LP_ARG, flags))
-+#endif
-+#ifndef SvPV_force_flags_mutable
-+# define SvPV_force_flags_mutable(sv, lp, flags) \
-+ ((SvFLAGS(sv) & (SVf_POK|SVf_THINKFIRST)) == SVf_POK \
-+ ? ((lp = SvCUR(sv)), SvPVX_mutable(sv)) \
-+ : sv_pvn_force_flags(sv, &lp, flags|SV_MUTABLE_RETURN))
-+#endif
-+#ifndef SvPV_nolen
-+# define SvPV_nolen(sv) \
-+ ((SvFLAGS(sv) & (SVf_POK)) == SVf_POK \
-+ ? SvPVX(sv) : sv_2pv_flags(sv, DPPP_SVPV_NOLEN_LP_ARG, SV_GMAGIC))
-+#endif
-+#ifndef SvPV_nolen_const
-+# define SvPV_nolen_const(sv) \
-+ ((SvFLAGS(sv) & (SVf_POK)) == SVf_POK \
-+ ? SvPVX_const(sv) : sv_2pv_flags(sv, DPPP_SVPV_NOLEN_LP_ARG, SV_GMAGIC|SV_CONST_RETURN))
-+#endif
-+#ifndef SvPV_nomg
-+# define SvPV_nomg(sv, lp) SvPV_flags(sv, lp, 0)
-+#endif
-+
-+#ifndef SvPV_nomg_const
-+# define SvPV_nomg_const(sv, lp) SvPV_flags_const(sv, lp, 0)
-+#endif
-+
-+#ifndef SvPV_nomg_const_nolen
-+# define SvPV_nomg_const_nolen(sv) SvPV_flags_const_nolen(sv, 0)
-+#endif
-+#ifndef SvPV_renew
-+# define SvPV_renew(sv,n) STMT_START { SvLEN_set(sv, n); \
-+ SvPV_set((sv), (char *) saferealloc( \
-+ (Malloc_t)SvPVX(sv), (MEM_SIZE)((n)))); \
-+ } STMT_END
-+#endif
-+#ifndef SvMAGIC_set
-+# define SvMAGIC_set(sv, val) \
-+ STMT_START { assert(SvTYPE(sv) >= SVt_PVMG); \
-+ (((XPVMG*) SvANY(sv))->xmg_magic = (val)); } STMT_END
-+#endif
-+
-+#if (PERL_BCDVERSION < 0x5009003)
-+#ifndef SvPVX_const
-+# define SvPVX_const(sv) ((const char*) (0 + SvPVX(sv)))
-+#endif
-+
-+#ifndef SvPVX_mutable
-+# define SvPVX_mutable(sv) (0 + SvPVX(sv))
-+#endif
-+#ifndef SvRV_set
-+# define SvRV_set(sv, val) \
-+ STMT_START { assert(SvTYPE(sv) >= SVt_RV); \
-+ (((XRV*) SvANY(sv))->xrv_rv = (val)); } STMT_END
-+#endif
-+
-+#else
-+#ifndef SvPVX_const
-+# define SvPVX_const(sv) ((const char*)((sv)->sv_u.svu_pv))
-+#endif
-+
-+#ifndef SvPVX_mutable
-+# define SvPVX_mutable(sv) ((sv)->sv_u.svu_pv)
-+#endif
-+#ifndef SvRV_set
-+# define SvRV_set(sv, val) \
-+ STMT_START { assert(SvTYPE(sv) >= SVt_RV); \
-+ ((sv)->sv_u.svu_rv = (val)); } STMT_END
-+#endif
-+
-+#endif
-+#ifndef SvSTASH_set
-+# define SvSTASH_set(sv, val) \
-+ STMT_START { assert(SvTYPE(sv) >= SVt_PVMG); \
-+ (((XPVMG*) SvANY(sv))->xmg_stash = (val)); } STMT_END
-+#endif
-+
-+#if (PERL_BCDVERSION < 0x5004000)
-+#ifndef SvUV_set
-+# define SvUV_set(sv, val) \
-+ STMT_START { assert(SvTYPE(sv) == SVt_IV || SvTYPE(sv) >= SVt_PVIV); \
-+ (((XPVIV*) SvANY(sv))->xiv_iv = (IV) (val)); } STMT_END
-+#endif
-+
-+#else
-+#ifndef SvUV_set
-+# define SvUV_set(sv, val) \
-+ STMT_START { assert(SvTYPE(sv) == SVt_IV || SvTYPE(sv) >= SVt_PVIV); \
-+ (((XPVUV*) SvANY(sv))->xuv_uv = (val)); } STMT_END
-+#endif
-+
-+#endif
-+
-+#if (PERL_BCDVERSION >= 0x5004000) && !defined(vnewSVpvf)
-+#if defined(NEED_vnewSVpvf)
-+static SV * DPPP_(my_vnewSVpvf)(pTHX_ const char *pat, va_list *args);
-+static
-+#else
-+extern SV * DPPP_(my_vnewSVpvf)(pTHX_ const char *pat, va_list *args);
-+#endif
-+
-+#ifdef vnewSVpvf
-+# undef vnewSVpvf
-+#endif
-+#define vnewSVpvf(a,b) DPPP_(my_vnewSVpvf)(aTHX_ a,b)
-+#define Perl_vnewSVpvf DPPP_(my_vnewSVpvf)
-+
-+#if defined(NEED_vnewSVpvf) || defined(NEED_vnewSVpvf_GLOBAL)
-+
-+SV *
-+DPPP_(my_vnewSVpvf)(pTHX_ const char *pat, va_list *args)
-+{
-+ register SV *sv = newSV(0);
-+ sv_vsetpvfn(sv, pat, strlen(pat), args, Null(SV**), 0, Null(bool*));
-+ return sv;
-+}
-+
-+#endif
-+#endif
-+
-+#if (PERL_BCDVERSION >= 0x5004000) && !defined(sv_vcatpvf)
-+# define sv_vcatpvf(sv, pat, args) sv_vcatpvfn(sv, pat, strlen(pat), args, Null(SV**), 0, Null(bool*))
-+#endif
-+
-+#if (PERL_BCDVERSION >= 0x5004000) && !defined(sv_vsetpvf)
-+# define sv_vsetpvf(sv, pat, args) sv_vsetpvfn(sv, pat, strlen(pat), args, Null(SV**), 0, Null(bool*))
-+#endif
-+
-+#if (PERL_BCDVERSION >= 0x5004000) && !defined(sv_catpvf_mg)
-+#if defined(NEED_sv_catpvf_mg)
-+static void DPPP_(my_sv_catpvf_mg)(pTHX_ SV *sv, const char *pat, ...);
-+static
-+#else
-+extern void DPPP_(my_sv_catpvf_mg)(pTHX_ SV *sv, const char *pat, ...);
-+#endif
-+
-+#define Perl_sv_catpvf_mg DPPP_(my_sv_catpvf_mg)
-+
-+#if defined(NEED_sv_catpvf_mg) || defined(NEED_sv_catpvf_mg_GLOBAL)
-+
-+void
-+DPPP_(my_sv_catpvf_mg)(pTHX_ SV *sv, const char *pat, ...)
-+{
-+ va_list args;
-+ va_start(args, pat);
-+ sv_vcatpvfn(sv, pat, strlen(pat), &args, Null(SV**), 0, Null(bool*));
-+ SvSETMAGIC(sv);
-+ va_end(args);
-+}
-+
-+#endif
-+#endif
-+
-+#ifdef PERL_IMPLICIT_CONTEXT
-+#if (PERL_BCDVERSION >= 0x5004000) && !defined(sv_catpvf_mg_nocontext)
-+#if defined(NEED_sv_catpvf_mg_nocontext)
-+static void DPPP_(my_sv_catpvf_mg_nocontext)(SV *sv, const char *pat, ...);
-+static
-+#else
-+extern void DPPP_(my_sv_catpvf_mg_nocontext)(SV *sv, const char *pat, ...);
-+#endif
-+
-+#define sv_catpvf_mg_nocontext DPPP_(my_sv_catpvf_mg_nocontext)
-+#define Perl_sv_catpvf_mg_nocontext DPPP_(my_sv_catpvf_mg_nocontext)
-+
-+#if defined(NEED_sv_catpvf_mg_nocontext) || defined(NEED_sv_catpvf_mg_nocontext_GLOBAL)
-+
-+void
-+DPPP_(my_sv_catpvf_mg_nocontext)(SV *sv, const char *pat, ...)
-+{
-+ dTHX;
-+ va_list args;
-+ va_start(args, pat);
-+ sv_vcatpvfn(sv, pat, strlen(pat), &args, Null(SV**), 0, Null(bool*));
-+ SvSETMAGIC(sv);
-+ va_end(args);
-+}
-+
-+#endif
-+#endif
-+#endif
-+
-+/* sv_catpvf_mg depends on sv_catpvf_mg_nocontext */
-+#ifndef sv_catpvf_mg
-+# ifdef PERL_IMPLICIT_CONTEXT
-+# define sv_catpvf_mg Perl_sv_catpvf_mg_nocontext
-+# else
-+# define sv_catpvf_mg Perl_sv_catpvf_mg
-+# endif
-+#endif
-+
-+#if (PERL_BCDVERSION >= 0x5004000) && !defined(sv_vcatpvf_mg)
-+# define sv_vcatpvf_mg(sv, pat, args) \
-+ STMT_START { \
-+ sv_vcatpvfn(sv, pat, strlen(pat), args, Null(SV**), 0, Null(bool*)); \
-+ SvSETMAGIC(sv); \
-+ } STMT_END
-+#endif
-+
-+#if (PERL_BCDVERSION >= 0x5004000) && !defined(sv_setpvf_mg)
-+#if defined(NEED_sv_setpvf_mg)
-+static void DPPP_(my_sv_setpvf_mg)(pTHX_ SV *sv, const char *pat, ...);
-+static
-+#else
-+extern void DPPP_(my_sv_setpvf_mg)(pTHX_ SV *sv, const char *pat, ...);
-+#endif
-+
-+#define Perl_sv_setpvf_mg DPPP_(my_sv_setpvf_mg)
-+
-+#if defined(NEED_sv_setpvf_mg) || defined(NEED_sv_setpvf_mg_GLOBAL)
-+
-+void
-+DPPP_(my_sv_setpvf_mg)(pTHX_ SV *sv, const char *pat, ...)
-+{
-+ va_list args;
-+ va_start(args, pat);
-+ sv_vsetpvfn(sv, pat, strlen(pat), &args, Null(SV**), 0, Null(bool*));
-+ SvSETMAGIC(sv);
-+ va_end(args);
-+}
-+
-+#endif
-+#endif
-+
-+#ifdef PERL_IMPLICIT_CONTEXT
-+#if (PERL_BCDVERSION >= 0x5004000) && !defined(sv_setpvf_mg_nocontext)
-+#if defined(NEED_sv_setpvf_mg_nocontext)
-+static void DPPP_(my_sv_setpvf_mg_nocontext)(SV *sv, const char *pat, ...);
-+static
-+#else
-+extern void DPPP_(my_sv_setpvf_mg_nocontext)(SV *sv, const char *pat, ...);
-+#endif
-+
-+#define sv_setpvf_mg_nocontext DPPP_(my_sv_setpvf_mg_nocontext)
-+#define Perl_sv_setpvf_mg_nocontext DPPP_(my_sv_setpvf_mg_nocontext)
-+
-+#if defined(NEED_sv_setpvf_mg_nocontext) || defined(NEED_sv_setpvf_mg_nocontext_GLOBAL)
-+
-+void
-+DPPP_(my_sv_setpvf_mg_nocontext)(SV *sv, const char *pat, ...)
-+{
-+ dTHX;
-+ va_list args;
-+ va_start(args, pat);
-+ sv_vsetpvfn(sv, pat, strlen(pat), &args, Null(SV**), 0, Null(bool*));
-+ SvSETMAGIC(sv);
-+ va_end(args);
-+}
-+
-+#endif
-+#endif
-+#endif
-+
-+/* sv_setpvf_mg depends on sv_setpvf_mg_nocontext */
-+#ifndef sv_setpvf_mg
-+# ifdef PERL_IMPLICIT_CONTEXT
-+# define sv_setpvf_mg Perl_sv_setpvf_mg_nocontext
-+# else
-+# define sv_setpvf_mg Perl_sv_setpvf_mg
-+# endif
-+#endif
-+
-+#if (PERL_BCDVERSION >= 0x5004000) && !defined(sv_vsetpvf_mg)
-+# define sv_vsetpvf_mg(sv, pat, args) \
-+ STMT_START { \
-+ sv_vsetpvfn(sv, pat, strlen(pat), args, Null(SV**), 0, Null(bool*)); \
-+ SvSETMAGIC(sv); \
-+ } STMT_END
-+#endif
-+
-+#ifndef newSVpvn_share
-+
-+#if defined(NEED_newSVpvn_share)
-+static SV * DPPP_(my_newSVpvn_share)(pTHX_ const char *src, I32 len, U32 hash);
-+static
-+#else
-+extern SV * DPPP_(my_newSVpvn_share)(pTHX_ const char *src, I32 len, U32 hash);
-+#endif
-+
-+#ifdef newSVpvn_share
-+# undef newSVpvn_share
-+#endif
-+#define newSVpvn_share(a,b,c) DPPP_(my_newSVpvn_share)(aTHX_ a,b,c)
-+#define Perl_newSVpvn_share DPPP_(my_newSVpvn_share)
-+
-+#if defined(NEED_newSVpvn_share) || defined(NEED_newSVpvn_share_GLOBAL)
-+
-+SV *
-+DPPP_(my_newSVpvn_share)(pTHX_ const char *src, I32 len, U32 hash)
-+{
-+ SV *sv;
-+ if (len < 0)
-+ len = -len;
-+ if (!hash)
-+ PERL_HASH(hash, (char*) src, len);
-+ sv = newSVpvn((char *) src, len);
-+ sv_upgrade(sv, SVt_PVIV);
-+ SvIVX(sv) = hash;
-+ SvREADONLY_on(sv);
-+ SvPOK_on(sv);
-+ return sv;
-+}
-+
-+#endif
-+
-+#endif
-+#ifndef SvSHARED_HASH
-+# define SvSHARED_HASH(sv) (0 + SvUVX(sv))
-+#endif
-+#ifndef HvNAME_get
-+# define HvNAME_get(hv) HvNAME(hv)
-+#endif
-+#ifndef HvNAMELEN_get
-+# define HvNAMELEN_get(hv) (HvNAME_get(hv) ? (I32)strlen(HvNAME_get(hv)) : 0)
-+#endif
-+#ifndef GvSVn
-+# define GvSVn(gv) GvSV(gv)
-+#endif
-+
-+#ifndef isGV_with_GP
-+# define isGV_with_GP(gv) isGV(gv)
-+#endif
-+#ifndef WARN_ALL
-+# define WARN_ALL 0
-+#endif
-+
-+#ifndef WARN_CLOSURE
-+# define WARN_CLOSURE 1
-+#endif
-+
-+#ifndef WARN_DEPRECATED
-+# define WARN_DEPRECATED 2
-+#endif
-+
-+#ifndef WARN_EXITING
-+# define WARN_EXITING 3
-+#endif
-+
-+#ifndef WARN_GLOB
-+# define WARN_GLOB 4
-+#endif
-+
-+#ifndef WARN_IO
-+# define WARN_IO 5
-+#endif
-+
-+#ifndef WARN_CLOSED
-+# define WARN_CLOSED 6
-+#endif
-+
-+#ifndef WARN_EXEC
-+# define WARN_EXEC 7
-+#endif
-+
-+#ifndef WARN_LAYER
-+# define WARN_LAYER 8
-+#endif
-+
-+#ifndef WARN_NEWLINE
-+# define WARN_NEWLINE 9
-+#endif
-+
-+#ifndef WARN_PIPE
-+# define WARN_PIPE 10
-+#endif
-+
-+#ifndef WARN_UNOPENED
-+# define WARN_UNOPENED 11
-+#endif
-+
-+#ifndef WARN_MISC
-+# define WARN_MISC 12
-+#endif
-+
-+#ifndef WARN_NUMERIC
-+# define WARN_NUMERIC 13
-+#endif
-+
-+#ifndef WARN_ONCE
-+# define WARN_ONCE 14
-+#endif
-+
-+#ifndef WARN_OVERFLOW
-+# define WARN_OVERFLOW 15
-+#endif
-+
-+#ifndef WARN_PACK
-+# define WARN_PACK 16
-+#endif
-+
-+#ifndef WARN_PORTABLE
-+# define WARN_PORTABLE 17
-+#endif
-+
-+#ifndef WARN_RECURSION
-+# define WARN_RECURSION 18
-+#endif
-+
-+#ifndef WARN_REDEFINE
-+# define WARN_REDEFINE 19
-+#endif
-+
-+#ifndef WARN_REGEXP
-+# define WARN_REGEXP 20
-+#endif
-+
-+#ifndef WARN_SEVERE
-+# define WARN_SEVERE 21
-+#endif
-+
-+#ifndef WARN_DEBUGGING
-+# define WARN_DEBUGGING 22
-+#endif
-+
-+#ifndef WARN_INPLACE
-+# define WARN_INPLACE 23
-+#endif
-+
-+#ifndef WARN_INTERNAL
-+# define WARN_INTERNAL 24
-+#endif
-+
-+#ifndef WARN_MALLOC
-+# define WARN_MALLOC 25
-+#endif
-+
-+#ifndef WARN_SIGNAL
-+# define WARN_SIGNAL 26
-+#endif
-+
-+#ifndef WARN_SUBSTR
-+# define WARN_SUBSTR 27
-+#endif
-+
-+#ifndef WARN_SYNTAX
-+# define WARN_SYNTAX 28
-+#endif
-+
-+#ifndef WARN_AMBIGUOUS
-+# define WARN_AMBIGUOUS 29
-+#endif
-+
-+#ifndef WARN_BAREWORD
-+# define WARN_BAREWORD 30
-+#endif
-+
-+#ifndef WARN_DIGIT
-+# define WARN_DIGIT 31
-+#endif
-+
-+#ifndef WARN_PARENTHESIS
-+# define WARN_PARENTHESIS 32
-+#endif
-+
-+#ifndef WARN_PRECEDENCE
-+# define WARN_PRECEDENCE 33
-+#endif
-+
-+#ifndef WARN_PRINTF
-+# define WARN_PRINTF 34
-+#endif
-+
-+#ifndef WARN_PROTOTYPE
-+# define WARN_PROTOTYPE 35
-+#endif
-+
-+#ifndef WARN_QW
-+# define WARN_QW 36
-+#endif
-+
-+#ifndef WARN_RESERVED
-+# define WARN_RESERVED 37
-+#endif
-+
-+#ifndef WARN_SEMICOLON
-+# define WARN_SEMICOLON 38
-+#endif
-+
-+#ifndef WARN_TAINT
-+# define WARN_TAINT 39
-+#endif
-+
-+#ifndef WARN_THREADS
-+# define WARN_THREADS 40
-+#endif
-+
-+#ifndef WARN_UNINITIALIZED
-+# define WARN_UNINITIALIZED 41
-+#endif
-+
-+#ifndef WARN_UNPACK
-+# define WARN_UNPACK 42
-+#endif
-+
-+#ifndef WARN_UNTIE
-+# define WARN_UNTIE 43
-+#endif
-+
-+#ifndef WARN_UTF8
-+# define WARN_UTF8 44
-+#endif
-+
-+#ifndef WARN_VOID
-+# define WARN_VOID 45
-+#endif
-+
-+#ifndef WARN_ASSERTIONS
-+# define WARN_ASSERTIONS 46
-+#endif
-+#ifndef packWARN
-+# define packWARN(a) (a)
-+#endif
-+
-+#ifndef ckWARN
-+# ifdef G_WARN_ON
-+# define ckWARN(a) (PL_dowarn & G_WARN_ON)
-+# else
-+# define ckWARN(a) PL_dowarn
-+# endif
-+#endif
-+
-+#if (PERL_BCDVERSION >= 0x5004000) && !defined(warner)
-+#if defined(NEED_warner)
-+static void DPPP_(my_warner)(U32 err, const char *pat, ...);
-+static
-+#else
-+extern void DPPP_(my_warner)(U32 err, const char *pat, ...);
-+#endif
-+
-+#define Perl_warner DPPP_(my_warner)
-+
-+#if defined(NEED_warner) || defined(NEED_warner_GLOBAL)
-+
-+void
-+DPPP_(my_warner)(U32 err, const char *pat, ...)
-+{
-+ SV *sv;
-+ va_list args;
-+
-+ PERL_UNUSED_ARG(err);
-+
-+ va_start(args, pat);
-+ sv = vnewSVpvf(pat, &args);
-+ va_end(args);
-+ sv_2mortal(sv);
-+ warn("%s", SvPV_nolen(sv));
-+}
-+
-+#define warner Perl_warner
-+
-+#define Perl_warner_nocontext Perl_warner
-+
-+#endif
-+#endif
-+
-+/* concatenating with "" ensures that only literal strings are accepted as argument
-+ * note that STR_WITH_LEN() can't be used as argument to macros or functions that
-+ * under some configurations might be macros
-+ */
-+#ifndef STR_WITH_LEN
-+# define STR_WITH_LEN(s) (s ""), (sizeof(s)-1)
-+#endif
-+#ifndef newSVpvs
-+# define newSVpvs(str) newSVpvn(str "", sizeof(str) - 1)
-+#endif
-+
-+#ifndef newSVpvs_flags
-+# define newSVpvs_flags(str, flags) newSVpvn_flags(str "", sizeof(str) - 1, flags)
-+#endif
-+
-+#ifndef sv_catpvs
-+# define sv_catpvs(sv, str) sv_catpvn(sv, str "", sizeof(str) - 1)
-+#endif
-+
-+#ifndef sv_setpvs
-+# define sv_setpvs(sv, str) sv_setpvn(sv, str "", sizeof(str) - 1)
-+#endif
-+
-+#ifndef hv_fetchs
-+# define hv_fetchs(hv, key, lval) hv_fetch(hv, key "", sizeof(key) - 1, lval)
-+#endif
-+
-+#ifndef hv_stores
-+# define hv_stores(hv, key, val) hv_store(hv, key "", sizeof(key) - 1, val, 0)
-+#endif
-+#ifndef gv_fetchpvn_flags
-+# define gv_fetchpvn_flags(name, len, flags, svt) gv_fetchpv(name, flags, svt)
-+#endif
-+
-+#ifndef gv_fetchpvs
-+# define gv_fetchpvs(name, flags, svt) gv_fetchpvn_flags(name "", sizeof(name) - 1, flags, svt)
-+#endif
-+
-+#ifndef gv_stashpvs
-+# define gv_stashpvs(name, flags) gv_stashpvn(name "", sizeof(name) - 1, flags)
-+#endif
-+#ifndef SvGETMAGIC
-+# define SvGETMAGIC(x) STMT_START { if (SvGMAGICAL(x)) mg_get(x); } STMT_END
-+#endif
-+#ifndef PERL_MAGIC_sv
-+# define PERL_MAGIC_sv '\0'
-+#endif
-+
-+#ifndef PERL_MAGIC_overload
-+# define PERL_MAGIC_overload 'A'
-+#endif
-+
-+#ifndef PERL_MAGIC_overload_elem
-+# define PERL_MAGIC_overload_elem 'a'
-+#endif
-+
-+#ifndef PERL_MAGIC_overload_table
-+# define PERL_MAGIC_overload_table 'c'
-+#endif
-+
-+#ifndef PERL_MAGIC_bm
-+# define PERL_MAGIC_bm 'B'
-+#endif
-+
-+#ifndef PERL_MAGIC_regdata
-+# define PERL_MAGIC_regdata 'D'
-+#endif
-+
-+#ifndef PERL_MAGIC_regdatum
-+# define PERL_MAGIC_regdatum 'd'
-+#endif
-+
-+#ifndef PERL_MAGIC_env
-+# define PERL_MAGIC_env 'E'
-+#endif
-+
-+#ifndef PERL_MAGIC_envelem
-+# define PERL_MAGIC_envelem 'e'
-+#endif
-+
-+#ifndef PERL_MAGIC_fm
-+# define PERL_MAGIC_fm 'f'
-+#endif
-+
-+#ifndef PERL_MAGIC_regex_global
-+# define PERL_MAGIC_regex_global 'g'
-+#endif
-+
-+#ifndef PERL_MAGIC_isa
-+# define PERL_MAGIC_isa 'I'
-+#endif
-+
-+#ifndef PERL_MAGIC_isaelem
-+# define PERL_MAGIC_isaelem 'i'
-+#endif
-+
-+#ifndef PERL_MAGIC_nkeys
-+# define PERL_MAGIC_nkeys 'k'
-+#endif
-+
-+#ifndef PERL_MAGIC_dbfile
-+# define PERL_MAGIC_dbfile 'L'
-+#endif
-+
-+#ifndef PERL_MAGIC_dbline
-+# define PERL_MAGIC_dbline 'l'
-+#endif
-+
-+#ifndef PERL_MAGIC_mutex
-+# define PERL_MAGIC_mutex 'm'
-+#endif
-+
-+#ifndef PERL_MAGIC_shared
-+# define PERL_MAGIC_shared 'N'
-+#endif
-+
-+#ifndef PERL_MAGIC_shared_scalar
-+# define PERL_MAGIC_shared_scalar 'n'
-+#endif
-+
-+#ifndef PERL_MAGIC_collxfrm
-+# define PERL_MAGIC_collxfrm 'o'
-+#endif
-+
-+#ifndef PERL_MAGIC_tied
-+# define PERL_MAGIC_tied 'P'
-+#endif
-+
-+#ifndef PERL_MAGIC_tiedelem
-+# define PERL_MAGIC_tiedelem 'p'
-+#endif
-+
-+#ifndef PERL_MAGIC_tiedscalar
-+# define PERL_MAGIC_tiedscalar 'q'
-+#endif
-+
-+#ifndef PERL_MAGIC_qr
-+# define PERL_MAGIC_qr 'r'
-+#endif
-+
-+#ifndef PERL_MAGIC_sig
-+# define PERL_MAGIC_sig 'S'
-+#endif
-+
-+#ifndef PERL_MAGIC_sigelem
-+# define PERL_MAGIC_sigelem 's'
-+#endif
-+
-+#ifndef PERL_MAGIC_taint
-+# define PERL_MAGIC_taint 't'
-+#endif
-+
-+#ifndef PERL_MAGIC_uvar
-+# define PERL_MAGIC_uvar 'U'
-+#endif
-+
-+#ifndef PERL_MAGIC_uvar_elem
-+# define PERL_MAGIC_uvar_elem 'u'
-+#endif
-+
-+#ifndef PERL_MAGIC_vstring
-+# define PERL_MAGIC_vstring 'V'
-+#endif
-+
-+#ifndef PERL_MAGIC_vec
-+# define PERL_MAGIC_vec 'v'
-+#endif
-+
-+#ifndef PERL_MAGIC_utf8
-+# define PERL_MAGIC_utf8 'w'
-+#endif
-+
-+#ifndef PERL_MAGIC_substr
-+# define PERL_MAGIC_substr 'x'
-+#endif
-+
-+#ifndef PERL_MAGIC_defelem
-+# define PERL_MAGIC_defelem 'y'
-+#endif
-+
-+#ifndef PERL_MAGIC_glob
-+# define PERL_MAGIC_glob '*'
-+#endif
-+
-+#ifndef PERL_MAGIC_arylen
-+# define PERL_MAGIC_arylen '#'
-+#endif
-+
-+#ifndef PERL_MAGIC_pos
-+# define PERL_MAGIC_pos '.'
-+#endif
-+
-+#ifndef PERL_MAGIC_backref
-+# define PERL_MAGIC_backref '<'
-+#endif
-+
-+#ifndef PERL_MAGIC_ext
-+# define PERL_MAGIC_ext '~'
-+#endif
-+
-+/* That's the best we can do... */
-+#ifndef sv_catpvn_nomg
-+# define sv_catpvn_nomg sv_catpvn
-+#endif
-+
-+#ifndef sv_catsv_nomg
-+# define sv_catsv_nomg sv_catsv
-+#endif
-+
-+#ifndef sv_setsv_nomg
-+# define sv_setsv_nomg sv_setsv
-+#endif
-+
-+#ifndef sv_pvn_nomg
-+# define sv_pvn_nomg sv_pvn
-+#endif
-+
-+#ifndef SvIV_nomg
-+# define SvIV_nomg SvIV
-+#endif
-+
-+#ifndef SvUV_nomg
-+# define SvUV_nomg SvUV
-+#endif
-+
-+#ifndef sv_catpv_mg
-+# define sv_catpv_mg(sv, ptr) \
-+ STMT_START { \
-+ SV *TeMpSv = sv; \
-+ sv_catpv(TeMpSv,ptr); \
-+ SvSETMAGIC(TeMpSv); \
-+ } STMT_END
-+#endif
-+
-+#ifndef sv_catpvn_mg
-+# define sv_catpvn_mg(sv, ptr, len) \
-+ STMT_START { \
-+ SV *TeMpSv = sv; \
-+ sv_catpvn(TeMpSv,ptr,len); \
-+ SvSETMAGIC(TeMpSv); \
-+ } STMT_END
-+#endif
-+
-+#ifndef sv_catsv_mg
-+# define sv_catsv_mg(dsv, ssv) \
-+ STMT_START { \
-+ SV *TeMpSv = dsv; \
-+ sv_catsv(TeMpSv,ssv); \
-+ SvSETMAGIC(TeMpSv); \
-+ } STMT_END
-+#endif
-+
-+#ifndef sv_setiv_mg
-+# define sv_setiv_mg(sv, i) \
-+ STMT_START { \
-+ SV *TeMpSv = sv; \
-+ sv_setiv(TeMpSv,i); \
-+ SvSETMAGIC(TeMpSv); \
-+ } STMT_END
-+#endif
-+
-+#ifndef sv_setnv_mg
-+# define sv_setnv_mg(sv, num) \
-+ STMT_START { \
-+ SV *TeMpSv = sv; \
-+ sv_setnv(TeMpSv,num); \
-+ SvSETMAGIC(TeMpSv); \
-+ } STMT_END
-+#endif
-+
-+#ifndef sv_setpv_mg
-+# define sv_setpv_mg(sv, ptr) \
-+ STMT_START { \
-+ SV *TeMpSv = sv; \
-+ sv_setpv(TeMpSv,ptr); \
-+ SvSETMAGIC(TeMpSv); \
-+ } STMT_END
-+#endif
-+
-+#ifndef sv_setpvn_mg
-+# define sv_setpvn_mg(sv, ptr, len) \
-+ STMT_START { \
-+ SV *TeMpSv = sv; \
-+ sv_setpvn(TeMpSv,ptr,len); \
-+ SvSETMAGIC(TeMpSv); \
-+ } STMT_END
-+#endif
-+
-+#ifndef sv_setsv_mg
-+# define sv_setsv_mg(dsv, ssv) \
-+ STMT_START { \
-+ SV *TeMpSv = dsv; \
-+ sv_setsv(TeMpSv,ssv); \
-+ SvSETMAGIC(TeMpSv); \
-+ } STMT_END
-+#endif
-+
-+#ifndef sv_setuv_mg
-+# define sv_setuv_mg(sv, i) \
-+ STMT_START { \
-+ SV *TeMpSv = sv; \
-+ sv_setuv(TeMpSv,i); \
-+ SvSETMAGIC(TeMpSv); \
-+ } STMT_END
-+#endif
-+
-+#ifndef sv_usepvn_mg
-+# define sv_usepvn_mg(sv, ptr, len) \
-+ STMT_START { \
-+ SV *TeMpSv = sv; \
-+ sv_usepvn(TeMpSv,ptr,len); \
-+ SvSETMAGIC(TeMpSv); \
-+ } STMT_END
-+#endif
-+#ifndef SvVSTRING_mg
-+# define SvVSTRING_mg(sv) (SvMAGICAL(sv) ? mg_find(sv, PERL_MAGIC_vstring) : NULL)
-+#endif
-+
-+/* Hint: sv_magic_portable
-+ * This is a compatibility function that is only available with
-+ * Devel::PPPort. It is NOT in the perl core.
-+ * Its purpose is to mimic the 5.8.0 behaviour of sv_magic() when
-+ * it is being passed a name pointer with namlen == 0. In that
-+ * case, perl 5.8.0 and later store the pointer, not a copy of it.
-+ * The compatibility can be provided back to perl 5.004. With
-+ * earlier versions, the code will not compile.
-+ */
-+
-+#if (PERL_BCDVERSION < 0x5004000)
-+
-+ /* code that uses sv_magic_portable will not compile */
-+
-+#elif (PERL_BCDVERSION < 0x5008000)
-+
-+# define sv_magic_portable(sv, obj, how, name, namlen) \
-+ STMT_START { \
-+ SV *SvMp_sv = (sv); \
-+ char *SvMp_name = (char *) (name); \
-+ I32 SvMp_namlen = (namlen); \
-+ if (SvMp_name && SvMp_namlen == 0) \
-+ { \
-+ MAGIC *mg; \
-+ sv_magic(SvMp_sv, obj, how, 0, 0); \
-+ mg = SvMAGIC(SvMp_sv); \
-+ mg->mg_len = -42; /* XXX: this is the tricky part */ \
-+ mg->mg_ptr = SvMp_name; \
-+ } \
-+ else \
-+ { \
-+ sv_magic(SvMp_sv, obj, how, SvMp_name, SvMp_namlen); \
-+ } \
-+ } STMT_END
-+
-+#else
-+
-+# define sv_magic_portable(a, b, c, d, e) sv_magic(a, b, c, d, e)
-+
-+#endif
-+
-+#ifdef USE_ITHREADS
-+#ifndef CopFILE
-+# define CopFILE(c) ((c)->cop_file)
-+#endif
-+
-+#ifndef CopFILEGV
-+# define CopFILEGV(c) (CopFILE(c) ? gv_fetchfile(CopFILE(c)) : Nullgv)
-+#endif
-+
-+#ifndef CopFILE_set
-+# define CopFILE_set(c,pv) ((c)->cop_file = savepv(pv))
-+#endif
-+
-+#ifndef CopFILESV
-+# define CopFILESV(c) (CopFILE(c) ? GvSV(gv_fetchfile(CopFILE(c))) : Nullsv)
-+#endif
-+
-+#ifndef CopFILEAV
-+# define CopFILEAV(c) (CopFILE(c) ? GvAV(gv_fetchfile(CopFILE(c))) : Nullav)
-+#endif
-+
-+#ifndef CopSTASHPV
-+# define CopSTASHPV(c) ((c)->cop_stashpv)
-+#endif
-+
-+#ifndef CopSTASHPV_set
-+# define CopSTASHPV_set(c,pv) ((c)->cop_stashpv = ((pv) ? savepv(pv) : Nullch))
-+#endif
-+
-+#ifndef CopSTASH
-+# define CopSTASH(c) (CopSTASHPV(c) ? gv_stashpv(CopSTASHPV(c),GV_ADD) : Nullhv)
-+#endif
-+
-+#ifndef CopSTASH_set
-+# define CopSTASH_set(c,hv) CopSTASHPV_set(c, (hv) ? HvNAME(hv) : Nullch)
-+#endif
-+
-+#ifndef CopSTASH_eq
-+# define CopSTASH_eq(c,hv) ((hv) && (CopSTASHPV(c) == HvNAME(hv) \
-+ || (CopSTASHPV(c) && HvNAME(hv) \
-+ && strEQ(CopSTASHPV(c), HvNAME(hv)))))
-+#endif
-+
-+#else
-+#ifndef CopFILEGV
-+# define CopFILEGV(c) ((c)->cop_filegv)
-+#endif
-+
-+#ifndef CopFILEGV_set
-+# define CopFILEGV_set(c,gv) ((c)->cop_filegv = (GV*)SvREFCNT_inc(gv))
-+#endif
-+
-+#ifndef CopFILE_set
-+# define CopFILE_set(c,pv) CopFILEGV_set((c), gv_fetchfile(pv))
-+#endif
-+
-+#ifndef CopFILESV
-+# define CopFILESV(c) (CopFILEGV(c) ? GvSV(CopFILEGV(c)) : Nullsv)
-+#endif
-+
-+#ifndef CopFILEAV
-+# define CopFILEAV(c) (CopFILEGV(c) ? GvAV(CopFILEGV(c)) : Nullav)
-+#endif
-+
-+#ifndef CopFILE
-+# define CopFILE(c) (CopFILESV(c) ? SvPVX(CopFILESV(c)) : Nullch)
-+#endif
-+
-+#ifndef CopSTASH
-+# define CopSTASH(c) ((c)->cop_stash)
-+#endif
-+
-+#ifndef CopSTASH_set
-+# define CopSTASH_set(c,hv) ((c)->cop_stash = (hv))
-+#endif
-+
-+#ifndef CopSTASHPV
-+# define CopSTASHPV(c) (CopSTASH(c) ? HvNAME(CopSTASH(c)) : Nullch)
-+#endif
-+
-+#ifndef CopSTASHPV_set
-+# define CopSTASHPV_set(c,pv) CopSTASH_set((c), gv_stashpv(pv,GV_ADD))
-+#endif
-+
-+#ifndef CopSTASH_eq
-+# define CopSTASH_eq(c,hv) (CopSTASH(c) == (hv))
-+#endif
-+
-+#endif /* USE_ITHREADS */
-+#ifndef IN_PERL_COMPILETIME
-+# define IN_PERL_COMPILETIME (PL_curcop == &PL_compiling)
-+#endif
-+
-+#ifndef IN_LOCALE_RUNTIME
-+# define IN_LOCALE_RUNTIME (PL_curcop->op_private & HINT_LOCALE)
-+#endif
-+
-+#ifndef IN_LOCALE_COMPILETIME
-+# define IN_LOCALE_COMPILETIME (PL_hints & HINT_LOCALE)
-+#endif
-+
-+#ifndef IN_LOCALE
-+# define IN_LOCALE (IN_PERL_COMPILETIME ? IN_LOCALE_COMPILETIME : IN_LOCALE_RUNTIME)
-+#endif
-+#ifndef IS_NUMBER_IN_UV
-+# define IS_NUMBER_IN_UV 0x01
-+#endif
-+
-+#ifndef IS_NUMBER_GREATER_THAN_UV_MAX
-+# define IS_NUMBER_GREATER_THAN_UV_MAX 0x02
-+#endif
-+
-+#ifndef IS_NUMBER_NOT_INT
-+# define IS_NUMBER_NOT_INT 0x04
-+#endif
-+
-+#ifndef IS_NUMBER_NEG
-+# define IS_NUMBER_NEG 0x08
-+#endif
-+
-+#ifndef IS_NUMBER_INFINITY
-+# define IS_NUMBER_INFINITY 0x10
-+#endif
-+
-+#ifndef IS_NUMBER_NAN
-+# define IS_NUMBER_NAN 0x20
-+#endif
-+#ifndef GROK_NUMERIC_RADIX
-+# define GROK_NUMERIC_RADIX(sp, send) grok_numeric_radix(sp, send)
-+#endif
-+#ifndef PERL_SCAN_GREATER_THAN_UV_MAX
-+# define PERL_SCAN_GREATER_THAN_UV_MAX 0x02
-+#endif
-+
-+#ifndef PERL_SCAN_SILENT_ILLDIGIT
-+# define PERL_SCAN_SILENT_ILLDIGIT 0x04
-+#endif
-+
-+#ifndef PERL_SCAN_ALLOW_UNDERSCORES
-+# define PERL_SCAN_ALLOW_UNDERSCORES 0x01
-+#endif
-+
-+#ifndef PERL_SCAN_DISALLOW_PREFIX
-+# define PERL_SCAN_DISALLOW_PREFIX 0x02
-+#endif
-+
-+#ifndef grok_numeric_radix
-+#if defined(NEED_grok_numeric_radix)
-+static bool DPPP_(my_grok_numeric_radix)(pTHX_ const char ** sp, const char * send);
-+static
-+#else
-+extern bool DPPP_(my_grok_numeric_radix)(pTHX_ const char ** sp, const char * send);
-+#endif
-+
-+#ifdef grok_numeric_radix
-+# undef grok_numeric_radix
-+#endif
-+#define grok_numeric_radix(a,b) DPPP_(my_grok_numeric_radix)(aTHX_ a,b)
-+#define Perl_grok_numeric_radix DPPP_(my_grok_numeric_radix)
-+
-+#if defined(NEED_grok_numeric_radix) || defined(NEED_grok_numeric_radix_GLOBAL)
-+bool
-+DPPP_(my_grok_numeric_radix)(pTHX_ const char **sp, const char *send)
-+{
-+#ifdef USE_LOCALE_NUMERIC
-+#ifdef PL_numeric_radix_sv
-+ if (PL_numeric_radix_sv && IN_LOCALE) {
-+ STRLEN len;
-+ char* radix = SvPV(PL_numeric_radix_sv, len);
-+ if (*sp + len <= send && memEQ(*sp, radix, len)) {
-+ *sp += len;
-+ return TRUE;
-+ }
-+ }
-+#else
-+ /* older perls don't have PL_numeric_radix_sv so the radix
-+ * must manually be requested from locale.h
-+ */
-+#include <locale.h>
-+ dTHR; /* needed for older threaded perls */
-+ struct lconv *lc = localeconv();
-+ char *radix = lc->decimal_point;
-+ if (radix && IN_LOCALE) {
-+ STRLEN len = strlen(radix);
-+ if (*sp + len <= send && memEQ(*sp, radix, len)) {
-+ *sp += len;
-+ return TRUE;
-+ }
-+ }
-+#endif
-+#endif /* USE_LOCALE_NUMERIC */
-+ /* always try "." if numeric radix didn't match because
-+ * we may have data from different locales mixed */
-+ if (*sp < send && **sp == '.') {
-+ ++*sp;
-+ return TRUE;
-+ }
-+ return FALSE;
-+}
-+#endif
-+#endif
-+
-+#ifndef grok_number
-+#if defined(NEED_grok_number)
-+static int DPPP_(my_grok_number)(pTHX_ const char * pv, STRLEN len, UV * valuep);
-+static
-+#else
-+extern int DPPP_(my_grok_number)(pTHX_ const char * pv, STRLEN len, UV * valuep);
-+#endif
-+
-+#ifdef grok_number
-+# undef grok_number
-+#endif
-+#define grok_number(a,b,c) DPPP_(my_grok_number)(aTHX_ a,b,c)
-+#define Perl_grok_number DPPP_(my_grok_number)
-+
-+#if defined(NEED_grok_number) || defined(NEED_grok_number_GLOBAL)
-+int
-+DPPP_(my_grok_number)(pTHX_ const char *pv, STRLEN len, UV *valuep)
-+{
-+ const char *s = pv;
-+ const char *send = pv + len;
-+ const UV max_div_10 = UV_MAX / 10;
-+ const char max_mod_10 = UV_MAX % 10;
-+ int numtype = 0;
-+ int sawinf = 0;
-+ int sawnan = 0;
-+
-+ while (s < send && isSPACE(*s))
-+ s++;
-+ if (s == send) {
-+ return 0;
-+ } else if (*s == '-') {
-+ s++;
-+ numtype = IS_NUMBER_NEG;
-+ }
-+ else if (*s == '+')
-+ s++;
-+
-+ if (s == send)
-+ return 0;
-+
-+ /* next must be digit or the radix separator or beginning of infinity */
-+ if (isDIGIT(*s)) {
-+ /* UVs are at least 32 bits, so the first 9 decimal digits cannot
-+ overflow. */
-+ UV value = *s - '0';
-+ /* This construction seems to be more optimiser friendly.
-+ (without it gcc does the isDIGIT test and the *s - '0' separately)
-+ With it gcc on arm is managing 6 instructions (6 cycles) per digit.
-+ In theory the optimiser could deduce how far to unroll the loop
-+ before checking for overflow. */
-+ if (++s < send) {
-+ int digit = *s - '0';
-+ if (digit >= 0 && digit <= 9) {
-+ value = value * 10 + digit;
-+ if (++s < send) {
-+ digit = *s - '0';
-+ if (digit >= 0 && digit <= 9) {
-+ value = value * 10 + digit;
-+ if (++s < send) {
-+ digit = *s - '0';
-+ if (digit >= 0 && digit <= 9) {
-+ value = value * 10 + digit;
-+ if (++s < send) {
-+ digit = *s - '0';
-+ if (digit >= 0 && digit <= 9) {
-+ value = value * 10 + digit;
-+ if (++s < send) {
-+ digit = *s - '0';
-+ if (digit >= 0 && digit <= 9) {
-+ value = value * 10 + digit;
-+ if (++s < send) {
-+ digit = *s - '0';
-+ if (digit >= 0 && digit <= 9) {
-+ value = value * 10 + digit;
-+ if (++s < send) {
-+ digit = *s - '0';
-+ if (digit >= 0 && digit <= 9) {
-+ value = value * 10 + digit;
-+ if (++s < send) {
-+ digit = *s - '0';
-+ if (digit >= 0 && digit <= 9) {
-+ value = value * 10 + digit;
-+ if (++s < send) {
-+ /* Now got 9 digits, so need to check
-+ each time for overflow. */
-+ digit = *s - '0';
-+ while (digit >= 0 && digit <= 9
-+ && (value < max_div_10
-+ || (value == max_div_10
-+ && digit <= max_mod_10))) {
-+ value = value * 10 + digit;
-+ if (++s < send)
-+ digit = *s - '0';
-+ else
-+ break;
-+ }
-+ if (digit >= 0 && digit <= 9
-+ && (s < send)) {
-+ /* value overflowed.
-+ skip the remaining digits, don't
-+ worry about setting *valuep. */
-+ do {
-+ s++;
-+ } while (s < send && isDIGIT(*s));
-+ numtype |=
-+ IS_NUMBER_GREATER_THAN_UV_MAX;
-+ goto skip_value;
-+ }
-+ }
-+ }
-+ }
-+ }
-+ }
-+ }
-+ }
-+ }
-+ }
-+ }
-+ }
-+ }
-+ }
-+ }
-+ }
-+ }
-+ }
-+ numtype |= IS_NUMBER_IN_UV;
-+ if (valuep)
-+ *valuep = value;
-+
-+ skip_value:
-+ if (GROK_NUMERIC_RADIX(&s, send)) {
-+ numtype |= IS_NUMBER_NOT_INT;
-+ while (s < send && isDIGIT(*s)) /* optional digits after the radix */
-+ s++;
-+ }
-+ }
-+ else if (GROK_NUMERIC_RADIX(&s, send)) {
-+ numtype |= IS_NUMBER_NOT_INT | IS_NUMBER_IN_UV; /* valuep assigned below */
-+ /* no digits before the radix means we need digits after it */
-+ if (s < send && isDIGIT(*s)) {
-+ do {
-+ s++;
-+ } while (s < send && isDIGIT(*s));
-+ if (valuep) {
-+ /* integer approximation is valid - it's 0. */
-+ *valuep = 0;
-+ }
-+ }
-+ else
-+ return 0;
-+ } else if (*s == 'I' || *s == 'i') {
-+ s++; if (s == send || (*s != 'N' && *s != 'n')) return 0;
-+ s++; if (s == send || (*s != 'F' && *s != 'f')) return 0;
-+ s++; if (s < send && (*s == 'I' || *s == 'i')) {
-+ s++; if (s == send || (*s != 'N' && *s != 'n')) return 0;
-+ s++; if (s == send || (*s != 'I' && *s != 'i')) return 0;
-+ s++; if (s == send || (*s != 'T' && *s != 't')) return 0;
-+ s++; if (s == send || (*s != 'Y' && *s != 'y')) return 0;
-+ s++;
-+ }
-+ sawinf = 1;
-+ } else if (*s == 'N' || *s == 'n') {
-+ /* XXX TODO: There are signaling NaNs and quiet NaNs. */
-+ s++; if (s == send || (*s != 'A' && *s != 'a')) return 0;
-+ s++; if (s == send || (*s != 'N' && *s != 'n')) return 0;
-+ s++;
-+ sawnan = 1;
-+ } else
-+ return 0;
-+
-+ if (sawinf) {
-+ numtype &= IS_NUMBER_NEG; /* Keep track of sign */
-+ numtype |= IS_NUMBER_INFINITY | IS_NUMBER_NOT_INT;
-+ } else if (sawnan) {
-+ numtype &= IS_NUMBER_NEG; /* Keep track of sign */
-+ numtype |= IS_NUMBER_NAN | IS_NUMBER_NOT_INT;
-+ } else if (s < send) {
-+ /* we can have an optional exponent part */
-+ if (*s == 'e' || *s == 'E') {
-+ /* The only flag we keep is sign. Blow away any "it's UV" */
-+ numtype &= IS_NUMBER_NEG;
-+ numtype |= IS_NUMBER_NOT_INT;
-+ s++;
-+ if (s < send && (*s == '-' || *s == '+'))
-+ s++;
-+ if (s < send && isDIGIT(*s)) {
-+ do {
-+ s++;
-+ } while (s < send && isDIGIT(*s));
-+ }
-+ else
-+ return 0;
-+ }
-+ }
-+ while (s < send && isSPACE(*s))
-+ s++;
-+ if (s >= send)
-+ return numtype;
-+ if (len == 10 && memEQ(pv, "0 but true", 10)) {
-+ if (valuep)
-+ *valuep = 0;
-+ return IS_NUMBER_IN_UV;
-+ }
-+ return 0;
-+}
-+#endif
-+#endif
-+
-+/*
-+ * The grok_* routines have been modified to use warn() instead of
-+ * Perl_warner(). Also, 'hexdigit' was the former name of PL_hexdigit,
-+ * which is why the stack variable has been renamed to 'xdigit'.
-+ */
-+
-+#ifndef grok_bin
-+#if defined(NEED_grok_bin)
-+static UV DPPP_(my_grok_bin)(pTHX_ const char * start, STRLEN * len_p, I32 * flags, NV * result);
-+static
-+#else
-+extern UV DPPP_(my_grok_bin)(pTHX_ const char * start, STRLEN * len_p, I32 * flags, NV * result);
-+#endif
-+
-+#ifdef grok_bin
-+# undef grok_bin
-+#endif
-+#define grok_bin(a,b,c,d) DPPP_(my_grok_bin)(aTHX_ a,b,c,d)
-+#define Perl_grok_bin DPPP_(my_grok_bin)
-+
-+#if defined(NEED_grok_bin) || defined(NEED_grok_bin_GLOBAL)
-+UV
-+DPPP_(my_grok_bin)(pTHX_ const char *start, STRLEN *len_p, I32 *flags, NV *result)
-+{
-+ const char *s = start;
-+ STRLEN len = *len_p;
-+ UV value = 0;
-+ NV value_nv = 0;
-+
-+ const UV max_div_2 = UV_MAX / 2;
-+ bool allow_underscores = *flags & PERL_SCAN_ALLOW_UNDERSCORES;
-+ bool overflowed = FALSE;
-+
-+ if (!(*flags & PERL_SCAN_DISALLOW_PREFIX)) {
-+ /* strip off leading b or 0b.
-+ for compatibility silently suffer "b" and "0b" as valid binary
-+ numbers. */
-+ if (len >= 1) {
-+ if (s[0] == 'b') {
-+ s++;
-+ len--;
-+ }
-+ else if (len >= 2 && s[0] == '0' && s[1] == 'b') {
-+ s+=2;
-+ len-=2;
-+ }
-+ }
-+ }
-+
-+ for (; len-- && *s; s++) {
-+ char bit = *s;
-+ if (bit == '0' || bit == '1') {
-+ /* Write it in this wonky order with a goto to attempt to get the
-+ compiler to make the common case integer-only loop pretty tight.
-+ With gcc seems to be much straighter code than old scan_bin. */
-+ redo:
-+ if (!overflowed) {
-+ if (value <= max_div_2) {
-+ value = (value << 1) | (bit - '0');
-+ continue;
-+ }
-+ /* Bah. We're just overflowed. */
-+ warn("Integer overflow in binary number");
-+ overflowed = TRUE;
-+ value_nv = (NV) value;
-+ }
-+ value_nv *= 2.0;
-+ /* If an NV has not enough bits in its mantissa to
-+ * represent a UV this summing of small low-order numbers
-+ * is a waste of time (because the NV cannot preserve
-+ * the low-order bits anyway): we could just remember when
-+ * did we overflow and in the end just multiply value_nv by the
-+ * right amount. */
-+ value_nv += (NV)(bit - '0');
-+ continue;
-+ }
-+ if (bit == '_' && len && allow_underscores && (bit = s[1])
-+ && (bit == '0' || bit == '1'))
-+ {
-+ --len;
-+ ++s;
-+ goto redo;
-+ }
-+ if (!(*flags & PERL_SCAN_SILENT_ILLDIGIT))
-+ warn("Illegal binary digit '%c' ignored", *s);
-+ break;
-+ }
-+
-+ if ( ( overflowed && value_nv > 4294967295.0)
-+#if UVSIZE > 4
-+ || (!overflowed && value > 0xffffffff )
-+#endif
-+ ) {
-+ warn("Binary number > 0b11111111111111111111111111111111 non-portable");
-+ }
-+ *len_p = s - start;
-+ if (!overflowed) {
-+ *flags = 0;
-+ return value;
-+ }
-+ *flags = PERL_SCAN_GREATER_THAN_UV_MAX;
-+ if (result)
-+ *result = value_nv;
-+ return UV_MAX;
-+}
-+#endif
-+#endif
-+
-+#ifndef grok_hex
-+#if defined(NEED_grok_hex)
-+static UV DPPP_(my_grok_hex)(pTHX_ const char * start, STRLEN * len_p, I32 * flags, NV * result);
-+static
-+#else
-+extern UV DPPP_(my_grok_hex)(pTHX_ const char * start, STRLEN * len_p, I32 * flags, NV * result);
-+#endif
-+
-+#ifdef grok_hex
-+# undef grok_hex
-+#endif
-+#define grok_hex(a,b,c,d) DPPP_(my_grok_hex)(aTHX_ a,b,c,d)
-+#define Perl_grok_hex DPPP_(my_grok_hex)
-+
-+#if defined(NEED_grok_hex) || defined(NEED_grok_hex_GLOBAL)
-+UV
-+DPPP_(my_grok_hex)(pTHX_ const char *start, STRLEN *len_p, I32 *flags, NV *result)
-+{
-+ const char *s = start;
-+ STRLEN len = *len_p;
-+ UV value = 0;
-+ NV value_nv = 0;
-+
-+ const UV max_div_16 = UV_MAX / 16;
-+ bool allow_underscores = *flags & PERL_SCAN_ALLOW_UNDERSCORES;
-+ bool overflowed = FALSE;
-+ const char *xdigit;
-+
-+ if (!(*flags & PERL_SCAN_DISALLOW_PREFIX)) {
-+ /* strip off leading x or 0x.
-+ for compatibility silently suffer "x" and "0x" as valid hex numbers.
-+ */
-+ if (len >= 1) {
-+ if (s[0] == 'x') {
-+ s++;
-+ len--;
-+ }
-+ else if (len >= 2 && s[0] == '0' && s[1] == 'x') {
-+ s+=2;
-+ len-=2;
-+ }
-+ }
-+ }
-+
-+ for (; len-- && *s; s++) {
-+ xdigit = strchr((char *) PL_hexdigit, *s);
-+ if (xdigit) {
-+ /* Write it in this wonky order with a goto to attempt to get the
-+ compiler to make the common case integer-only loop pretty tight.
-+ With gcc seems to be much straighter code than old scan_hex. */
-+ redo:
-+ if (!overflowed) {
-+ if (value <= max_div_16) {
-+ value = (value << 4) | ((xdigit - PL_hexdigit) & 15);
-+ continue;
-+ }
-+ warn("Integer overflow in hexadecimal number");
-+ overflowed = TRUE;
-+ value_nv = (NV) value;
-+ }
-+ value_nv *= 16.0;
-+ /* If an NV has not enough bits in its mantissa to
-+ * represent a UV this summing of small low-order numbers
-+ * is a waste of time (because the NV cannot preserve
-+ * the low-order bits anyway): we could just remember when
-+ * did we overflow and in the end just multiply value_nv by the
-+ * right amount of 16-tuples. */
-+ value_nv += (NV)((xdigit - PL_hexdigit) & 15);
-+ continue;
-+ }
-+ if (*s == '_' && len && allow_underscores && s[1]
-+ && (xdigit = strchr((char *) PL_hexdigit, s[1])))
-+ {
-+ --len;
-+ ++s;
-+ goto redo;
-+ }
-+ if (!(*flags & PERL_SCAN_SILENT_ILLDIGIT))
-+ warn("Illegal hexadecimal digit '%c' ignored", *s);
-+ break;
-+ }
-+
-+ if ( ( overflowed && value_nv > 4294967295.0)
-+#if UVSIZE > 4
-+ || (!overflowed && value > 0xffffffff )
-+#endif
-+ ) {
-+ warn("Hexadecimal number > 0xffffffff non-portable");
-+ }
-+ *len_p = s - start;
-+ if (!overflowed) {
-+ *flags = 0;
-+ return value;
-+ }
-+ *flags = PERL_SCAN_GREATER_THAN_UV_MAX;
-+ if (result)
-+ *result = value_nv;
-+ return UV_MAX;
-+}
-+#endif
-+#endif
-+
-+#ifndef grok_oct
-+#if defined(NEED_grok_oct)
-+static UV DPPP_(my_grok_oct)(pTHX_ const char * start, STRLEN * len_p, I32 * flags, NV * result);
-+static
-+#else
-+extern UV DPPP_(my_grok_oct)(pTHX_ const char * start, STRLEN * len_p, I32 * flags, NV * result);
-+#endif
-+
-+#ifdef grok_oct
-+# undef grok_oct
-+#endif
-+#define grok_oct(a,b,c,d) DPPP_(my_grok_oct)(aTHX_ a,b,c,d)
-+#define Perl_grok_oct DPPP_(my_grok_oct)
-+
-+#if defined(NEED_grok_oct) || defined(NEED_grok_oct_GLOBAL)
-+UV
-+DPPP_(my_grok_oct)(pTHX_ const char *start, STRLEN *len_p, I32 *flags, NV *result)
-+{
-+ const char *s = start;
-+ STRLEN len = *len_p;
-+ UV value = 0;
-+ NV value_nv = 0;
-+
-+ const UV max_div_8 = UV_MAX / 8;
-+ bool allow_underscores = *flags & PERL_SCAN_ALLOW_UNDERSCORES;
-+ bool overflowed = FALSE;
-+
-+ for (; len-- && *s; s++) {
-+ /* gcc 2.95 optimiser not smart enough to figure that this subtraction
-+ out front allows slicker code. */
-+ int digit = *s - '0';
-+ if (digit >= 0 && digit <= 7) {
-+ /* Write it in this wonky order with a goto to attempt to get the
-+ compiler to make the common case integer-only loop pretty tight.
-+ */
-+ redo:
-+ if (!overflowed) {
-+ if (value <= max_div_8) {
-+ value = (value << 3) | digit;
-+ continue;
-+ }
-+ /* Bah. We're just overflowed. */
-+ warn("Integer overflow in octal number");
-+ overflowed = TRUE;
-+ value_nv = (NV) value;
-+ }
-+ value_nv *= 8.0;
-+ /* If an NV has not enough bits in its mantissa to
-+ * represent a UV this summing of small low-order numbers
-+ * is a waste of time (because the NV cannot preserve
-+ * the low-order bits anyway): we could just remember when
-+ * did we overflow and in the end just multiply value_nv by the
-+ * right amount of 8-tuples. */
-+ value_nv += (NV)digit;
-+ continue;
-+ }
-+ if (digit == ('_' - '0') && len && allow_underscores
-+ && (digit = s[1] - '0') && (digit >= 0 && digit <= 7))
-+ {
-+ --len;
-+ ++s;
-+ goto redo;
-+ }
-+ /* Allow \octal to work the DWIM way (that is, stop scanning
-+ * as soon as non-octal characters are seen, complain only iff
-+ * someone seems to want to use the digits eight and nine). */
-+ if (digit == 8 || digit == 9) {
-+ if (!(*flags & PERL_SCAN_SILENT_ILLDIGIT))
-+ warn("Illegal octal digit '%c' ignored", *s);
-+ }
-+ break;
-+ }
-+
-+ if ( ( overflowed && value_nv > 4294967295.0)
-+#if UVSIZE > 4
-+ || (!overflowed && value > 0xffffffff )
-+#endif
-+ ) {
-+ warn("Octal number > 037777777777 non-portable");
-+ }
-+ *len_p = s - start;
-+ if (!overflowed) {
-+ *flags = 0;
-+ return value;
-+ }
-+ *flags = PERL_SCAN_GREATER_THAN_UV_MAX;
-+ if (result)
-+ *result = value_nv;
-+ return UV_MAX;
-+}
-+#endif
-+#endif
-+
-+#if !defined(my_snprintf)
-+#if defined(NEED_my_snprintf)
-+static int DPPP_(my_my_snprintf)(char * buffer, const Size_t len, const char * format, ...);
-+static
-+#else
-+extern int DPPP_(my_my_snprintf)(char * buffer, const Size_t len, const char * format, ...);
-+#endif
-+
-+#define my_snprintf DPPP_(my_my_snprintf)
-+#define Perl_my_snprintf DPPP_(my_my_snprintf)
-+
-+#if defined(NEED_my_snprintf) || defined(NEED_my_snprintf_GLOBAL)
-+
-+int
-+DPPP_(my_my_snprintf)(char *buffer, const Size_t len, const char *format, ...)
-+{
-+ dTHX;
-+ int retval;
-+ va_list ap;
-+ va_start(ap, format);
-+#ifdef HAS_VSNPRINTF
-+ retval = vsnprintf(buffer, len, format, ap);
-+#else
-+ retval = vsprintf(buffer, format, ap);
-+#endif
-+ va_end(ap);
-+ if (retval < 0 || (len > 0 && (Size_t)retval >= len))
-+ Perl_croak(aTHX_ "panic: my_snprintf buffer overflow");
-+ return retval;
-+}
-+
-+#endif
-+#endif
-+
-+#if !defined(my_sprintf)
-+#if defined(NEED_my_sprintf)
-+static int DPPP_(my_my_sprintf)(char * buffer, const char * pat, ...);
-+static
-+#else
-+extern int DPPP_(my_my_sprintf)(char * buffer, const char * pat, ...);
-+#endif
-+
-+#define my_sprintf DPPP_(my_my_sprintf)
-+#define Perl_my_sprintf DPPP_(my_my_sprintf)
-+
-+#if defined(NEED_my_sprintf) || defined(NEED_my_sprintf_GLOBAL)
-+
-+int
-+DPPP_(my_my_sprintf)(char *buffer, const char* pat, ...)
-+{
-+ va_list args;
-+ va_start(args, pat);
-+ vsprintf(buffer, pat, args);
-+ va_end(args);
-+ return strlen(buffer);
-+}
-+
-+#endif
-+#endif
-+
-+#ifdef NO_XSLOCKS
-+# ifdef dJMPENV
-+# define dXCPT dJMPENV; int rEtV = 0
-+# define XCPT_TRY_START JMPENV_PUSH(rEtV); if (rEtV == 0)
-+# define XCPT_TRY_END JMPENV_POP;
-+# define XCPT_CATCH if (rEtV != 0)
-+# define XCPT_RETHROW JMPENV_JUMP(rEtV)
-+# else
-+# define dXCPT Sigjmp_buf oldTOP; int rEtV = 0
-+# define XCPT_TRY_START Copy(top_env, oldTOP, 1, Sigjmp_buf); rEtV = Sigsetjmp(top_env, 1); if (rEtV == 0)
-+# define XCPT_TRY_END Copy(oldTOP, top_env, 1, Sigjmp_buf);
-+# define XCPT_CATCH if (rEtV != 0)
-+# define XCPT_RETHROW Siglongjmp(top_env, rEtV)
-+# endif
-+#endif
-+
-+#if !defined(my_strlcat)
-+#if defined(NEED_my_strlcat)
-+static Size_t DPPP_(my_my_strlcat)(char * dst, const char * src, Size_t size);
-+static
-+#else
-+extern Size_t DPPP_(my_my_strlcat)(char * dst, const char * src, Size_t size);
-+#endif
-+
-+#define my_strlcat DPPP_(my_my_strlcat)
-+#define Perl_my_strlcat DPPP_(my_my_strlcat)
-+
-+#if defined(NEED_my_strlcat) || defined(NEED_my_strlcat_GLOBAL)
-+
-+Size_t
-+DPPP_(my_my_strlcat)(char *dst, const char *src, Size_t size)
-+{
-+ Size_t used, length, copy;
-+
-+ used = strlen(dst);
-+ length = strlen(src);
-+ if (size > 0 && used < size - 1) {
-+ copy = (length >= size - used) ? size - used - 1 : length;
-+ memcpy(dst + used, src, copy);
-+ dst[used + copy] = '\0';
-+ }
-+ return used + length;
-+}
-+#endif
-+#endif
-+
-+#if !defined(my_strlcpy)
-+#if defined(NEED_my_strlcpy)
-+static Size_t DPPP_(my_my_strlcpy)(char * dst, const char * src, Size_t size);
-+static
-+#else
-+extern Size_t DPPP_(my_my_strlcpy)(char * dst, const char * src, Size_t size);
-+#endif
-+
-+#define my_strlcpy DPPP_(my_my_strlcpy)
-+#define Perl_my_strlcpy DPPP_(my_my_strlcpy)
-+
-+#if defined(NEED_my_strlcpy) || defined(NEED_my_strlcpy_GLOBAL)
-+
-+Size_t
-+DPPP_(my_my_strlcpy)(char *dst, const char *src, Size_t size)
-+{
-+ Size_t length, copy;
-+
-+ length = strlen(src);
-+ if (size > 0) {
-+ copy = (length >= size) ? size - 1 : length;
-+ memcpy(dst, src, copy);
-+ dst[copy] = '\0';
-+ }
-+ return length;
-+}
-+
-+#endif
-+#endif
-+#ifndef PERL_PV_ESCAPE_QUOTE
-+# define PERL_PV_ESCAPE_QUOTE 0x0001
-+#endif
-+
-+#ifndef PERL_PV_PRETTY_QUOTE
-+# define PERL_PV_PRETTY_QUOTE PERL_PV_ESCAPE_QUOTE
-+#endif
-+
-+#ifndef PERL_PV_PRETTY_ELLIPSES
-+# define PERL_PV_PRETTY_ELLIPSES 0x0002
-+#endif
-+
-+#ifndef PERL_PV_PRETTY_LTGT
-+# define PERL_PV_PRETTY_LTGT 0x0004
-+#endif
-+
-+#ifndef PERL_PV_ESCAPE_FIRSTCHAR
-+# define PERL_PV_ESCAPE_FIRSTCHAR 0x0008
-+#endif
-+
-+#ifndef PERL_PV_ESCAPE_UNI
-+# define PERL_PV_ESCAPE_UNI 0x0100
-+#endif
-+
-+#ifndef PERL_PV_ESCAPE_UNI_DETECT
-+# define PERL_PV_ESCAPE_UNI_DETECT 0x0200
-+#endif
-+
-+#ifndef PERL_PV_ESCAPE_ALL
-+# define PERL_PV_ESCAPE_ALL 0x1000
-+#endif
-+
-+#ifndef PERL_PV_ESCAPE_NOBACKSLASH
-+# define PERL_PV_ESCAPE_NOBACKSLASH 0x2000
-+#endif
-+
-+#ifndef PERL_PV_ESCAPE_NOCLEAR
-+# define PERL_PV_ESCAPE_NOCLEAR 0x4000
-+#endif
-+
-+#ifndef PERL_PV_ESCAPE_RE
-+# define PERL_PV_ESCAPE_RE 0x8000
-+#endif
-+
-+#ifndef PERL_PV_PRETTY_NOCLEAR
-+# define PERL_PV_PRETTY_NOCLEAR PERL_PV_ESCAPE_NOCLEAR
-+#endif
-+#ifndef PERL_PV_PRETTY_DUMP
-+# define PERL_PV_PRETTY_DUMP PERL_PV_PRETTY_ELLIPSES|PERL_PV_PRETTY_QUOTE
-+#endif
-+
-+#ifndef PERL_PV_PRETTY_REGPROP
-+# define PERL_PV_PRETTY_REGPROP PERL_PV_PRETTY_ELLIPSES|PERL_PV_PRETTY_LTGT|PERL_PV_ESCAPE_RE
-+#endif
-+
-+/* Hint: pv_escape
-+ * Note that unicode functionality is only backported to
-+ * those perl versions that support it. For older perl
-+ * versions, the implementation will fall back to bytes.
-+ */
-+
-+#ifndef pv_escape
-+#if defined(NEED_pv_escape)
-+static char * DPPP_(my_pv_escape)(pTHX_ SV * dsv, char const * const str, const STRLEN count, const STRLEN max, STRLEN * const escaped, const U32 flags);
-+static
-+#else
-+extern char * DPPP_(my_pv_escape)(pTHX_ SV * dsv, char const * const str, const STRLEN count, const STRLEN max, STRLEN * const escaped, const U32 flags);
-+#endif
-+
-+#ifdef pv_escape
-+# undef pv_escape
-+#endif
-+#define pv_escape(a,b,c,d,e,f) DPPP_(my_pv_escape)(aTHX_ a,b,c,d,e,f)
-+#define Perl_pv_escape DPPP_(my_pv_escape)
-+
-+#if defined(NEED_pv_escape) || defined(NEED_pv_escape_GLOBAL)
-+
-+char *
-+DPPP_(my_pv_escape)(pTHX_ SV *dsv, char const * const str,
-+ const STRLEN count, const STRLEN max,
-+ STRLEN * const escaped, const U32 flags)
-+{
-+ const char esc = flags & PERL_PV_ESCAPE_RE ? '%' : '\\';
-+ const char dq = flags & PERL_PV_ESCAPE_QUOTE ? '"' : esc;
-+ char octbuf[32] = "%123456789ABCDF";
-+ STRLEN wrote = 0;
-+ STRLEN chsize = 0;
-+ STRLEN readsize = 1;
-+#if defined(is_utf8_string) && defined(utf8_to_uvchr)
-+ bool isuni = flags & PERL_PV_ESCAPE_UNI ? 1 : 0;
-+#endif
-+ const char *pv = str;
-+ const char * const end = pv + count;
-+ octbuf[0] = esc;
-+
-+ if (!(flags & PERL_PV_ESCAPE_NOCLEAR))
-+ sv_setpvs(dsv, "");
-+
-+#if defined(is_utf8_string) && defined(utf8_to_uvchr)
-+ if ((flags & PERL_PV_ESCAPE_UNI_DETECT) && is_utf8_string((U8*)pv, count))
-+ isuni = 1;
-+#endif
-+
-+ for (; pv < end && (!max || wrote < max) ; pv += readsize) {
-+ const UV u =
-+#if defined(is_utf8_string) && defined(utf8_to_uvchr)
-+ isuni ? utf8_to_uvchr((U8*)pv, &readsize) :
-+#endif
-+ (U8)*pv;
-+ const U8 c = (U8)u & 0xFF;
-+
-+ if (u > 255 || (flags & PERL_PV_ESCAPE_ALL)) {
-+ if (flags & PERL_PV_ESCAPE_FIRSTCHAR)
-+ chsize = my_snprintf(octbuf, sizeof octbuf,
-+ "%"UVxf, u);
-+ else
-+ chsize = my_snprintf(octbuf, sizeof octbuf,
-+ "%cx{%"UVxf"}", esc, u);
-+ } else if (flags & PERL_PV_ESCAPE_NOBACKSLASH) {
-+ chsize = 1;
-+ } else {
-+ if (c == dq || c == esc || !isPRINT(c)) {
-+ chsize = 2;
-+ switch (c) {
-+ case '\\' : /* fallthrough */
-+ case '%' : if (c == esc)
-+ octbuf[1] = esc;
-+ else
-+ chsize = 1;
-+ break;
-+ case '\v' : octbuf[1] = 'v'; break;
-+ case '\t' : octbuf[1] = 't'; break;
-+ case '\r' : octbuf[1] = 'r'; break;
-+ case '\n' : octbuf[1] = 'n'; break;
-+ case '\f' : octbuf[1] = 'f'; break;
-+ case '"' : if (dq == '"')
-+ octbuf[1] = '"';
-+ else
-+ chsize = 1;
-+ break;
-+ default: chsize = my_snprintf(octbuf, sizeof octbuf,
-+ pv < end && isDIGIT((U8)*(pv+readsize))
-+ ? "%c%03o" : "%c%o", esc, c);
-+ }
-+ } else {
-+ chsize = 1;
-+ }
-+ }
-+ if (max && wrote + chsize > max) {
-+ break;
-+ } else if (chsize > 1) {
-+ sv_catpvn(dsv, octbuf, chsize);
-+ wrote += chsize;
-+ } else {
-+ char tmp[2];
-+ my_snprintf(tmp, sizeof tmp, "%c", c);
-+ sv_catpvn(dsv, tmp, 1);
-+ wrote++;
-+ }
-+ if (flags & PERL_PV_ESCAPE_FIRSTCHAR)
-+ break;
-+ }
-+ if (escaped != NULL)
-+ *escaped= pv - str;
-+ return SvPVX(dsv);
-+}
-+
-+#endif
-+#endif
-+
-+#ifndef pv_pretty
-+#if defined(NEED_pv_pretty)
-+static char * DPPP_(my_pv_pretty)(pTHX_ SV * dsv, char const * const str, const STRLEN count, const STRLEN max, char const * const start_color, char const * const end_color, const U32 flags);
-+static
-+#else
-+extern char * DPPP_(my_pv_pretty)(pTHX_ SV * dsv, char const * const str, const STRLEN count, const STRLEN max, char const * const start_color, char const * const end_color, const U32 flags);
-+#endif
-+
-+#ifdef pv_pretty
-+# undef pv_pretty
-+#endif
-+#define pv_pretty(a,b,c,d,e,f,g) DPPP_(my_pv_pretty)(aTHX_ a,b,c,d,e,f,g)
-+#define Perl_pv_pretty DPPP_(my_pv_pretty)
-+
-+#if defined(NEED_pv_pretty) || defined(NEED_pv_pretty_GLOBAL)
-+
-+char *
-+DPPP_(my_pv_pretty)(pTHX_ SV *dsv, char const * const str, const STRLEN count,
-+ const STRLEN max, char const * const start_color, char const * const end_color,
-+ const U32 flags)
-+{
-+ const U8 dq = (flags & PERL_PV_PRETTY_QUOTE) ? '"' : '%';
-+ STRLEN escaped;
-+
-+ if (!(flags & PERL_PV_PRETTY_NOCLEAR))
-+ sv_setpvs(dsv, "");
-+
-+ if (dq == '"')
-+ sv_catpvs(dsv, "\"");
-+ else if (flags & PERL_PV_PRETTY_LTGT)
-+ sv_catpvs(dsv, "<");
-+
-+ if (start_color != NULL)
-+ sv_catpv(dsv, D_PPP_CONSTPV_ARG(start_color));
-+
-+ pv_escape(dsv, str, count, max, &escaped, flags | PERL_PV_ESCAPE_NOCLEAR);
-+
-+ if (end_color != NULL)
-+ sv_catpv(dsv, D_PPP_CONSTPV_ARG(end_color));
-+
-+ if (dq == '"')
-+ sv_catpvs(dsv, "\"");
-+ else if (flags & PERL_PV_PRETTY_LTGT)
-+ sv_catpvs(dsv, ">");
-+
-+ if ((flags & PERL_PV_PRETTY_ELLIPSES) && escaped < count)
-+ sv_catpvs(dsv, "...");
-+
-+ return SvPVX(dsv);
-+}
-+
-+#endif
-+#endif
-+
-+#ifndef pv_display
-+#if defined(NEED_pv_display)
-+static char * DPPP_(my_pv_display)(pTHX_ SV * dsv, const char * pv, STRLEN cur, STRLEN len, STRLEN pvlim);
-+static
-+#else
-+extern char * DPPP_(my_pv_display)(pTHX_ SV * dsv, const char * pv, STRLEN cur, STRLEN len, STRLEN pvlim);
-+#endif
-+
-+#ifdef pv_display
-+# undef pv_display
-+#endif
-+#define pv_display(a,b,c,d,e) DPPP_(my_pv_display)(aTHX_ a,b,c,d,e)
-+#define Perl_pv_display DPPP_(my_pv_display)
-+
-+#if defined(NEED_pv_display) || defined(NEED_pv_display_GLOBAL)
-+
-+char *
-+DPPP_(my_pv_display)(pTHX_ SV *dsv, const char *pv, STRLEN cur, STRLEN len, STRLEN pvlim)
-+{
-+ pv_pretty(dsv, pv, cur, pvlim, NULL, NULL, PERL_PV_PRETTY_DUMP);
-+ if (len > cur && pv[cur] == '\0')
-+ sv_catpvs(dsv, "\\0");
-+ return SvPVX(dsv);
-+}
-+
-+#endif
-+#endif
-+
-+#endif /* _P_P_PORTABILITY_H_ */
-+
-+/* End of File Graphite2/ppport.h */
diff --git a/debian/patches/series b/debian/patches/series
index a5ef42e..f3c59ef 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -1,3 +1,2 @@
include-and-libraries.diff
disable_font_tests.diff
-debian-changes-0.9.4-2
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-openoffice/graphite2.git
Reply to: