lede-packages-rs

git clone git://archive.git.mtrnord.blog/MTRNord/lede-packages-rs.git
Log | Files | Refs | README | LICENSE

010-xml-parser-expat-use-ppport.h (195374B)


      1 --- a/Expat/Expat.xs
      2 +++ b/Expat/Expat.xs
      3 @@ -20,17 +20,7 @@
      4  #include "patchlevel.h"
      5  #include "encoding.h"
      6  
      7 -
      8 -/* Version 5.005_5x (Development version for 5.006) doesn't like sv_...
      9 -   anymore, but 5.004 doesn't know about PL_sv..
     10 -   Don't want to push up required version just for this. */
     11 -
     12 -#if PATCHLEVEL < 5
     13 -#define PL_sv_undef	sv_undef
     14 -#define PL_sv_no	sv_no
     15 -#define PL_sv_yes	sv_yes
     16 -#define PL_na		na
     17 -#endif
     18 +#include "ppport.h"
     19  
     20  #define BUFSIZE 32768
     21  
     22 --- /dev/null
     23 +++ b/Expat/ppport.h
     24 @@ -0,0 +1,7452 @@
     25 +#if 0
     26 +<<'SKIP';
     27 +#endif
     28 +/*
     29 +----------------------------------------------------------------------
     30 +
     31 +    ppport.h -- Perl/Pollution/Portability Version 3.21
     32 +
     33 +    Automatically created by Devel::PPPort running under perl 5.020002.
     34 +
     35 +    Do NOT edit this file directly! -- Edit PPPort_pm.PL and the
     36 +    includes in parts/inc/ instead.
     37 +
     38 +    Use 'perldoc ppport.h' to view the documentation below.
     39 +
     40 +----------------------------------------------------------------------
     41 +
     42 +SKIP
     43 +
     44 +=pod
     45 +
     46 +=head1 NAME
     47 +
     48 +ppport.h - Perl/Pollution/Portability version 3.21
     49 +
     50 +=head1 SYNOPSIS
     51 +
     52 +  perl ppport.h [options] [source files]
     53 +
     54 +  Searches current directory for files if no [source files] are given
     55 +
     56 +  --help                      show short help
     57 +
     58 +  --version                   show version
     59 +
     60 +  --patch=file                write one patch file with changes
     61 +  --copy=suffix               write changed copies with suffix
     62 +  --diff=program              use diff program and options
     63 +
     64 +  --compat-version=version    provide compatibility with Perl version
     65 +  --cplusplus                 accept C++ comments
     66 +
     67 +  --quiet                     don't output anything except fatal errors
     68 +  --nodiag                    don't show diagnostics
     69 +  --nohints                   don't show hints
     70 +  --nochanges                 don't suggest changes
     71 +  --nofilter                  don't filter input files
     72 +
     73 +  --strip                     strip all script and doc functionality from
     74 +                              ppport.h
     75 +
     76 +  --list-provided             list provided API
     77 +  --list-unsupported          list unsupported API
     78 +  --api-info=name             show Perl API portability information
     79 +
     80 +=head1 COMPATIBILITY
     81 +
     82 +This version of F<ppport.h> is designed to support operation with Perl
     83 +installations back to 5.003, and has been tested up to 5.11.5.
     84 +
     85 +=head1 OPTIONS
     86 +
     87 +=head2 --help
     88 +
     89 +Display a brief usage summary.
     90 +
     91 +=head2 --version
     92 +
     93 +Display the version of F<ppport.h>.
     94 +
     95 +=head2 --patch=I<file>
     96 +
     97 +If this option is given, a single patch file will be created if
     98 +any changes are suggested. This requires a working diff program
     99 +to be installed on your system.
    100 +
    101 +=head2 --copy=I<suffix>
    102 +
    103 +If this option is given, a copy of each file will be saved with
    104 +the given suffix that contains the suggested changes. This does
    105 +not require any external programs. Note that this does not
    106 +automagially add a dot between the original filename and the
    107 +suffix. If you want the dot, you have to include it in the option
    108 +argument.
    109 +
    110 +If neither C<--patch> or C<--copy> are given, the default is to
    111 +simply print the diffs for each file. This requires either
    112 +C<Text::Diff> or a C<diff> program to be installed.
    113 +
    114 +=head2 --diff=I<program>
    115 +
    116 +Manually set the diff program and options to use. The default
    117 +is to use C<Text::Diff>, when installed, and output unified
    118 +context diffs.
    119 +
    120 +=head2 --compat-version=I<version>
    121 +
    122 +Tell F<ppport.h> to check for compatibility with the given
    123 +Perl version. The default is to check for compatibility with Perl
    124 +version 5.003. You can use this option to reduce the output
    125 +of F<ppport.h> if you intend to be backward compatible only
    126 +down to a certain Perl version.
    127 +
    128 +=head2 --cplusplus
    129 +
    130 +Usually, F<ppport.h> will detect C++ style comments and
    131 +replace them with C style comments for portability reasons.
    132 +Using this option instructs F<ppport.h> to leave C++
    133 +comments untouched.
    134 +
    135 +=head2 --quiet
    136 +
    137 +Be quiet. Don't print anything except fatal errors.
    138 +
    139 +=head2 --nodiag
    140 +
    141 +Don't output any diagnostic messages. Only portability
    142 +alerts will be printed.
    143 +
    144 +=head2 --nohints
    145 +
    146 +Don't output any hints. Hints often contain useful portability
    147 +notes. Warnings will still be displayed.
    148 +
    149 +=head2 --nochanges
    150 +
    151 +Don't suggest any changes. Only give diagnostic output and hints
    152 +unless these are also deactivated.
    153 +
    154 +=head2 --nofilter
    155 +
    156 +Don't filter the list of input files. By default, files not looking
    157 +like source code (i.e. not *.xs, *.c, *.cc, *.cpp or *.h) are skipped.
    158 +
    159 +=head2 --strip
    160 +
    161 +Strip all script and documentation functionality from F<ppport.h>.
    162 +This reduces the size of F<ppport.h> dramatically and may be useful
    163 +if you want to include F<ppport.h> in smaller modules without
    164 +increasing their distribution size too much.
    165 +
    166 +The stripped F<ppport.h> will have a C<--unstrip> option that allows
    167 +you to undo the stripping, but only if an appropriate C<Devel::PPPort>
    168 +module is installed.
    169 +
    170 +=head2 --list-provided
    171 +
    172 +Lists the API elements for which compatibility is provided by
    173 +F<ppport.h>. Also lists if it must be explicitly requested,
    174 +if it has dependencies, and if there are hints or warnings for it.
    175 +
    176 +=head2 --list-unsupported
    177 +
    178 +Lists the API elements that are known not to be supported by
    179 +F<ppport.h> and below which version of Perl they probably
    180 +won't be available or work.
    181 +
    182 +=head2 --api-info=I<name>
    183 +
    184 +Show portability information for API elements matching I<name>.
    185 +If I<name> is surrounded by slashes, it is interpreted as a regular
    186 +expression.
    187 +
    188 +=head1 DESCRIPTION
    189 +
    190 +In order for a Perl extension (XS) module to be as portable as possible
    191 +across differing versions of Perl itself, certain steps need to be taken.
    192 +
    193 +=over 4
    194 +
    195 +=item *
    196 +
    197 +Including this header is the first major one. This alone will give you
    198 +access to a large part of the Perl API that hasn't been available in
    199 +earlier Perl releases. Use
    200 +
    201 +    perl ppport.h --list-provided
    202 +
    203 +to see which API elements are provided by ppport.h.
    204 +
    205 +=item *
    206 +
    207 +You should avoid using deprecated parts of the API. For example, using
    208 +global Perl variables without the C<PL_> prefix is deprecated. Also,
    209 +some API functions used to have a C<perl_> prefix. Using this form is
    210 +also deprecated. You can safely use the supported API, as F<ppport.h>
    211 +will provide wrappers for older Perl versions.
    212 +
    213 +=item *
    214 +
    215 +If you use one of a few functions or variables that were not present in
    216 +earlier versions of Perl, and that can't be provided using a macro, you
    217 +have to explicitly request support for these functions by adding one or
    218 +more C<#define>s in your source code before the inclusion of F<ppport.h>.
    219 +
    220 +These functions or variables will be marked C<explicit> in the list shown
    221 +by C<--list-provided>.
    222 +
    223 +Depending on whether you module has a single or multiple files that
    224 +use such functions or variables, you want either C<static> or global
    225 +variants.
    226 +
    227 +For a C<static> function or variable (used only in a single source
    228 +file), use:
    229 +
    230 +    #define NEED_function
    231 +    #define NEED_variable
    232 +
    233 +For a global function or variable (used in multiple source files),
    234 +use:
    235 +
    236 +    #define NEED_function_GLOBAL
    237 +    #define NEED_variable_GLOBAL
    238 +
    239 +Note that you mustn't have more than one global request for the
    240 +same function or variable in your project.
    241 +
    242 +    Function / Variable       Static Request               Global Request
    243 +    -----------------------------------------------------------------------------------------
    244 +    PL_parser                 NEED_PL_parser               NEED_PL_parser_GLOBAL
    245 +    PL_signals                NEED_PL_signals              NEED_PL_signals_GLOBAL
    246 +    eval_pv()                 NEED_eval_pv                 NEED_eval_pv_GLOBAL
    247 +    grok_bin()                NEED_grok_bin                NEED_grok_bin_GLOBAL
    248 +    grok_hex()                NEED_grok_hex                NEED_grok_hex_GLOBAL
    249 +    grok_number()             NEED_grok_number             NEED_grok_number_GLOBAL
    250 +    grok_numeric_radix()      NEED_grok_numeric_radix      NEED_grok_numeric_radix_GLOBAL
    251 +    grok_oct()                NEED_grok_oct                NEED_grok_oct_GLOBAL
    252 +    load_module()             NEED_load_module             NEED_load_module_GLOBAL
    253 +    my_snprintf()             NEED_my_snprintf             NEED_my_snprintf_GLOBAL
    254 +    my_sprintf()              NEED_my_sprintf              NEED_my_sprintf_GLOBAL
    255 +    my_strlcat()              NEED_my_strlcat              NEED_my_strlcat_GLOBAL
    256 +    my_strlcpy()              NEED_my_strlcpy              NEED_my_strlcpy_GLOBAL
    257 +    newCONSTSUB()             NEED_newCONSTSUB             NEED_newCONSTSUB_GLOBAL
    258 +    newRV_noinc()             NEED_newRV_noinc             NEED_newRV_noinc_GLOBAL
    259 +    newSV_type()              NEED_newSV_type              NEED_newSV_type_GLOBAL
    260 +    newSVpvn_flags()          NEED_newSVpvn_flags          NEED_newSVpvn_flags_GLOBAL
    261 +    newSVpvn_share()          NEED_newSVpvn_share          NEED_newSVpvn_share_GLOBAL
    262 +    pv_display()              NEED_pv_display              NEED_pv_display_GLOBAL
    263 +    pv_escape()               NEED_pv_escape               NEED_pv_escape_GLOBAL
    264 +    pv_pretty()               NEED_pv_pretty               NEED_pv_pretty_GLOBAL
    265 +    sv_2pv_flags()            NEED_sv_2pv_flags            NEED_sv_2pv_flags_GLOBAL
    266 +    sv_2pvbyte()              NEED_sv_2pvbyte              NEED_sv_2pvbyte_GLOBAL
    267 +    sv_catpvf_mg()            NEED_sv_catpvf_mg            NEED_sv_catpvf_mg_GLOBAL
    268 +    sv_catpvf_mg_nocontext()  NEED_sv_catpvf_mg_nocontext  NEED_sv_catpvf_mg_nocontext_GLOBAL
    269 +    sv_pvn_force_flags()      NEED_sv_pvn_force_flags      NEED_sv_pvn_force_flags_GLOBAL
    270 +    sv_setpvf_mg()            NEED_sv_setpvf_mg            NEED_sv_setpvf_mg_GLOBAL
    271 +    sv_setpvf_mg_nocontext()  NEED_sv_setpvf_mg_nocontext  NEED_sv_setpvf_mg_nocontext_GLOBAL
    272 +    vload_module()            NEED_vload_module            NEED_vload_module_GLOBAL
    273 +    vnewSVpvf()               NEED_vnewSVpvf               NEED_vnewSVpvf_GLOBAL
    274 +    warner()                  NEED_warner                  NEED_warner_GLOBAL
    275 +
    276 +To avoid namespace conflicts, you can change the namespace of the
    277 +explicitly exported functions / variables using the C<DPPP_NAMESPACE>
    278 +macro. Just C<#define> the macro before including C<ppport.h>:
    279 +
    280 +    #define DPPP_NAMESPACE MyOwnNamespace_
    281 +    #include "ppport.h"
    282 +
    283 +The default namespace is C<DPPP_>.
    284 +
    285 +=back
    286 +
    287 +The good thing is that most of the above can be checked by running
    288 +F<ppport.h> on your source code. See the next section for
    289 +details.
    290 +
    291 +=head1 EXAMPLES
    292 +
    293 +To verify whether F<ppport.h> is needed for your module, whether you
    294 +should make any changes to your code, and whether any special defines
    295 +should be used, F<ppport.h> can be run as a Perl script to check your
    296 +source code. Simply say:
    297 +
    298 +    perl ppport.h
    299 +
    300 +The result will usually be a list of patches suggesting changes
    301 +that should at least be acceptable, if not necessarily the most
    302 +efficient solution, or a fix for all possible problems.
    303 +
    304 +If you know that your XS module uses features only available in
    305 +newer Perl releases, if you're aware that it uses C++ comments,
    306 +and if you want all suggestions as a single patch file, you could
    307 +use something like this:
    308 +
    309 +    perl ppport.h --compat-version=5.6.0 --cplusplus --patch=test.diff
    310 +
    311 +If you only want your code to be scanned without any suggestions
    312 +for changes, use:
    313 +
    314 +    perl ppport.h --nochanges
    315 +
    316 +You can specify a different C<diff> program or options, using
    317 +the C<--diff> option:
    318 +
    319 +    perl ppport.h --diff='diff -C 10'
    320 +
    321 +This would output context diffs with 10 lines of context.
    322 +
    323 +If you want to create patched copies of your files instead, use:
    324 +
    325 +    perl ppport.h --copy=.new
    326 +
    327 +To display portability information for the C<newSVpvn> function,
    328 +use:
    329 +
    330 +    perl ppport.h --api-info=newSVpvn
    331 +
    332 +Since the argument to C<--api-info> can be a regular expression,
    333 +you can use
    334 +
    335 +    perl ppport.h --api-info=/_nomg$/
    336 +
    337 +to display portability information for all C<_nomg> functions or
    338 +
    339 +    perl ppport.h --api-info=/./
    340 +
    341 +to display information for all known API elements.
    342 +
    343 +=head1 BUGS
    344 +
    345 +If this version of F<ppport.h> is causing failure during
    346 +the compilation of this module, please check if newer versions
    347 +of either this module or C<Devel::PPPort> are available on CPAN
    348 +before sending a bug report.
    349 +
    350 +If F<ppport.h> was generated using the latest version of
    351 +C<Devel::PPPort> and is causing failure of this module, please
    352 +file a bug report using the CPAN Request Tracker at L<http://rt.cpan.org/>.
    353 +
    354 +Please include the following information:
    355 +
    356 +=over 4
    357 +
    358 +=item 1.
    359 +
    360 +The complete output from running "perl -V"
    361 +
    362 +=item 2.
    363 +
    364 +This file.
    365 +
    366 +=item 3.
    367 +
    368 +The name and version of the module you were trying to build.
    369 +
    370 +=item 4.
    371 +
    372 +A full log of the build that failed.
    373 +
    374 +=item 5.
    375 +
    376 +Any other information that you think could be relevant.
    377 +
    378 +=back
    379 +
    380 +For the latest version of this code, please get the C<Devel::PPPort>
    381 +module from CPAN.
    382 +
    383 +=head1 COPYRIGHT
    384 +
    385 +Version 3.x, Copyright (c) 2004-2013, Marcus Holland-Moritz.
    386 +
    387 +Version 2.x, Copyright (C) 2001, Paul Marquess.
    388 +
    389 +Version 1.x, Copyright (C) 1999, Kenneth Albanowski.
    390 +
    391 +This program is free software; you can redistribute it and/or
    392 +modify it under the same terms as Perl itself.
    393 +
    394 +=head1 SEE ALSO
    395 +
    396 +See L<Devel::PPPort>.
    397 +
    398 +=cut
    399 +
    400 +use strict;
    401 +
    402 +# Disable broken TRIE-optimization
    403 +BEGIN { eval '${^RE_TRIE_MAXBUF} = -1' if $] >= 5.009004 && $] <= 5.009005 }
    404 +
    405 +my $VERSION = 3.21;
    406 +
    407 +my %opt = (
    408 +  quiet     => 0,
    409 +  diag      => 1,
    410 +  hints     => 1,
    411 +  changes   => 1,
    412 +  cplusplus => 0,
    413 +  filter    => 1,
    414 +  strip     => 0,
    415 +  version   => 0,
    416 +);
    417 +
    418 +my($ppport) = $0 =~ /([\w.]+)$/;
    419 +my $LF = '(?:\r\n|[\r\n])';   # line feed
    420 +my $HS = "[ \t]";             # horizontal whitespace
    421 +
    422 +# Never use C comments in this file!
    423 +my $ccs  = '/'.'*';
    424 +my $cce  = '*'.'/';
    425 +my $rccs = quotemeta $ccs;
    426 +my $rcce = quotemeta $cce;
    427 +
    428 +eval {
    429 +  require Getopt::Long;
    430 +  Getopt::Long::GetOptions(\%opt, qw(
    431 +    help quiet diag! filter! hints! changes! cplusplus strip version
    432 +    patch=s copy=s diff=s compat-version=s
    433 +    list-provided list-unsupported api-info=s
    434 +  )) or usage();
    435 +};
    436 +
    437 +if ($@ and grep /^-/, @ARGV) {
    438 +  usage() if "@ARGV" =~ /^--?h(?:elp)?$/;
    439 +  die "Getopt::Long not found. Please don't use any options.\n";
    440 +}
    441 +
    442 +if ($opt{version}) {
    443 +  print "This is $0 $VERSION.\n";
    444 +  exit 0;
    445 +}
    446 +
    447 +usage() if $opt{help};
    448 +strip() if $opt{strip};
    449 +
    450 +if (exists $opt{'compat-version'}) {
    451 +  my($r,$v,$s) = eval { parse_version($opt{'compat-version'}) };
    452 +  if ($@) {
    453 +    die "Invalid version number format: '$opt{'compat-version'}'\n";
    454 +  }
    455 +  die "Only Perl 5 is supported\n" if $r != 5;
    456 +  die "Invalid version number: $opt{'compat-version'}\n" if $v >= 1000 || $s >= 1000;
    457 +  $opt{'compat-version'} = sprintf "%d.%03d%03d", $r, $v, $s;
    458 +}
    459 +else {
    460 +  $opt{'compat-version'} = 5;
    461 +}
    462 +
    463 +my %API = map { /^(\w+)\|([^|]*)\|([^|]*)\|(\w*)$/
    464 +                ? ( $1 => {
    465 +                      ($2                  ? ( base     => $2 ) : ()),
    466 +                      ($3                  ? ( todo     => $3 ) : ()),
    467 +                      (index($4, 'v') >= 0 ? ( varargs  => 1  ) : ()),
    468 +                      (index($4, 'p') >= 0 ? ( provided => 1  ) : ()),
    469 +                      (index($4, 'n') >= 0 ? ( nothxarg => 1  ) : ()),
    470 +                    } )
    471 +                : die "invalid spec: $_" } qw(
    472 +AvFILLp|5.004050||p
    473 +AvFILL|||
    474 +BhkDISABLE||5.019003|
    475 +BhkENABLE||5.019003|
    476 +BhkENTRY_set||5.019003|
    477 +BhkENTRY|||
    478 +BhkFLAGS|||
    479 +CALL_BLOCK_HOOKS|||
    480 +CLASS|||n
    481 +CPERLscope|5.005000||p
    482 +CX_CURPAD_SAVE|||
    483 +CX_CURPAD_SV|||
    484 +CopFILEAV|5.006000||p
    485 +CopFILEGV_set|5.006000||p
    486 +CopFILEGV|5.006000||p
    487 +CopFILESV|5.006000||p
    488 +CopFILE_set|5.006000||p
    489 +CopFILE|5.006000||p
    490 +CopSTASHPV_set|5.006000||p
    491 +CopSTASHPV|5.006000||p
    492 +CopSTASH_eq|5.006000||p
    493 +CopSTASH_set|5.006000||p
    494 +CopSTASH|5.006000||p
    495 +CopyD|5.009002|5.004050|p
    496 +Copy||5.004050|
    497 +CvPADLIST||5.008001|
    498 +CvSTASH|||
    499 +CvWEAKOUTSIDE|||
    500 +DEFSV_set|5.010001||p
    501 +DEFSV|5.004050||p
    502 +END_EXTERN_C|5.005000||p
    503 +ENTER|||
    504 +ERRSV|5.004050||p
    505 +EXTEND|||
    506 +EXTERN_C|5.005000||p
    507 +F0convert|||n
    508 +FREETMPS|||
    509 +GIMME_V||5.004000|n
    510 +GIMME|||n
    511 +GROK_NUMERIC_RADIX|5.007002||p
    512 +G_ARRAY|||
    513 +G_DISCARD|||
    514 +G_EVAL|||
    515 +G_METHOD|5.006001||p
    516 +G_NOARGS|||
    517 +G_SCALAR|||
    518 +G_VOID||5.004000|
    519 +GetVars|||
    520 +GvAV|||
    521 +GvCV|||
    522 +GvHV|||
    523 +GvSVn|5.009003||p
    524 +GvSV|||
    525 +Gv_AMupdate||5.011000|
    526 +HEf_SVKEY||5.004000|
    527 +HeHASH||5.004000|
    528 +HeKEY||5.004000|
    529 +HeKLEN||5.004000|
    530 +HePV||5.004000|
    531 +HeSVKEY_force||5.004000|
    532 +HeSVKEY_set||5.004000|
    533 +HeSVKEY||5.004000|
    534 +HeUTF8||5.010001|
    535 +HeVAL||5.004000|
    536 +HvENAMELEN||5.015004|
    537 +HvENAMEUTF8||5.015004|
    538 +HvENAME||5.013007|
    539 +HvNAMELEN_get|5.009003||p
    540 +HvNAMELEN||5.015004|
    541 +HvNAMEUTF8||5.015004|
    542 +HvNAME_get|5.009003||p
    543 +HvNAME|||
    544 +INT2PTR|5.006000||p
    545 +IN_LOCALE_COMPILETIME|5.007002||p
    546 +IN_LOCALE_RUNTIME|5.007002||p
    547 +IN_LOCALE|5.007002||p
    548 +IN_PERL_COMPILETIME|5.008001||p
    549 +IS_NUMBER_GREATER_THAN_UV_MAX|5.007002||p
    550 +IS_NUMBER_INFINITY|5.007002||p
    551 +IS_NUMBER_IN_UV|5.007002||p
    552 +IS_NUMBER_NAN|5.007003||p
    553 +IS_NUMBER_NEG|5.007002||p
    554 +IS_NUMBER_NOT_INT|5.007002||p
    555 +IVSIZE|5.006000||p
    556 +IVTYPE|5.006000||p
    557 +IVdf|5.006000||p
    558 +LEAVE|||
    559 +LINKLIST||5.013006|
    560 +LVRET|||
    561 +MARK|||
    562 +MULTICALL||5.019003|
    563 +MY_CXT_CLONE|5.009002||p
    564 +MY_CXT_INIT|5.007003||p
    565 +MY_CXT|5.007003||p
    566 +MoveD|5.009002|5.004050|p
    567 +Move||5.004050|
    568 +NOOP|5.005000||p
    569 +NUM2PTR|5.006000||p
    570 +NVTYPE|5.006000||p
    571 +NVef|5.006001||p
    572 +NVff|5.006001||p
    573 +NVgf|5.006001||p
    574 +Newxc|5.009003||p
    575 +Newxz|5.009003||p
    576 +Newx|5.009003||p
    577 +Nullav|||
    578 +Nullch|||
    579 +Nullcv|||
    580 +Nullhv|||
    581 +Nullsv|||
    582 +OP_CLASS||5.013007|
    583 +OP_DESC||5.007003|
    584 +OP_NAME||5.007003|
    585 +ORIGMARK|||
    586 +PAD_BASE_SV|||
    587 +PAD_CLONE_VARS|||
    588 +PAD_COMPNAME_FLAGS|||
    589 +PAD_COMPNAME_GEN_set|||
    590 +PAD_COMPNAME_GEN|||
    591 +PAD_COMPNAME_OURSTASH|||
    592 +PAD_COMPNAME_PV|||
    593 +PAD_COMPNAME_TYPE|||
    594 +PAD_RESTORE_LOCAL|||
    595 +PAD_SAVE_LOCAL|||
    596 +PAD_SAVE_SETNULLPAD|||
    597 +PAD_SETSV|||
    598 +PAD_SET_CUR_NOSAVE|||
    599 +PAD_SET_CUR|||
    600 +PAD_SVl|||
    601 +PAD_SV|||
    602 +PERLIO_FUNCS_CAST|5.009003||p
    603 +PERLIO_FUNCS_DECL|5.009003||p
    604 +PERL_ABS|5.008001||p
    605 +PERL_BCDVERSION|5.019002||p
    606 +PERL_GCC_BRACE_GROUPS_FORBIDDEN|5.008001||p
    607 +PERL_HASH|5.004000||p
    608 +PERL_INT_MAX|5.004000||p
    609 +PERL_INT_MIN|5.004000||p
    610 +PERL_LONG_MAX|5.004000||p
    611 +PERL_LONG_MIN|5.004000||p
    612 +PERL_MAGIC_arylen|5.007002||p
    613 +PERL_MAGIC_backref|5.007002||p
    614 +PERL_MAGIC_bm|5.007002||p
    615 +PERL_MAGIC_collxfrm|5.007002||p
    616 +PERL_MAGIC_dbfile|5.007002||p
    617 +PERL_MAGIC_dbline|5.007002||p
    618 +PERL_MAGIC_defelem|5.007002||p
    619 +PERL_MAGIC_envelem|5.007002||p
    620 +PERL_MAGIC_env|5.007002||p
    621 +PERL_MAGIC_ext|5.007002||p
    622 +PERL_MAGIC_fm|5.007002||p
    623 +PERL_MAGIC_glob|5.019002||p
    624 +PERL_MAGIC_isaelem|5.007002||p
    625 +PERL_MAGIC_isa|5.007002||p
    626 +PERL_MAGIC_mutex|5.019002||p
    627 +PERL_MAGIC_nkeys|5.007002||p
    628 +PERL_MAGIC_overload_elem|5.019002||p
    629 +PERL_MAGIC_overload_table|5.007002||p
    630 +PERL_MAGIC_overload|5.019002||p
    631 +PERL_MAGIC_pos|5.007002||p
    632 +PERL_MAGIC_qr|5.007002||p
    633 +PERL_MAGIC_regdata|5.007002||p
    634 +PERL_MAGIC_regdatum|5.007002||p
    635 +PERL_MAGIC_regex_global|5.007002||p
    636 +PERL_MAGIC_shared_scalar|5.007003||p
    637 +PERL_MAGIC_shared|5.007003||p
    638 +PERL_MAGIC_sigelem|5.007002||p
    639 +PERL_MAGIC_sig|5.007002||p
    640 +PERL_MAGIC_substr|5.007002||p
    641 +PERL_MAGIC_sv|5.007002||p
    642 +PERL_MAGIC_taint|5.007002||p
    643 +PERL_MAGIC_tiedelem|5.007002||p
    644 +PERL_MAGIC_tiedscalar|5.007002||p
    645 +PERL_MAGIC_tied|5.007002||p
    646 +PERL_MAGIC_utf8|5.008001||p
    647 +PERL_MAGIC_uvar_elem|5.007003||p
    648 +PERL_MAGIC_uvar|5.007002||p
    649 +PERL_MAGIC_vec|5.007002||p
    650 +PERL_MAGIC_vstring|5.008001||p
    651 +PERL_PV_ESCAPE_ALL|5.009004||p
    652 +PERL_PV_ESCAPE_FIRSTCHAR|5.009004||p
    653 +PERL_PV_ESCAPE_NOBACKSLASH|5.009004||p
    654 +PERL_PV_ESCAPE_NOCLEAR|5.009004||p
    655 +PERL_PV_ESCAPE_QUOTE|5.009004||p
    656 +PERL_PV_ESCAPE_RE|5.009005||p
    657 +PERL_PV_ESCAPE_UNI_DETECT|5.009004||p
    658 +PERL_PV_ESCAPE_UNI|5.009004||p
    659 +PERL_PV_PRETTY_DUMP|5.009004||p
    660 +PERL_PV_PRETTY_ELLIPSES|5.010000||p
    661 +PERL_PV_PRETTY_LTGT|5.009004||p
    662 +PERL_PV_PRETTY_NOCLEAR|5.010000||p
    663 +PERL_PV_PRETTY_QUOTE|5.009004||p
    664 +PERL_PV_PRETTY_REGPROP|5.009004||p
    665 +PERL_QUAD_MAX|5.004000||p
    666 +PERL_QUAD_MIN|5.004000||p
    667 +PERL_REVISION|5.006000||p
    668 +PERL_SCAN_ALLOW_UNDERSCORES|5.007003||p
    669 +PERL_SCAN_DISALLOW_PREFIX|5.007003||p
    670 +PERL_SCAN_GREATER_THAN_UV_MAX|5.007003||p
    671 +PERL_SCAN_SILENT_ILLDIGIT|5.008001||p
    672 +PERL_SHORT_MAX|5.004000||p
    673 +PERL_SHORT_MIN|5.004000||p
    674 +PERL_SIGNALS_UNSAFE_FLAG|5.008001||p
    675 +PERL_SUBVERSION|5.006000||p
    676 +PERL_SYS_INIT3||5.010000|
    677 +PERL_SYS_INIT||5.010000|
    678 +PERL_SYS_TERM||5.019003|
    679 +PERL_UCHAR_MAX|5.004000||p
    680 +PERL_UCHAR_MIN|5.004000||p
    681 +PERL_UINT_MAX|5.004000||p
    682 +PERL_UINT_MIN|5.004000||p
    683 +PERL_ULONG_MAX|5.004000||p
    684 +PERL_ULONG_MIN|5.004000||p
    685 +PERL_UNUSED_ARG|5.009003||p
    686 +PERL_UNUSED_CONTEXT|5.009004||p
    687 +PERL_UNUSED_DECL|5.007002||p
    688 +PERL_UNUSED_VAR|5.007002||p
    689 +PERL_UQUAD_MAX|5.004000||p
    690 +PERL_UQUAD_MIN|5.004000||p
    691 +PERL_USE_GCC_BRACE_GROUPS|5.009004||p
    692 +PERL_USHORT_MAX|5.004000||p
    693 +PERL_USHORT_MIN|5.004000||p
    694 +PERL_VERSION|5.006000||p
    695 +PL_DBsignal|5.005000||p
    696 +PL_DBsingle|||pn
    697 +PL_DBsub|||pn
    698 +PL_DBtrace|||pn
    699 +PL_Sv|5.005000||p
    700 +PL_bufend|5.019002||p
    701 +PL_bufptr|5.019002||p
    702 +PL_check||5.006000|
    703 +PL_compiling|5.004050||p
    704 +PL_comppad_name||5.017004|
    705 +PL_comppad||5.008001|
    706 +PL_copline|5.019002||p
    707 +PL_curcop|5.004050||p
    708 +PL_curpad||5.005000|
    709 +PL_curstash|5.004050||p
    710 +PL_debstash|5.004050||p
    711 +PL_defgv|5.004050||p
    712 +PL_diehook|5.004050||p
    713 +PL_dirty|5.004050||p
    714 +PL_dowarn|||pn
    715 +PL_errgv|5.004050||p
    716 +PL_error_count|5.019002||p
    717 +PL_expect|5.019002||p
    718 +PL_hexdigit|5.005000||p
    719 +PL_hints|5.005000||p
    720 +PL_in_my_stash|5.019002||p
    721 +PL_in_my|5.019002||p
    722 +PL_keyword_plugin||5.011002|
    723 +PL_last_in_gv|||n
    724 +PL_laststatval|5.005000||p
    725 +PL_lex_state|5.019002||p
    726 +PL_lex_stuff|5.019002||p
    727 +PL_linestr|5.019002||p
    728 +PL_modglobal||5.005000|n
    729 +PL_na|5.004050||pn
    730 +PL_no_modify|5.006000||p
    731 +PL_ofsgv|||n
    732 +PL_opfreehook||5.011000|n
    733 +PL_parser|5.009005|5.009005|p
    734 +PL_peepp||5.007003|n
    735 +PL_perl_destruct_level|5.004050||p
    736 +PL_perldb|5.004050||p
    737 +PL_ppaddr|5.006000||p
    738 +PL_rpeepp||5.013005|n
    739 +PL_rsfp_filters|5.019002||p
    740 +PL_rsfp|5.019002||p
    741 +PL_rs|||n
    742 +PL_signals|5.008001||p
    743 +PL_stack_base|5.004050||p
    744 +PL_stack_sp|5.004050||p
    745 +PL_statcache|5.005000||p
    746 +PL_stdingv|5.004050||p
    747 +PL_sv_arenaroot|5.004050||p
    748 +PL_sv_no|5.004050||pn
    749 +PL_sv_undef|5.004050||pn
    750 +PL_sv_yes|5.004050||pn
    751 +PL_tainted|5.004050||p
    752 +PL_tainting|5.004050||p
    753 +PL_tokenbuf|5.019002||p
    754 +POP_MULTICALL||5.019003|
    755 +POPi|||n
    756 +POPl|||n
    757 +POPn|||n
    758 +POPpbytex||5.007001|n
    759 +POPpx||5.005030|n
    760 +POPp|||n
    761 +POPs|||n
    762 +PTR2IV|5.006000||p
    763 +PTR2NV|5.006000||p
    764 +PTR2UV|5.006000||p
    765 +PTR2nat|5.009003||p
    766 +PTR2ul|5.007001||p
    767 +PTRV|5.006000||p
    768 +PUSHMARK|||
    769 +PUSH_MULTICALL||5.019003|
    770 +PUSHi|||
    771 +PUSHmortal|5.009002||p
    772 +PUSHn|||
    773 +PUSHp|||
    774 +PUSHs|||
    775 +PUSHu|5.004000||p
    776 +PUTBACK|||
    777 +PadARRAY||5.019003|
    778 +PadMAX||5.019003|
    779 +PadlistARRAY||5.019003|
    780 +PadlistMAX||5.019003|
    781 +PadlistNAMESARRAY||5.019003|
    782 +PadlistNAMESMAX||5.019003|
    783 +PadlistNAMES||5.019003|
    784 +PadlistREFCNT||5.017004|
    785 +PadnameIsOUR|||
    786 +PadnameIsSTATE|||
    787 +PadnameLEN||5.019003|
    788 +PadnameOURSTASH|||
    789 +PadnameOUTER|||
    790 +PadnamePV||5.019003|
    791 +PadnameSV||5.019003|
    792 +PadnameTYPE|||
    793 +PadnameUTF8||5.019003|
    794 +PadnamelistARRAY||5.019003|
    795 +PadnamelistMAX||5.019003|
    796 +PerlIO_clearerr||5.007003|
    797 +PerlIO_close||5.007003|
    798 +PerlIO_context_layers||5.009004|
    799 +PerlIO_eof||5.007003|
    800 +PerlIO_error||5.007003|
    801 +PerlIO_fileno||5.007003|
    802 +PerlIO_fill||5.007003|
    803 +PerlIO_flush||5.007003|
    804 +PerlIO_get_base||5.007003|
    805 +PerlIO_get_bufsiz||5.007003|
    806 +PerlIO_get_cnt||5.007003|
    807 +PerlIO_get_ptr||5.007003|
    808 +PerlIO_read||5.007003|
    809 +PerlIO_seek||5.007003|
    810 +PerlIO_set_cnt||5.007003|
    811 +PerlIO_set_ptrcnt||5.007003|
    812 +PerlIO_setlinebuf||5.007003|
    813 +PerlIO_stderr||5.007003|
    814 +PerlIO_stdin||5.007003|
    815 +PerlIO_stdout||5.007003|
    816 +PerlIO_tell||5.007003|
    817 +PerlIO_unread||5.007003|
    818 +PerlIO_write||5.007003|
    819 +Perl_signbit||5.009005|n
    820 +PoisonFree|5.009004||p
    821 +PoisonNew|5.009004||p
    822 +PoisonWith|5.009004||p
    823 +Poison|5.008000||p
    824 +READ_XDIGIT||5.017006|
    825 +RETVAL|||n
    826 +Renewc|||
    827 +Renew|||
    828 +SAVECLEARSV|||
    829 +SAVECOMPPAD|||
    830 +SAVEPADSV|||
    831 +SAVETMPS|||
    832 +SAVE_DEFSV|5.004050||p
    833 +SPAGAIN|||
    834 +SP|||
    835 +START_EXTERN_C|5.005000||p
    836 +START_MY_CXT|5.007003||p
    837 +STMT_END|||p
    838 +STMT_START|||p
    839 +STR_WITH_LEN|5.009003||p
    840 +ST|||
    841 +SV_CONST_RETURN|5.009003||p
    842 +SV_COW_DROP_PV|5.008001||p
    843 +SV_COW_SHARED_HASH_KEYS|5.009005||p
    844 +SV_GMAGIC|5.007002||p
    845 +SV_HAS_TRAILING_NUL|5.009004||p
    846 +SV_IMMEDIATE_UNREF|5.007001||p
    847 +SV_MUTABLE_RETURN|5.009003||p
    848 +SV_NOSTEAL|5.009002||p
    849 +SV_SMAGIC|5.009003||p
    850 +SV_UTF8_NO_ENCODING|5.008001||p
    851 +SVfARG|5.009005||p
    852 +SVf_UTF8|5.006000||p
    853 +SVf|5.006000||p
    854 +SVt_INVLIST||5.019002|
    855 +SVt_IV|||
    856 +SVt_NULL|||
    857 +SVt_NV|||
    858 +SVt_PVAV|||
    859 +SVt_PVCV|||
    860 +SVt_PVFM|||
    861 +SVt_PVGV|||
    862 +SVt_PVHV|||
    863 +SVt_PVIO|||
    864 +SVt_PVIV|||
    865 +SVt_PVLV|||
    866 +SVt_PVMG|||
    867 +SVt_PVNV|||
    868 +SVt_PV|||
    869 +SVt_REGEXP||5.011000|
    870 +Safefree|||
    871 +Slab_Alloc|||
    872 +Slab_Free|||
    873 +Slab_to_ro|||
    874 +Slab_to_rw|||
    875 +StructCopy|||
    876 +SvCUR_set|||
    877 +SvCUR|||
    878 +SvEND|||
    879 +SvGAMAGIC||5.006001|
    880 +SvGETMAGIC|5.004050||p
    881 +SvGROW|||
    882 +SvIOK_UV||5.006000|
    883 +SvIOK_notUV||5.006000|
    884 +SvIOK_off|||
    885 +SvIOK_only_UV||5.006000|
    886 +SvIOK_only|||
    887 +SvIOK_on|||
    888 +SvIOKp|||
    889 +SvIOK|||
    890 +SvIVX|||
    891 +SvIV_nomg|5.009001||p
    892 +SvIV_set|||
    893 +SvIVx|||
    894 +SvIV|||
    895 +SvIsCOW_shared_hash||5.008003|
    896 +SvIsCOW||5.008003|
    897 +SvLEN_set|||
    898 +SvLEN|||
    899 +SvLOCK||5.007003|
    900 +SvMAGIC_set|5.009003||p
    901 +SvNIOK_off|||
    902 +SvNIOKp|||
    903 +SvNIOK|||
    904 +SvNOK_off|||
    905 +SvNOK_only|||
    906 +SvNOK_on|||
    907 +SvNOKp|||
    908 +SvNOK|||
    909 +SvNVX|||
    910 +SvNV_nomg||5.013002|
    911 +SvNV_set|||
    912 +SvNVx|||
    913 +SvNV|||
    914 +SvOK|||
    915 +SvOOK_offset||5.011000|
    916 +SvOOK|||
    917 +SvPOK_off|||
    918 +SvPOK_only_UTF8||5.006000|
    919 +SvPOK_only|||
    920 +SvPOK_on|||
    921 +SvPOKp|||
    922 +SvPOK|||
    923 +SvPVX_const|5.009003||p
    924 +SvPVX_mutable|5.009003||p
    925 +SvPVX|||
    926 +SvPV_const|5.009003||p
    927 +SvPV_flags_const_nolen|5.009003||p
    928 +SvPV_flags_const|5.009003||p
    929 +SvPV_flags_mutable|5.009003||p
    930 +SvPV_flags|5.007002||p
    931 +SvPV_force_flags_mutable|5.009003||p
    932 +SvPV_force_flags_nolen|5.009003||p
    933 +SvPV_force_flags|5.007002||p
    934 +SvPV_force_mutable|5.009003||p
    935 +SvPV_force_nolen|5.009003||p
    936 +SvPV_force_nomg_nolen|5.009003||p
    937 +SvPV_force_nomg|5.007002||p
    938 +SvPV_force|||p
    939 +SvPV_mutable|5.009003||p
    940 +SvPV_nolen_const|5.009003||p
    941 +SvPV_nolen|5.006000||p
    942 +SvPV_nomg_const_nolen|5.009003||p
    943 +SvPV_nomg_const|5.009003||p
    944 +SvPV_nomg_nolen|5.013007||p
    945 +SvPV_nomg|5.007002||p
    946 +SvPV_renew|5.009003||p
    947 +SvPV_set|||
    948 +SvPVbyte_force||5.009002|
    949 +SvPVbyte_nolen||5.006000|
    950 +SvPVbytex_force||5.006000|
    951 +SvPVbytex||5.006000|
    952 +SvPVbyte|5.006000||p
    953 +SvPVutf8_force||5.006000|
    954 +SvPVutf8_nolen||5.006000|
    955 +SvPVutf8x_force||5.006000|
    956 +SvPVutf8x||5.006000|
    957 +SvPVutf8||5.006000|
    958 +SvPVx|||
    959 +SvPV|||
    960 +SvREFCNT_dec_NN||5.017007|
    961 +SvREFCNT_dec|||
    962 +SvREFCNT_inc_NN|5.009004||p
    963 +SvREFCNT_inc_simple_NN|5.009004||p
    964 +SvREFCNT_inc_simple_void_NN|5.009004||p
    965 +SvREFCNT_inc_simple_void|5.009004||p
    966 +SvREFCNT_inc_simple|5.009004||p
    967 +SvREFCNT_inc_void_NN|5.009004||p
    968 +SvREFCNT_inc_void|5.009004||p
    969 +SvREFCNT_inc|||p
    970 +SvREFCNT|||
    971 +SvROK_off|||
    972 +SvROK_on|||
    973 +SvROK|||
    974 +SvRV_set|5.009003||p
    975 +SvRV|||
    976 +SvRXOK||5.009005|
    977 +SvRX||5.009005|
    978 +SvSETMAGIC|||
    979 +SvSHARED_HASH|5.009003||p
    980 +SvSHARE||5.007003|
    981 +SvSTASH_set|5.009003||p
    982 +SvSTASH|||
    983 +SvSetMagicSV_nosteal||5.004000|
    984 +SvSetMagicSV||5.004000|
    985 +SvSetSV_nosteal||5.004000|
    986 +SvSetSV|||
    987 +SvTAINTED_off||5.004000|
    988 +SvTAINTED_on||5.004000|
    989 +SvTAINTED||5.004000|
    990 +SvTAINT|||
    991 +SvTHINKFIRST|||
    992 +SvTRUE_nomg||5.013006|
    993 +SvTRUE|||
    994 +SvTYPE|||
    995 +SvUNLOCK||5.007003|
    996 +SvUOK|5.007001|5.006000|p
    997 +SvUPGRADE|||
    998 +SvUTF8_off||5.006000|
    999 +SvUTF8_on||5.006000|
   1000 +SvUTF8||5.006000|
   1001 +SvUVXx|5.004000||p
   1002 +SvUVX|5.004000||p
   1003 +SvUV_nomg|5.009001||p
   1004 +SvUV_set|5.009003||p
   1005 +SvUVx|5.004000||p
   1006 +SvUV|5.004000||p
   1007 +SvVOK||5.008001|
   1008 +SvVSTRING_mg|5.009004||p
   1009 +THIS|||n
   1010 +UNDERBAR|5.009002||p
   1011 +UTF8_MAXBYTES|5.009002||p
   1012 +UVSIZE|5.006000||p
   1013 +UVTYPE|5.006000||p
   1014 +UVXf|5.007001||p
   1015 +UVof|5.006000||p
   1016 +UVuf|5.006000||p
   1017 +UVxf|5.006000||p
   1018 +WARN_ALL|5.006000||p
   1019 +WARN_AMBIGUOUS|5.006000||p
   1020 +WARN_ASSERTIONS|5.019002||p
   1021 +WARN_BAREWORD|5.006000||p
   1022 +WARN_CLOSED|5.006000||p
   1023 +WARN_CLOSURE|5.006000||p
   1024 +WARN_DEBUGGING|5.006000||p
   1025 +WARN_DEPRECATED|5.006000||p
   1026 +WARN_DIGIT|5.006000||p
   1027 +WARN_EXEC|5.006000||p
   1028 +WARN_EXITING|5.006000||p
   1029 +WARN_GLOB|5.006000||p
   1030 +WARN_INPLACE|5.006000||p
   1031 +WARN_INTERNAL|5.006000||p
   1032 +WARN_IO|5.006000||p
   1033 +WARN_LAYER|5.008000||p
   1034 +WARN_MALLOC|5.006000||p
   1035 +WARN_MISC|5.006000||p
   1036 +WARN_NEWLINE|5.006000||p
   1037 +WARN_NUMERIC|5.006000||p
   1038 +WARN_ONCE|5.006000||p
   1039 +WARN_OVERFLOW|5.006000||p
   1040 +WARN_PACK|5.006000||p
   1041 +WARN_PARENTHESIS|5.006000||p
   1042 +WARN_PIPE|5.006000||p
   1043 +WARN_PORTABLE|5.006000||p
   1044 +WARN_PRECEDENCE|5.006000||p
   1045 +WARN_PRINTF|5.006000||p
   1046 +WARN_PROTOTYPE|5.006000||p
   1047 +WARN_QW|5.006000||p
   1048 +WARN_RECURSION|5.006000||p
   1049 +WARN_REDEFINE|5.006000||p
   1050 +WARN_REGEXP|5.006000||p
   1051 +WARN_RESERVED|5.006000||p
   1052 +WARN_SEMICOLON|5.006000||p
   1053 +WARN_SEVERE|5.006000||p
   1054 +WARN_SIGNAL|5.006000||p
   1055 +WARN_SUBSTR|5.006000||p
   1056 +WARN_SYNTAX|5.006000||p
   1057 +WARN_TAINT|5.006000||p
   1058 +WARN_THREADS|5.008000||p
   1059 +WARN_UNINITIALIZED|5.006000||p
   1060 +WARN_UNOPENED|5.006000||p
   1061 +WARN_UNPACK|5.006000||p
   1062 +WARN_UNTIE|5.006000||p
   1063 +WARN_UTF8|5.006000||p
   1064 +WARN_VOID|5.006000||p
   1065 +WIDEST_UTYPE|5.015004||p
   1066 +XCPT_CATCH|5.009002||p
   1067 +XCPT_RETHROW|5.009002|5.007001|p
   1068 +XCPT_TRY_END|5.009002|5.004000|p
   1069 +XCPT_TRY_START|5.009002|5.004000|p
   1070 +XPUSHi|||
   1071 +XPUSHmortal|5.009002||p
   1072 +XPUSHn|||
   1073 +XPUSHp|||
   1074 +XPUSHs|||
   1075 +XPUSHu|5.004000||p
   1076 +XSPROTO|5.010000||p
   1077 +XSRETURN_EMPTY|||
   1078 +XSRETURN_IV|||
   1079 +XSRETURN_NO|||
   1080 +XSRETURN_NV|||
   1081 +XSRETURN_PV|||
   1082 +XSRETURN_UNDEF|||
   1083 +XSRETURN_UV|5.008001||p
   1084 +XSRETURN_YES|||
   1085 +XSRETURN|||p
   1086 +XST_mIV|||
   1087 +XST_mNO|||
   1088 +XST_mNV|||
   1089 +XST_mPV|||
   1090 +XST_mUNDEF|||
   1091 +XST_mUV|5.008001||p
   1092 +XST_mYES|||
   1093 +XS_APIVERSION_BOOTCHECK||5.013004|
   1094 +XS_EXTERNAL||5.019003|
   1095 +XS_INTERNAL||5.019003|
   1096 +XS_VERSION_BOOTCHECK|||
   1097 +XS_VERSION|||
   1098 +XSprePUSH|5.006000||p
   1099 +XS|||
   1100 +XopDISABLE||5.019003|
   1101 +XopENABLE||5.019003|
   1102 +XopENTRY_set||5.019003|
   1103 +XopENTRY||5.019003|
   1104 +XopFLAGS||5.013007|
   1105 +ZeroD|5.009002||p
   1106 +Zero|||
   1107 +_aMY_CXT|5.007003||p
   1108 +_add_range_to_invlist|||
   1109 +_append_range_to_invlist|||
   1110 +_core_swash_init|||
   1111 +_get_swash_invlist|||
   1112 +_invlist_array_init|||
   1113 +_invlist_contains_cp|||
   1114 +_invlist_contents|||
   1115 +_invlist_dump|||
   1116 +_invlist_intersection_maybe_complement_2nd|||
   1117 +_invlist_intersection|||
   1118 +_invlist_invert_prop|||
   1119 +_invlist_invert|||
   1120 +_invlist_len|||
   1121 +_invlist_populate_swatch|||
   1122 +_invlist_search|||
   1123 +_invlist_subtract|||
   1124 +_invlist_union_maybe_complement_2nd|||
   1125 +_invlist_union|||
   1126 +_is_uni_FOO||5.017008|
   1127 +_is_uni_perl_idcont||5.017008|
   1128 +_is_uni_perl_idstart||5.017007|
   1129 +_is_utf8_FOO||5.017008|
   1130 +_is_utf8_mark||5.017008|
   1131 +_is_utf8_perl_idcont||5.017008|
   1132 +_is_utf8_perl_idstart||5.017007|
   1133 +_new_invlist_C_array|||
   1134 +_new_invlist|||
   1135 +_pMY_CXT|5.007003||p
   1136 +_swash_inversion_hash|||
   1137 +_swash_to_invlist|||
   1138 +_to_fold_latin1|||
   1139 +_to_uni_fold_flags||5.013011|
   1140 +_to_upper_title_latin1|||
   1141 +_to_utf8_fold_flags||5.015006|
   1142 +_to_utf8_lower_flags||5.015006|
   1143 +_to_utf8_title_flags||5.015006|
   1144 +_to_utf8_upper_flags||5.015006|
   1145 +aMY_CXT_|5.007003||p
   1146 +aMY_CXT|5.007003||p
   1147 +aTHXR_|5.019002||p
   1148 +aTHXR|5.019002||p
   1149 +aTHX_|5.006000||p
   1150 +aTHX|5.006000||p
   1151 +aassign_common_vars|||
   1152 +add_cp_to_invlist|||
   1153 +add_data|||n
   1154 +add_utf16_textfilter|||
   1155 +addmad|||
   1156 +adjust_size_and_find_bucket|||n
   1157 +adjust_stack_on_leave|||
   1158 +alloc_maybe_populate_EXACT|||
   1159 +alloccopstash|||
   1160 +allocmy|||
   1161 +amagic_call|||
   1162 +amagic_cmp_locale|||
   1163 +amagic_cmp|||
   1164 +amagic_deref_call||5.013007|
   1165 +amagic_i_ncmp|||
   1166 +amagic_is_enabled|||
   1167 +amagic_ncmp|||
   1168 +anonymise_cv_maybe|||
   1169 +any_dup|||
   1170 +ao|||
   1171 +append_madprops|||
   1172 +apply_attrs_my|||
   1173 +apply_attrs_string||5.006001|
   1174 +apply_attrs|||
   1175 +apply|||
   1176 +assert_uft8_cache_coherent|||
   1177 +atfork_lock||5.007003|n
   1178 +atfork_unlock||5.007003|n
   1179 +av_arylen_p||5.009003|
   1180 +av_clear|||
   1181 +av_create_and_push||5.009005|
   1182 +av_create_and_unshift_one||5.009005|
   1183 +av_delete||5.006000|
   1184 +av_exists||5.006000|
   1185 +av_extend_guts|||
   1186 +av_extend|||
   1187 +av_fetch|||
   1188 +av_fill|||
   1189 +av_iter_p||5.011000|
   1190 +av_len|||
   1191 +av_make|||
   1192 +av_pop|||
   1193 +av_push|||
   1194 +av_reify|||
   1195 +av_shift|||
   1196 +av_store|||
   1197 +av_tindex||5.017009|
   1198 +av_top_index||5.017009|
   1199 +av_undef|||
   1200 +av_unshift|||
   1201 +ax|||n
   1202 +bad_type_gv|||
   1203 +bad_type_pv|||
   1204 +bind_match|||
   1205 +block_end|||
   1206 +block_gimme||5.004000|
   1207 +block_start|||
   1208 +blockhook_register||5.013003|
   1209 +boolSV|5.004000||p
   1210 +boot_core_PerlIO|||
   1211 +boot_core_UNIVERSAL|||
   1212 +boot_core_mro|||
   1213 +bytes_cmp_utf8||5.013007|
   1214 +bytes_from_utf8||5.007001|
   1215 +bytes_to_uni|||n
   1216 +bytes_to_utf8||5.006001|
   1217 +call_argv|5.006000||p
   1218 +call_atexit||5.006000|
   1219 +call_list||5.004000|
   1220 +call_method|5.006000||p
   1221 +call_pv|5.006000||p
   1222 +call_sv|5.006000||p
   1223 +caller_cx||5.013005|
   1224 +calloc||5.007002|n
   1225 +cando|||
   1226 +cast_i32||5.006000|
   1227 +cast_iv||5.006000|
   1228 +cast_ulong||5.006000|
   1229 +cast_uv||5.006000|
   1230 +check_locale_boundary_crossing|||
   1231 +check_type_and_open|||
   1232 +check_uni|||
   1233 +check_utf8_print|||
   1234 +checkcomma|||
   1235 +ckWARN|5.006000||p
   1236 +ck_entersub_args_core|||
   1237 +ck_entersub_args_list||5.013006|
   1238 +ck_entersub_args_proto_or_list||5.013006|
   1239 +ck_entersub_args_proto||5.013006|
   1240 +ck_warner_d||5.011001|v
   1241 +ck_warner||5.011001|v
   1242 +ckwarn_common|||
   1243 +ckwarn_d||5.009003|
   1244 +ckwarn||5.009003|
   1245 +cl_and|||n
   1246 +cl_anything|||n
   1247 +cl_init|||n
   1248 +cl_is_anything|||n
   1249 +cl_or|||n
   1250 +clear_placeholders|||
   1251 +clone_params_del|||n
   1252 +clone_params_new|||n
   1253 +closest_cop|||
   1254 +compute_EXACTish|||
   1255 +convert|||
   1256 +cop_fetch_label||5.015001|
   1257 +cop_free|||
   1258 +cop_hints_2hv||5.013007|
   1259 +cop_hints_fetch_pvn||5.013007|
   1260 +cop_hints_fetch_pvs||5.013007|
   1261 +cop_hints_fetch_pv||5.013007|
   1262 +cop_hints_fetch_sv||5.013007|
   1263 +cop_store_label||5.015001|
   1264 +cophh_2hv||5.013007|
   1265 +cophh_copy||5.013007|
   1266 +cophh_delete_pvn||5.013007|
   1267 +cophh_delete_pvs||5.013007|
   1268 +cophh_delete_pv||5.013007|
   1269 +cophh_delete_sv||5.013007|
   1270 +cophh_fetch_pvn||5.013007|
   1271 +cophh_fetch_pvs||5.013007|
   1272 +cophh_fetch_pv||5.013007|
   1273 +cophh_fetch_sv||5.013007|
   1274 +cophh_free||5.013007|
   1275 +cophh_new_empty||5.019003|
   1276 +cophh_store_pvn||5.013007|
   1277 +cophh_store_pvs||5.013007|
   1278 +cophh_store_pv||5.013007|
   1279 +cophh_store_sv||5.013007|
   1280 +core_prototype|||
   1281 +core_regclass_swash|||
   1282 +coresub_op|||
   1283 +could_it_be_a_POSIX_class|||
   1284 +cr_textfilter|||
   1285 +create_eval_scope|||
   1286 +croak_memory_wrap||5.019003|n
   1287 +croak_no_mem|||n
   1288 +croak_no_modify||5.013003|n
   1289 +croak_nocontext|||vn
   1290 +croak_popstack|||n
   1291 +croak_sv||5.013001|
   1292 +croak_xs_usage||5.010001|n
   1293 +croak|||v
   1294 +csighandler||5.009003|n
   1295 +curmad|||
   1296 +current_re_engine|||
   1297 +curse|||
   1298 +custom_op_desc||5.007003|
   1299 +custom_op_name||5.007003|
   1300 +custom_op_register||5.013007|
   1301 +custom_op_xop||5.013007|
   1302 +cv_ckproto_len_flags|||
   1303 +cv_clone_into|||
   1304 +cv_clone|||
   1305 +cv_const_sv_or_av|||
   1306 +cv_const_sv||5.004000|
   1307 +cv_dump|||
   1308 +cv_forget_slab|||
   1309 +cv_get_call_checker||5.013006|
   1310 +cv_set_call_checker||5.013006|
   1311 +cv_undef|||
   1312 +cvgv_set|||
   1313 +cvstash_set|||
   1314 +cx_dump||5.005000|
   1315 +cx_dup|||
   1316 +cxinc|||
   1317 +dAXMARK|5.009003||p
   1318 +dAX|5.007002||p
   1319 +dITEMS|5.007002||p
   1320 +dMARK|||
   1321 +dMULTICALL||5.009003|
   1322 +dMY_CXT_SV|5.007003||p
   1323 +dMY_CXT|5.007003||p
   1324 +dNOOP|5.006000||p
   1325 +dORIGMARK|||
   1326 +dSP|||
   1327 +dTHR|5.004050||p
   1328 +dTHXR|5.019002||p
   1329 +dTHXa|5.006000||p
   1330 +dTHXoa|5.006000||p
   1331 +dTHX|5.006000||p
   1332 +dUNDERBAR|5.009002||p
   1333 +dVAR|5.009003||p
   1334 +dXCPT|5.009002||p
   1335 +dXSARGS|||
   1336 +dXSI32|||
   1337 +dXSTARG|5.006000||p
   1338 +deb_curcv|||
   1339 +deb_nocontext|||vn
   1340 +deb_stack_all|||
   1341 +deb_stack_n|||
   1342 +debop||5.005000|
   1343 +debprofdump||5.005000|
   1344 +debprof|||
   1345 +debstackptrs||5.007003|
   1346 +debstack||5.007003|
   1347 +debug_start_match|||
   1348 +deb||5.007003|v
   1349 +defelem_target|||
   1350 +del_sv|||
   1351 +delete_eval_scope|||
   1352 +delimcpy||5.004000|n
   1353 +deprecate_commaless_var_list|||
   1354 +despatch_signals||5.007001|
   1355 +destroy_matcher|||
   1356 +die_nocontext|||vn
   1357 +die_sv||5.013001|
   1358 +die_unwind|||
   1359 +die|||v
   1360 +dirp_dup|||
   1361 +div128|||
   1362 +djSP|||
   1363 +do_aexec5|||
   1364 +do_aexec|||
   1365 +do_aspawn|||
   1366 +do_binmode||5.004050|
   1367 +do_chomp|||
   1368 +do_close|||
   1369 +do_delete_local|||
   1370 +do_dump_pad|||
   1371 +do_eof|||
   1372 +do_exec3|||
   1373 +do_execfree|||
   1374 +do_exec|||
   1375 +do_gv_dump||5.006000|
   1376 +do_gvgv_dump||5.006000|
   1377 +do_hv_dump||5.006000|
   1378 +do_ipcctl|||
   1379 +do_ipcget|||
   1380 +do_join|||
   1381 +do_magic_dump||5.006000|
   1382 +do_msgrcv|||
   1383 +do_msgsnd|||
   1384 +do_ncmp|||
   1385 +do_oddball|||
   1386 +do_op_dump||5.006000|
   1387 +do_op_xmldump|||
   1388 +do_open9||5.006000|
   1389 +do_openn||5.007001|
   1390 +do_open||5.004000|
   1391 +do_pmop_dump||5.006000|
   1392 +do_pmop_xmldump|||
   1393 +do_print|||
   1394 +do_readline|||
   1395 +do_seek|||
   1396 +do_semop|||
   1397 +do_shmio|||
   1398 +do_smartmatch|||
   1399 +do_spawn_nowait|||
   1400 +do_spawn|||
   1401 +do_sprintf|||
   1402 +do_sv_dump||5.006000|
   1403 +do_sysseek|||
   1404 +do_tell|||
   1405 +do_trans_complex_utf8|||
   1406 +do_trans_complex|||
   1407 +do_trans_count_utf8|||
   1408 +do_trans_count|||
   1409 +do_trans_simple_utf8|||
   1410 +do_trans_simple|||
   1411 +do_trans|||
   1412 +do_vecget|||
   1413 +do_vecset|||
   1414 +do_vop|||
   1415 +docatch|||
   1416 +doeval|||
   1417 +dofile|||
   1418 +dofindlabel|||
   1419 +doform|||
   1420 +doing_taint||5.008001|n
   1421 +dooneliner|||
   1422 +doopen_pm|||
   1423 +doparseform|||
   1424 +dopoptoeval|||
   1425 +dopoptogiven|||
   1426 +dopoptolabel|||
   1427 +dopoptoloop|||
   1428 +dopoptosub_at|||
   1429 +dopoptowhen|||
   1430 +doref||5.009003|
   1431 +dounwind|||
   1432 +dowantarray|||
   1433 +dump_all_perl|||
   1434 +dump_all||5.006000|
   1435 +dump_eval||5.006000|
   1436 +dump_exec_pos|||
   1437 +dump_fds|||
   1438 +dump_form||5.006000|
   1439 +dump_indent||5.006000|v
   1440 +dump_mstats|||
   1441 +dump_packsubs_perl|||
   1442 +dump_packsubs||5.006000|
   1443 +dump_sub_perl|||
   1444 +dump_sub||5.006000|
   1445 +dump_sv_child|||
   1446 +dump_trie_interim_list|||
   1447 +dump_trie_interim_table|||
   1448 +dump_trie|||
   1449 +dump_vindent||5.006000|
   1450 +dumpuntil|||
   1451 +dup_attrlist|||
   1452 +emulate_cop_io|||
   1453 +eval_pv|5.006000||p
   1454 +eval_sv|5.006000||p
   1455 +exec_failed|||
   1456 +expect_number|||
   1457 +fbm_compile||5.005000|
   1458 +fbm_instr||5.005000|
   1459 +feature_is_enabled|||
   1460 +filter_add|||
   1461 +filter_del|||
   1462 +filter_gets|||
   1463 +filter_read|||
   1464 +finalize_optree|||
   1465 +finalize_op|||
   1466 +find_and_forget_pmops|||
   1467 +find_array_subscript|||
   1468 +find_beginning|||
   1469 +find_byclass|||
   1470 +find_hash_subscript|||
   1471 +find_in_my_stash|||
   1472 +find_lexical_cv|||
   1473 +find_runcv_where|||
   1474 +find_runcv||5.008001|
   1475 +find_rundefsv2|||
   1476 +find_rundefsvoffset||5.009002|
   1477 +find_rundefsv||5.013002|
   1478 +find_script|||
   1479 +find_uninit_var|||
   1480 +first_symbol|||n
   1481 +foldEQ_latin1||5.013008|n
   1482 +foldEQ_locale||5.013002|n
   1483 +foldEQ_utf8_flags||5.013010|
   1484 +foldEQ_utf8||5.013002|
   1485 +foldEQ||5.013002|n
   1486 +fold_constants|||
   1487 +forbid_setid|||
   1488 +force_ident_maybe_lex|||
   1489 +force_ident|||
   1490 +force_list|||
   1491 +force_next|||
   1492 +force_strict_version|||
   1493 +force_version|||
   1494 +force_word|||
   1495 +forget_pmop|||
   1496 +form_nocontext|||vn
   1497 +form_short_octal_warning|||
   1498 +form||5.004000|v
   1499 +fp_dup|||
   1500 +fprintf_nocontext|||vn
   1501 +free_global_struct|||
   1502 +free_tied_hv_pool|||
   1503 +free_tmps|||
   1504 +gen_constant_list|||
   1505 +get_and_check_backslash_N_name|||
   1506 +get_aux_mg|||
   1507 +get_av|5.006000||p
   1508 +get_context||5.006000|n
   1509 +get_cvn_flags|5.009005||p
   1510 +get_cvs|5.011000||p
   1511 +get_cv|5.006000||p
   1512 +get_db_sub|||
   1513 +get_debug_opts|||
   1514 +get_hash_seed|||
   1515 +get_hv|5.006000||p
   1516 +get_invlist_iter_addr|||
   1517 +get_invlist_offset_addr|||
   1518 +get_invlist_previous_index_addr|||
   1519 +get_mstats|||
   1520 +get_no_modify|||
   1521 +get_num|||
   1522 +get_op_descs||5.005000|
   1523 +get_op_names||5.005000|
   1524 +get_opargs|||
   1525 +get_ppaddr||5.006000|
   1526 +get_re_arg|||
   1527 +get_sv|5.006000||p
   1528 +get_vtbl||5.005030|
   1529 +getcwd_sv||5.007002|
   1530 +getenv_len|||
   1531 +glob_2number|||
   1532 +glob_assign_glob|||
   1533 +glob_assign_ref|||
   1534 +gp_dup|||
   1535 +gp_free|||
   1536 +gp_ref|||
   1537 +grok_bin|5.007003||p
   1538 +grok_bslash_N|||
   1539 +grok_bslash_c|||
   1540 +grok_bslash_o|||
   1541 +grok_bslash_x|||
   1542 +grok_hex|5.007003||p
   1543 +grok_number|5.007002||p
   1544 +grok_numeric_radix|5.007002||p
   1545 +grok_oct|5.007003||p
   1546 +group_end|||
   1547 +gv_AVadd|||
   1548 +gv_HVadd|||
   1549 +gv_IOadd|||
   1550 +gv_SVadd|||
   1551 +gv_add_by_type||5.011000|
   1552 +gv_autoload4||5.004000|
   1553 +gv_autoload_pvn||5.015004|
   1554 +gv_autoload_pv||5.015004|
   1555 +gv_autoload_sv||5.015004|
   1556 +gv_check|||
   1557 +gv_const_sv||5.009003|
   1558 +gv_dump||5.006000|
   1559 +gv_efullname3||5.004000|
   1560 +gv_efullname4||5.006001|
   1561 +gv_efullname|||
   1562 +gv_ename|||
   1563 +gv_fetchfile_flags||5.009005|
   1564 +gv_fetchfile|||
   1565 +gv_fetchmeth_autoload||5.007003|
   1566 +gv_fetchmeth_pv_autoload||5.015004|
   1567 +gv_fetchmeth_pvn_autoload||5.015004|
   1568 +gv_fetchmeth_pvn||5.015004|
   1569 +gv_fetchmeth_pv||5.015004|
   1570 +gv_fetchmeth_sv_autoload||5.015004|
   1571 +gv_fetchmeth_sv||5.015004|
   1572 +gv_fetchmethod_autoload||5.004000|
   1573 +gv_fetchmethod_pv_flags||5.015004|
   1574 +gv_fetchmethod_pvn_flags||5.015004|
   1575 +gv_fetchmethod_sv_flags||5.015004|
   1576 +gv_fetchmethod|||
   1577 +gv_fetchmeth|||
   1578 +gv_fetchpvn_flags|5.009002||p
   1579 +gv_fetchpvs|5.009004||p
   1580 +gv_fetchpv|||
   1581 +gv_fetchsv|5.009002||p
   1582 +gv_fullname3||5.004000|
   1583 +gv_fullname4||5.006001|
   1584 +gv_fullname|||
   1585 +gv_handler||5.007001|
   1586 +gv_init_pvn||5.015004|
   1587 +gv_init_pv||5.015004|
   1588 +gv_init_svtype|||
   1589 +gv_init_sv||5.015004|
   1590 +gv_init|||
   1591 +gv_magicalize_isa|||
   1592 +gv_name_set||5.009004|
   1593 +gv_stashpvn|5.004000||p
   1594 +gv_stashpvs|5.009003||p
   1595 +gv_stashpv|||
   1596 +gv_stashsv|||
   1597 +gv_try_downgrade|||
   1598 +handle_regex_sets|||
   1599 +he_dup|||
   1600 +hek_dup|||
   1601 +hfree_next_entry|||
   1602 +hfreeentries|||
   1603 +hsplit|||
   1604 +hv_assert|||
   1605 +hv_auxinit|||
   1606 +hv_backreferences_p|||
   1607 +hv_clear_placeholders||5.009001|
   1608 +hv_clear|||
   1609 +hv_common_key_len||5.010000|
   1610 +hv_common||5.010000|
   1611 +hv_copy_hints_hv||5.009004|
   1612 +hv_delayfree_ent||5.004000|
   1613 +hv_delete_common|||
   1614 +hv_delete_ent||5.004000|
   1615 +hv_delete|||
   1616 +hv_eiter_p||5.009003|
   1617 +hv_eiter_set||5.009003|
   1618 +hv_ename_add|||
   1619 +hv_ename_delete|||
   1620 +hv_exists_ent||5.004000|
   1621 +hv_exists|||
   1622 +hv_fetch_ent||5.004000|
   1623 +hv_fetchs|5.009003||p
   1624 +hv_fetch|||
   1625 +hv_fill||5.013002|
   1626 +hv_free_ent_ret|||
   1627 +hv_free_ent||5.004000|
   1628 +hv_iterinit|||
   1629 +hv_iterkeysv||5.004000|
   1630 +hv_iterkey|||
   1631 +hv_iternext_flags||5.008000|
   1632 +hv_iternextsv|||
   1633 +hv_iternext|||
   1634 +hv_iterval|||
   1635 +hv_kill_backrefs|||
   1636 +hv_ksplit||5.004000|
   1637 +hv_magic_check|||n
   1638 +hv_magic|||
   1639 +hv_name_set||5.009003|
   1640 +hv_notallowed|||
   1641 +hv_placeholders_get||5.009003|
   1642 +hv_placeholders_p|||
   1643 +hv_placeholders_set||5.009003|
   1644 +hv_rand_set||5.017011|
   1645 +hv_riter_p||5.009003|
   1646 +hv_riter_set||5.009003|
   1647 +hv_scalar||5.009001|
   1648 +hv_store_ent||5.004000|
   1649 +hv_store_flags||5.008000|
   1650 +hv_stores|5.009004||p
   1651 +hv_store|||
   1652 +hv_undef_flags|||
   1653 +hv_undef|||
   1654 +ibcmp_locale||5.004000|
   1655 +ibcmp_utf8||5.007003|
   1656 +ibcmp|||
   1657 +incline|||
   1658 +incpush_if_exists|||
   1659 +incpush_use_sep|||
   1660 +incpush|||
   1661 +ingroup|||
   1662 +init_argv_symbols|||
   1663 +init_constants|||
   1664 +init_dbargs|||
   1665 +init_debugger|||
   1666 +init_global_struct|||
   1667 +init_i18nl10n||5.006000|
   1668 +init_i18nl14n||5.006000|
   1669 +init_ids|||
   1670 +init_interp|||
   1671 +init_main_stash|||
   1672 +init_perllib|||
   1673 +init_postdump_symbols|||
   1674 +init_predump_symbols|||
   1675 +init_stacks||5.005000|
   1676 +init_tm||5.007002|
   1677 +inplace_aassign|||
   1678 +instr|||n
   1679 +intro_my|||
   1680 +intuit_method|||
   1681 +intuit_more|||
   1682 +invert|||
   1683 +invlist_array|||
   1684 +invlist_clone|||
   1685 +invlist_extend|||
   1686 +invlist_highest|||
   1687 +invlist_is_iterating|||
   1688 +invlist_iterfinish|||
   1689 +invlist_iterinit|||
   1690 +invlist_iternext|||
   1691 +invlist_max|||
   1692 +invlist_previous_index|||
   1693 +invlist_set_len|||
   1694 +invlist_set_previous_index|||
   1695 +invlist_trim|||
   1696 +invoke_exception_hook|||
   1697 +io_close|||
   1698 +isALNUMC|5.006000||p
   1699 +isALNUM_lazy|||
   1700 +isALPHANUMERIC||5.017008|
   1701 +isALPHA|||
   1702 +isASCII|5.006000|5.006000|p
   1703 +isBLANK|5.006001||p
   1704 +isCNTRL|5.006000|5.006000|p
   1705 +isDIGIT|||
   1706 +isFOO_lc|||
   1707 +isFOO_utf8_lc|||
   1708 +isGRAPH|5.006000||p
   1709 +isGV_with_GP|5.009004||p
   1710 +isIDCONT||5.017008|
   1711 +isIDFIRST_lazy|||
   1712 +isIDFIRST|||
   1713 +isLOWER|||
   1714 +isOCTAL||5.013005|
   1715 +isPRINT|5.004000||p
   1716 +isPSXSPC|5.006001||p
   1717 +isPUNCT|5.006000||p
   1718 +isSPACE|||
   1719 +isUPPER|||
   1720 +isWORDCHAR||5.013006|
   1721 +isXDIGIT|5.006000||p
   1722 +is_an_int|||
   1723 +is_ascii_string||5.011000|n
   1724 +is_cur_LC_category_utf8|||
   1725 +is_handle_constructor|||n
   1726 +is_list_assignment|||
   1727 +is_lvalue_sub||5.007001|
   1728 +is_uni_alnum_lc||5.006000|
   1729 +is_uni_alnumc_lc||5.017007|
   1730 +is_uni_alnumc||5.017007|
   1731 +is_uni_alnum||5.006000|
   1732 +is_uni_alpha_lc||5.006000|
   1733 +is_uni_alpha||5.006000|
   1734 +is_uni_ascii_lc||5.006000|
   1735 +is_uni_ascii||5.006000|
   1736 +is_uni_blank_lc||5.017002|
   1737 +is_uni_blank||5.017002|
   1738 +is_uni_cntrl_lc||5.006000|
   1739 +is_uni_cntrl||5.006000|
   1740 +is_uni_digit_lc||5.006000|
   1741 +is_uni_digit||5.006000|
   1742 +is_uni_graph_lc||5.006000|
   1743 +is_uni_graph||5.006000|
   1744 +is_uni_idfirst_lc||5.006000|
   1745 +is_uni_idfirst||5.006000|
   1746 +is_uni_lower_lc||5.006000|
   1747 +is_uni_lower||5.006000|
   1748 +is_uni_print_lc||5.006000|
   1749 +is_uni_print||5.006000|
   1750 +is_uni_punct_lc||5.006000|
   1751 +is_uni_punct||5.006000|
   1752 +is_uni_space_lc||5.006000|
   1753 +is_uni_space||5.006000|
   1754 +is_uni_upper_lc||5.006000|
   1755 +is_uni_upper||5.006000|
   1756 +is_uni_xdigit_lc||5.006000|
   1757 +is_uni_xdigit||5.006000|
   1758 +is_utf8_alnumc||5.017007|
   1759 +is_utf8_alnum||5.006000|
   1760 +is_utf8_alpha||5.006000|
   1761 +is_utf8_ascii||5.006000|
   1762 +is_utf8_blank||5.017002|
   1763 +is_utf8_char_buf||5.015008|n
   1764 +is_utf8_char_slow|||n
   1765 +is_utf8_char||5.006000|n
   1766 +is_utf8_cntrl||5.006000|
   1767 +is_utf8_common|||
   1768 +is_utf8_digit||5.006000|
   1769 +is_utf8_graph||5.006000|
   1770 +is_utf8_idcont||5.008000|
   1771 +is_utf8_idfirst||5.006000|
   1772 +is_utf8_lower||5.006000|
   1773 +is_utf8_mark||5.006000|
   1774 +is_utf8_perl_space||5.011001|
   1775 +is_utf8_perl_word||5.011001|
   1776 +is_utf8_posix_digit||5.011001|
   1777 +is_utf8_print||5.006000|
   1778 +is_utf8_punct||5.006000|
   1779 +is_utf8_space||5.006000|
   1780 +is_utf8_string_loclen||5.009003|n
   1781 +is_utf8_string_loc||5.008001|n
   1782 +is_utf8_string||5.006001|n
   1783 +is_utf8_upper||5.006000|
   1784 +is_utf8_xdigit||5.006000|
   1785 +is_utf8_xidcont||5.013010|
   1786 +is_utf8_xidfirst||5.013010|
   1787 +isa_lookup|||
   1788 +items|||n
   1789 +ix|||n
   1790 +jmaybe|||
   1791 +join_exact|||
   1792 +keyword_plugin_standard|||
   1793 +keyword|||
   1794 +leave_scope|||
   1795 +lex_bufutf8||5.011002|
   1796 +lex_discard_to||5.011002|
   1797 +lex_grow_linestr||5.011002|
   1798 +lex_next_chunk||5.011002|
   1799 +lex_peek_unichar||5.011002|
   1800 +lex_read_space||5.011002|
   1801 +lex_read_to||5.011002|
   1802 +lex_read_unichar||5.011002|
   1803 +lex_start||5.009005|
   1804 +lex_stuff_pvn||5.011002|
   1805 +lex_stuff_pvs||5.013005|
   1806 +lex_stuff_pv||5.013006|
   1807 +lex_stuff_sv||5.011002|
   1808 +lex_unstuff||5.011002|
   1809 +listkids|||
   1810 +list|||
   1811 +load_module_nocontext|||vn
   1812 +load_module|5.006000||pv
   1813 +localize|||
   1814 +looks_like_bool|||
   1815 +looks_like_number|||
   1816 +lop|||
   1817 +mPUSHi|5.009002||p
   1818 +mPUSHn|5.009002||p
   1819 +mPUSHp|5.009002||p
   1820 +mPUSHs|5.010001||p
   1821 +mPUSHu|5.009002||p
   1822 +mXPUSHi|5.009002||p
   1823 +mXPUSHn|5.009002||p
   1824 +mXPUSHp|5.009002||p
   1825 +mXPUSHs|5.010001||p
   1826 +mXPUSHu|5.009002||p
   1827 +mad_free|||
   1828 +madlex|||
   1829 +madparse|||
   1830 +magic_clear_all_env|||
   1831 +magic_cleararylen_p|||
   1832 +magic_clearenv|||
   1833 +magic_clearhints|||
   1834 +magic_clearhint|||
   1835 +magic_clearisa|||
   1836 +magic_clearpack|||
   1837 +magic_clearsig|||
   1838 +magic_copycallchecker|||
   1839 +magic_dump||5.006000|
   1840 +magic_existspack|||
   1841 +magic_freearylen_p|||
   1842 +magic_freeovrld|||
   1843 +magic_getarylen|||
   1844 +magic_getdefelem|||
   1845 +magic_getnkeys|||
   1846 +magic_getpack|||
   1847 +magic_getpos|||
   1848 +magic_getsig|||
   1849 +magic_getsubstr|||
   1850 +magic_gettaint|||
   1851 +magic_getuvar|||
   1852 +magic_getvec|||
   1853 +magic_get|||
   1854 +magic_killbackrefs|||
   1855 +magic_methcall1|||
   1856 +magic_methcall|||v
   1857 +magic_methpack|||
   1858 +magic_nextpack|||
   1859 +magic_regdata_cnt|||
   1860 +magic_regdatum_get|||
   1861 +magic_regdatum_set|||
   1862 +magic_scalarpack|||
   1863 +magic_set_all_env|||
   1864 +magic_setarylen|||
   1865 +magic_setcollxfrm|||
   1866 +magic_setdbline|||
   1867 +magic_setdefelem|||
   1868 +magic_setenv|||
   1869 +magic_sethint|||
   1870 +magic_setisa|||
   1871 +magic_setmglob|||
   1872 +magic_setnkeys|||
   1873 +magic_setpack|||
   1874 +magic_setpos|||
   1875 +magic_setregexp|||
   1876 +magic_setsig|||
   1877 +magic_setsubstr|||
   1878 +magic_settaint|||
   1879 +magic_setutf8|||
   1880 +magic_setuvar|||
   1881 +magic_setvec|||
   1882 +magic_set|||
   1883 +magic_sizepack|||
   1884 +magic_wipepack|||
   1885 +make_matcher|||
   1886 +make_trie_failtable|||
   1887 +make_trie|||
   1888 +malloc_good_size|||n
   1889 +malloced_size|||n
   1890 +malloc||5.007002|n
   1891 +markstack_grow|||
   1892 +matcher_matches_sv|||
   1893 +mayberelocate|||
   1894 +measure_struct|||
   1895 +memEQs|5.009005||p
   1896 +memEQ|5.004000||p
   1897 +memNEs|5.009005||p
   1898 +memNE|5.004000||p
   1899 +mem_collxfrm|||
   1900 +mem_log_common|||n
   1901 +mess_alloc|||
   1902 +mess_nocontext|||vn
   1903 +mess_sv||5.013001|
   1904 +mess||5.006000|v
   1905 +method_common|||
   1906 +mfree||5.007002|n
   1907 +mg_clear|||
   1908 +mg_copy|||
   1909 +mg_dup|||
   1910 +mg_find_mglob|||
   1911 +mg_findext||5.013008|
   1912 +mg_find|||
   1913 +mg_free_type||5.013006|
   1914 +mg_free|||
   1915 +mg_get|||
   1916 +mg_length||5.005000|
   1917 +mg_localize|||
   1918 +mg_magical|||
   1919 +mg_set|||
   1920 +mg_size||5.005000|
   1921 +mini_mktime||5.007002|
   1922 +minus_v|||
   1923 +missingterm|||
   1924 +mode_from_discipline|||
   1925 +modkids|||
   1926 +more_bodies|||
   1927 +more_sv|||
   1928 +moreswitches|||
   1929 +mro_clean_isarev|||
   1930 +mro_gather_and_rename|||
   1931 +mro_get_from_name||5.010001|
   1932 +mro_get_linear_isa_dfs|||
   1933 +mro_get_linear_isa||5.009005|
   1934 +mro_get_private_data||5.010001|
   1935 +mro_isa_changed_in|||
   1936 +mro_meta_dup|||
   1937 +mro_meta_init|||
   1938 +mro_method_changed_in||5.009005|
   1939 +mro_package_moved|||
   1940 +mro_register||5.010001|
   1941 +mro_set_mro||5.010001|
   1942 +mro_set_private_data||5.010001|
   1943 +mul128|||
   1944 +mulexp10|||n
   1945 +my_atof2||5.007002|
   1946 +my_atof||5.006000|
   1947 +my_attrs|||
   1948 +my_bcopy|||n
   1949 +my_bzero|||n
   1950 +my_chsize|||
   1951 +my_clearenv|||
   1952 +my_cxt_index|||
   1953 +my_cxt_init|||
   1954 +my_dirfd||5.009005|
   1955 +my_exit_jump|||
   1956 +my_exit|||
   1957 +my_failure_exit||5.004000|
   1958 +my_fflush_all||5.006000|
   1959 +my_fork||5.007003|n
   1960 +my_kid|||
   1961 +my_lstat_flags|||
   1962 +my_lstat||5.019003|
   1963 +my_memcmp|||n
   1964 +my_memset||5.004000|n
   1965 +my_pclose||5.004000|
   1966 +my_popen_list||5.007001|
   1967 +my_popen||5.004000|
   1968 +my_setenv|||
   1969 +my_snprintf|5.009004||pvn
   1970 +my_socketpair||5.007003|n
   1971 +my_sprintf|5.009003||pvn
   1972 +my_stat_flags|||
   1973 +my_stat||5.019003|
   1974 +my_strftime||5.007002|
   1975 +my_strlcat|5.009004||pn
   1976 +my_strlcpy|5.009004||pn
   1977 +my_unexec|||
   1978 +my_vsnprintf||5.009004|n
   1979 +need_utf8|||n
   1980 +newANONATTRSUB||5.006000|
   1981 +newANONHASH|||
   1982 +newANONLIST|||
   1983 +newANONSUB|||
   1984 +newASSIGNOP|||
   1985 +newATTRSUB_flags|||
   1986 +newATTRSUB||5.006000|
   1987 +newAVREF|||
   1988 +newAV|||
   1989 +newBINOP|||
   1990 +newCONDOP|||
   1991 +newCONSTSUB_flags||5.015006|
   1992 +newCONSTSUB|5.004050||p
   1993 +newCVREF|||
   1994 +newDEFSVOP|||
   1995 +newFORM|||
   1996 +newFOROP||5.013007|
   1997 +newGIVENOP||5.009003|
   1998 +newGIVWHENOP|||
   1999 +newGP|||
   2000 +newGVOP|||
   2001 +newGVREF|||
   2002 +newGVgen_flags||5.015004|
   2003 +newGVgen|||
   2004 +newHVREF|||
   2005 +newHVhv||5.005000|
   2006 +newHV|||
   2007 +newIO|||
   2008 +newLISTOP|||
   2009 +newLOGOP|||
   2010 +newLOOPEX|||
   2011 +newLOOPOP|||
   2012 +newMADPROP|||
   2013 +newMADsv|||
   2014 +newMYSUB||5.017004|
   2015 +newNULLLIST|||
   2016 +newOP|||
   2017 +newPADOP|||
   2018 +newPMOP|||
   2019 +newPROG|||
   2020 +newPVOP|||
   2021 +newRANGE|||
   2022 +newRV_inc|5.004000||p
   2023 +newRV_noinc|5.004000||p
   2024 +newRV|||
   2025 +newSLICEOP|||
   2026 +newSTATEOP|||
   2027 +newSTUB|||
   2028 +newSUB|||
   2029 +newSVOP|||
   2030 +newSVREF|||
   2031 +newSV_type|5.009005||p
   2032 +newSVhek||5.009003|
   2033 +newSViv|||
   2034 +newSVnv|||
   2035 +newSVpadname||5.017004|
   2036 +newSVpv_share||5.013006|
   2037 +newSVpvf_nocontext|||vn
   2038 +newSVpvf||5.004000|v
   2039 +newSVpvn_flags|5.010001||p
   2040 +newSVpvn_share|5.007001||p
   2041 +newSVpvn_utf8|5.010001||p
   2042 +newSVpvn|5.004050||p
   2043 +newSVpvs_flags|5.010001||p
   2044 +newSVpvs_share|5.009003||p
   2045 +newSVpvs|5.009003||p
   2046 +newSVpv|||
   2047 +newSVrv|||
   2048 +newSVsv|||
   2049 +newSVuv|5.006000||p
   2050 +newSV|||
   2051 +newTOKEN|||
   2052 +newUNOP|||
   2053 +newWHENOP||5.009003|
   2054 +newWHILEOP||5.013007|
   2055 +newXS_flags||5.009004|
   2056 +newXS_len_flags|||
   2057 +newXSproto||5.006000|
   2058 +newXS||5.006000|
   2059 +new_collate||5.006000|
   2060 +new_constant|||
   2061 +new_ctype||5.006000|
   2062 +new_he|||
   2063 +new_logop|||
   2064 +new_numeric||5.006000|
   2065 +new_stackinfo||5.005000|
   2066 +new_version||5.009000|
   2067 +new_warnings_bitfield|||
   2068 +next_symbol|||
   2069 +nextargv|||
   2070 +nextchar|||
   2071 +ninstr|||n
   2072 +no_bareword_allowed|||
   2073 +no_fh_allowed|||
   2074 +no_op|||
   2075 +not_a_number|||
   2076 +not_incrementable|||
   2077 +nothreadhook||5.008000|
   2078 +nuke_stacks|||
   2079 +num_overflow|||n
   2080 +oopsAV|||
   2081 +oopsHV|||
   2082 +op_append_elem||5.013006|
   2083 +op_append_list||5.013006|
   2084 +op_clear|||
   2085 +op_const_sv|||
   2086 +op_contextualize||5.013006|
   2087 +op_dump||5.006000|
   2088 +op_free|||
   2089 +op_getmad_weak|||
   2090 +op_getmad|||
   2091 +op_integerize|||
   2092 +op_linklist||5.013006|
   2093 +op_lvalue_flags|||
   2094 +op_lvalue||5.013007|
   2095 +op_null||5.007002|
   2096 +op_prepend_elem||5.013006|
   2097 +op_refcnt_dec|||
   2098 +op_refcnt_inc|||
   2099 +op_refcnt_lock||5.009002|
   2100 +op_refcnt_unlock||5.009002|
   2101 +op_scope||5.013007|
   2102 +op_std_init|||
   2103 +op_unscope|||
   2104 +op_xmldump|||
   2105 +open_script|||
   2106 +opslab_force_free|||
   2107 +opslab_free_nopad|||
   2108 +opslab_free|||
   2109 +pMY_CXT_|5.007003||p
   2110 +pMY_CXT|5.007003||p
   2111 +pTHX_|5.006000||p
   2112 +pTHX|5.006000||p
   2113 +packWARN|5.007003||p
   2114 +pack_cat||5.007003|
   2115 +pack_rec|||
   2116 +package_version|||
   2117 +package|||
   2118 +packlist||5.008001|
   2119 +pad_add_anon||5.008001|
   2120 +pad_add_name_pvn||5.015001|
   2121 +pad_add_name_pvs||5.015001|
   2122 +pad_add_name_pv||5.015001|
   2123 +pad_add_name_sv||5.015001|
   2124 +pad_alloc_name|||
   2125 +pad_alloc|||
   2126 +pad_block_start|||
   2127 +pad_check_dup|||
   2128 +pad_compname_type||5.009003|
   2129 +pad_findlex|||
   2130 +pad_findmy_pvn||5.015001|
   2131 +pad_findmy_pvs||5.015001|
   2132 +pad_findmy_pv||5.015001|
   2133 +pad_findmy_sv||5.015001|
   2134 +pad_fixup_inner_anons|||
   2135 +pad_free|||
   2136 +pad_leavemy|||
   2137 +pad_new||5.008001|
   2138 +pad_peg|||n
   2139 +pad_push|||
   2140 +pad_reset|||
   2141 +pad_setsv|||
   2142 +pad_sv|||
   2143 +pad_swipe|||
   2144 +pad_tidy||5.008001|
   2145 +padlist_dup|||
   2146 +padlist_store|||
   2147 +parse_arithexpr||5.013008|
   2148 +parse_barestmt||5.013007|
   2149 +parse_block||5.013007|
   2150 +parse_body|||
   2151 +parse_fullexpr||5.013008|
   2152 +parse_fullstmt||5.013005|
   2153 +parse_ident|||
   2154 +parse_label||5.013007|
   2155 +parse_listexpr||5.013008|
   2156 +parse_lparen_question_flags|||
   2157 +parse_stmtseq||5.013006|
   2158 +parse_termexpr||5.013008|
   2159 +parse_unicode_opts|||
   2160 +parser_dup|||
   2161 +parser_free_nexttoke_ops|||
   2162 +parser_free|||
   2163 +path_is_searchable|||n
   2164 +peep|||
   2165 +pending_ident|||
   2166 +perl_alloc_using|||n
   2167 +perl_alloc|||n
   2168 +perl_clone_using|||n
   2169 +perl_clone|||n
   2170 +perl_construct|||n
   2171 +perl_destruct||5.007003|n
   2172 +perl_free|||n
   2173 +perl_parse||5.006000|n
   2174 +perl_run|||n
   2175 +pidgone|||
   2176 +pm_description|||
   2177 +pmop_dump||5.006000|
   2178 +pmop_xmldump|||
   2179 +pmruntime|||
   2180 +pmtrans|||
   2181 +pop_scope|||
   2182 +populate_isa|||v
   2183 +pregcomp||5.009005|
   2184 +pregexec|||
   2185 +pregfree2||5.011000|
   2186 +pregfree|||
   2187 +prepend_madprops|||
   2188 +prescan_version||5.011004|
   2189 +printbuf|||
   2190 +printf_nocontext|||vn
   2191 +process_special_blocks|||
   2192 +ptr_hash|||n
   2193 +ptr_table_clear||5.009005|
   2194 +ptr_table_fetch||5.009005|
   2195 +ptr_table_find|||n
   2196 +ptr_table_free||5.009005|
   2197 +ptr_table_new||5.009005|
   2198 +ptr_table_split||5.009005|
   2199 +ptr_table_store||5.009005|
   2200 +push_scope|||
   2201 +put_byte|||
   2202 +put_latin1_charclass_innards|||
   2203 +pv_display|5.006000||p
   2204 +pv_escape|5.009004||p
   2205 +pv_pretty|5.009004||p
   2206 +pv_uni_display||5.007003|
   2207 +qerror|||
   2208 +qsortsvu|||
   2209 +re_compile||5.009005|
   2210 +re_croak2|||
   2211 +re_dup_guts|||
   2212 +re_intuit_start||5.019001|
   2213 +re_intuit_string||5.006000|
   2214 +re_op_compile|||
   2215 +readpipe_override|||
   2216 +realloc||5.007002|n
   2217 +reentrant_free||5.019003|
   2218 +reentrant_init||5.019003|
   2219 +reentrant_retry||5.019003|vn
   2220 +reentrant_size||5.019003|
   2221 +ref_array_or_hash|||
   2222 +refcounted_he_chain_2hv|||
   2223 +refcounted_he_fetch_pvn|||
   2224 +refcounted_he_fetch_pvs|||
   2225 +refcounted_he_fetch_pv|||
   2226 +refcounted_he_fetch_sv|||
   2227 +refcounted_he_free|||
   2228 +refcounted_he_inc|||
   2229 +refcounted_he_new_pvn|||
   2230 +refcounted_he_new_pvs|||
   2231 +refcounted_he_new_pv|||
   2232 +refcounted_he_new_sv|||
   2233 +refcounted_he_value|||
   2234 +refkids|||
   2235 +refto|||
   2236 +ref||5.019003|
   2237 +reg_check_named_buff_matched|||
   2238 +reg_named_buff_all||5.009005|
   2239 +reg_named_buff_exists||5.009005|
   2240 +reg_named_buff_fetch||5.009005|
   2241 +reg_named_buff_firstkey||5.009005|
   2242 +reg_named_buff_iter|||
   2243 +reg_named_buff_nextkey||5.009005|
   2244 +reg_named_buff_scalar||5.009005|
   2245 +reg_named_buff|||
   2246 +reg_node|||
   2247 +reg_numbered_buff_fetch|||
   2248 +reg_numbered_buff_length|||
   2249 +reg_numbered_buff_store|||
   2250 +reg_qr_package|||
   2251 +reg_recode|||
   2252 +reg_scan_name|||
   2253 +reg_skipcomment|||
   2254 +reg_temp_copy|||
   2255 +reganode|||
   2256 +regatom|||
   2257 +regbranch|||
   2258 +regclass_swash||5.009004|
   2259 +regclass|||
   2260 +regcppop|||
   2261 +regcppush|||
   2262 +regcurly|||
   2263 +regdump_extflags|||
   2264 +regdump_intflags|||
   2265 +regdump||5.005000|
   2266 +regdupe_internal|||
   2267 +regexec_flags||5.005000|
   2268 +regfree_internal||5.009005|
   2269 +reghop3|||n
   2270 +reghop4|||n
   2271 +reghopmaybe3|||n
   2272 +reginclass|||
   2273 +reginitcolors||5.006000|
   2274 +reginsert|||
   2275 +regmatch|||
   2276 +regnext||5.005000|
   2277 +regpatws|||n
   2278 +regpiece|||
   2279 +regpposixcc|||
   2280 +regprop|||
   2281 +regrepeat|||
   2282 +regtail_study|||
   2283 +regtail|||
   2284 +regtry|||
   2285 +reguni|||
   2286 +regwhite|||n
   2287 +reg|||
   2288 +repeatcpy|||n
   2289 +report_evil_fh|||
   2290 +report_redefined_cv|||
   2291 +report_uninit|||
   2292 +report_wrongway_fh|||
   2293 +require_pv||5.006000|
   2294 +require_tie_mod|||
   2295 +restore_magic|||
   2296 +rninstr|||n
   2297 +rpeep|||
   2298 +rsignal_restore|||
   2299 +rsignal_save|||
   2300 +rsignal_state||5.004000|
   2301 +rsignal||5.004000|
   2302 +run_body|||
   2303 +run_user_filter|||
   2304 +runops_debug||5.005000|
   2305 +runops_standard||5.005000|
   2306 +rv2cv_op_cv||5.013006|
   2307 +rvpv_dup|||
   2308 +rxres_free|||
   2309 +rxres_restore|||
   2310 +rxres_save|||
   2311 +safesyscalloc||5.006000|n
   2312 +safesysfree||5.006000|n
   2313 +safesysmalloc||5.006000|n
   2314 +safesysrealloc||5.006000|n
   2315 +same_dirent|||
   2316 +save_I16||5.004000|
   2317 +save_I32|||
   2318 +save_I8||5.006000|
   2319 +save_adelete||5.011000|
   2320 +save_aelem_flags||5.011000|
   2321 +save_aelem||5.004050|
   2322 +save_alloc||5.006000|
   2323 +save_aptr|||
   2324 +save_ary|||
   2325 +save_bool||5.008001|
   2326 +save_clearsv|||
   2327 +save_delete|||
   2328 +save_destructor_x||5.006000|
   2329 +save_destructor||5.006000|
   2330 +save_freeop|||
   2331 +save_freepv|||
   2332 +save_freesv|||
   2333 +save_generic_pvref||5.006001|
   2334 +save_generic_svref||5.005030|
   2335 +save_gp||5.004000|
   2336 +save_hash|||
   2337 +save_hdelete||5.011000|
   2338 +save_hek_flags|||n
   2339 +save_helem_flags||5.011000|
   2340 +save_helem||5.004050|
   2341 +save_hints||5.010001|
   2342 +save_hptr|||
   2343 +save_int|||
   2344 +save_item|||
   2345 +save_iv||5.005000|
   2346 +save_lines|||
   2347 +save_list|||
   2348 +save_long|||
   2349 +save_magic_flags|||
   2350 +save_mortalizesv||5.007001|
   2351 +save_nogv|||
   2352 +save_op||5.005000|
   2353 +save_padsv_and_mortalize||5.010001|
   2354 +save_pptr|||
   2355 +save_pushi32ptr||5.010001|
   2356 +save_pushptri32ptr|||
   2357 +save_pushptrptr||5.010001|
   2358 +save_pushptr||5.010001|
   2359 +save_re_context||5.006000|
   2360 +save_scalar_at|||
   2361 +save_scalar|||
   2362 +save_set_svflags||5.009000|
   2363 +save_shared_pvref||5.007003|
   2364 +save_sptr|||
   2365 +save_svref|||
   2366 +save_vptr||5.006000|
   2367 +savepvn|||
   2368 +savepvs||5.009003|
   2369 +savepv|||
   2370 +savesharedpvn||5.009005|
   2371 +savesharedpvs||5.013006|
   2372 +savesharedpv||5.007003|
   2373 +savesharedsvpv||5.013006|
   2374 +savestack_grow_cnt||5.008001|
   2375 +savestack_grow|||
   2376 +savesvpv||5.009002|
   2377 +sawparens|||
   2378 +scalar_mod_type|||n
   2379 +scalarboolean|||
   2380 +scalarkids|||
   2381 +scalarseq|||
   2382 +scalarvoid|||
   2383 +scalar|||
   2384 +scan_bin||5.006000|
   2385 +scan_commit|||
   2386 +scan_const|||
   2387 +scan_formline|||
   2388 +scan_heredoc|||
   2389 +scan_hex|||
   2390 +scan_ident|||
   2391 +scan_inputsymbol|||
   2392 +scan_num||5.007001|
   2393 +scan_oct|||
   2394 +scan_pat|||
   2395 +scan_str|||
   2396 +scan_subst|||
   2397 +scan_trans|||
   2398 +scan_version||5.009001|
   2399 +scan_vstring||5.009005|
   2400 +scan_word|||
   2401 +screaminstr||5.005000|
   2402 +search_const|||
   2403 +seed||5.008001|
   2404 +sequence_num|||
   2405 +set_context||5.006000|n
   2406 +set_numeric_local||5.006000|
   2407 +set_numeric_radix||5.006000|
   2408 +set_numeric_standard||5.006000|
   2409 +setdefout|||
   2410 +share_hek_flags|||
   2411 +share_hek||5.004000|
   2412 +si_dup|||
   2413 +sighandler|||n
   2414 +simplify_sort|||
   2415 +skipspace0|||
   2416 +skipspace1|||
   2417 +skipspace2|||
   2418 +skipspace_flags|||
   2419 +softref2xv|||
   2420 +sortcv_stacked|||
   2421 +sortcv_xsub|||
   2422 +sortcv|||
   2423 +sortsv_flags||5.009003|
   2424 +sortsv||5.007003|
   2425 +space_join_names_mortal|||
   2426 +ss_dup|||
   2427 +stack_grow|||
   2428 +start_force|||
   2429 +start_glob|||
   2430 +start_subparse||5.004000|
   2431 +stdize_locale|||
   2432 +strEQ|||
   2433 +strGE|||
   2434 +strGT|||
   2435 +strLE|||
   2436 +strLT|||
   2437 +strNE|||
   2438 +str_to_version||5.006000|
   2439 +strip_return|||
   2440 +strnEQ|||
   2441 +strnNE|||
   2442 +study_chunk|||
   2443 +sub_crush_depth|||
   2444 +sublex_done|||
   2445 +sublex_push|||
   2446 +sublex_start|||
   2447 +sv_2bool_flags||5.013006|
   2448 +sv_2bool|||
   2449 +sv_2cv|||
   2450 +sv_2io|||
   2451 +sv_2iuv_common|||
   2452 +sv_2iuv_non_preserve|||
   2453 +sv_2iv_flags||5.009001|
   2454 +sv_2iv|||
   2455 +sv_2mortal|||
   2456 +sv_2num|||
   2457 +sv_2nv_flags||5.013001|
   2458 +sv_2pv_flags|5.007002||p
   2459 +sv_2pv_nolen|5.006000||p
   2460 +sv_2pvbyte_nolen|5.006000||p
   2461 +sv_2pvbyte|5.006000||p
   2462 +sv_2pvutf8_nolen||5.006000|
   2463 +sv_2pvutf8||5.006000|
   2464 +sv_2pv|||
   2465 +sv_2uv_flags||5.009001|
   2466 +sv_2uv|5.004000||p
   2467 +sv_add_arena|||
   2468 +sv_add_backref|||
   2469 +sv_backoff|||
   2470 +sv_bless|||
   2471 +sv_cat_decode||5.008001|
   2472 +sv_catpv_flags||5.013006|
   2473 +sv_catpv_mg|5.004050||p
   2474 +sv_catpv_nomg||5.013006|
   2475 +sv_catpvf_mg_nocontext|||pvn
   2476 +sv_catpvf_mg|5.006000|5.004000|pv
   2477 +sv_catpvf_nocontext|||vn
   2478 +sv_catpvf||5.004000|v
   2479 +sv_catpvn_flags||5.007002|
   2480 +sv_catpvn_mg|5.004050||p
   2481 +sv_catpvn_nomg|5.007002||p
   2482 +sv_catpvn|||
   2483 +sv_catpvs_flags||5.013006|
   2484 +sv_catpvs_mg||5.013006|
   2485 +sv_catpvs_nomg||5.013006|
   2486 +sv_catpvs|5.009003||p
   2487 +sv_catpv|||
   2488 +sv_catsv_flags||5.007002|
   2489 +sv_catsv_mg|5.004050||p
   2490 +sv_catsv_nomg|5.007002||p
   2491 +sv_catsv|||
   2492 +sv_catxmlpvn|||
   2493 +sv_catxmlpv|||
   2494 +sv_catxmlsv|||
   2495 +sv_chop|||
   2496 +sv_clean_all|||
   2497 +sv_clean_objs|||
   2498 +sv_clear|||
   2499 +sv_cmp_flags||5.013006|
   2500 +sv_cmp_locale_flags||5.013006|
   2501 +sv_cmp_locale||5.004000|
   2502 +sv_cmp|||
   2503 +sv_collxfrm_flags||5.013006|
   2504 +sv_collxfrm|||
   2505 +sv_copypv_flags||5.017002|
   2506 +sv_copypv_nomg||5.017002|
   2507 +sv_copypv|||
   2508 +sv_dec_nomg||5.013002|
   2509 +sv_dec|||
   2510 +sv_del_backref|||
   2511 +sv_derived_from_pvn||5.015004|
   2512 +sv_derived_from_pv||5.015004|
   2513 +sv_derived_from_sv||5.015004|
   2514 +sv_derived_from||5.004000|
   2515 +sv_destroyable||5.010000|
   2516 +sv_display|||
   2517 +sv_does_pvn||5.015004|
   2518 +sv_does_pv||5.015004|
   2519 +sv_does_sv||5.015004|
   2520 +sv_does||5.009004|
   2521 +sv_dump|||
   2522 +sv_dup_common|||
   2523 +sv_dup_inc_multiple|||
   2524 +sv_dup_inc|||
   2525 +sv_dup|||
   2526 +sv_eq_flags||5.013006|
   2527 +sv_eq|||
   2528 +sv_exp_grow|||
   2529 +sv_force_normal_flags||5.007001|
   2530 +sv_force_normal||5.006000|
   2531 +sv_free2|||
   2532 +sv_free_arenas|||
   2533 +sv_free|||
   2534 +sv_gets||5.004000|
   2535 +sv_grow|||
   2536 +sv_i_ncmp|||
   2537 +sv_inc_nomg||5.013002|
   2538 +sv_inc|||
   2539 +sv_insert_flags||5.010001|
   2540 +sv_insert|||
   2541 +sv_isa|||
   2542 +sv_isobject|||
   2543 +sv_iv||5.005000|
   2544 +sv_kill_backrefs|||
   2545 +sv_len_utf8_nomg|||
   2546 +sv_len_utf8||5.006000|
   2547 +sv_len|||
   2548 +sv_magic_portable|5.019003|5.004000|p
   2549 +sv_magicext_mglob|||
   2550 +sv_magicext||5.007003|
   2551 +sv_magic|||
   2552 +sv_mortalcopy_flags|||
   2553 +sv_mortalcopy|||
   2554 +sv_ncmp|||
   2555 +sv_newmortal|||
   2556 +sv_newref|||
   2557 +sv_nolocking||5.007003|
   2558 +sv_nosharing||5.007003|
   2559 +sv_nounlocking|||
   2560 +sv_nv||5.005000|
   2561 +sv_peek||5.005000|
   2562 +sv_pos_b2u_flags||5.019003|
   2563 +sv_pos_b2u_midway|||
   2564 +sv_pos_b2u||5.006000|
   2565 +sv_pos_u2b_cached|||
   2566 +sv_pos_u2b_flags||5.011005|
   2567 +sv_pos_u2b_forwards|||n
   2568 +sv_pos_u2b_midway|||n
   2569 +sv_pos_u2b||5.006000|
   2570 +sv_pvbyten_force||5.006000|
   2571 +sv_pvbyten||5.006000|
   2572 +sv_pvbyte||5.006000|
   2573 +sv_pvn_force_flags|5.007002||p
   2574 +sv_pvn_force|||
   2575 +sv_pvn_nomg|5.007003|5.005000|p
   2576 +sv_pvn||5.005000|
   2577 +sv_pvutf8n_force||5.006000|
   2578 +sv_pvutf8n||5.006000|
   2579 +sv_pvutf8||5.006000|
   2580 +sv_pv||5.006000|
   2581 +sv_recode_to_utf8||5.007003|
   2582 +sv_reftype|||
   2583 +sv_ref|||
   2584 +sv_release_COW|||
   2585 +sv_replace|||
   2586 +sv_report_used|||
   2587 +sv_resetpvn|||
   2588 +sv_reset|||
   2589 +sv_rvweaken||5.006000|
   2590 +sv_sethek|||
   2591 +sv_setiv_mg|5.004050||p
   2592 +sv_setiv|||
   2593 +sv_setnv_mg|5.006000||p
   2594 +sv_setnv|||
   2595 +sv_setpv_mg|5.004050||p
   2596 +sv_setpvf_mg_nocontext|||pvn
   2597 +sv_setpvf_mg|5.006000|5.004000|pv
   2598 +sv_setpvf_nocontext|||vn
   2599 +sv_setpvf||5.004000|v
   2600 +sv_setpviv_mg||5.008001|
   2601 +sv_setpviv||5.008001|
   2602 +sv_setpvn_mg|5.004050||p
   2603 +sv_setpvn|||
   2604 +sv_setpvs_mg||5.013006|
   2605 +sv_setpvs|5.009004||p
   2606 +sv_setpv|||
   2607 +sv_setref_iv|||
   2608 +sv_setref_nv|||
   2609 +sv_setref_pvn|||
   2610 +sv_setref_pvs||5.019003|
   2611 +sv_setref_pv|||
   2612 +sv_setref_uv||5.007001|
   2613 +sv_setsv_cow|||
   2614 +sv_setsv_flags||5.007002|
   2615 +sv_setsv_mg|5.004050||p
   2616 +sv_setsv_nomg|5.007002||p
   2617 +sv_setsv|||
   2618 +sv_setuv_mg|5.004050||p
   2619 +sv_setuv|5.004000||p
   2620 +sv_tainted||5.004000|
   2621 +sv_taint||5.004000|
   2622 +sv_true||5.005000|
   2623 +sv_unglob|||
   2624 +sv_uni_display||5.007003|
   2625 +sv_unmagicext||5.013008|
   2626 +sv_unmagic|||
   2627 +sv_unref_flags||5.007001|
   2628 +sv_unref|||
   2629 +sv_untaint||5.004000|
   2630 +sv_upgrade|||
   2631 +sv_usepvn_flags||5.009004|
   2632 +sv_usepvn_mg|5.004050||p
   2633 +sv_usepvn|||
   2634 +sv_utf8_decode||5.006000|
   2635 +sv_utf8_downgrade||5.006000|
   2636 +sv_utf8_encode||5.006000|
   2637 +sv_utf8_upgrade_flags_grow||5.011000|
   2638 +sv_utf8_upgrade_flags||5.007002|
   2639 +sv_utf8_upgrade_nomg||5.007002|
   2640 +sv_utf8_upgrade||5.007001|
   2641 +sv_uv|5.005000||p
   2642 +sv_vcatpvf_mg|5.006000|5.004000|p
   2643 +sv_vcatpvfn_flags||5.017002|
   2644 +sv_vcatpvfn||5.004000|
   2645 +sv_vcatpvf|5.006000|5.004000|p
   2646 +sv_vsetpvf_mg|5.006000|5.004000|p
   2647 +sv_vsetpvfn||5.004000|
   2648 +sv_vsetpvf|5.006000|5.004000|p
   2649 +sv_xmlpeek|||
   2650 +svtype|||
   2651 +swallow_bom|||
   2652 +swash_fetch||5.007002|
   2653 +swash_init||5.006000|
   2654 +swatch_get|||
   2655 +sys_init3||5.010000|n
   2656 +sys_init||5.010000|n
   2657 +sys_intern_clear|||
   2658 +sys_intern_dup|||
   2659 +sys_intern_init|||
   2660 +sys_term||5.010000|n
   2661 +taint_env|||
   2662 +taint_proper|||
   2663 +tied_method|||v
   2664 +tmps_grow||5.006000|
   2665 +toFOLD_uni||5.007003|
   2666 +toFOLD_utf8||5.019001|
   2667 +toFOLD||5.019001|
   2668 +toLOWER_L1||5.019001|
   2669 +toLOWER_LC||5.004000|
   2670 +toLOWER_uni||5.007003|
   2671 +toLOWER_utf8||5.015007|
   2672 +toLOWER|||
   2673 +toTITLE_uni||5.007003|
   2674 +toTITLE_utf8||5.015007|
   2675 +toTITLE||5.019001|
   2676 +toUPPER_uni||5.007003|
   2677 +toUPPER_utf8||5.015007|
   2678 +toUPPER||5.004000|
   2679 +to_byte_substr|||
   2680 +to_lower_latin1|||
   2681 +to_uni_fold||5.007003|
   2682 +to_uni_lower_lc||5.006000|
   2683 +to_uni_lower||5.007003|
   2684 +to_uni_title_lc||5.006000|
   2685 +to_uni_title||5.007003|
   2686 +to_uni_upper_lc||5.006000|
   2687 +to_uni_upper||5.007003|
   2688 +to_utf8_case||5.007003|
   2689 +to_utf8_fold||5.015007|
   2690 +to_utf8_lower||5.015007|
   2691 +to_utf8_substr|||
   2692 +to_utf8_title||5.015007|
   2693 +to_utf8_upper||5.015007|
   2694 +token_free|||
   2695 +token_getmad|||
   2696 +tokenize_use|||
   2697 +tokeq|||
   2698 +tokereport|||
   2699 +too_few_arguments_pv|||
   2700 +too_few_arguments_sv|||
   2701 +too_many_arguments_pv|||
   2702 +too_many_arguments_sv|||
   2703 +translate_substr_offsets|||
   2704 +try_amagic_bin|||
   2705 +try_amagic_un|||
   2706 +uiv_2buf|||n
   2707 +unlnk|||
   2708 +unpack_rec|||
   2709 +unpack_str||5.007003|
   2710 +unpackstring||5.008001|
   2711 +unreferenced_to_tmp_stack|||
   2712 +unshare_hek_or_pvn|||
   2713 +unshare_hek|||
   2714 +unsharepvn||5.004000|
   2715 +unwind_handler_stack|||
   2716 +update_debugger_info|||
   2717 +upg_version||5.009005|
   2718 +usage|||
   2719 +utf16_textfilter|||
   2720 +utf16_to_utf8_reversed||5.006001|
   2721 +utf16_to_utf8||5.006001|
   2722 +utf8_distance||5.006000|
   2723 +utf8_hop||5.006000|
   2724 +utf8_length||5.007001|
   2725 +utf8_mg_len_cache_update|||
   2726 +utf8_mg_pos_cache_update|||
   2727 +utf8_to_bytes||5.006001|
   2728 +utf8_to_uvchr_buf||5.015009|
   2729 +utf8_to_uvchr||5.007001|
   2730 +utf8_to_uvuni_buf||5.015009|
   2731 +utf8_to_uvuni||5.007001|
   2732 +utf8n_to_uvchr|||
   2733 +utf8n_to_uvuni||5.007001|
   2734 +utilize|||
   2735 +uvchr_to_utf8_flags||5.007003|
   2736 +uvchr_to_utf8|||
   2737 +uvuni_to_utf8_flags||5.007003|
   2738 +uvuni_to_utf8||5.007001|
   2739 +valid_utf8_to_uvchr|||
   2740 +valid_utf8_to_uvuni||5.015009|
   2741 +validate_proto|||
   2742 +validate_suid|||
   2743 +varname|||
   2744 +vcmp||5.009000|
   2745 +vcroak||5.006000|
   2746 +vdeb||5.007003|
   2747 +vform||5.006000|
   2748 +visit|||
   2749 +vivify_defelem|||
   2750 +vivify_ref|||
   2751 +vload_module|5.006000||p
   2752 +vmess||5.006000|
   2753 +vnewSVpvf|5.006000|5.004000|p
   2754 +vnormal||5.009002|
   2755 +vnumify||5.009000|
   2756 +vstringify||5.009000|
   2757 +vverify||5.009003|
   2758 +vwarner||5.006000|
   2759 +vwarn||5.006000|
   2760 +wait4pid|||
   2761 +warn_nocontext|||vn
   2762 +warn_sv||5.013001|
   2763 +warner_nocontext|||vn
   2764 +warner|5.006000|5.004000|pv
   2765 +warn|||v
   2766 +was_lvalue_sub|||
   2767 +watch|||
   2768 +whichsig_pvn||5.015004|
   2769 +whichsig_pv||5.015004|
   2770 +whichsig_sv||5.015004|
   2771 +whichsig|||
   2772 +win32_croak_not_implemented|||n
   2773 +with_queued_errors|||
   2774 +wrap_op_checker||5.015008|
   2775 +write_to_stderr|||
   2776 +xmldump_all_perl|||
   2777 +xmldump_all|||
   2778 +xmldump_attr|||
   2779 +xmldump_eval|||
   2780 +xmldump_form|||
   2781 +xmldump_indent|||v
   2782 +xmldump_packsubs_perl|||
   2783 +xmldump_packsubs|||
   2784 +xmldump_sub_perl|||
   2785 +xmldump_sub|||
   2786 +xmldump_vindent|||
   2787 +xs_apiversion_bootcheck|||
   2788 +xs_version_bootcheck|||
   2789 +yyerror_pvn|||
   2790 +yyerror_pv|||
   2791 +yyerror|||
   2792 +yylex|||
   2793 +yyparse|||
   2794 +yyunlex|||
   2795 +yywarn|||
   2796 +);
   2797 +
   2798 +if (exists $opt{'list-unsupported'}) {
   2799 +  my $f;
   2800 +  for $f (sort { lc $a cmp lc $b } keys %API) {
   2801 +    next unless $API{$f}{todo};
   2802 +    print "$f ", '.'x(40-length($f)), " ", format_version($API{$f}{todo}), "\n";
   2803 +  }
   2804 +  exit 0;
   2805 +}
   2806 +
   2807 +# Scan for possible replacement candidates
   2808 +
   2809 +my(%replace, %need, %hints, %warnings, %depends);
   2810 +my $replace = 0;
   2811 +my($hint, $define, $function);
   2812 +
   2813 +sub find_api
   2814 +{
   2815 +  my $code = shift;
   2816 +  $code =~ s{
   2817 +    / (?: \*[^*]*\*+(?:[^$ccs][^*]*\*+)* / | /[^\r\n]*)
   2818 +  | "[^"\\]*(?:\\.[^"\\]*)*"
   2819 +  | '[^'\\]*(?:\\.[^'\\]*)*' }{}egsx;
   2820 +  grep { exists $API{$_} } $code =~ /(\w+)/mg;
   2821 +}
   2822 +
   2823 +while (<DATA>) {
   2824 +  if ($hint) {
   2825 +    my $h = $hint->[0] eq 'Hint' ? \%hints : \%warnings;
   2826 +    if (m{^\s*\*\s(.*?)\s*$}) {
   2827 +      for (@{$hint->[1]}) {
   2828 +        $h->{$_} ||= '';  # suppress warning with older perls
   2829 +        $h->{$_} .= "$1\n";
   2830 +      }
   2831 +    }
   2832 +    else { undef $hint }
   2833 +  }
   2834 +
   2835 +  $hint = [$1, [split /,?\s+/, $2]]
   2836 +      if m{^\s*$rccs\s+(Hint|Warning):\s+(\w+(?:,?\s+\w+)*)\s*$};
   2837 +
   2838 +  if ($define) {
   2839 +    if ($define->[1] =~ /\\$/) {
   2840 +      $define->[1] .= $_;
   2841 +    }
   2842 +    else {
   2843 +      if (exists $API{$define->[0]} && $define->[1] !~ /^DPPP_\(/) {
   2844 +        my @n = find_api($define->[1]);
   2845 +        push @{$depends{$define->[0]}}, @n if @n
   2846 +      }
   2847 +      undef $define;
   2848 +    }
   2849 +  }
   2850 +
   2851 +  $define = [$1, $2] if m{^\s*#\s*define\s+(\w+)(?:\([^)]*\))?\s+(.*)};
   2852 +
   2853 +  if ($function) {
   2854 +    if (/^}/) {
   2855 +      if (exists $API{$function->[0]}) {
   2856 +        my @n = find_api($function->[1]);
   2857 +        push @{$depends{$function->[0]}}, @n if @n
   2858 +      }
   2859 +      undef $function;
   2860 +    }
   2861 +    else {
   2862 +      $function->[1] .= $_;
   2863 +    }
   2864 +  }
   2865 +
   2866 +  $function = [$1, ''] if m{^DPPP_\(my_(\w+)\)};
   2867 +
   2868 +  $replace     = $1 if m{^\s*$rccs\s+Replace:\s+(\d+)\s+$rcce\s*$};
   2869 +  $replace{$2} = $1 if $replace and m{^\s*#\s*define\s+(\w+)(?:\([^)]*\))?\s+(\w+)};
   2870 +  $replace{$2} = $1 if m{^\s*#\s*define\s+(\w+)(?:\([^)]*\))?\s+(\w+).*$rccs\s+Replace\s+$rcce};
   2871 +  $replace{$1} = $2 if m{^\s*$rccs\s+Replace (\w+) with (\w+)\s+$rcce\s*$};
   2872 +
   2873 +  if (m{^\s*$rccs\s+(\w+(\s*,\s*\w+)*)\s+depends\s+on\s+(\w+(\s*,\s*\w+)*)\s+$rcce\s*$}) {
   2874 +    my @deps = map { s/\s+//g; $_ } split /,/, $3;
   2875 +    my $d;
   2876 +    for $d (map { s/\s+//g; $_ } split /,/, $1) {
   2877 +      push @{$depends{$d}}, @deps;
   2878 +    }
   2879 +  }
   2880 +
   2881 +  $need{$1} = 1 if m{^#if\s+defined\(NEED_(\w+)(?:_GLOBAL)?\)};
   2882 +}
   2883 +
   2884 +for (values %depends) {
   2885 +  my %s;
   2886 +  $_ = [sort grep !$s{$_}++, @$_];
   2887 +}
   2888 +
   2889 +if (exists $opt{'api-info'}) {
   2890 +  my $f;
   2891 +  my $count = 0;
   2892 +  my $match = $opt{'api-info'} =~ m!^/(.*)/$! ? $1 : "^\Q$opt{'api-info'}\E\$";
   2893 +  for $f (sort { lc $a cmp lc $b } keys %API) {
   2894 +    next unless $f =~ /$match/;
   2895 +    print "\n=== $f ===\n\n";
   2896 +    my $info = 0;
   2897 +    if ($API{$f}{base} || $API{$f}{todo}) {
   2898 +      my $base = format_version($API{$f}{base} || $API{$f}{todo});
   2899 +      print "Supported at least starting from perl-$base.\n";
   2900 +      $info++;
   2901 +    }
   2902 +    if ($API{$f}{provided}) {
   2903 +      my $todo = $API{$f}{todo} ? format_version($API{$f}{todo}) : "5.003";
   2904 +      print "Support by $ppport provided back to perl-$todo.\n";
   2905 +      print "Support needs to be explicitly requested by NEED_$f.\n" if exists $need{$f};
   2906 +      print "Depends on: ", join(', ', @{$depends{$f}}), ".\n" if exists $depends{$f};
   2907 +      print "\n$hints{$f}" if exists $hints{$f};
   2908 +      print "\nWARNING:\n$warnings{$f}" if exists $warnings{$f};
   2909 +      $info++;
   2910 +    }
   2911 +    print "No portability information available.\n" unless $info;
   2912 +    $count++;
   2913 +  }
   2914 +  $count or print "Found no API matching '$opt{'api-info'}'.";
   2915 +  print "\n";
   2916 +  exit 0;
   2917 +}
   2918 +
   2919 +if (exists $opt{'list-provided'}) {
   2920 +  my $f;
   2921 +  for $f (sort { lc $a cmp lc $b } keys %API) {
   2922 +    next unless $API{$f}{provided};
   2923 +    my @flags;
   2924 +    push @flags, 'explicit' if exists $need{$f};
   2925 +    push @flags, 'depend'   if exists $depends{$f};
   2926 +    push @flags, 'hint'     if exists $hints{$f};
   2927 +    push @flags, 'warning'  if exists $warnings{$f};
   2928 +    my $flags = @flags ? '  ['.join(', ', @flags).']' : '';
   2929 +    print "$f$flags\n";
   2930 +  }
   2931 +  exit 0;
   2932 +}
   2933 +
   2934 +my @files;
   2935 +my @srcext = qw( .xs .c .h .cc .cpp -c.inc -xs.inc );
   2936 +my $srcext = join '|', map { quotemeta $_ } @srcext;
   2937 +
   2938 +if (@ARGV) {
   2939 +  my %seen;
   2940 +  for (@ARGV) {
   2941 +    if (-e) {
   2942 +      if (-f) {
   2943 +        push @files, $_ unless $seen{$_}++;
   2944 +      }
   2945 +      else { warn "'$_' is not a file.\n" }
   2946 +    }
   2947 +    else {
   2948 +      my @new = grep { -f } glob $_
   2949 +          or warn "'$_' does not exist.\n";
   2950 +      push @files, grep { !$seen{$_}++ } @new;
   2951 +    }
   2952 +  }
   2953 +}
   2954 +else {
   2955 +  eval {
   2956 +    require File::Find;
   2957 +    File::Find::find(sub {
   2958 +      $File::Find::name =~ /($srcext)$/i
   2959 +          and push @files, $File::Find::name;
   2960 +    }, '.');
   2961 +  };
   2962 +  if ($@) {
   2963 +    @files = map { glob "*$_" } @srcext;
   2964 +  }
   2965 +}
   2966 +
   2967 +if (!@ARGV || $opt{filter}) {
   2968 +  my(@in, @out);
   2969 +  my %xsc = map { /(.*)\.xs$/ ? ("$1.c" => 1, "$1.cc" => 1) : () } @files;
   2970 +  for (@files) {
   2971 +    my $out = exists $xsc{$_} || /\b\Q$ppport\E$/i || !/($srcext)$/i;
   2972 +    push @{ $out ? \@out : \@in }, $_;
   2973 +  }
   2974 +  if (@ARGV && @out) {
   2975 +    warning("Skipping the following files (use --nofilter to avoid this):\n| ", join "\n| ", @out);
   2976 +  }
   2977 +  @files = @in;
   2978 +}
   2979 +
   2980 +die "No input files given!\n" unless @files;
   2981 +
   2982 +my(%files, %global, %revreplace);
   2983 +%revreplace = reverse %replace;
   2984 +my $filename;
   2985 +my $patch_opened = 0;
   2986 +
   2987 +for $filename (@files) {
   2988 +  unless (open IN, "<$filename") {
   2989 +    warn "Unable to read from $filename: $!\n";
   2990 +    next;
   2991 +  }
   2992 +
   2993 +  info("Scanning $filename ...");
   2994 +
   2995 +  my $c = do { local $/; <IN> };
   2996 +  close IN;
   2997 +
   2998 +  my %file = (orig => $c, changes => 0);
   2999 +
   3000 +  # Temporarily remove C/XS comments and strings from the code
   3001 +  my @ccom;
   3002 +
   3003 +  $c =~ s{
   3004 +    ( ^$HS*\#$HS*include\b[^\r\n]+\b(?:\Q$ppport\E|XSUB\.h)\b[^\r\n]*
   3005 +    | ^$HS*\#$HS*(?:define|elif|if(?:def)?)\b[^\r\n]* )
   3006 +  | ( ^$HS*\#[^\r\n]*
   3007 +    | "[^"\\]*(?:\\.[^"\\]*)*"
   3008 +    | '[^'\\]*(?:\\.[^'\\]*)*'
   3009 +    | / (?: \*[^*]*\*+(?:[^$ccs][^*]*\*+)* / | /[^\r\n]* ) )
   3010 +  }{ defined $2 and push @ccom, $2;
   3011 +     defined $1 ? $1 : "$ccs$#ccom$cce" }mgsex;
   3012 +
   3013 +  $file{ccom} = \@ccom;
   3014 +  $file{code} = $c;
   3015 +  $file{has_inc_ppport} = $c =~ /^$HS*#$HS*include[^\r\n]+\b\Q$ppport\E\b/m;
   3016 +
   3017 +  my $func;
   3018 +
   3019 +  for $func (keys %API) {
   3020 +    my $match = $func;
   3021 +    $match .= "|$revreplace{$func}" if exists $revreplace{$func};
   3022 +    if ($c =~ /\b(?:Perl_)?($match)\b/) {
   3023 +      $file{uses_replace}{$1}++ if exists $revreplace{$func} && $1 eq $revreplace{$func};
   3024 +      $file{uses_Perl}{$func}++ if $c =~ /\bPerl_$func\b/;
   3025 +      if (exists $API{$func}{provided}) {
   3026 +        $file{uses_provided}{$func}++;
   3027 +        if (!exists $API{$func}{base} || $API{$func}{base} > $opt{'compat-version'}) {
   3028 +          $file{uses}{$func}++;
   3029 +          my @deps = rec_depend($func);
   3030 +          if (@deps) {
   3031 +            $file{uses_deps}{$func} = \@deps;
   3032 +            for (@deps) {
   3033 +              $file{uses}{$_} = 0 unless exists $file{uses}{$_};
   3034 +            }
   3035 +          }
   3036 +          for ($func, @deps) {
   3037 +            $file{needs}{$_} = 'static' if exists $need{$_};
   3038 +          }
   3039 +        }
   3040 +      }
   3041 +      if (exists $API{$func}{todo} && $API{$func}{todo} > $opt{'compat-version'}) {
   3042 +        if ($c =~ /\b$func\b/) {
   3043 +          $file{uses_todo}{$func}++;
   3044 +        }
   3045 +      }
   3046 +    }
   3047 +  }
   3048 +
   3049 +  while ($c =~ /^$HS*#$HS*define$HS+(NEED_(\w+?)(_GLOBAL)?)\b/mg) {
   3050 +    if (exists $need{$2}) {
   3051 +      $file{defined $3 ? 'needed_global' : 'needed_static'}{$2}++;
   3052 +    }
   3053 +    else { warning("Possibly wrong #define $1 in $filename") }
   3054 +  }
   3055 +
   3056 +  for (qw(uses needs uses_todo needed_global needed_static)) {
   3057 +    for $func (keys %{$file{$_}}) {
   3058 +      push @{$global{$_}{$func}}, $filename;
   3059 +    }
   3060 +  }
   3061 +
   3062 +  $files{$filename} = \%file;
   3063 +}
   3064 +
   3065 +# Globally resolve NEED_'s
   3066 +my $need;
   3067 +for $need (keys %{$global{needs}}) {
   3068 +  if (@{$global{needs}{$need}} > 1) {
   3069 +    my @targets = @{$global{needs}{$need}};
   3070 +    my @t = grep $files{$_}{needed_global}{$need}, @targets;
   3071 +    @targets = @t if @t;
   3072 +    @t = grep /\.xs$/i, @targets;
   3073 +    @targets = @t if @t;
   3074 +    my $target = shift @targets;
   3075 +    $files{$target}{needs}{$need} = 'global';
   3076 +    for (@{$global{needs}{$need}}) {
   3077 +      $files{$_}{needs}{$need} = 'extern' if $_ ne $target;
   3078 +    }
   3079 +  }
   3080 +}
   3081 +
   3082 +for $filename (@files) {
   3083 +  exists $files{$filename} or next;
   3084 +
   3085 +  info("=== Analyzing $filename ===");
   3086 +
   3087 +  my %file = %{$files{$filename}};
   3088 +  my $func;
   3089 +  my $c = $file{code};
   3090 +  my $warnings = 0;
   3091 +
   3092 +  for $func (sort keys %{$file{uses_Perl}}) {
   3093 +    if ($API{$func}{varargs}) {
   3094 +      unless ($API{$func}{nothxarg}) {
   3095 +        my $changes = ($c =~ s{\b(Perl_$func\s*\(\s*)(?!aTHX_?)(\)|[^\s)]*\))}
   3096 +                              { $1 . ($2 eq ')' ? 'aTHX' : 'aTHX_ ') . $2 }ge);
   3097 +        if ($changes) {
   3098 +          warning("Doesn't pass interpreter argument aTHX to Perl_$func");
   3099 +          $file{changes} += $changes;
   3100 +        }
   3101 +      }
   3102 +    }
   3103 +    else {
   3104 +      warning("Uses Perl_$func instead of $func");
   3105 +      $file{changes} += ($c =~ s{\bPerl_$func(\s*)\((\s*aTHX_?)?\s*}
   3106 +                                {$func$1(}g);
   3107 +    }
   3108 +  }
   3109 +
   3110 +  for $func (sort keys %{$file{uses_replace}}) {
   3111 +    warning("Uses $func instead of $replace{$func}");
   3112 +    $file{changes} += ($c =~ s/\b$func\b/$replace{$func}/g);
   3113 +  }
   3114 +
   3115 +  for $func (sort keys %{$file{uses_provided}}) {
   3116 +    if ($file{uses}{$func}) {
   3117 +      if (exists $file{uses_deps}{$func}) {
   3118 +        diag("Uses $func, which depends on ", join(', ', @{$file{uses_deps}{$func}}));
   3119 +      }
   3120 +      else {
   3121 +        diag("Uses $func");
   3122 +      }
   3123 +    }
   3124 +    $warnings += hint($func);
   3125 +  }
   3126 +
   3127 +  unless ($opt{quiet}) {
   3128 +    for $func (sort keys %{$file{uses_todo}}) {
   3129 +      print "*** WARNING: Uses $func, which may not be portable below perl ",
   3130 +            format_version($API{$func}{todo}), ", even with '$ppport'\n";
   3131 +      $warnings++;
   3132 +    }
   3133 +  }
   3134 +
   3135 +  for $func (sort keys %{$file{needed_static}}) {
   3136 +    my $message = '';
   3137 +    if (not exists $file{uses}{$func}) {
   3138 +      $message = "No need to define NEED_$func if $func is never used";
   3139 +    }
   3140 +    elsif (exists $file{needs}{$func} && $file{needs}{$func} ne 'static') {
   3141 +      $message = "No need to define NEED_$func when already needed globally";
   3142 +    }
   3143 +    if ($message) {
   3144 +      diag($message);
   3145 +      $file{changes} += ($c =~ s/^$HS*#$HS*define$HS+NEED_$func\b.*$LF//mg);
   3146 +    }
   3147 +  }
   3148 +
   3149 +  for $func (sort keys %{$file{needed_global}}) {
   3150 +    my $message = '';
   3151 +    if (not exists $global{uses}{$func}) {
   3152 +      $message = "No need to define NEED_${func}_GLOBAL if $func is never used";
   3153 +    }
   3154 +    elsif (exists $file{needs}{$func}) {
   3155 +      if ($file{needs}{$func} eq 'extern') {
   3156 +        $message = "No need to define NEED_${func}_GLOBAL when already needed globally";
   3157 +      }
   3158 +      elsif ($file{needs}{$func} eq 'static') {
   3159 +        $message = "No need to define NEED_${func}_GLOBAL when only used in this file";
   3160 +      }
   3161 +    }
   3162 +    if ($message) {
   3163 +      diag($message);
   3164 +      $file{changes} += ($c =~ s/^$HS*#$HS*define$HS+NEED_${func}_GLOBAL\b.*$LF//mg);
   3165 +    }
   3166 +  }
   3167 +
   3168 +  $file{needs_inc_ppport} = keys %{$file{uses}};
   3169 +
   3170 +  if ($file{needs_inc_ppport}) {
   3171 +    my $pp = '';
   3172 +
   3173 +    for $func (sort keys %{$file{needs}}) {
   3174 +      my $type = $file{needs}{$func};
   3175 +      next if $type eq 'extern';
   3176 +      my $suffix = $type eq 'global' ? '_GLOBAL' : '';
   3177 +      unless (exists $file{"needed_$type"}{$func}) {
   3178 +        if ($type eq 'global') {
   3179 +          diag("Files [@{$global{needs}{$func}}] need $func, adding global request");
   3180 +        }
   3181 +        else {
   3182 +          diag("File needs $func, adding static request");
   3183 +        }
   3184 +        $pp .= "#define NEED_$func$suffix\n";
   3185 +      }
   3186 +    }
   3187 +
   3188 +    if ($pp && ($c =~ s/^(?=$HS*#$HS*define$HS+NEED_\w+)/$pp/m)) {
   3189 +      $pp = '';
   3190 +      $file{changes}++;
   3191 +    }
   3192 +
   3193 +    unless ($file{has_inc_ppport}) {
   3194 +      diag("Needs to include '$ppport'");
   3195 +      $pp .= qq(#include "$ppport"\n)
   3196 +    }
   3197 +
   3198 +    if ($pp) {
   3199 +      $file{changes} += ($c =~ s/^($HS*#$HS*define$HS+NEED_\w+.*?)^/$1$pp/ms)
   3200 +                     || ($c =~ s/^(?=$HS*#$HS*include.*\Q$ppport\E)/$pp/m)
   3201 +                     || ($c =~ s/^($HS*#$HS*include.*XSUB.*\s*?)^/$1$pp/m)
   3202 +                     || ($c =~ s/^/$pp/);
   3203 +    }
   3204 +  }
   3205 +  else {
   3206 +    if ($file{has_inc_ppport}) {
   3207 +      diag("No need to include '$ppport'");
   3208 +      $file{changes} += ($c =~ s/^$HS*?#$HS*include.*\Q$ppport\E.*?$LF//m);
   3209 +    }
   3210 +  }
   3211 +
   3212 +  # put back in our C comments
   3213 +  my $ix;
   3214 +  my $cppc = 0;
   3215 +  my @ccom = @{$file{ccom}};
   3216 +  for $ix (0 .. $#ccom) {
   3217 +    if (!$opt{cplusplus} && $ccom[$ix] =~ s!^//!!) {
   3218 +      $cppc++;
   3219 +      $file{changes} += $c =~ s/$rccs$ix$rcce/$ccs$ccom[$ix] $cce/;
   3220 +    }
   3221 +    else {
   3222 +      $c =~ s/$rccs$ix$rcce/$ccom[$ix]/;
   3223 +    }
   3224 +  }
   3225 +
   3226 +  if ($cppc) {
   3227 +    my $s = $cppc != 1 ? 's' : '';
   3228 +    warning("Uses $cppc C++ style comment$s, which is not portable");
   3229 +  }
   3230 +
   3231 +  my $s = $warnings != 1 ? 's' : '';
   3232 +  my $warn = $warnings ? " ($warnings warning$s)" : '';
   3233 +  info("Analysis completed$warn");
   3234 +
   3235 +  if ($file{changes}) {
   3236 +    if (exists $opt{copy}) {
   3237 +      my $newfile = "$filename$opt{copy}";
   3238 +      if (-e $newfile) {
   3239 +        error("'$newfile' already exists, refusing to write copy of '$filename'");
   3240 +      }
   3241 +      else {
   3242 +        local *F;
   3243 +        if (open F, ">$newfile") {
   3244 +          info("Writing copy of '$filename' with changes to '$newfile'");
   3245 +          print F $c;
   3246 +          close F;
   3247 +        }
   3248 +        else {
   3249 +          error("Cannot open '$newfile' for writing: $!");
   3250 +        }
   3251 +      }
   3252 +    }
   3253 +    elsif (exists $opt{patch} || $opt{changes}) {
   3254 +      if (exists $opt{patch}) {
   3255 +        unless ($patch_opened) {
   3256 +          if (open PATCH, ">$opt{patch}") {
   3257 +            $patch_opened = 1;
   3258 +          }
   3259 +          else {
   3260 +            error("Cannot open '$opt{patch}' for writing: $!");
   3261 +            delete $opt{patch};
   3262 +            $opt{changes} = 1;
   3263 +            goto fallback;
   3264 +          }
   3265 +        }
   3266 +        mydiff(\*PATCH, $filename, $c);
   3267 +      }
   3268 +      else {
   3269 +fallback:
   3270 +        info("Suggested changes:");
   3271 +        mydiff(\*STDOUT, $filename, $c);
   3272 +      }
   3273 +    }
   3274 +    else {
   3275 +      my $s = $file{changes} == 1 ? '' : 's';
   3276 +      info("$file{changes} potentially required change$s detected");
   3277 +    }
   3278 +  }
   3279 +  else {
   3280 +    info("Looks good");
   3281 +  }
   3282 +}
   3283 +
   3284 +close PATCH if $patch_opened;
   3285 +
   3286 +exit 0;
   3287 +
   3288 +
   3289 +sub try_use { eval "use @_;"; return $@ eq '' }
   3290 +
   3291 +sub mydiff
   3292 +{
   3293 +  local *F = shift;
   3294 +  my($file, $str) = @_;
   3295 +  my $diff;
   3296 +
   3297 +  if (exists $opt{diff}) {
   3298 +    $diff = run_diff($opt{diff}, $file, $str);
   3299 +  }
   3300 +
   3301 +  if (!defined $diff and try_use('Text::Diff')) {
   3302 +    $diff = Text::Diff::diff($file, \$str, { STYLE => 'Unified' });
   3303 +    $diff = <<HEADER . $diff;
   3304 +--- $file
   3305 ++++ $file.patched
   3306 +HEADER
   3307 +  }
   3308 +
   3309 +  if (!defined $diff) {
   3310 +    $diff = run_diff('diff -u', $file, $str);
   3311 +  }
   3312 +
   3313 +  if (!defined $diff) {
   3314 +    $diff = run_diff('diff', $file, $str);
   3315 +  }
   3316 +
   3317 +  if (!defined $diff) {
   3318 +    error("Cannot generate a diff. Please install Text::Diff or use --copy.");
   3319 +    return;
   3320 +  }
   3321 +
   3322 +  print F $diff;
   3323 +}
   3324 +
   3325 +sub run_diff
   3326 +{
   3327 +  my($prog, $file, $str) = @_;
   3328 +  my $tmp = 'dppptemp';
   3329 +  my $suf = 'aaa';
   3330 +  my $diff = '';
   3331 +  local *F;
   3332 +
   3333 +  while (-e "$tmp.$suf") { $suf++ }
   3334 +  $tmp = "$tmp.$suf";
   3335 +
   3336 +  if (open F, ">$tmp") {
   3337 +    print F $str;
   3338 +    close F;
   3339 +
   3340 +    if (open F, "$prog $file $tmp |") {
   3341 +      while (<F>) {
   3342 +        s/\Q$tmp\E/$file.patched/;
   3343 +        $diff .= $_;
   3344 +      }
   3345 +      close F;
   3346 +      unlink $tmp;
   3347 +      return $diff;
   3348 +    }
   3349 +
   3350 +    unlink $tmp;
   3351 +  }
   3352 +  else {
   3353 +    error("Cannot open '$tmp' for writing: $!");
   3354 +  }
   3355 +
   3356 +  return undef;
   3357 +}
   3358 +
   3359 +sub rec_depend
   3360 +{
   3361 +  my($func, $seen) = @_;
   3362 +  return () unless exists $depends{$func};
   3363 +  $seen = {%{$seen||{}}};
   3364 +  return () if $seen->{$func}++;
   3365 +  my %s;
   3366 +  grep !$s{$_}++, map { ($_, rec_depend($_, $seen)) } @{$depends{$func}};
   3367 +}
   3368 +
   3369 +sub parse_version
   3370 +{
   3371 +  my $ver = shift;
   3372 +
   3373 +  if ($ver =~ /^(\d+)\.(\d+)\.(\d+)$/) {
   3374 +    return ($1, $2, $3);
   3375 +  }
   3376 +  elsif ($ver !~ /^\d+\.[\d_]+$/) {
   3377 +    die "cannot parse version '$ver'\n";
   3378 +  }
   3379 +
   3380 +  $ver =~ s/_//g;
   3381 +  $ver =~ s/$/000000/;
   3382 +
   3383 +  my($r,$v,$s) = $ver =~ /(\d+)\.(\d{3})(\d{3})/;
   3384 +
   3385 +  $v = int $v;
   3386 +  $s = int $s;
   3387 +
   3388 +  if ($r < 5 || ($r == 5 && $v < 6)) {
   3389 +    if ($s % 10) {
   3390 +      die "cannot parse version '$ver'\n";
   3391 +    }
   3392 +  }
   3393 +
   3394 +  return ($r, $v, $s);
   3395 +}
   3396 +
   3397 +sub format_version
   3398 +{
   3399 +  my $ver = shift;
   3400 +
   3401 +  $ver =~ s/$/000000/;
   3402 +  my($r,$v,$s) = $ver =~ /(\d+)\.(\d{3})(\d{3})/;
   3403 +
   3404 +  $v = int $v;
   3405 +  $s = int $s;
   3406 +
   3407 +  if ($r < 5 || ($r == 5 && $v < 6)) {
   3408 +    if ($s % 10) {
   3409 +      die "invalid version '$ver'\n";
   3410 +    }
   3411 +    $s /= 10;
   3412 +
   3413 +    $ver = sprintf "%d.%03d", $r, $v;
   3414 +    $s > 0 and $ver .= sprintf "_%02d", $s;
   3415 +
   3416 +    return $ver;
   3417 +  }
   3418 +
   3419 +  return sprintf "%d.%d.%d", $r, $v, $s;
   3420 +}
   3421 +
   3422 +sub info
   3423 +{
   3424 +  $opt{quiet} and return;
   3425 +  print @_, "\n";
   3426 +}
   3427 +
   3428 +sub diag
   3429 +{
   3430 +  $opt{quiet} and return;
   3431 +  $opt{diag} and print @_, "\n";
   3432 +}
   3433 +
   3434 +sub warning
   3435 +{
   3436 +  $opt{quiet} and return;
   3437 +  print "*** ", @_, "\n";
   3438 +}
   3439 +
   3440 +sub error
   3441 +{
   3442 +  print "*** ERROR: ", @_, "\n";
   3443 +}
   3444 +
   3445 +my %given_hints;
   3446 +my %given_warnings;
   3447 +sub hint
   3448 +{
   3449 +  $opt{quiet} and return;
   3450 +  my $func = shift;
   3451 +  my $rv = 0;
   3452 +  if (exists $warnings{$func} && !$given_warnings{$func}++) {
   3453 +    my $warn = $warnings{$func};
   3454 +    $warn =~ s!^!*** !mg;
   3455 +    print "*** WARNING: $func\n", $warn;
   3456 +    $rv++;
   3457 +  }
   3458 +  if ($opt{hints} && exists $hints{$func} && !$given_hints{$func}++) {
   3459 +    my $hint = $hints{$func};
   3460 +    $hint =~ s/^/   /mg;
   3461 +    print "   --- hint for $func ---\n", $hint;
   3462 +  }
   3463 +  $rv;
   3464 +}
   3465 +
   3466 +sub usage
   3467 +{
   3468 +  my($usage) = do { local(@ARGV,$/)=($0); <> } =~ /^=head\d$HS+SYNOPSIS\s*^(.*?)\s*^=/ms;
   3469 +  my %M = ( 'I' => '*' );
   3470 +  $usage =~ s/^\s*perl\s+\S+/$^X $0/;
   3471 +  $usage =~ s/([A-Z])<([^>]+)>/$M{$1}$2$M{$1}/g;
   3472 +
   3473 +  print <<ENDUSAGE;
   3474 +
   3475 +Usage: $usage
   3476 +
   3477 +See perldoc $0 for details.
   3478 +
   3479 +ENDUSAGE
   3480 +
   3481 +  exit 2;
   3482 +}
   3483 +
   3484 +sub strip
   3485 +{
   3486 +  my $self = do { local(@ARGV,$/)=($0); <> };
   3487 +  my($copy) = $self =~ /^=head\d\s+COPYRIGHT\s*^(.*?)^=\w+/ms;
   3488 +  $copy =~ s/^(?=\S+)/    /gms;
   3489 +  $self =~ s/^$HS+Do NOT edit.*?(?=^-)/$copy/ms;
   3490 +  $self =~ s/^SKIP.*(?=^__DATA__)/SKIP
   3491 +if (\@ARGV && \$ARGV[0] eq '--unstrip') {
   3492 +  eval { require Devel::PPPort };
   3493 +  \$@ and die "Cannot require Devel::PPPort, please install.\\n";
   3494 +  if (eval \$Devel::PPPort::VERSION < $VERSION) {
   3495 +    die "$0 was originally generated with Devel::PPPort $VERSION.\\n"
   3496 +      . "Your Devel::PPPort is only version \$Devel::PPPort::VERSION.\\n"
   3497 +      . "Please install a newer version, or --unstrip will not work.\\n";
   3498 +  }
   3499 +  Devel::PPPort::WriteFile(\$0);
   3500 +  exit 0;
   3501 +}
   3502 +print <<END;
   3503 +
   3504 +Sorry, but this is a stripped version of \$0.
   3505 +
   3506 +To be able to use its original script and doc functionality,
   3507 +please try to regenerate this file using:
   3508 +
   3509 +  \$^X \$0 --unstrip
   3510 +
   3511 +END
   3512 +/ms;
   3513 +  my($pl, $c) = $self =~ /(.*^__DATA__)(.*)/ms;
   3514 +  $c =~ s{
   3515 +    / (?: \*[^*]*\*+(?:[^$ccs][^*]*\*+)* / | /[^\r\n]*)
   3516 +  | ( "[^"\\]*(?:\\.[^"\\]*)*"
   3517 +    | '[^'\\]*(?:\\.[^'\\]*)*' )
   3518 +  | ($HS+) }{ defined $2 ? ' ' : ($1 || '') }gsex;
   3519 +  $c =~ s!\s+$!!mg;
   3520 +  $c =~ s!^$LF!!mg;
   3521 +  $c =~ s!^\s*#\s*!#!mg;
   3522 +  $c =~ s!^\s+!!mg;
   3523 +
   3524 +  open OUT, ">$0" or die "cannot strip $0: $!\n";
   3525 +  print OUT "$pl$c\n";
   3526 +
   3527 +  exit 0;
   3528 +}
   3529 +
   3530 +__DATA__
   3531 +*/
   3532 +
   3533 +#ifndef _P_P_PORTABILITY_H_
   3534 +#define _P_P_PORTABILITY_H_
   3535 +
   3536 +#ifndef DPPP_NAMESPACE
   3537 +#  define DPPP_NAMESPACE DPPP_
   3538 +#endif
   3539 +
   3540 +#define DPPP_CAT2(x,y) CAT2(x,y)
   3541 +#define DPPP_(name) DPPP_CAT2(DPPP_NAMESPACE, name)
   3542 +
   3543 +#ifndef PERL_REVISION
   3544 +#  if !defined(__PATCHLEVEL_H_INCLUDED__) && !(defined(PATCHLEVEL) && defined(SUBVERSION))
   3545 +#    define PERL_PATCHLEVEL_H_IMPLICIT
   3546 +#    include <patchlevel.h>
   3547 +#  endif
   3548 +#  if !(defined(PERL_VERSION) || (defined(SUBVERSION) && defined(PATCHLEVEL)))
   3549 +#    include <could_not_find_Perl_patchlevel.h>
   3550 +#  endif
   3551 +#  ifndef PERL_REVISION
   3552 +#    define PERL_REVISION       (5)
   3553 +     /* Replace: 1 */
   3554 +#    define PERL_VERSION        PATCHLEVEL
   3555 +#    define PERL_SUBVERSION     SUBVERSION
   3556 +     /* Replace PERL_PATCHLEVEL with PERL_VERSION */
   3557 +     /* Replace: 0 */
   3558 +#  endif
   3559 +#endif
   3560 +
   3561 +#define _dpppDEC2BCD(dec) ((((dec)/100)<<8)|((((dec)%100)/10)<<4)|((dec)%10))
   3562 +#define PERL_BCDVERSION ((_dpppDEC2BCD(PERL_REVISION)<<24)|(_dpppDEC2BCD(PERL_VERSION)<<12)|_dpppDEC2BCD(PERL_SUBVERSION))
   3563 +
   3564 +/* It is very unlikely that anyone will try to use this with Perl 6
   3565 +   (or greater), but who knows.
   3566 + */
   3567 +#if PERL_REVISION != 5
   3568 +#  error ppport.h only works with Perl version 5
   3569 +#endif /* PERL_REVISION != 5 */
   3570 +#ifndef dTHR
   3571 +#  define dTHR                           dNOOP
   3572 +#endif
   3573 +#ifndef dTHX
   3574 +#  define dTHX                           dNOOP
   3575 +#endif
   3576 +
   3577 +#ifndef dTHXa
   3578 +#  define dTHXa(x)                       dNOOP
   3579 +#endif
   3580 +#ifndef pTHX
   3581 +#  define pTHX                           void
   3582 +#endif
   3583 +
   3584 +#ifndef pTHX_
   3585 +#  define pTHX_
   3586 +#endif
   3587 +
   3588 +#ifndef aTHX
   3589 +#  define aTHX
   3590 +#endif
   3591 +
   3592 +#ifndef aTHX_
   3593 +#  define aTHX_
   3594 +#endif
   3595 +
   3596 +#if (PERL_BCDVERSION < 0x5006000)
   3597 +#  ifdef USE_THREADS
   3598 +#    define aTHXR  thr
   3599 +#    define aTHXR_ thr,
   3600 +#  else
   3601 +#    define aTHXR
   3602 +#    define aTHXR_
   3603 +#  endif
   3604 +#  define dTHXR  dTHR
   3605 +#else
   3606 +#  define aTHXR  aTHX
   3607 +#  define aTHXR_ aTHX_
   3608 +#  define dTHXR  dTHX
   3609 +#endif
   3610 +#ifndef dTHXoa
   3611 +#  define dTHXoa(x)                      dTHXa(x)
   3612 +#endif
   3613 +
   3614 +#ifdef I_LIMITS
   3615 +#  include <limits.h>
   3616 +#endif
   3617 +
   3618 +#ifndef PERL_UCHAR_MIN
   3619 +#  define PERL_UCHAR_MIN ((unsigned char)0)
   3620 +#endif
   3621 +
   3622 +#ifndef PERL_UCHAR_MAX
   3623 +#  ifdef UCHAR_MAX
   3624 +#    define PERL_UCHAR_MAX ((unsigned char)UCHAR_MAX)
   3625 +#  else
   3626 +#    ifdef MAXUCHAR
   3627 +#      define PERL_UCHAR_MAX ((unsigned char)MAXUCHAR)
   3628 +#    else
   3629 +#      define PERL_UCHAR_MAX ((unsigned char)~(unsigned)0)
   3630 +#    endif
   3631 +#  endif
   3632 +#endif
   3633 +
   3634 +#ifndef PERL_USHORT_MIN
   3635 +#  define PERL_USHORT_MIN ((unsigned short)0)
   3636 +#endif
   3637 +
   3638 +#ifndef PERL_USHORT_MAX
   3639 +#  ifdef USHORT_MAX
   3640 +#    define PERL_USHORT_MAX ((unsigned short)USHORT_MAX)
   3641 +#  else
   3642 +#    ifdef MAXUSHORT
   3643 +#      define PERL_USHORT_MAX ((unsigned short)MAXUSHORT)
   3644 +#    else
   3645 +#      ifdef USHRT_MAX
   3646 +#        define PERL_USHORT_MAX ((unsigned short)USHRT_MAX)
   3647 +#      else
   3648 +#        define PERL_USHORT_MAX ((unsigned short)~(unsigned)0)
   3649 +#      endif
   3650 +#    endif
   3651 +#  endif
   3652 +#endif
   3653 +
   3654 +#ifndef PERL_SHORT_MAX
   3655 +#  ifdef SHORT_MAX
   3656 +#    define PERL_SHORT_MAX ((short)SHORT_MAX)
   3657 +#  else
   3658 +#    ifdef MAXSHORT    /* Often used in <values.h> */
   3659 +#      define PERL_SHORT_MAX ((short)MAXSHORT)
   3660 +#    else
   3661 +#      ifdef SHRT_MAX
   3662 +#        define PERL_SHORT_MAX ((short)SHRT_MAX)
   3663 +#      else
   3664 +#        define PERL_SHORT_MAX ((short) (PERL_USHORT_MAX >> 1))
   3665 +#      endif
   3666 +#    endif
   3667 +#  endif
   3668 +#endif
   3669 +
   3670 +#ifndef PERL_SHORT_MIN
   3671 +#  ifdef SHORT_MIN
   3672 +#    define PERL_SHORT_MIN ((short)SHORT_MIN)
   3673 +#  else
   3674 +#    ifdef MINSHORT
   3675 +#      define PERL_SHORT_MIN ((short)MINSHORT)
   3676 +#    else
   3677 +#      ifdef SHRT_MIN
   3678 +#        define PERL_SHORT_MIN ((short)SHRT_MIN)
   3679 +#      else
   3680 +#        define PERL_SHORT_MIN (-PERL_SHORT_MAX - ((3 & -1) == 3))
   3681 +#      endif
   3682 +#    endif
   3683 +#  endif
   3684 +#endif
   3685 +
   3686 +#ifndef PERL_UINT_MAX
   3687 +#  ifdef UINT_MAX
   3688 +#    define PERL_UINT_MAX ((unsigned int)UINT_MAX)
   3689 +#  else
   3690 +#    ifdef MAXUINT
   3691 +#      define PERL_UINT_MAX ((unsigned int)MAXUINT)
   3692 +#    else
   3693 +#      define PERL_UINT_MAX (~(unsigned int)0)
   3694 +#    endif
   3695 +#  endif
   3696 +#endif
   3697 +
   3698 +#ifndef PERL_UINT_MIN
   3699 +#  define PERL_UINT_MIN ((unsigned int)0)
   3700 +#endif
   3701 +
   3702 +#ifndef PERL_INT_MAX
   3703 +#  ifdef INT_MAX
   3704 +#    define PERL_INT_MAX ((int)INT_MAX)
   3705 +#  else
   3706 +#    ifdef MAXINT    /* Often used in <values.h> */
   3707 +#      define PERL_INT_MAX ((int)MAXINT)
   3708 +#    else
   3709 +#      define PERL_INT_MAX ((int)(PERL_UINT_MAX >> 1))
   3710 +#    endif
   3711 +#  endif
   3712 +#endif
   3713 +
   3714 +#ifndef PERL_INT_MIN
   3715 +#  ifdef INT_MIN
   3716 +#    define PERL_INT_MIN ((int)INT_MIN)
   3717 +#  else
   3718 +#    ifdef MININT
   3719 +#      define PERL_INT_MIN ((int)MININT)
   3720 +#    else
   3721 +#      define PERL_INT_MIN (-PERL_INT_MAX - ((3 & -1) == 3))
   3722 +#    endif
   3723 +#  endif
   3724 +#endif
   3725 +
   3726 +#ifndef PERL_ULONG_MAX
   3727 +#  ifdef ULONG_MAX
   3728 +#    define PERL_ULONG_MAX ((unsigned long)ULONG_MAX)
   3729 +#  else
   3730 +#    ifdef MAXULONG
   3731 +#      define PERL_ULONG_MAX ((unsigned long)MAXULONG)
   3732 +#    else
   3733 +#      define PERL_ULONG_MAX (~(unsigned long)0)
   3734 +#    endif
   3735 +#  endif
   3736 +#endif
   3737 +
   3738 +#ifndef PERL_ULONG_MIN
   3739 +#  define PERL_ULONG_MIN ((unsigned long)0L)
   3740 +#endif
   3741 +
   3742 +#ifndef PERL_LONG_MAX
   3743 +#  ifdef LONG_MAX
   3744 +#    define PERL_LONG_MAX ((long)LONG_MAX)
   3745 +#  else
   3746 +#    ifdef MAXLONG
   3747 +#      define PERL_LONG_MAX ((long)MAXLONG)
   3748 +#    else
   3749 +#      define PERL_LONG_MAX ((long) (PERL_ULONG_MAX >> 1))
   3750 +#    endif
   3751 +#  endif
   3752 +#endif
   3753 +
   3754 +#ifndef PERL_LONG_MIN
   3755 +#  ifdef LONG_MIN
   3756 +#    define PERL_LONG_MIN ((long)LONG_MIN)
   3757 +#  else
   3758 +#    ifdef MINLONG
   3759 +#      define PERL_LONG_MIN ((long)MINLONG)
   3760 +#    else
   3761 +#      define PERL_LONG_MIN (-PERL_LONG_MAX - ((3 & -1) == 3))
   3762 +#    endif
   3763 +#  endif
   3764 +#endif
   3765 +
   3766 +#if defined(HAS_QUAD) && (defined(convex) || defined(uts))
   3767 +#  ifndef PERL_UQUAD_MAX
   3768 +#    ifdef ULONGLONG_MAX
   3769 +#      define PERL_UQUAD_MAX ((unsigned long long)ULONGLONG_MAX)
   3770 +#    else
   3771 +#      ifdef MAXULONGLONG
   3772 +#        define PERL_UQUAD_MAX ((unsigned long long)MAXULONGLONG)
   3773 +#      else
   3774 +#        define PERL_UQUAD_MAX (~(unsigned long long)0)
   3775 +#      endif
   3776 +#    endif
   3777 +#  endif
   3778 +
   3779 +#  ifndef PERL_UQUAD_MIN
   3780 +#    define PERL_UQUAD_MIN ((unsigned long long)0L)
   3781 +#  endif
   3782 +
   3783 +#  ifndef PERL_QUAD_MAX
   3784 +#    ifdef LONGLONG_MAX
   3785 +#      define PERL_QUAD_MAX ((long long)LONGLONG_MAX)
   3786 +#    else
   3787 +#      ifdef MAXLONGLONG
   3788 +#        define PERL_QUAD_MAX ((long long)MAXLONGLONG)
   3789 +#      else
   3790 +#        define PERL_QUAD_MAX ((long long) (PERL_UQUAD_MAX >> 1))
   3791 +#      endif
   3792 +#    endif
   3793 +#  endif
   3794 +
   3795 +#  ifndef PERL_QUAD_MIN
   3796 +#    ifdef LONGLONG_MIN
   3797 +#      define PERL_QUAD_MIN ((long long)LONGLONG_MIN)
   3798 +#    else
   3799 +#      ifdef MINLONGLONG
   3800 +#        define PERL_QUAD_MIN ((long long)MINLONGLONG)
   3801 +#      else
   3802 +#        define PERL_QUAD_MIN (-PERL_QUAD_MAX - ((3 & -1) == 3))
   3803 +#      endif
   3804 +#    endif
   3805 +#  endif
   3806 +#endif
   3807 +
   3808 +/* This is based on code from 5.003 perl.h */
   3809 +#ifdef HAS_QUAD
   3810 +#  ifdef cray
   3811 +#ifndef IVTYPE
   3812 +#  define IVTYPE                         int
   3813 +#endif
   3814 +
   3815 +#ifndef IV_MIN
   3816 +#  define IV_MIN                         PERL_INT_MIN
   3817 +#endif
   3818 +
   3819 +#ifndef IV_MAX
   3820 +#  define IV_MAX                         PERL_INT_MAX
   3821 +#endif
   3822 +
   3823 +#ifndef UV_MIN
   3824 +#  define UV_MIN                         PERL_UINT_MIN
   3825 +#endif
   3826 +
   3827 +#ifndef UV_MAX
   3828 +#  define UV_MAX                         PERL_UINT_MAX
   3829 +#endif
   3830 +
   3831 +#    ifdef INTSIZE
   3832 +#ifndef IVSIZE
   3833 +#  define IVSIZE                         INTSIZE
   3834 +#endif
   3835 +
   3836 +#    endif
   3837 +#  else
   3838 +#    if defined(convex) || defined(uts)
   3839 +#ifndef IVTYPE
   3840 +#  define IVTYPE                         long long
   3841 +#endif
   3842 +
   3843 +#ifndef IV_MIN
   3844 +#  define IV_MIN                         PERL_QUAD_MIN
   3845 +#endif
   3846 +
   3847 +#ifndef IV_MAX
   3848 +#  define IV_MAX                         PERL_QUAD_MAX
   3849 +#endif
   3850 +
   3851 +#ifndef UV_MIN
   3852 +#  define UV_MIN                         PERL_UQUAD_MIN
   3853 +#endif
   3854 +
   3855 +#ifndef UV_MAX
   3856 +#  define UV_MAX                         PERL_UQUAD_MAX
   3857 +#endif
   3858 +
   3859 +#      ifdef LONGLONGSIZE
   3860 +#ifndef IVSIZE
   3861 +#  define IVSIZE                         LONGLONGSIZE
   3862 +#endif
   3863 +
   3864 +#      endif
   3865 +#    else
   3866 +#ifndef IVTYPE
   3867 +#  define IVTYPE                         long
   3868 +#endif
   3869 +
   3870 +#ifndef IV_MIN
   3871 +#  define IV_MIN                         PERL_LONG_MIN
   3872 +#endif
   3873 +
   3874 +#ifndef IV_MAX
   3875 +#  define IV_MAX                         PERL_LONG_MAX
   3876 +#endif
   3877 +
   3878 +#ifndef UV_MIN
   3879 +#  define UV_MIN                         PERL_ULONG_MIN
   3880 +#endif
   3881 +
   3882 +#ifndef UV_MAX
   3883 +#  define UV_MAX                         PERL_ULONG_MAX
   3884 +#endif
   3885 +
   3886 +#      ifdef LONGSIZE
   3887 +#ifndef IVSIZE
   3888 +#  define IVSIZE                         LONGSIZE
   3889 +#endif
   3890 +
   3891 +#      endif
   3892 +#    endif
   3893 +#  endif
   3894 +#ifndef IVSIZE
   3895 +#  define IVSIZE                         8
   3896 +#endif
   3897 +
   3898 +#ifndef LONGSIZE
   3899 +#  define LONGSIZE                       8
   3900 +#endif
   3901 +
   3902 +#ifndef PERL_QUAD_MIN
   3903 +#  define PERL_QUAD_MIN                  IV_MIN
   3904 +#endif
   3905 +
   3906 +#ifndef PERL_QUAD_MAX
   3907 +#  define PERL_QUAD_MAX                  IV_MAX
   3908 +#endif
   3909 +
   3910 +#ifndef PERL_UQUAD_MIN
   3911 +#  define PERL_UQUAD_MIN                 UV_MIN
   3912 +#endif
   3913 +
   3914 +#ifndef PERL_UQUAD_MAX
   3915 +#  define PERL_UQUAD_MAX                 UV_MAX
   3916 +#endif
   3917 +
   3918 +#else
   3919 +#ifndef IVTYPE
   3920 +#  define IVTYPE                         long
   3921 +#endif
   3922 +
   3923 +#ifndef LONGSIZE
   3924 +#  define LONGSIZE                       4
   3925 +#endif
   3926 +
   3927 +#ifndef IV_MIN
   3928 +#  define IV_MIN                         PERL_LONG_MIN
   3929 +#endif
   3930 +
   3931 +#ifndef IV_MAX
   3932 +#  define IV_MAX                         PERL_LONG_MAX
   3933 +#endif
   3934 +
   3935 +#ifndef UV_MIN
   3936 +#  define UV_MIN                         PERL_ULONG_MIN
   3937 +#endif
   3938 +
   3939 +#ifndef UV_MAX
   3940 +#  define UV_MAX                         PERL_ULONG_MAX
   3941 +#endif
   3942 +
   3943 +#endif
   3944 +
   3945 +#ifndef IVSIZE
   3946 +#  ifdef LONGSIZE
   3947 +#    define IVSIZE LONGSIZE
   3948 +#  else
   3949 +#    define IVSIZE 4 /* A bold guess, but the best we can make. */
   3950 +#  endif
   3951 +#endif
   3952 +#ifndef UVTYPE
   3953 +#  define UVTYPE                         unsigned IVTYPE
   3954 +#endif
   3955 +
   3956 +#ifndef UVSIZE
   3957 +#  define UVSIZE                         IVSIZE
   3958 +#endif
   3959 +#ifndef sv_setuv
   3960 +#  define sv_setuv(sv, uv)               \
   3961 +               STMT_START {                         \
   3962 +                 UV TeMpUv = uv;                    \
   3963 +                 if (TeMpUv <= IV_MAX)              \
   3964 +                   sv_setiv(sv, TeMpUv);            \
   3965 +                 else                               \
   3966 +                   sv_setnv(sv, (double)TeMpUv);    \
   3967 +               } STMT_END
   3968 +#endif
   3969 +#ifndef newSVuv
   3970 +#  define newSVuv(uv)                    ((uv) <= IV_MAX ? newSViv((IV)uv) : newSVnv((NV)uv))
   3971 +#endif
   3972 +#ifndef sv_2uv
   3973 +#  define sv_2uv(sv)                     ((PL_Sv = (sv)), (UV) (SvNOK(PL_Sv) ? SvNV(PL_Sv) : sv_2nv(PL_Sv)))
   3974 +#endif
   3975 +
   3976 +#ifndef SvUVX
   3977 +#  define SvUVX(sv)                      ((UV)SvIVX(sv))
   3978 +#endif
   3979 +
   3980 +#ifndef SvUVXx
   3981 +#  define SvUVXx(sv)                     SvUVX(sv)
   3982 +#endif
   3983 +
   3984 +#ifndef SvUV
   3985 +#  define SvUV(sv)                       (SvIOK(sv) ? SvUVX(sv) : sv_2uv(sv))
   3986 +#endif
   3987 +
   3988 +#ifndef SvUVx
   3989 +#  define SvUVx(sv)                      ((PL_Sv = (sv)), SvUV(PL_Sv))
   3990 +#endif
   3991 +
   3992 +/* Hint: sv_uv
   3993 + * Always use the SvUVx() macro instead of sv_uv().
   3994 + */
   3995 +#ifndef sv_uv
   3996 +#  define sv_uv(sv)                      SvUVx(sv)
   3997 +#endif
   3998 +
   3999 +#if !defined(SvUOK) && defined(SvIOK_UV)
   4000 +#  define SvUOK(sv) SvIOK_UV(sv)
   4001 +#endif
   4002 +#ifndef XST_mUV
   4003 +#  define XST_mUV(i,v)                   (ST(i) = sv_2mortal(newSVuv(v))  )
   4004 +#endif
   4005 +
   4006 +#ifndef XSRETURN_UV
   4007 +#  define XSRETURN_UV(v)                 STMT_START { XST_mUV(0,v);  XSRETURN(1); } STMT_END
   4008 +#endif
   4009 +#ifndef PUSHu
   4010 +#  define PUSHu(u)                       STMT_START { sv_setuv(TARG, (UV)(u)); PUSHTARG;  } STMT_END
   4011 +#endif
   4012 +
   4013 +#ifndef XPUSHu
   4014 +#  define XPUSHu(u)                      STMT_START { sv_setuv(TARG, (UV)(u)); XPUSHTARG; } STMT_END
   4015 +#endif
   4016 +
   4017 +#ifdef HAS_MEMCMP
   4018 +#ifndef memNE
   4019 +#  define memNE(s1,s2,l)                 (memcmp(s1,s2,l))
   4020 +#endif
   4021 +
   4022 +#ifndef memEQ
   4023 +#  define memEQ(s1,s2,l)                 (!memcmp(s1,s2,l))
   4024 +#endif
   4025 +
   4026 +#else
   4027 +#ifndef memNE
   4028 +#  define memNE(s1,s2,l)                 (bcmp(s1,s2,l))
   4029 +#endif
   4030 +
   4031 +#ifndef memEQ
   4032 +#  define memEQ(s1,s2,l)                 (!bcmp(s1,s2,l))
   4033 +#endif
   4034 +
   4035 +#endif
   4036 +#ifndef memEQs
   4037 +#  define memEQs(s1, l, s2)              \
   4038 +                   (sizeof(s2)-1 == l && memEQ(s1, (s2 ""), (sizeof(s2)-1)))
   4039 +#endif
   4040 +
   4041 +#ifndef memNEs
   4042 +#  define memNEs(s1, l, s2)              !memEQs(s1, l, s2)
   4043 +#endif
   4044 +#ifndef MoveD
   4045 +#  define MoveD(s,d,n,t)                 memmove((char*)(d),(char*)(s), (n) * sizeof(t))
   4046 +#endif
   4047 +
   4048 +#ifndef CopyD
   4049 +#  define CopyD(s,d,n,t)                 memcpy((char*)(d),(char*)(s), (n) * sizeof(t))
   4050 +#endif
   4051 +
   4052 +#ifdef HAS_MEMSET
   4053 +#ifndef ZeroD
   4054 +#  define ZeroD(d,n,t)                   memzero((char*)(d), (n) * sizeof(t))
   4055 +#endif
   4056 +
   4057 +#else
   4058 +#ifndef ZeroD
   4059 +#  define ZeroD(d,n,t)                   ((void)memzero((char*)(d), (n) * sizeof(t)), d)
   4060 +#endif
   4061 +
   4062 +#endif
   4063 +#ifndef PoisonWith
   4064 +#  define PoisonWith(d,n,t,b)            (void)memset((char*)(d), (U8)(b), (n) * sizeof(t))
   4065 +#endif
   4066 +
   4067 +#ifndef PoisonNew
   4068 +#  define PoisonNew(d,n,t)               PoisonWith(d,n,t,0xAB)
   4069 +#endif
   4070 +
   4071 +#ifndef PoisonFree
   4072 +#  define PoisonFree(d,n,t)              PoisonWith(d,n,t,0xEF)
   4073 +#endif
   4074 +
   4075 +#ifndef Poison
   4076 +#  define Poison(d,n,t)                  PoisonFree(d,n,t)
   4077 +#endif
   4078 +#ifndef Newx
   4079 +#  define Newx(v,n,t)                    New(0,v,n,t)
   4080 +#endif
   4081 +
   4082 +#ifndef Newxc
   4083 +#  define Newxc(v,n,t,c)                 Newc(0,v,n,t,c)
   4084 +#endif
   4085 +
   4086 +#ifndef Newxz
   4087 +#  define Newxz(v,n,t)                   Newz(0,v,n,t)
   4088 +#endif
   4089 +
   4090 +#ifndef PERL_UNUSED_DECL
   4091 +#  ifdef HASATTRIBUTE
   4092 +#    if (defined(__GNUC__) && defined(__cplusplus)) || defined(__INTEL_COMPILER)
   4093 +#      define PERL_UNUSED_DECL
   4094 +#    else
   4095 +#      define PERL_UNUSED_DECL __attribute__((unused))
   4096 +#    endif
   4097 +#  else
   4098 +#    define PERL_UNUSED_DECL
   4099 +#  endif
   4100 +#endif
   4101 +
   4102 +#ifndef PERL_UNUSED_ARG
   4103 +#  if defined(lint) && defined(S_SPLINT_S) /* www.splint.org */
   4104 +#    include <note.h>
   4105 +#    define PERL_UNUSED_ARG(x) NOTE(ARGUNUSED(x))
   4106 +#  else
   4107 +#    define PERL_UNUSED_ARG(x) ((void)x)
   4108 +#  endif
   4109 +#endif
   4110 +
   4111 +#ifndef PERL_UNUSED_VAR
   4112 +#  define PERL_UNUSED_VAR(x) ((void)x)
   4113 +#endif
   4114 +
   4115 +#ifndef PERL_UNUSED_CONTEXT
   4116 +#  ifdef USE_ITHREADS
   4117 +#    define PERL_UNUSED_CONTEXT PERL_UNUSED_ARG(my_perl)
   4118 +#  else
   4119 +#    define PERL_UNUSED_CONTEXT
   4120 +#  endif
   4121 +#endif
   4122 +#ifndef NOOP
   4123 +#  define NOOP                           /*EMPTY*/(void)0
   4124 +#endif
   4125 +
   4126 +#ifndef dNOOP
   4127 +#  define dNOOP                          extern int /*@unused@*/ Perl___notused PERL_UNUSED_DECL
   4128 +#endif
   4129 +
   4130 +#ifndef NVTYPE
   4131 +#  if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
   4132 +#    define NVTYPE long double
   4133 +#  else
   4134 +#    define NVTYPE double
   4135 +#  endif
   4136 +typedef NVTYPE NV;
   4137 +#endif
   4138 +
   4139 +#ifndef INT2PTR
   4140 +#  if (IVSIZE == PTRSIZE) && (UVSIZE == PTRSIZE)
   4141 +#    define PTRV                  UV
   4142 +#    define INT2PTR(any,d)        (any)(d)
   4143 +#  else
   4144 +#    if PTRSIZE == LONGSIZE
   4145 +#      define PTRV                unsigned long
   4146 +#    else
   4147 +#      define PTRV                unsigned
   4148 +#    endif
   4149 +#    define INT2PTR(any,d)        (any)(PTRV)(d)
   4150 +#  endif
   4151 +#endif
   4152 +
   4153 +#ifndef PTR2ul
   4154 +#  if PTRSIZE == LONGSIZE
   4155 +#    define PTR2ul(p)     (unsigned long)(p)
   4156 +#  else
   4157 +#    define PTR2ul(p)     INT2PTR(unsigned long,p)
   4158 +#  endif
   4159 +#endif
   4160 +#ifndef PTR2nat
   4161 +#  define PTR2nat(p)                     (PTRV)(p)
   4162 +#endif
   4163 +
   4164 +#ifndef NUM2PTR
   4165 +#  define NUM2PTR(any,d)                 (any)PTR2nat(d)
   4166 +#endif
   4167 +
   4168 +#ifndef PTR2IV
   4169 +#  define PTR2IV(p)                      INT2PTR(IV,p)
   4170 +#endif
   4171 +
   4172 +#ifndef PTR2UV
   4173 +#  define PTR2UV(p)                      INT2PTR(UV,p)
   4174 +#endif
   4175 +
   4176 +#ifndef PTR2NV
   4177 +#  define PTR2NV(p)                      NUM2PTR(NV,p)
   4178 +#endif
   4179 +
   4180 +#undef START_EXTERN_C
   4181 +#undef END_EXTERN_C
   4182 +#undef EXTERN_C
   4183 +#ifdef __cplusplus
   4184 +#  define START_EXTERN_C extern "C" {
   4185 +#  define END_EXTERN_C }
   4186 +#  define EXTERN_C extern "C"
   4187 +#else
   4188 +#  define START_EXTERN_C
   4189 +#  define END_EXTERN_C
   4190 +#  define EXTERN_C extern
   4191 +#endif
   4192 +
   4193 +#if defined(PERL_GCC_PEDANTIC)
   4194 +#  ifndef PERL_GCC_BRACE_GROUPS_FORBIDDEN
   4195 +#    define PERL_GCC_BRACE_GROUPS_FORBIDDEN
   4196 +#  endif
   4197 +#endif
   4198 +
   4199 +#if defined(__GNUC__) && !defined(PERL_GCC_BRACE_GROUPS_FORBIDDEN) && !defined(__cplusplus)
   4200 +#  ifndef PERL_USE_GCC_BRACE_GROUPS
   4201 +#    define PERL_USE_GCC_BRACE_GROUPS
   4202 +#  endif
   4203 +#endif
   4204 +
   4205 +#undef STMT_START
   4206 +#undef STMT_END
   4207 +#ifdef PERL_USE_GCC_BRACE_GROUPS
   4208 +#  define STMT_START    (void)( /* gcc supports ``({ STATEMENTS; })'' */
   4209 +#  define STMT_END      )
   4210 +#else
   4211 +#  if defined(VOIDFLAGS) && (VOIDFLAGS) && (defined(sun) || defined(__sun__)) && !defined(__GNUC__)
   4212 +#    define STMT_START  if (1)
   4213 +#    define STMT_END    else (void)0
   4214 +#  else
   4215 +#    define STMT_START  do
   4216 +#    define STMT_END    while (0)
   4217 +#  endif
   4218 +#endif
   4219 +#ifndef boolSV
   4220 +#  define boolSV(b)                      ((b) ? &PL_sv_yes : &PL_sv_no)
   4221 +#endif
   4222 +
   4223 +/* DEFSV appears first in 5.004_56 */
   4224 +#ifndef DEFSV
   4225 +#  define DEFSV                          GvSV(PL_defgv)
   4226 +#endif
   4227 +
   4228 +#ifndef SAVE_DEFSV
   4229 +#  define SAVE_DEFSV                     SAVESPTR(GvSV(PL_defgv))
   4230 +#endif
   4231 +
   4232 +#ifndef DEFSV_set
   4233 +#  define DEFSV_set(sv)                  (DEFSV = (sv))
   4234 +#endif
   4235 +
   4236 +/* Older perls (<=5.003) lack AvFILLp */
   4237 +#ifndef AvFILLp
   4238 +#  define AvFILLp                        AvFILL
   4239 +#endif
   4240 +#ifndef ERRSV
   4241 +#  define ERRSV                          get_sv("@",FALSE)
   4242 +#endif
   4243 +
   4244 +/* Hint: gv_stashpvn
   4245 + * This function's backport doesn't support the length parameter, but
   4246 + * rather ignores it. Portability can only be ensured if the length
   4247 + * parameter is used for speed reasons, but the length can always be
   4248 + * correctly computed from the string argument.
   4249 + */
   4250 +#ifndef gv_stashpvn
   4251 +#  define gv_stashpvn(str,len,create)    gv_stashpv(str,create)
   4252 +#endif
   4253 +
   4254 +/* Replace: 1 */
   4255 +#ifndef get_cv
   4256 +#  define get_cv                         perl_get_cv
   4257 +#endif
   4258 +
   4259 +#ifndef get_sv
   4260 +#  define get_sv                         perl_get_sv
   4261 +#endif
   4262 +
   4263 +#ifndef get_av
   4264 +#  define get_av                         perl_get_av
   4265 +#endif
   4266 +
   4267 +#ifndef get_hv
   4268 +#  define get_hv                         perl_get_hv
   4269 +#endif
   4270 +
   4271 +/* Replace: 0 */
   4272 +#ifndef dUNDERBAR
   4273 +#  define dUNDERBAR                      dNOOP
   4274 +#endif
   4275 +
   4276 +#ifndef UNDERBAR
   4277 +#  define UNDERBAR                       DEFSV
   4278 +#endif
   4279 +#ifndef dAX
   4280 +#  define dAX                            I32 ax = MARK - PL_stack_base + 1
   4281 +#endif
   4282 +
   4283 +#ifndef dITEMS
   4284 +#  define dITEMS                         I32 items = SP - MARK
   4285 +#endif
   4286 +#ifndef dXSTARG
   4287 +#  define dXSTARG                        SV * targ = sv_newmortal()
   4288 +#endif
   4289 +#ifndef dAXMARK
   4290 +#  define dAXMARK                        I32 ax = POPMARK; \
   4291 +                               register SV ** const mark = PL_stack_base + ax++
   4292 +#endif
   4293 +#ifndef XSprePUSH
   4294 +#  define XSprePUSH                      (sp = PL_stack_base + ax - 1)
   4295 +#endif
   4296 +
   4297 +#if (PERL_BCDVERSION < 0x5005000)
   4298 +#  undef XSRETURN
   4299 +#  define XSRETURN(off)                                   \
   4300 +      STMT_START {                                        \
   4301 +          PL_stack_sp = PL_stack_base + ax + ((off) - 1); \
   4302 +          return;                                         \
   4303 +      } STMT_END
   4304 +#endif
   4305 +#ifndef XSPROTO
   4306 +#  define XSPROTO(name)                  void name(pTHX_ CV* cv)
   4307 +#endif
   4308 +
   4309 +#ifndef SVfARG
   4310 +#  define SVfARG(p)                      ((void*)(p))
   4311 +#endif
   4312 +#ifndef PERL_ABS
   4313 +#  define PERL_ABS(x)                    ((x) < 0 ? -(x) : (x))
   4314 +#endif
   4315 +#ifndef dVAR
   4316 +#  define dVAR                           dNOOP
   4317 +#endif
   4318 +#ifndef SVf
   4319 +#  define SVf                            "_"
   4320 +#endif
   4321 +#ifndef UTF8_MAXBYTES
   4322 +#  define UTF8_MAXBYTES                  UTF8_MAXLEN
   4323 +#endif
   4324 +#ifndef CPERLscope
   4325 +#  define CPERLscope(x)                  x
   4326 +#endif
   4327 +#ifndef PERL_HASH
   4328 +#  define PERL_HASH(hash,str,len)        \
   4329 +     STMT_START { \
   4330 +        const char *s_PeRlHaSh = str; \
   4331 +        I32 i_PeRlHaSh = len; \
   4332 +        U32 hash_PeRlHaSh = 0; \
   4333 +        while (i_PeRlHaSh--) \
   4334 +            hash_PeRlHaSh = hash_PeRlHaSh * 33 + *s_PeRlHaSh++; \
   4335 +        (hash) = hash_PeRlHaSh; \
   4336 +    } STMT_END
   4337 +#endif
   4338 +
   4339 +#ifndef PERLIO_FUNCS_DECL
   4340 +# ifdef PERLIO_FUNCS_CONST
   4341 +#  define PERLIO_FUNCS_DECL(funcs) const PerlIO_funcs funcs
   4342 +#  define PERLIO_FUNCS_CAST(funcs) (PerlIO_funcs*)(funcs)
   4343 +# else
   4344 +#  define PERLIO_FUNCS_DECL(funcs) PerlIO_funcs funcs
   4345 +#  define PERLIO_FUNCS_CAST(funcs) (funcs)
   4346 +# endif
   4347 +#endif
   4348 +
   4349 +/* provide these typedefs for older perls */
   4350 +#if (PERL_BCDVERSION < 0x5009003)
   4351 +
   4352 +# ifdef ARGSproto
   4353 +typedef OP* (CPERLscope(*Perl_ppaddr_t))(ARGSproto);
   4354 +# else
   4355 +typedef OP* (CPERLscope(*Perl_ppaddr_t))(pTHX);
   4356 +# endif
   4357 +
   4358 +typedef OP* (CPERLscope(*Perl_check_t)) (pTHX_ OP*);
   4359 +
   4360 +#endif
   4361 +#ifndef isPSXSPC
   4362 +#  define isPSXSPC(c)                    (isSPACE(c) || (c) == '\v')
   4363 +#endif
   4364 +
   4365 +#ifndef isBLANK
   4366 +#  define isBLANK(c)                     ((c) == ' ' || (c) == '\t')
   4367 +#endif
   4368 +
   4369 +#ifdef EBCDIC
   4370 +#ifndef isALNUMC
   4371 +#  define isALNUMC(c)                    isalnum(c)
   4372 +#endif
   4373 +
   4374 +#ifndef isASCII
   4375 +#  define isASCII(c)                     isascii(c)
   4376 +#endif
   4377 +
   4378 +#ifndef isCNTRL
   4379 +#  define isCNTRL(c)                     iscntrl(c)
   4380 +#endif
   4381 +
   4382 +#ifndef isGRAPH
   4383 +#  define isGRAPH(c)                     isgraph(c)
   4384 +#endif
   4385 +
   4386 +#ifndef isPRINT
   4387 +#  define isPRINT(c)                     isprint(c)
   4388 +#endif
   4389 +
   4390 +#ifndef isPUNCT
   4391 +#  define isPUNCT(c)                     ispunct(c)
   4392 +#endif
   4393 +
   4394 +#ifndef isXDIGIT
   4395 +#  define isXDIGIT(c)                    isxdigit(c)
   4396 +#endif
   4397 +
   4398 +#else
   4399 +# if (PERL_BCDVERSION < 0x5010000)
   4400 +/* Hint: isPRINT
   4401 + * The implementation in older perl versions includes all of the
   4402 + * isSPACE() characters, which is wrong. The version provided by
   4403 + * Devel::PPPort always overrides a present buggy version.
   4404 + */
   4405 +#  undef isPRINT
   4406 +# endif
   4407 +
   4408 +#ifdef HAS_QUAD
   4409 +# define WIDEST_UTYPE U64TYPE
   4410 +#else
   4411 +# define WIDEST_UTYPE U32
   4412 +#endif
   4413 +#ifndef isALNUMC
   4414 +#  define isALNUMC(c)                    (isALPHA(c) || isDIGIT(c))
   4415 +#endif
   4416 +
   4417 +#ifndef isASCII
   4418 +#  define isASCII(c)                     ((WIDEST_UTYPE) (c) <= 127)
   4419 +#endif
   4420 +
   4421 +#ifndef isCNTRL
   4422 +#  define isCNTRL(c)                     ((WIDEST_UTYPE) (c) < ' ' || (c) == 127)
   4423 +#endif
   4424 +
   4425 +#ifndef isGRAPH
   4426 +#  define isGRAPH(c)                     (isALNUM(c) || isPUNCT(c))
   4427 +#endif
   4428 +
   4429 +#ifndef isPRINT
   4430 +#  define isPRINT(c)                     (((c) >= 32 && (c) < 127))
   4431 +#endif
   4432 +
   4433 +#ifndef isPUNCT
   4434 +#  define isPUNCT(c)                     (((c) >= 33 && (c) <= 47) || ((c) >= 58 && (c) <= 64)  || ((c) >= 91 && (c) <= 96) || ((c) >= 123 && (c) <= 126))
   4435 +#endif
   4436 +
   4437 +#ifndef isXDIGIT
   4438 +#  define isXDIGIT(c)                    (isDIGIT(c) || ((c) >= 'a' && (c) <= 'f') || ((c) >= 'A' && (c) <= 'F'))
   4439 +#endif
   4440 +
   4441 +#endif
   4442 +
   4443 +#ifndef PERL_SIGNALS_UNSAFE_FLAG
   4444 +
   4445 +#define PERL_SIGNALS_UNSAFE_FLAG 0x0001
   4446 +
   4447 +#if (PERL_BCDVERSION < 0x5008000)
   4448 +#  define D_PPP_PERL_SIGNALS_INIT   PERL_SIGNALS_UNSAFE_FLAG
   4449 +#else
   4450 +#  define D_PPP_PERL_SIGNALS_INIT   0
   4451 +#endif
   4452 +
   4453 +#if defined(NEED_PL_signals)
   4454 +static U32 DPPP_(my_PL_signals) = D_PPP_PERL_SIGNALS_INIT;
   4455 +#elif defined(NEED_PL_signals_GLOBAL)
   4456 +U32 DPPP_(my_PL_signals) = D_PPP_PERL_SIGNALS_INIT;
   4457 +#else
   4458 +extern U32 DPPP_(my_PL_signals);
   4459 +#endif
   4460 +#define PL_signals DPPP_(my_PL_signals)
   4461 +
   4462 +#endif
   4463 +
   4464 +/* Hint: PL_ppaddr
   4465 + * Calling an op via PL_ppaddr requires passing a context argument
   4466 + * for threaded builds. Since the context argument is different for
   4467 + * 5.005 perls, you can use aTHXR (supplied by ppport.h), which will
   4468 + * automatically be defined as the correct argument.
   4469 + */
   4470 +
   4471 +#if (PERL_BCDVERSION <= 0x5005005)
   4472 +/* Replace: 1 */
   4473 +#  define PL_ppaddr                 ppaddr
   4474 +#  define PL_no_modify              no_modify
   4475 +/* Replace: 0 */
   4476 +#endif
   4477 +
   4478 +#if (PERL_BCDVERSION <= 0x5004005)
   4479 +/* Replace: 1 */
   4480 +#  define PL_DBsignal               DBsignal
   4481 +#  define PL_DBsingle               DBsingle
   4482 +#  define PL_DBsub                  DBsub
   4483 +#  define PL_DBtrace                DBtrace
   4484 +#  define PL_Sv                     Sv
   4485 +#  define PL_bufend                 bufend
   4486 +#  define PL_bufptr                 bufptr
   4487 +#  define PL_compiling              compiling
   4488 +#  define PL_copline                copline
   4489 +#  define PL_curcop                 curcop
   4490 +#  define PL_curstash               curstash
   4491 +#  define PL_debstash               debstash
   4492 +#  define PL_defgv                  defgv
   4493 +#  define PL_diehook                diehook
   4494 +#  define PL_dirty                  dirty
   4495 +#  define PL_dowarn                 dowarn
   4496 +#  define PL_errgv                  errgv
   4497 +#  define PL_error_count            error_count
   4498 +#  define PL_expect                 expect
   4499 +#  define PL_hexdigit               hexdigit
   4500 +#  define PL_hints                  hints
   4501 +#  define PL_in_my                  in_my
   4502 +#  define PL_laststatval            laststatval
   4503 +#  define PL_lex_state              lex_state
   4504 +#  define PL_lex_stuff              lex_stuff
   4505 +#  define PL_linestr                linestr
   4506 +#  define PL_na                     na
   4507 +#  define PL_perl_destruct_level    perl_destruct_level
   4508 +#  define PL_perldb                 perldb
   4509 +#  define PL_rsfp_filters           rsfp_filters
   4510 +#  define PL_rsfp                   rsfp
   4511 +#  define PL_stack_base             stack_base
   4512 +#  define PL_stack_sp               stack_sp
   4513 +#  define PL_statcache              statcache
   4514 +#  define PL_stdingv                stdingv
   4515 +#  define PL_sv_arenaroot           sv_arenaroot
   4516 +#  define PL_sv_no                  sv_no
   4517 +#  define PL_sv_undef               sv_undef
   4518 +#  define PL_sv_yes                 sv_yes
   4519 +#  define PL_tainted                tainted
   4520 +#  define PL_tainting               tainting
   4521 +#  define PL_tokenbuf               tokenbuf
   4522 +/* Replace: 0 */
   4523 +#endif
   4524 +
   4525 +/* Warning: PL_parser
   4526 + * For perl versions earlier than 5.9.5, this is an always
   4527 + * non-NULL dummy. Also, it cannot be dereferenced. Don't
   4528 + * use it if you can avoid is and unless you absolutely know
   4529 + * what you're doing.
   4530 + * If you always check that PL_parser is non-NULL, you can
   4531 + * define DPPP_PL_parser_NO_DUMMY to avoid the creation of
   4532 + * a dummy parser structure.
   4533 + */
   4534 +
   4535 +#if (PERL_BCDVERSION >= 0x5009005)
   4536 +# ifdef DPPP_PL_parser_NO_DUMMY
   4537 +#  define D_PPP_my_PL_parser_var(var) ((PL_parser ? PL_parser : \
   4538 +                (croak("panic: PL_parser == NULL in %s:%d", \
   4539 +                       __FILE__, __LINE__), (yy_parser *) NULL))->var)
   4540 +# else
   4541 +#  ifdef DPPP_PL_parser_NO_DUMMY_WARNING
   4542 +#   define D_PPP_parser_dummy_warning(var)
   4543 +#  else
   4544 +#   define D_PPP_parser_dummy_warning(var) \
   4545 +             warn("warning: dummy PL_" #var " used in %s:%d", __FILE__, __LINE__),
   4546 +#  endif
   4547 +#  define D_PPP_my_PL_parser_var(var) ((PL_parser ? PL_parser : \
   4548 +                (D_PPP_parser_dummy_warning(var) &DPPP_(dummy_PL_parser)))->var)
   4549 +#if defined(NEED_PL_parser)
   4550 +static yy_parser DPPP_(dummy_PL_parser);
   4551 +#elif defined(NEED_PL_parser_GLOBAL)
   4552 +yy_parser DPPP_(dummy_PL_parser);
   4553 +#else
   4554 +extern yy_parser DPPP_(dummy_PL_parser);
   4555 +#endif
   4556 +
   4557 +# endif
   4558 +
   4559 +/* 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 */
   4560 +/* Warning: PL_expect, PL_copline, PL_rsfp, PL_rsfp_filters, PL_linestr, PL_bufptr, PL_bufend, PL_lex_state, PL_lex_stuff, PL_tokenbuf
   4561 + * Do not use this variable unless you know exactly what you're
   4562 + * doint. It is internal to the perl parser and may change or even
   4563 + * be removed in the future. As of perl 5.9.5, you have to check
   4564 + * for (PL_parser != NULL) for this variable to have any effect.
   4565 + * An always non-NULL PL_parser dummy is provided for earlier
   4566 + * perl versions.
   4567 + * If PL_parser is NULL when you try to access this variable, a
   4568 + * dummy is being accessed instead and a warning is issued unless
   4569 + * you define DPPP_PL_parser_NO_DUMMY_WARNING.
   4570 + * If DPPP_PL_parser_NO_DUMMY is defined, the code trying to access
   4571 + * this variable will croak with a panic message.
   4572 + */
   4573 +
   4574 +# define PL_expect         D_PPP_my_PL_parser_var(expect)
   4575 +# define PL_copline        D_PPP_my_PL_parser_var(copline)
   4576 +# define PL_rsfp           D_PPP_my_PL_parser_var(rsfp)
   4577 +# define PL_rsfp_filters   D_PPP_my_PL_parser_var(rsfp_filters)
   4578 +# define PL_linestr        D_PPP_my_PL_parser_var(linestr)
   4579 +# define PL_bufptr         D_PPP_my_PL_parser_var(bufptr)
   4580 +# define PL_bufend         D_PPP_my_PL_parser_var(bufend)
   4581 +# define PL_lex_state      D_PPP_my_PL_parser_var(lex_state)
   4582 +# define PL_lex_stuff      D_PPP_my_PL_parser_var(lex_stuff)
   4583 +# define PL_tokenbuf       D_PPP_my_PL_parser_var(tokenbuf)
   4584 +# define PL_in_my          D_PPP_my_PL_parser_var(in_my)
   4585 +# define PL_in_my_stash    D_PPP_my_PL_parser_var(in_my_stash)
   4586 +# define PL_error_count    D_PPP_my_PL_parser_var(error_count)
   4587 +
   4588 +
   4589 +#else
   4590 +
   4591 +/* ensure that PL_parser != NULL and cannot be dereferenced */
   4592 +# define PL_parser         ((void *) 1)
   4593 +
   4594 +#endif
   4595 +#ifndef mPUSHs
   4596 +#  define mPUSHs(s)                      PUSHs(sv_2mortal(s))
   4597 +#endif
   4598 +
   4599 +#ifndef PUSHmortal
   4600 +#  define PUSHmortal                     PUSHs(sv_newmortal())
   4601 +#endif
   4602 +
   4603 +#ifndef mPUSHp
   4604 +#  define mPUSHp(p,l)                    sv_setpvn(PUSHmortal, (p), (l))
   4605 +#endif
   4606 +
   4607 +#ifndef mPUSHn
   4608 +#  define mPUSHn(n)                      sv_setnv(PUSHmortal, (NV)(n))
   4609 +#endif
   4610 +
   4611 +#ifndef mPUSHi
   4612 +#  define mPUSHi(i)                      sv_setiv(PUSHmortal, (IV)(i))
   4613 +#endif
   4614 +
   4615 +#ifndef mPUSHu
   4616 +#  define mPUSHu(u)                      sv_setuv(PUSHmortal, (UV)(u))
   4617 +#endif
   4618 +#ifndef mXPUSHs
   4619 +#  define mXPUSHs(s)                     XPUSHs(sv_2mortal(s))
   4620 +#endif
   4621 +
   4622 +#ifndef XPUSHmortal
   4623 +#  define XPUSHmortal                    XPUSHs(sv_newmortal())
   4624 +#endif
   4625 +
   4626 +#ifndef mXPUSHp
   4627 +#  define mXPUSHp(p,l)                   STMT_START { EXTEND(sp,1); sv_setpvn(PUSHmortal, (p), (l)); } STMT_END
   4628 +#endif
   4629 +
   4630 +#ifndef mXPUSHn
   4631 +#  define mXPUSHn(n)                     STMT_START { EXTEND(sp,1); sv_setnv(PUSHmortal, (NV)(n)); } STMT_END
   4632 +#endif
   4633 +
   4634 +#ifndef mXPUSHi
   4635 +#  define mXPUSHi(i)                     STMT_START { EXTEND(sp,1); sv_setiv(PUSHmortal, (IV)(i)); } STMT_END
   4636 +#endif
   4637 +
   4638 +#ifndef mXPUSHu
   4639 +#  define mXPUSHu(u)                     STMT_START { EXTEND(sp,1); sv_setuv(PUSHmortal, (UV)(u)); } STMT_END
   4640 +#endif
   4641 +
   4642 +/* Replace: 1 */
   4643 +#ifndef call_sv
   4644 +#  define call_sv                        perl_call_sv
   4645 +#endif
   4646 +
   4647 +#ifndef call_pv
   4648 +#  define call_pv                        perl_call_pv
   4649 +#endif
   4650 +
   4651 +#ifndef call_argv
   4652 +#  define call_argv                      perl_call_argv
   4653 +#endif
   4654 +
   4655 +#ifndef call_method
   4656 +#  define call_method                    perl_call_method
   4657 +#endif
   4658 +#ifndef eval_sv
   4659 +#  define eval_sv                        perl_eval_sv
   4660 +#endif
   4661 +
   4662 +/* Replace: 0 */
   4663 +#ifndef PERL_LOADMOD_DENY
   4664 +#  define PERL_LOADMOD_DENY              0x1
   4665 +#endif
   4666 +
   4667 +#ifndef PERL_LOADMOD_NOIMPORT
   4668 +#  define PERL_LOADMOD_NOIMPORT          0x2
   4669 +#endif
   4670 +
   4671 +#ifndef PERL_LOADMOD_IMPORT_OPS
   4672 +#  define PERL_LOADMOD_IMPORT_OPS        0x4
   4673 +#endif
   4674 +
   4675 +#ifndef G_METHOD
   4676 +# define G_METHOD               64
   4677 +# ifdef call_sv
   4678 +#  undef call_sv
   4679 +# endif
   4680 +# if (PERL_BCDVERSION < 0x5006000)
   4681 +#  define call_sv(sv, flags)  ((flags) & G_METHOD ? perl_call_method((char *) SvPV_nolen_const(sv), \
   4682 +                                (flags) & ~G_METHOD) : perl_call_sv(sv, flags))
   4683 +# else
   4684 +#  define call_sv(sv, flags)  ((flags) & G_METHOD ? Perl_call_method(aTHX_ (char *) SvPV_nolen_const(sv), \
   4685 +                                (flags) & ~G_METHOD) : Perl_call_sv(aTHX_ sv, flags))
   4686 +# endif
   4687 +#endif
   4688 +
   4689 +/* Replace perl_eval_pv with eval_pv */
   4690 +
   4691 +#ifndef eval_pv
   4692 +#if defined(NEED_eval_pv)
   4693 +static SV* DPPP_(my_eval_pv)(char *p, I32 croak_on_error);
   4694 +static
   4695 +#else
   4696 +extern SV* DPPP_(my_eval_pv)(char *p, I32 croak_on_error);
   4697 +#endif
   4698 +
   4699 +#ifdef eval_pv
   4700 +#  undef eval_pv
   4701 +#endif
   4702 +#define eval_pv(a,b) DPPP_(my_eval_pv)(aTHX_ a,b)
   4703 +#define Perl_eval_pv DPPP_(my_eval_pv)
   4704 +
   4705 +#if defined(NEED_eval_pv) || defined(NEED_eval_pv_GLOBAL)
   4706 +
   4707 +SV*
   4708 +DPPP_(my_eval_pv)(char *p, I32 croak_on_error)
   4709 +{
   4710 +    dSP;
   4711 +    SV* sv = newSVpv(p, 0);
   4712 +
   4713 +    PUSHMARK(sp);
   4714 +    eval_sv(sv, G_SCALAR);
   4715 +    SvREFCNT_dec(sv);
   4716 +
   4717 +    SPAGAIN;
   4718 +    sv = POPs;
   4719 +    PUTBACK;
   4720 +
   4721 +    if (croak_on_error && SvTRUE(GvSV(errgv)))
   4722 +        croak(SvPVx(GvSV(errgv), na));
   4723 +
   4724 +    return sv;
   4725 +}
   4726 +
   4727 +#endif
   4728 +#endif
   4729 +
   4730 +#ifndef vload_module
   4731 +#if defined(NEED_vload_module)
   4732 +static void DPPP_(my_vload_module)(U32 flags, SV *name, SV *ver, va_list *args);
   4733 +static
   4734 +#else
   4735 +extern void DPPP_(my_vload_module)(U32 flags, SV *name, SV *ver, va_list *args);
   4736 +#endif
   4737 +
   4738 +#ifdef vload_module
   4739 +#  undef vload_module
   4740 +#endif
   4741 +#define vload_module(a,b,c,d) DPPP_(my_vload_module)(aTHX_ a,b,c,d)
   4742 +#define Perl_vload_module DPPP_(my_vload_module)
   4743 +
   4744 +#if defined(NEED_vload_module) || defined(NEED_vload_module_GLOBAL)
   4745 +
   4746 +void
   4747 +DPPP_(my_vload_module)(U32 flags, SV *name, SV *ver, va_list *args)
   4748 +{
   4749 +    dTHR;
   4750 +    dVAR;
   4751 +    OP *veop, *imop;
   4752 +
   4753 +    OP * const modname = newSVOP(OP_CONST, 0, name);
   4754 +    /* 5.005 has a somewhat hacky force_normal that doesn't croak on
   4755 +       SvREADONLY() if PL_compling is true. Current perls take care in
   4756 +       ck_require() to correctly turn off SvREADONLY before calling
   4757 +       force_normal_flags(). This seems a better fix than fudging PL_compling
   4758 +     */
   4759 +    SvREADONLY_off(((SVOP*)modname)->op_sv);
   4760 +    modname->op_private |= OPpCONST_BARE;
   4761 +    if (ver) {
   4762 +        veop = newSVOP(OP_CONST, 0, ver);
   4763 +    }
   4764 +    else
   4765 +        veop = NULL;
   4766 +    if (flags & PERL_LOADMOD_NOIMPORT) {
   4767 +        imop = sawparens(newNULLLIST());
   4768 +    }
   4769 +    else if (flags & PERL_LOADMOD_IMPORT_OPS) {
   4770 +        imop = va_arg(*args, OP*);
   4771 +    }
   4772 +    else {
   4773 +        SV *sv;
   4774 +        imop = NULL;
   4775 +        sv = va_arg(*args, SV*);
   4776 +        while (sv) {
   4777 +            imop = append_elem(OP_LIST, imop, newSVOP(OP_CONST, 0, sv));
   4778 +            sv = va_arg(*args, SV*);
   4779 +        }
   4780 +    }
   4781 +    {
   4782 +        const line_t ocopline = PL_copline;
   4783 +        COP * const ocurcop = PL_curcop;
   4784 +        const int oexpect = PL_expect;
   4785 +
   4786 +#if (PERL_BCDVERSION >= 0x5004000)
   4787 +        utilize(!(flags & PERL_LOADMOD_DENY), start_subparse(FALSE, 0),
   4788 +                veop, modname, imop);
   4789 +#else
   4790 +        utilize(!(flags & PERL_LOADMOD_DENY), start_subparse(),
   4791 +                modname, imop);
   4792 +#endif
   4793 +        PL_expect = oexpect;
   4794 +        PL_copline = ocopline;
   4795 +        PL_curcop = ocurcop;
   4796 +    }
   4797 +}
   4798 +
   4799 +#endif
   4800 +#endif
   4801 +
   4802 +#ifndef load_module
   4803 +#if defined(NEED_load_module)
   4804 +static void DPPP_(my_load_module)(U32 flags, SV *name, SV *ver, ...);
   4805 +static
   4806 +#else
   4807 +extern void DPPP_(my_load_module)(U32 flags, SV *name, SV *ver, ...);
   4808 +#endif
   4809 +
   4810 +#ifdef load_module
   4811 +#  undef load_module
   4812 +#endif
   4813 +#define load_module DPPP_(my_load_module)
   4814 +#define Perl_load_module DPPP_(my_load_module)
   4815 +
   4816 +#if defined(NEED_load_module) || defined(NEED_load_module_GLOBAL)
   4817 +
   4818 +void
   4819 +DPPP_(my_load_module)(U32 flags, SV *name, SV *ver, ...)
   4820 +{
   4821 +    va_list args;
   4822 +    va_start(args, ver);
   4823 +    vload_module(flags, name, ver, &args);
   4824 +    va_end(args);
   4825 +}
   4826 +
   4827 +#endif
   4828 +#endif
   4829 +#ifndef newRV_inc
   4830 +#  define newRV_inc(sv)                  newRV(sv)   /* Replace */
   4831 +#endif
   4832 +
   4833 +#ifndef newRV_noinc
   4834 +#if defined(NEED_newRV_noinc)
   4835 +static SV * DPPP_(my_newRV_noinc)(SV *sv);
   4836 +static
   4837 +#else
   4838 +extern SV * DPPP_(my_newRV_noinc)(SV *sv);
   4839 +#endif
   4840 +
   4841 +#ifdef newRV_noinc
   4842 +#  undef newRV_noinc
   4843 +#endif
   4844 +#define newRV_noinc(a) DPPP_(my_newRV_noinc)(aTHX_ a)
   4845 +#define Perl_newRV_noinc DPPP_(my_newRV_noinc)
   4846 +
   4847 +#if defined(NEED_newRV_noinc) || defined(NEED_newRV_noinc_GLOBAL)
   4848 +SV *
   4849 +DPPP_(my_newRV_noinc)(SV *sv)
   4850 +{
   4851 +  SV *rv = (SV *)newRV(sv);
   4852 +  SvREFCNT_dec(sv);
   4853 +  return rv;
   4854 +}
   4855 +#endif
   4856 +#endif
   4857 +
   4858 +/* Hint: newCONSTSUB
   4859 + * Returns a CV* as of perl-5.7.1. This return value is not supported
   4860 + * by Devel::PPPort.
   4861 + */
   4862 +
   4863 +/* newCONSTSUB from IO.xs is in the core starting with 5.004_63 */
   4864 +#if (PERL_BCDVERSION < 0x5004063) && (PERL_BCDVERSION != 0x5004005)
   4865 +#if defined(NEED_newCONSTSUB)
   4866 +static void DPPP_(my_newCONSTSUB)(HV *stash, const char *name, SV *sv);
   4867 +static
   4868 +#else
   4869 +extern void DPPP_(my_newCONSTSUB)(HV *stash, const char *name, SV *sv);
   4870 +#endif
   4871 +
   4872 +#ifdef newCONSTSUB
   4873 +#  undef newCONSTSUB
   4874 +#endif
   4875 +#define newCONSTSUB(a,b,c) DPPP_(my_newCONSTSUB)(aTHX_ a,b,c)
   4876 +#define Perl_newCONSTSUB DPPP_(my_newCONSTSUB)
   4877 +
   4878 +#if defined(NEED_newCONSTSUB) || defined(NEED_newCONSTSUB_GLOBAL)
   4879 +
   4880 +/* This is just a trick to avoid a dependency of newCONSTSUB on PL_parser */
   4881 +/* (There's no PL_parser in perl < 5.005, so this is completely safe)     */
   4882 +#define D_PPP_PL_copline PL_copline
   4883 +
   4884 +void
   4885 +DPPP_(my_newCONSTSUB)(HV *stash, const char *name, SV *sv)
   4886 +{
   4887 +        U32 oldhints = PL_hints;
   4888 +        HV *old_cop_stash = PL_curcop->cop_stash;
   4889 +        HV *old_curstash = PL_curstash;
   4890 +        line_t oldline = PL_curcop->cop_line;
   4891 +        PL_curcop->cop_line = D_PPP_PL_copline;
   4892 +
   4893 +        PL_hints &= ~HINT_BLOCK_SCOPE;
   4894 +        if (stash)
   4895 +                PL_curstash = PL_curcop->cop_stash = stash;
   4896 +
   4897 +        newSUB(
   4898 +
   4899 +#if   (PERL_BCDVERSION < 0x5003022)
   4900 +                start_subparse(),
   4901 +#elif (PERL_BCDVERSION == 0x5003022)
   4902 +                start_subparse(0),
   4903 +#else  /* 5.003_23  onwards */
   4904 +                start_subparse(FALSE, 0),
   4905 +#endif
   4906 +
   4907 +                newSVOP(OP_CONST, 0, newSVpv((char *) name, 0)),
   4908 +                newSVOP(OP_CONST, 0, &PL_sv_no),   /* SvPV(&PL_sv_no) == "" -- GMB */
   4909 +                newSTATEOP(0, Nullch, newSVOP(OP_CONST, 0, sv))
   4910 +        );
   4911 +
   4912 +        PL_hints = oldhints;
   4913 +        PL_curcop->cop_stash = old_cop_stash;
   4914 +        PL_curstash = old_curstash;
   4915 +        PL_curcop->cop_line = oldline;
   4916 +}
   4917 +#endif
   4918 +#endif
   4919 +
   4920 +/*
   4921 + * Boilerplate macros for initializing and accessing interpreter-local
   4922 + * data from C.  All statics in extensions should be reworked to use
   4923 + * this, if you want to make the extension thread-safe.  See ext/re/re.xs
   4924 + * for an example of the use of these macros.
   4925 + *
   4926 + * Code that uses these macros is responsible for the following:
   4927 + * 1. #define MY_CXT_KEY to a unique string, e.g. "DynaLoader_guts"
   4928 + * 2. Declare a typedef named my_cxt_t that is a structure that contains
   4929 + *    all the data that needs to be interpreter-local.
   4930 + * 3. Use the START_MY_CXT macro after the declaration of my_cxt_t.
   4931 + * 4. Use the MY_CXT_INIT macro such that it is called exactly once
   4932 + *    (typically put in the BOOT: section).
   4933 + * 5. Use the members of the my_cxt_t structure everywhere as
   4934 + *    MY_CXT.member.
   4935 + * 6. Use the dMY_CXT macro (a declaration) in all the functions that
   4936 + *    access MY_CXT.
   4937 + */
   4938 +
   4939 +#if defined(MULTIPLICITY) || defined(PERL_OBJECT) || \
   4940 +    defined(PERL_CAPI)    || defined(PERL_IMPLICIT_CONTEXT)
   4941 +
   4942 +#ifndef START_MY_CXT
   4943 +
   4944 +/* This must appear in all extensions that define a my_cxt_t structure,
   4945 + * right after the definition (i.e. at file scope).  The non-threads
   4946 + * case below uses it to declare the data as static. */
   4947 +#define START_MY_CXT
   4948 +
   4949 +#if (PERL_BCDVERSION < 0x5004068)
   4950 +/* Fetches the SV that keeps the per-interpreter data. */
   4951 +#define dMY_CXT_SV \
   4952 +        SV *my_cxt_sv = get_sv(MY_CXT_KEY, FALSE)
   4953 +#else /* >= perl5.004_68 */
   4954 +#define dMY_CXT_SV \
   4955 +        SV *my_cxt_sv = *hv_fetch(PL_modglobal, MY_CXT_KEY,             \
   4956 +                                  sizeof(MY_CXT_KEY)-1, TRUE)
   4957 +#endif /* < perl5.004_68 */
   4958 +
   4959 +/* This declaration should be used within all functions that use the
   4960 + * interpreter-local data. */
   4961 +#define dMY_CXT \
   4962 +        dMY_CXT_SV;                                                     \
   4963 +        my_cxt_t *my_cxtp = INT2PTR(my_cxt_t*,SvUV(my_cxt_sv))
   4964 +
   4965 +/* Creates and zeroes the per-interpreter data.
   4966 + * (We allocate my_cxtp in a Perl SV so that it will be released when
   4967 + * the interpreter goes away.) */
   4968 +#define MY_CXT_INIT \
   4969 +        dMY_CXT_SV;                                                     \
   4970 +        /* newSV() allocates one more than needed */                    \
   4971 +        my_cxt_t *my_cxtp = (my_cxt_t*)SvPVX(newSV(sizeof(my_cxt_t)-1));\
   4972 +        Zero(my_cxtp, 1, my_cxt_t);                                     \
   4973 +        sv_setuv(my_cxt_sv, PTR2UV(my_cxtp))
   4974 +
   4975 +/* This macro must be used to access members of the my_cxt_t structure.
   4976 + * e.g. MYCXT.some_data */
   4977 +#define MY_CXT          (*my_cxtp)
   4978 +
   4979 +/* Judicious use of these macros can reduce the number of times dMY_CXT
   4980 + * is used.  Use is similar to pTHX, aTHX etc. */
   4981 +#define pMY_CXT         my_cxt_t *my_cxtp
   4982 +#define pMY_CXT_        pMY_CXT,
   4983 +#define _pMY_CXT        ,pMY_CXT
   4984 +#define aMY_CXT         my_cxtp
   4985 +#define aMY_CXT_        aMY_CXT,
   4986 +#define _aMY_CXT        ,aMY_CXT
   4987 +
   4988 +#endif /* START_MY_CXT */
   4989 +
   4990 +#ifndef MY_CXT_CLONE
   4991 +/* Clones the per-interpreter data. */
   4992 +#define MY_CXT_CLONE \
   4993 +        dMY_CXT_SV;                                                     \
   4994 +        my_cxt_t *my_cxtp = (my_cxt_t*)SvPVX(newSV(sizeof(my_cxt_t)-1));\
   4995 +        Copy(INT2PTR(my_cxt_t*, SvUV(my_cxt_sv)), my_cxtp, 1, my_cxt_t);\
   4996 +        sv_setuv(my_cxt_sv, PTR2UV(my_cxtp))
   4997 +#endif
   4998 +
   4999 +#else /* single interpreter */
   5000 +
   5001 +#ifndef START_MY_CXT
   5002 +
   5003 +#define START_MY_CXT    static my_cxt_t my_cxt;
   5004 +#define dMY_CXT_SV      dNOOP
   5005 +#define dMY_CXT         dNOOP
   5006 +#define MY_CXT_INIT     NOOP
   5007 +#define MY_CXT          my_cxt
   5008 +
   5009 +#define pMY_CXT         void
   5010 +#define pMY_CXT_
   5011 +#define _pMY_CXT
   5012 +#define aMY_CXT
   5013 +#define aMY_CXT_
   5014 +#define _aMY_CXT
   5015 +
   5016 +#endif /* START_MY_CXT */
   5017 +
   5018 +#ifndef MY_CXT_CLONE
   5019 +#define MY_CXT_CLONE    NOOP
   5020 +#endif
   5021 +
   5022 +#endif
   5023 +
   5024 +#ifndef IVdf
   5025 +#  if IVSIZE == LONGSIZE
   5026 +#    define     IVdf      "ld"
   5027 +#    define     UVuf      "lu"
   5028 +#    define     UVof      "lo"
   5029 +#    define     UVxf      "lx"
   5030 +#    define     UVXf      "lX"
   5031 +#  elif IVSIZE == INTSIZE
   5032 +#    define   IVdf      "d"
   5033 +#    define   UVuf      "u"
   5034 +#    define   UVof      "o"
   5035 +#    define   UVxf      "x"
   5036 +#    define   UVXf      "X"
   5037 +#  else
   5038 +#    error "cannot define IV/UV formats"
   5039 +#  endif
   5040 +#endif
   5041 +
   5042 +#ifndef NVef
   5043 +#  if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE) && \
   5044 +      defined(PERL_PRIfldbl) && (PERL_BCDVERSION != 0x5006000)
   5045 +            /* Not very likely, but let's try anyway. */
   5046 +#    define NVef          PERL_PRIeldbl
   5047 +#    define NVff          PERL_PRIfldbl
   5048 +#    define NVgf          PERL_PRIgldbl
   5049 +#  else
   5050 +#    define NVef          "e"
   5051 +#    define NVff          "f"
   5052 +#    define NVgf          "g"
   5053 +#  endif
   5054 +#endif
   5055 +
   5056 +#ifndef SvREFCNT_inc
   5057 +#  ifdef PERL_USE_GCC_BRACE_GROUPS
   5058 +#    define SvREFCNT_inc(sv)            \
   5059 +      ({                                \
   5060 +          SV * const _sv = (SV*)(sv);   \
   5061 +          if (_sv)                      \
   5062 +               (SvREFCNT(_sv))++;       \
   5063 +          _sv;                          \
   5064 +      })
   5065 +#  else
   5066 +#    define SvREFCNT_inc(sv)    \
   5067 +          ((PL_Sv=(SV*)(sv)) ? (++(SvREFCNT(PL_Sv)),PL_Sv) : NULL)
   5068 +#  endif
   5069 +#endif
   5070 +
   5071 +#ifndef SvREFCNT_inc_simple
   5072 +#  ifdef PERL_USE_GCC_BRACE_GROUPS
   5073 +#    define SvREFCNT_inc_simple(sv)     \
   5074 +      ({                                        \
   5075 +          if (sv)                               \
   5076 +               (SvREFCNT(sv))++;                \
   5077 +          (SV *)(sv);                           \
   5078 +      })
   5079 +#  else
   5080 +#    define SvREFCNT_inc_simple(sv) \
   5081 +          ((sv) ? (SvREFCNT(sv)++,(SV*)(sv)) : NULL)
   5082 +#  endif
   5083 +#endif
   5084 +
   5085 +#ifndef SvREFCNT_inc_NN
   5086 +#  ifdef PERL_USE_GCC_BRACE_GROUPS
   5087 +#    define SvREFCNT_inc_NN(sv)         \
   5088 +      ({                                        \
   5089 +          SV * const _sv = (SV*)(sv);   \
   5090 +          SvREFCNT(_sv)++;              \
   5091 +          _sv;                          \
   5092 +      })
   5093 +#  else
   5094 +#    define SvREFCNT_inc_NN(sv) \
   5095 +          (PL_Sv=(SV*)(sv),++(SvREFCNT(PL_Sv)),PL_Sv)
   5096 +#  endif
   5097 +#endif
   5098 +
   5099 +#ifndef SvREFCNT_inc_void
   5100 +#  ifdef PERL_USE_GCC_BRACE_GROUPS
   5101 +#    define SvREFCNT_inc_void(sv)               \
   5102 +      ({                                        \
   5103 +          SV * const _sv = (SV*)(sv);   \
   5104 +          if (_sv)                      \
   5105 +              (void)(SvREFCNT(_sv)++);  \
   5106 +      })
   5107 +#  else
   5108 +#    define SvREFCNT_inc_void(sv) \
   5109 +          (void)((PL_Sv=(SV*)(sv)) ? ++(SvREFCNT(PL_Sv)) : 0)
   5110 +#  endif
   5111 +#endif
   5112 +#ifndef SvREFCNT_inc_simple_void
   5113 +#  define SvREFCNT_inc_simple_void(sv)   STMT_START { if (sv) SvREFCNT(sv)++; } STMT_END
   5114 +#endif
   5115 +
   5116 +#ifndef SvREFCNT_inc_simple_NN
   5117 +#  define SvREFCNT_inc_simple_NN(sv)     (++SvREFCNT(sv), (SV*)(sv))
   5118 +#endif
   5119 +
   5120 +#ifndef SvREFCNT_inc_void_NN
   5121 +#  define SvREFCNT_inc_void_NN(sv)       (void)(++SvREFCNT((SV*)(sv)))
   5122 +#endif
   5123 +
   5124 +#ifndef SvREFCNT_inc_simple_void_NN
   5125 +#  define SvREFCNT_inc_simple_void_NN(sv) (void)(++SvREFCNT((SV*)(sv)))
   5126 +#endif
   5127 +
   5128 +#ifndef newSV_type
   5129 +
   5130 +#if defined(NEED_newSV_type)
   5131 +static SV* DPPP_(my_newSV_type)(pTHX_ svtype const t);
   5132 +static
   5133 +#else
   5134 +extern SV* DPPP_(my_newSV_type)(pTHX_ svtype const t);
   5135 +#endif
   5136 +
   5137 +#ifdef newSV_type
   5138 +#  undef newSV_type
   5139 +#endif
   5140 +#define newSV_type(a) DPPP_(my_newSV_type)(aTHX_ a)
   5141 +#define Perl_newSV_type DPPP_(my_newSV_type)
   5142 +
   5143 +#if defined(NEED_newSV_type) || defined(NEED_newSV_type_GLOBAL)
   5144 +
   5145 +SV*
   5146 +DPPP_(my_newSV_type)(pTHX_ svtype const t)
   5147 +{
   5148 +  SV* const sv = newSV(0);
   5149 +  sv_upgrade(sv, t);
   5150 +  return sv;
   5151 +}
   5152 +
   5153 +#endif
   5154 +
   5155 +#endif
   5156 +
   5157 +#if (PERL_BCDVERSION < 0x5006000)
   5158 +# define D_PPP_CONSTPV_ARG(x)  ((char *) (x))
   5159 +#else
   5160 +# define D_PPP_CONSTPV_ARG(x)  (x)
   5161 +#endif
   5162 +#ifndef newSVpvn
   5163 +#  define newSVpvn(data,len)             ((data)                                              \
   5164 +                                    ? ((len) ? newSVpv((data), (len)) : newSVpv("", 0)) \
   5165 +                                    : newSV(0))
   5166 +#endif
   5167 +#ifndef newSVpvn_utf8
   5168 +#  define newSVpvn_utf8(s, len, u)       newSVpvn_flags((s), (len), (u) ? SVf_UTF8 : 0)
   5169 +#endif
   5170 +#ifndef SVf_UTF8
   5171 +#  define SVf_UTF8                       0
   5172 +#endif
   5173 +
   5174 +#ifndef newSVpvn_flags
   5175 +
   5176 +#if defined(NEED_newSVpvn_flags)
   5177 +static SV * DPPP_(my_newSVpvn_flags)(pTHX_ const char *s, STRLEN len, U32 flags);
   5178 +static
   5179 +#else
   5180 +extern SV * DPPP_(my_newSVpvn_flags)(pTHX_ const char *s, STRLEN len, U32 flags);
   5181 +#endif
   5182 +
   5183 +#ifdef newSVpvn_flags
   5184 +#  undef newSVpvn_flags
   5185 +#endif
   5186 +#define newSVpvn_flags(a,b,c) DPPP_(my_newSVpvn_flags)(aTHX_ a,b,c)
   5187 +#define Perl_newSVpvn_flags DPPP_(my_newSVpvn_flags)
   5188 +
   5189 +#if defined(NEED_newSVpvn_flags) || defined(NEED_newSVpvn_flags_GLOBAL)
   5190 +
   5191 +SV *
   5192 +DPPP_(my_newSVpvn_flags)(pTHX_ const char *s, STRLEN len, U32 flags)
   5193 +{
   5194 +  SV *sv = newSVpvn(D_PPP_CONSTPV_ARG(s), len);
   5195 +  SvFLAGS(sv) |= (flags & SVf_UTF8);
   5196 +  return (flags & SVs_TEMP) ? sv_2mortal(sv) : sv;
   5197 +}
   5198 +
   5199 +#endif
   5200 +
   5201 +#endif
   5202 +
   5203 +/* Backwards compatibility stuff... :-( */
   5204 +#if !defined(NEED_sv_2pv_flags) && defined(NEED_sv_2pv_nolen)
   5205 +#  define NEED_sv_2pv_flags
   5206 +#endif
   5207 +#if !defined(NEED_sv_2pv_flags_GLOBAL) && defined(NEED_sv_2pv_nolen_GLOBAL)
   5208 +#  define NEED_sv_2pv_flags_GLOBAL
   5209 +#endif
   5210 +
   5211 +/* Hint: sv_2pv_nolen
   5212 + * Use the SvPV_nolen() or SvPV_nolen_const() macros instead of sv_2pv_nolen().
   5213 + */
   5214 +#ifndef sv_2pv_nolen
   5215 +#  define sv_2pv_nolen(sv)               SvPV_nolen(sv)
   5216 +#endif
   5217 +
   5218 +#ifdef SvPVbyte
   5219 +
   5220 +/* Hint: SvPVbyte
   5221 + * Does not work in perl-5.6.1, ppport.h implements a version
   5222 + * borrowed from perl-5.7.3.
   5223 + */
   5224 +
   5225 +#if (PERL_BCDVERSION < 0x5007000)
   5226 +
   5227 +#if defined(NEED_sv_2pvbyte)
   5228 +static char * DPPP_(my_sv_2pvbyte)(pTHX_ SV *sv, STRLEN *lp);
   5229 +static
   5230 +#else
   5231 +extern char * DPPP_(my_sv_2pvbyte)(pTHX_ SV *sv, STRLEN *lp);
   5232 +#endif
   5233 +
   5234 +#ifdef sv_2pvbyte
   5235 +#  undef sv_2pvbyte
   5236 +#endif
   5237 +#define sv_2pvbyte(a,b) DPPP_(my_sv_2pvbyte)(aTHX_ a,b)
   5238 +#define Perl_sv_2pvbyte DPPP_(my_sv_2pvbyte)
   5239 +
   5240 +#if defined(NEED_sv_2pvbyte) || defined(NEED_sv_2pvbyte_GLOBAL)
   5241 +
   5242 +char *
   5243 +DPPP_(my_sv_2pvbyte)(pTHX_ SV *sv, STRLEN *lp)
   5244 +{
   5245 +  sv_utf8_downgrade(sv,0);
   5246 +  return SvPV(sv,*lp);
   5247 +}
   5248 +
   5249 +#endif
   5250 +
   5251 +/* Hint: sv_2pvbyte
   5252 + * Use the SvPVbyte() macro instead of sv_2pvbyte().
   5253 + */
   5254 +
   5255 +#undef SvPVbyte
   5256 +
   5257 +#define SvPVbyte(sv, lp)                                                \
   5258 +        ((SvFLAGS(sv) & (SVf_POK|SVf_UTF8)) == (SVf_POK)                \
   5259 +         ? ((lp = SvCUR(sv)), SvPVX(sv)) : sv_2pvbyte(sv, &lp))
   5260 +
   5261 +#endif
   5262 +
   5263 +#else
   5264 +
   5265 +#  define SvPVbyte          SvPV
   5266 +#  define sv_2pvbyte        sv_2pv
   5267 +
   5268 +#endif
   5269 +#ifndef sv_2pvbyte_nolen
   5270 +#  define sv_2pvbyte_nolen(sv)           sv_2pv_nolen(sv)
   5271 +#endif
   5272 +
   5273 +/* Hint: sv_pvn
   5274 + * Always use the SvPV() macro instead of sv_pvn().
   5275 + */
   5276 +
   5277 +/* Hint: sv_pvn_force
   5278 + * Always use the SvPV_force() macro instead of sv_pvn_force().
   5279 + */
   5280 +
   5281 +/* If these are undefined, they're not handled by the core anyway */
   5282 +#ifndef SV_IMMEDIATE_UNREF
   5283 +#  define SV_IMMEDIATE_UNREF             0
   5284 +#endif
   5285 +
   5286 +#ifndef SV_GMAGIC
   5287 +#  define SV_GMAGIC                      0
   5288 +#endif
   5289 +
   5290 +#ifndef SV_COW_DROP_PV
   5291 +#  define SV_COW_DROP_PV                 0
   5292 +#endif
   5293 +
   5294 +#ifndef SV_UTF8_NO_ENCODING
   5295 +#  define SV_UTF8_NO_ENCODING            0
   5296 +#endif
   5297 +
   5298 +#ifndef SV_NOSTEAL
   5299 +#  define SV_NOSTEAL                     0
   5300 +#endif
   5301 +
   5302 +#ifndef SV_CONST_RETURN
   5303 +#  define SV_CONST_RETURN                0
   5304 +#endif
   5305 +
   5306 +#ifndef SV_MUTABLE_RETURN
   5307 +#  define SV_MUTABLE_RETURN              0
   5308 +#endif
   5309 +
   5310 +#ifndef SV_SMAGIC
   5311 +#  define SV_SMAGIC                      0
   5312 +#endif
   5313 +
   5314 +#ifndef SV_HAS_TRAILING_NUL
   5315 +#  define SV_HAS_TRAILING_NUL            0
   5316 +#endif
   5317 +
   5318 +#ifndef SV_COW_SHARED_HASH_KEYS
   5319 +#  define SV_COW_SHARED_HASH_KEYS        0
   5320 +#endif
   5321 +
   5322 +#if (PERL_BCDVERSION < 0x5007002)
   5323 +
   5324 +#if defined(NEED_sv_2pv_flags)
   5325 +static char * DPPP_(my_sv_2pv_flags)(pTHX_ SV *sv, STRLEN *lp, I32 flags);
   5326 +static
   5327 +#else
   5328 +extern char * DPPP_(my_sv_2pv_flags)(pTHX_ SV *sv, STRLEN *lp, I32 flags);
   5329 +#endif
   5330 +
   5331 +#ifdef sv_2pv_flags
   5332 +#  undef sv_2pv_flags
   5333 +#endif
   5334 +#define sv_2pv_flags(a,b,c) DPPP_(my_sv_2pv_flags)(aTHX_ a,b,c)
   5335 +#define Perl_sv_2pv_flags DPPP_(my_sv_2pv_flags)
   5336 +
   5337 +#if defined(NEED_sv_2pv_flags) || defined(NEED_sv_2pv_flags_GLOBAL)
   5338 +
   5339 +char *
   5340 +DPPP_(my_sv_2pv_flags)(pTHX_ SV *sv, STRLEN *lp, I32 flags)
   5341 +{
   5342 +  STRLEN n_a = (STRLEN) flags;
   5343 +  return sv_2pv(sv, lp ? lp : &n_a);
   5344 +}
   5345 +
   5346 +#endif
   5347 +
   5348 +#if defined(NEED_sv_pvn_force_flags)
   5349 +static char * DPPP_(my_sv_pvn_force_flags)(pTHX_ SV *sv, STRLEN *lp, I32 flags);
   5350 +static
   5351 +#else
   5352 +extern char * DPPP_(my_sv_pvn_force_flags)(pTHX_ SV *sv, STRLEN *lp, I32 flags);
   5353 +#endif
   5354 +
   5355 +#ifdef sv_pvn_force_flags
   5356 +#  undef sv_pvn_force_flags
   5357 +#endif
   5358 +#define sv_pvn_force_flags(a,b,c) DPPP_(my_sv_pvn_force_flags)(aTHX_ a,b,c)
   5359 +#define Perl_sv_pvn_force_flags DPPP_(my_sv_pvn_force_flags)
   5360 +
   5361 +#if defined(NEED_sv_pvn_force_flags) || defined(NEED_sv_pvn_force_flags_GLOBAL)
   5362 +
   5363 +char *
   5364 +DPPP_(my_sv_pvn_force_flags)(pTHX_ SV *sv, STRLEN *lp, I32 flags)
   5365 +{
   5366 +  STRLEN n_a = (STRLEN) flags;
   5367 +  return sv_pvn_force(sv, lp ? lp : &n_a);
   5368 +}
   5369 +
   5370 +#endif
   5371 +
   5372 +#endif
   5373 +
   5374 +#if (PERL_BCDVERSION < 0x5008008) || ( (PERL_BCDVERSION >= 0x5009000) && (PERL_BCDVERSION < 0x5009003) )
   5375 +# define DPPP_SVPV_NOLEN_LP_ARG &PL_na
   5376 +#else
   5377 +# define DPPP_SVPV_NOLEN_LP_ARG 0
   5378 +#endif
   5379 +#ifndef SvPV_const
   5380 +#  define SvPV_const(sv, lp)             SvPV_flags_const(sv, lp, SV_GMAGIC)
   5381 +#endif
   5382 +
   5383 +#ifndef SvPV_mutable
   5384 +#  define SvPV_mutable(sv, lp)           SvPV_flags_mutable(sv, lp, SV_GMAGIC)
   5385 +#endif
   5386 +#ifndef SvPV_flags
   5387 +#  define SvPV_flags(sv, lp, flags)      \
   5388 +                 ((SvFLAGS(sv) & (SVf_POK)) == SVf_POK \
   5389 +                  ? ((lp = SvCUR(sv)), SvPVX(sv)) : sv_2pv_flags(sv, &lp, flags))
   5390 +#endif
   5391 +#ifndef SvPV_flags_const
   5392 +#  define SvPV_flags_const(sv, lp, flags) \
   5393 +                 ((SvFLAGS(sv) & (SVf_POK)) == SVf_POK \
   5394 +                  ? ((lp = SvCUR(sv)), SvPVX_const(sv)) : \
   5395 +                  (const char*) sv_2pv_flags(sv, &lp, flags|SV_CONST_RETURN))
   5396 +#endif
   5397 +#ifndef SvPV_flags_const_nolen
   5398 +#  define SvPV_flags_const_nolen(sv, flags) \
   5399 +                 ((SvFLAGS(sv) & (SVf_POK)) == SVf_POK \
   5400 +                  ? SvPVX_const(sv) : \
   5401 +                  (const char*) sv_2pv_flags(sv, DPPP_SVPV_NOLEN_LP_ARG, flags|SV_CONST_RETURN))
   5402 +#endif
   5403 +#ifndef SvPV_flags_mutable
   5404 +#  define SvPV_flags_mutable(sv, lp, flags) \
   5405 +                 ((SvFLAGS(sv) & (SVf_POK)) == SVf_POK \
   5406 +                  ? ((lp = SvCUR(sv)), SvPVX_mutable(sv)) : \
   5407 +                  sv_2pv_flags(sv, &lp, flags|SV_MUTABLE_RETURN))
   5408 +#endif
   5409 +#ifndef SvPV_force
   5410 +#  define SvPV_force(sv, lp)             SvPV_force_flags(sv, lp, SV_GMAGIC)
   5411 +#endif
   5412 +
   5413 +#ifndef SvPV_force_nolen
   5414 +#  define SvPV_force_nolen(sv)           SvPV_force_flags_nolen(sv, SV_GMAGIC)
   5415 +#endif
   5416 +
   5417 +#ifndef SvPV_force_mutable
   5418 +#  define SvPV_force_mutable(sv, lp)     SvPV_force_flags_mutable(sv, lp, SV_GMAGIC)
   5419 +#endif
   5420 +
   5421 +#ifndef SvPV_force_nomg
   5422 +#  define SvPV_force_nomg(sv, lp)        SvPV_force_flags(sv, lp, 0)
   5423 +#endif
   5424 +
   5425 +#ifndef SvPV_force_nomg_nolen
   5426 +#  define SvPV_force_nomg_nolen(sv)      SvPV_force_flags_nolen(sv, 0)
   5427 +#endif
   5428 +#ifndef SvPV_force_flags
   5429 +#  define SvPV_force_flags(sv, lp, flags) \
   5430 +                 ((SvFLAGS(sv) & (SVf_POK|SVf_THINKFIRST)) == SVf_POK \
   5431 +                 ? ((lp = SvCUR(sv)), SvPVX(sv)) : sv_pvn_force_flags(sv, &lp, flags))
   5432 +#endif
   5433 +#ifndef SvPV_force_flags_nolen
   5434 +#  define SvPV_force_flags_nolen(sv, flags) \
   5435 +                 ((SvFLAGS(sv) & (SVf_POK|SVf_THINKFIRST)) == SVf_POK \
   5436 +                 ? SvPVX(sv) : sv_pvn_force_flags(sv, DPPP_SVPV_NOLEN_LP_ARG, flags))
   5437 +#endif
   5438 +#ifndef SvPV_force_flags_mutable
   5439 +#  define SvPV_force_flags_mutable(sv, lp, flags) \
   5440 +                 ((SvFLAGS(sv) & (SVf_POK|SVf_THINKFIRST)) == SVf_POK \
   5441 +                 ? ((lp = SvCUR(sv)), SvPVX_mutable(sv)) \
   5442 +                  : sv_pvn_force_flags(sv, &lp, flags|SV_MUTABLE_RETURN))
   5443 +#endif
   5444 +#ifndef SvPV_nolen
   5445 +#  define SvPV_nolen(sv)                 \
   5446 +                 ((SvFLAGS(sv) & (SVf_POK)) == SVf_POK \
   5447 +                  ? SvPVX(sv) : sv_2pv_flags(sv, DPPP_SVPV_NOLEN_LP_ARG, SV_GMAGIC))
   5448 +#endif
   5449 +#ifndef SvPV_nolen_const
   5450 +#  define SvPV_nolen_const(sv)           \
   5451 +                 ((SvFLAGS(sv) & (SVf_POK)) == SVf_POK \
   5452 +                  ? SvPVX_const(sv) : sv_2pv_flags(sv, DPPP_SVPV_NOLEN_LP_ARG, SV_GMAGIC|SV_CONST_RETURN))
   5453 +#endif
   5454 +#ifndef SvPV_nomg
   5455 +#  define SvPV_nomg(sv, lp)              SvPV_flags(sv, lp, 0)
   5456 +#endif
   5457 +
   5458 +#ifndef SvPV_nomg_const
   5459 +#  define SvPV_nomg_const(sv, lp)        SvPV_flags_const(sv, lp, 0)
   5460 +#endif
   5461 +
   5462 +#ifndef SvPV_nomg_const_nolen
   5463 +#  define SvPV_nomg_const_nolen(sv)      SvPV_flags_const_nolen(sv, 0)
   5464 +#endif
   5465 +
   5466 +#ifndef SvPV_nomg_nolen
   5467 +#  define SvPV_nomg_nolen(sv)            ((SvFLAGS(sv) & (SVf_POK)) == SVf_POK \
   5468 +                                    ? SvPVX(sv) : sv_2pv_flags(sv, DPPP_SVPV_NOLEN_LP_ARG, 0))
   5469 +#endif
   5470 +#ifndef SvPV_renew
   5471 +#  define SvPV_renew(sv,n)               STMT_START { SvLEN_set(sv, n); \
   5472 +                 SvPV_set((sv), (char *) saferealloc(          \
   5473 +                       (Malloc_t)SvPVX(sv), (MEM_SIZE)((n)))); \
   5474 +               } STMT_END
   5475 +#endif
   5476 +#ifndef SvMAGIC_set
   5477 +#  define SvMAGIC_set(sv, val)           \
   5478 +                STMT_START { assert(SvTYPE(sv) >= SVt_PVMG); \
   5479 +                (((XPVMG*) SvANY(sv))->xmg_magic = (val)); } STMT_END
   5480 +#endif
   5481 +
   5482 +#if (PERL_BCDVERSION < 0x5009003)
   5483 +#ifndef SvPVX_const
   5484 +#  define SvPVX_const(sv)                ((const char*) (0 + SvPVX(sv)))
   5485 +#endif
   5486 +
   5487 +#ifndef SvPVX_mutable
   5488 +#  define SvPVX_mutable(sv)              (0 + SvPVX(sv))
   5489 +#endif
   5490 +#ifndef SvRV_set
   5491 +#  define SvRV_set(sv, val)              \
   5492 +                STMT_START { assert(SvTYPE(sv) >=  SVt_RV); \
   5493 +                (((XRV*) SvANY(sv))->xrv_rv = (val)); } STMT_END
   5494 +#endif
   5495 +
   5496 +#else
   5497 +#ifndef SvPVX_const
   5498 +#  define SvPVX_const(sv)                ((const char*)((sv)->sv_u.svu_pv))
   5499 +#endif
   5500 +
   5501 +#ifndef SvPVX_mutable
   5502 +#  define SvPVX_mutable(sv)              ((sv)->sv_u.svu_pv)
   5503 +#endif
   5504 +#ifndef SvRV_set
   5505 +#  define SvRV_set(sv, val)              \
   5506 +                STMT_START { assert(SvTYPE(sv) >=  SVt_RV); \
   5507 +                ((sv)->sv_u.svu_rv = (val)); } STMT_END
   5508 +#endif
   5509 +
   5510 +#endif
   5511 +#ifndef SvSTASH_set
   5512 +#  define SvSTASH_set(sv, val)           \
   5513 +                STMT_START { assert(SvTYPE(sv) >= SVt_PVMG); \
   5514 +                (((XPVMG*) SvANY(sv))->xmg_stash = (val)); } STMT_END
   5515 +#endif
   5516 +
   5517 +#if (PERL_BCDVERSION < 0x5004000)
   5518 +#ifndef SvUV_set
   5519 +#  define SvUV_set(sv, val)              \
   5520 +                STMT_START { assert(SvTYPE(sv) == SVt_IV || SvTYPE(sv) >= SVt_PVIV); \
   5521 +                (((XPVIV*) SvANY(sv))->xiv_iv = (IV) (val)); } STMT_END
   5522 +#endif
   5523 +
   5524 +#else
   5525 +#ifndef SvUV_set
   5526 +#  define SvUV_set(sv, val)              \
   5527 +                STMT_START { assert(SvTYPE(sv) == SVt_IV || SvTYPE(sv) >= SVt_PVIV); \
   5528 +                (((XPVUV*) SvANY(sv))->xuv_uv = (val)); } STMT_END
   5529 +#endif
   5530 +
   5531 +#endif
   5532 +
   5533 +#if (PERL_BCDVERSION >= 0x5004000) && !defined(vnewSVpvf)
   5534 +#if defined(NEED_vnewSVpvf)
   5535 +static SV * DPPP_(my_vnewSVpvf)(pTHX_ const char *pat, va_list *args);
   5536 +static
   5537 +#else
   5538 +extern SV * DPPP_(my_vnewSVpvf)(pTHX_ const char *pat, va_list *args);
   5539 +#endif
   5540 +
   5541 +#ifdef vnewSVpvf
   5542 +#  undef vnewSVpvf
   5543 +#endif
   5544 +#define vnewSVpvf(a,b) DPPP_(my_vnewSVpvf)(aTHX_ a,b)
   5545 +#define Perl_vnewSVpvf DPPP_(my_vnewSVpvf)
   5546 +
   5547 +#if defined(NEED_vnewSVpvf) || defined(NEED_vnewSVpvf_GLOBAL)
   5548 +
   5549 +SV *
   5550 +DPPP_(my_vnewSVpvf)(pTHX_ const char *pat, va_list *args)
   5551 +{
   5552 +  register SV *sv = newSV(0);
   5553 +  sv_vsetpvfn(sv, pat, strlen(pat), args, Null(SV**), 0, Null(bool*));
   5554 +  return sv;
   5555 +}
   5556 +
   5557 +#endif
   5558 +#endif
   5559 +
   5560 +#if (PERL_BCDVERSION >= 0x5004000) && !defined(sv_vcatpvf)
   5561 +#  define sv_vcatpvf(sv, pat, args)  sv_vcatpvfn(sv, pat, strlen(pat), args, Null(SV**), 0, Null(bool*))
   5562 +#endif
   5563 +
   5564 +#if (PERL_BCDVERSION >= 0x5004000) && !defined(sv_vsetpvf)
   5565 +#  define sv_vsetpvf(sv, pat, args)  sv_vsetpvfn(sv, pat, strlen(pat), args, Null(SV**), 0, Null(bool*))
   5566 +#endif
   5567 +
   5568 +#if (PERL_BCDVERSION >= 0x5004000) && !defined(sv_catpvf_mg)
   5569 +#if defined(NEED_sv_catpvf_mg)
   5570 +static void DPPP_(my_sv_catpvf_mg)(pTHX_ SV *sv, const char *pat, ...);
   5571 +static
   5572 +#else
   5573 +extern void DPPP_(my_sv_catpvf_mg)(pTHX_ SV *sv, const char *pat, ...);
   5574 +#endif
   5575 +
   5576 +#define Perl_sv_catpvf_mg DPPP_(my_sv_catpvf_mg)
   5577 +
   5578 +#if defined(NEED_sv_catpvf_mg) || defined(NEED_sv_catpvf_mg_GLOBAL)
   5579 +
   5580 +void
   5581 +DPPP_(my_sv_catpvf_mg)(pTHX_ SV *sv, const char *pat, ...)
   5582 +{
   5583 +  va_list args;
   5584 +  va_start(args, pat);
   5585 +  sv_vcatpvfn(sv, pat, strlen(pat), &args, Null(SV**), 0, Null(bool*));
   5586 +  SvSETMAGIC(sv);
   5587 +  va_end(args);
   5588 +}
   5589 +
   5590 +#endif
   5591 +#endif
   5592 +
   5593 +#ifdef PERL_IMPLICIT_CONTEXT
   5594 +#if (PERL_BCDVERSION >= 0x5004000) && !defined(sv_catpvf_mg_nocontext)
   5595 +#if defined(NEED_sv_catpvf_mg_nocontext)
   5596 +static void DPPP_(my_sv_catpvf_mg_nocontext)(SV *sv, const char *pat, ...);
   5597 +static
   5598 +#else
   5599 +extern void DPPP_(my_sv_catpvf_mg_nocontext)(SV *sv, const char *pat, ...);
   5600 +#endif
   5601 +
   5602 +#define sv_catpvf_mg_nocontext DPPP_(my_sv_catpvf_mg_nocontext)
   5603 +#define Perl_sv_catpvf_mg_nocontext DPPP_(my_sv_catpvf_mg_nocontext)
   5604 +
   5605 +#if defined(NEED_sv_catpvf_mg_nocontext) || defined(NEED_sv_catpvf_mg_nocontext_GLOBAL)
   5606 +
   5607 +void
   5608 +DPPP_(my_sv_catpvf_mg_nocontext)(SV *sv, const char *pat, ...)
   5609 +{
   5610 +  dTHX;
   5611 +  va_list args;
   5612 +  va_start(args, pat);
   5613 +  sv_vcatpvfn(sv, pat, strlen(pat), &args, Null(SV**), 0, Null(bool*));
   5614 +  SvSETMAGIC(sv);
   5615 +  va_end(args);
   5616 +}
   5617 +
   5618 +#endif
   5619 +#endif
   5620 +#endif
   5621 +
   5622 +/* sv_catpvf_mg depends on sv_catpvf_mg_nocontext */
   5623 +#ifndef sv_catpvf_mg
   5624 +#  ifdef PERL_IMPLICIT_CONTEXT
   5625 +#    define sv_catpvf_mg   Perl_sv_catpvf_mg_nocontext
   5626 +#  else
   5627 +#    define sv_catpvf_mg   Perl_sv_catpvf_mg
   5628 +#  endif
   5629 +#endif
   5630 +
   5631 +#if (PERL_BCDVERSION >= 0x5004000) && !defined(sv_vcatpvf_mg)
   5632 +#  define sv_vcatpvf_mg(sv, pat, args)                                     \
   5633 +   STMT_START {                                                            \
   5634 +     sv_vcatpvfn(sv, pat, strlen(pat), args, Null(SV**), 0, Null(bool*));  \
   5635 +     SvSETMAGIC(sv);                                                       \
   5636 +   } STMT_END
   5637 +#endif
   5638 +
   5639 +#if (PERL_BCDVERSION >= 0x5004000) && !defined(sv_setpvf_mg)
   5640 +#if defined(NEED_sv_setpvf_mg)
   5641 +static void DPPP_(my_sv_setpvf_mg)(pTHX_ SV *sv, const char *pat, ...);
   5642 +static
   5643 +#else
   5644 +extern void DPPP_(my_sv_setpvf_mg)(pTHX_ SV *sv, const char *pat, ...);
   5645 +#endif
   5646 +
   5647 +#define Perl_sv_setpvf_mg DPPP_(my_sv_setpvf_mg)
   5648 +
   5649 +#if defined(NEED_sv_setpvf_mg) || defined(NEED_sv_setpvf_mg_GLOBAL)
   5650 +
   5651 +void
   5652 +DPPP_(my_sv_setpvf_mg)(pTHX_ SV *sv, const char *pat, ...)
   5653 +{
   5654 +  va_list args;
   5655 +  va_start(args, pat);
   5656 +  sv_vsetpvfn(sv, pat, strlen(pat), &args, Null(SV**), 0, Null(bool*));
   5657 +  SvSETMAGIC(sv);
   5658 +  va_end(args);
   5659 +}
   5660 +
   5661 +#endif
   5662 +#endif
   5663 +
   5664 +#ifdef PERL_IMPLICIT_CONTEXT
   5665 +#if (PERL_BCDVERSION >= 0x5004000) && !defined(sv_setpvf_mg_nocontext)
   5666 +#if defined(NEED_sv_setpvf_mg_nocontext)
   5667 +static void DPPP_(my_sv_setpvf_mg_nocontext)(SV *sv, const char *pat, ...);
   5668 +static
   5669 +#else
   5670 +extern void DPPP_(my_sv_setpvf_mg_nocontext)(SV *sv, const char *pat, ...);
   5671 +#endif
   5672 +
   5673 +#define sv_setpvf_mg_nocontext DPPP_(my_sv_setpvf_mg_nocontext)
   5674 +#define Perl_sv_setpvf_mg_nocontext DPPP_(my_sv_setpvf_mg_nocontext)
   5675 +
   5676 +#if defined(NEED_sv_setpvf_mg_nocontext) || defined(NEED_sv_setpvf_mg_nocontext_GLOBAL)
   5677 +
   5678 +void
   5679 +DPPP_(my_sv_setpvf_mg_nocontext)(SV *sv, const char *pat, ...)
   5680 +{
   5681 +  dTHX;
   5682 +  va_list args;
   5683 +  va_start(args, pat);
   5684 +  sv_vsetpvfn(sv, pat, strlen(pat), &args, Null(SV**), 0, Null(bool*));
   5685 +  SvSETMAGIC(sv);
   5686 +  va_end(args);
   5687 +}
   5688 +
   5689 +#endif
   5690 +#endif
   5691 +#endif
   5692 +
   5693 +/* sv_setpvf_mg depends on sv_setpvf_mg_nocontext */
   5694 +#ifndef sv_setpvf_mg
   5695 +#  ifdef PERL_IMPLICIT_CONTEXT
   5696 +#    define sv_setpvf_mg   Perl_sv_setpvf_mg_nocontext
   5697 +#  else
   5698 +#    define sv_setpvf_mg   Perl_sv_setpvf_mg
   5699 +#  endif
   5700 +#endif
   5701 +
   5702 +#if (PERL_BCDVERSION >= 0x5004000) && !defined(sv_vsetpvf_mg)
   5703 +#  define sv_vsetpvf_mg(sv, pat, args)                                     \
   5704 +   STMT_START {                                                            \
   5705 +     sv_vsetpvfn(sv, pat, strlen(pat), args, Null(SV**), 0, Null(bool*));  \
   5706 +     SvSETMAGIC(sv);                                                       \
   5707 +   } STMT_END
   5708 +#endif
   5709 +
   5710 +/* Hint: newSVpvn_share
   5711 + * The SVs created by this function only mimic the behaviour of
   5712 + * shared PVs without really being shared. Only use if you know
   5713 + * what you're doing.
   5714 + */
   5715 +
   5716 +#ifndef newSVpvn_share
   5717 +
   5718 +#if defined(NEED_newSVpvn_share)
   5719 +static SV * DPPP_(my_newSVpvn_share)(pTHX_ const char *src, I32 len, U32 hash);
   5720 +static
   5721 +#else
   5722 +extern SV * DPPP_(my_newSVpvn_share)(pTHX_ const char *src, I32 len, U32 hash);
   5723 +#endif
   5724 +
   5725 +#ifdef newSVpvn_share
   5726 +#  undef newSVpvn_share
   5727 +#endif
   5728 +#define newSVpvn_share(a,b,c) DPPP_(my_newSVpvn_share)(aTHX_ a,b,c)
   5729 +#define Perl_newSVpvn_share DPPP_(my_newSVpvn_share)
   5730 +
   5731 +#if defined(NEED_newSVpvn_share) || defined(NEED_newSVpvn_share_GLOBAL)
   5732 +
   5733 +SV *
   5734 +DPPP_(my_newSVpvn_share)(pTHX_ const char *src, I32 len, U32 hash)
   5735 +{
   5736 +  SV *sv;
   5737 +  if (len < 0)
   5738 +    len = -len;
   5739 +  if (!hash)
   5740 +    PERL_HASH(hash, (char*) src, len);
   5741 +  sv = newSVpvn((char *) src, len);
   5742 +  sv_upgrade(sv, SVt_PVIV);
   5743 +  SvIVX(sv) = hash;
   5744 +  SvREADONLY_on(sv);
   5745 +  SvPOK_on(sv);
   5746 +  return sv;
   5747 +}
   5748 +
   5749 +#endif
   5750 +
   5751 +#endif
   5752 +#ifndef SvSHARED_HASH
   5753 +#  define SvSHARED_HASH(sv)              (0 + SvUVX(sv))
   5754 +#endif
   5755 +#ifndef HvNAME_get
   5756 +#  define HvNAME_get(hv)                 HvNAME(hv)
   5757 +#endif
   5758 +#ifndef HvNAMELEN_get
   5759 +#  define HvNAMELEN_get(hv)              (HvNAME_get(hv) ? (I32)strlen(HvNAME_get(hv)) : 0)
   5760 +#endif
   5761 +#ifndef GvSVn
   5762 +#  define GvSVn(gv)                      GvSV(gv)
   5763 +#endif
   5764 +
   5765 +#ifndef isGV_with_GP
   5766 +#  define isGV_with_GP(gv)               isGV(gv)
   5767 +#endif
   5768 +
   5769 +#ifndef gv_fetchpvn_flags
   5770 +#  define gv_fetchpvn_flags(name, len, flags, svt) gv_fetchpv(name, flags, svt)
   5771 +#endif
   5772 +
   5773 +#ifndef gv_fetchsv
   5774 +#  define gv_fetchsv(name, flags, svt)   gv_fetchpv(SvPV_nolen_const(name), flags, svt)
   5775 +#endif
   5776 +#ifndef get_cvn_flags
   5777 +#  define get_cvn_flags(name, namelen, flags) get_cv(name, flags)
   5778 +#endif
   5779 +#ifndef WARN_ALL
   5780 +#  define WARN_ALL                       0
   5781 +#endif
   5782 +
   5783 +#ifndef WARN_CLOSURE
   5784 +#  define WARN_CLOSURE                   1
   5785 +#endif
   5786 +
   5787 +#ifndef WARN_DEPRECATED
   5788 +#  define WARN_DEPRECATED                2
   5789 +#endif
   5790 +
   5791 +#ifndef WARN_EXITING
   5792 +#  define WARN_EXITING                   3
   5793 +#endif
   5794 +
   5795 +#ifndef WARN_GLOB
   5796 +#  define WARN_GLOB                      4
   5797 +#endif
   5798 +
   5799 +#ifndef WARN_IO
   5800 +#  define WARN_IO                        5
   5801 +#endif
   5802 +
   5803 +#ifndef WARN_CLOSED
   5804 +#  define WARN_CLOSED                    6
   5805 +#endif
   5806 +
   5807 +#ifndef WARN_EXEC
   5808 +#  define WARN_EXEC                      7
   5809 +#endif
   5810 +
   5811 +#ifndef WARN_LAYER
   5812 +#  define WARN_LAYER                     8
   5813 +#endif
   5814 +
   5815 +#ifndef WARN_NEWLINE
   5816 +#  define WARN_NEWLINE                   9
   5817 +#endif
   5818 +
   5819 +#ifndef WARN_PIPE
   5820 +#  define WARN_PIPE                      10
   5821 +#endif
   5822 +
   5823 +#ifndef WARN_UNOPENED
   5824 +#  define WARN_UNOPENED                  11
   5825 +#endif
   5826 +
   5827 +#ifndef WARN_MISC
   5828 +#  define WARN_MISC                      12
   5829 +#endif
   5830 +
   5831 +#ifndef WARN_NUMERIC
   5832 +#  define WARN_NUMERIC                   13
   5833 +#endif
   5834 +
   5835 +#ifndef WARN_ONCE
   5836 +#  define WARN_ONCE                      14
   5837 +#endif
   5838 +
   5839 +#ifndef WARN_OVERFLOW
   5840 +#  define WARN_OVERFLOW                  15
   5841 +#endif
   5842 +
   5843 +#ifndef WARN_PACK
   5844 +#  define WARN_PACK                      16
   5845 +#endif
   5846 +
   5847 +#ifndef WARN_PORTABLE
   5848 +#  define WARN_PORTABLE                  17
   5849 +#endif
   5850 +
   5851 +#ifndef WARN_RECURSION
   5852 +#  define WARN_RECURSION                 18
   5853 +#endif
   5854 +
   5855 +#ifndef WARN_REDEFINE
   5856 +#  define WARN_REDEFINE                  19
   5857 +#endif
   5858 +
   5859 +#ifndef WARN_REGEXP
   5860 +#  define WARN_REGEXP                    20
   5861 +#endif
   5862 +
   5863 +#ifndef WARN_SEVERE
   5864 +#  define WARN_SEVERE                    21
   5865 +#endif
   5866 +
   5867 +#ifndef WARN_DEBUGGING
   5868 +#  define WARN_DEBUGGING                 22
   5869 +#endif
   5870 +
   5871 +#ifndef WARN_INPLACE
   5872 +#  define WARN_INPLACE                   23
   5873 +#endif
   5874 +
   5875 +#ifndef WARN_INTERNAL
   5876 +#  define WARN_INTERNAL                  24
   5877 +#endif
   5878 +
   5879 +#ifndef WARN_MALLOC
   5880 +#  define WARN_MALLOC                    25
   5881 +#endif
   5882 +
   5883 +#ifndef WARN_SIGNAL
   5884 +#  define WARN_SIGNAL                    26
   5885 +#endif
   5886 +
   5887 +#ifndef WARN_SUBSTR
   5888 +#  define WARN_SUBSTR                    27
   5889 +#endif
   5890 +
   5891 +#ifndef WARN_SYNTAX
   5892 +#  define WARN_SYNTAX                    28
   5893 +#endif
   5894 +
   5895 +#ifndef WARN_AMBIGUOUS
   5896 +#  define WARN_AMBIGUOUS                 29
   5897 +#endif
   5898 +
   5899 +#ifndef WARN_BAREWORD
   5900 +#  define WARN_BAREWORD                  30
   5901 +#endif
   5902 +
   5903 +#ifndef WARN_DIGIT
   5904 +#  define WARN_DIGIT                     31
   5905 +#endif
   5906 +
   5907 +#ifndef WARN_PARENTHESIS
   5908 +#  define WARN_PARENTHESIS               32
   5909 +#endif
   5910 +
   5911 +#ifndef WARN_PRECEDENCE
   5912 +#  define WARN_PRECEDENCE                33
   5913 +#endif
   5914 +
   5915 +#ifndef WARN_PRINTF
   5916 +#  define WARN_PRINTF                    34
   5917 +#endif
   5918 +
   5919 +#ifndef WARN_PROTOTYPE
   5920 +#  define WARN_PROTOTYPE                 35
   5921 +#endif
   5922 +
   5923 +#ifndef WARN_QW
   5924 +#  define WARN_QW                        36
   5925 +#endif
   5926 +
   5927 +#ifndef WARN_RESERVED
   5928 +#  define WARN_RESERVED                  37
   5929 +#endif
   5930 +
   5931 +#ifndef WARN_SEMICOLON
   5932 +#  define WARN_SEMICOLON                 38
   5933 +#endif
   5934 +
   5935 +#ifndef WARN_TAINT
   5936 +#  define WARN_TAINT                     39
   5937 +#endif
   5938 +
   5939 +#ifndef WARN_THREADS
   5940 +#  define WARN_THREADS                   40
   5941 +#endif
   5942 +
   5943 +#ifndef WARN_UNINITIALIZED
   5944 +#  define WARN_UNINITIALIZED             41
   5945 +#endif
   5946 +
   5947 +#ifndef WARN_UNPACK
   5948 +#  define WARN_UNPACK                    42
   5949 +#endif
   5950 +
   5951 +#ifndef WARN_UNTIE
   5952 +#  define WARN_UNTIE                     43
   5953 +#endif
   5954 +
   5955 +#ifndef WARN_UTF8
   5956 +#  define WARN_UTF8                      44
   5957 +#endif
   5958 +
   5959 +#ifndef WARN_VOID
   5960 +#  define WARN_VOID                      45
   5961 +#endif
   5962 +
   5963 +#ifndef WARN_ASSERTIONS
   5964 +#  define WARN_ASSERTIONS                46
   5965 +#endif
   5966 +#ifndef packWARN
   5967 +#  define packWARN(a)                    (a)
   5968 +#endif
   5969 +
   5970 +#ifndef ckWARN
   5971 +#  ifdef G_WARN_ON
   5972 +#    define  ckWARN(a)                  (PL_dowarn & G_WARN_ON)
   5973 +#  else
   5974 +#    define  ckWARN(a)                  PL_dowarn
   5975 +#  endif
   5976 +#endif
   5977 +
   5978 +#if (PERL_BCDVERSION >= 0x5004000) && !defined(warner)
   5979 +#if defined(NEED_warner)
   5980 +static void DPPP_(my_warner)(U32 err, const char *pat, ...);
   5981 +static
   5982 +#else
   5983 +extern void DPPP_(my_warner)(U32 err, const char *pat, ...);
   5984 +#endif
   5985 +
   5986 +#define Perl_warner DPPP_(my_warner)
   5987 +
   5988 +#if defined(NEED_warner) || defined(NEED_warner_GLOBAL)
   5989 +
   5990 +void
   5991 +DPPP_(my_warner)(U32 err, const char *pat, ...)
   5992 +{
   5993 +  SV *sv;
   5994 +  va_list args;
   5995 +
   5996 +  PERL_UNUSED_ARG(err);
   5997 +
   5998 +  va_start(args, pat);
   5999 +  sv = vnewSVpvf(pat, &args);
   6000 +  va_end(args);
   6001 +  sv_2mortal(sv);
   6002 +  warn("%s", SvPV_nolen(sv));
   6003 +}
   6004 +
   6005 +#define warner  Perl_warner
   6006 +
   6007 +#define Perl_warner_nocontext  Perl_warner
   6008 +
   6009 +#endif
   6010 +#endif
   6011 +
   6012 +/* concatenating with "" ensures that only literal strings are accepted as argument
   6013 + * note that STR_WITH_LEN() can't be used as argument to macros or functions that
   6014 + * under some configurations might be macros
   6015 + */
   6016 +#ifndef STR_WITH_LEN
   6017 +#  define STR_WITH_LEN(s)                (s ""), (sizeof(s)-1)
   6018 +#endif
   6019 +#ifndef newSVpvs
   6020 +#  define newSVpvs(str)                  newSVpvn(str "", sizeof(str) - 1)
   6021 +#endif
   6022 +
   6023 +#ifndef newSVpvs_flags
   6024 +#  define newSVpvs_flags(str, flags)     newSVpvn_flags(str "", sizeof(str) - 1, flags)
   6025 +#endif
   6026 +
   6027 +#ifndef newSVpvs_share
   6028 +#  define newSVpvs_share(str)            newSVpvn_share(str "", sizeof(str) - 1, 0)
   6029 +#endif
   6030 +
   6031 +#ifndef sv_catpvs
   6032 +#  define sv_catpvs(sv, str)             sv_catpvn(sv, str "", sizeof(str) - 1)
   6033 +#endif
   6034 +
   6035 +#ifndef sv_setpvs
   6036 +#  define sv_setpvs(sv, str)             sv_setpvn(sv, str "", sizeof(str) - 1)
   6037 +#endif
   6038 +
   6039 +#ifndef hv_fetchs
   6040 +#  define hv_fetchs(hv, key, lval)       hv_fetch(hv, key "", sizeof(key) - 1, lval)
   6041 +#endif
   6042 +
   6043 +#ifndef hv_stores
   6044 +#  define hv_stores(hv, key, val)        hv_store(hv, key "", sizeof(key) - 1, val, 0)
   6045 +#endif
   6046 +#ifndef gv_fetchpvs
   6047 +#  define gv_fetchpvs(name, flags, svt)  gv_fetchpvn_flags(name "", sizeof(name) - 1, flags, svt)
   6048 +#endif
   6049 +
   6050 +#ifndef gv_stashpvs
   6051 +#  define gv_stashpvs(name, flags)       gv_stashpvn(name "", sizeof(name) - 1, flags)
   6052 +#endif
   6053 +#ifndef get_cvs
   6054 +#  define get_cvs(name, flags)           get_cvn_flags(name "", sizeof(name)-1, flags)
   6055 +#endif
   6056 +#ifndef SvGETMAGIC
   6057 +#  define SvGETMAGIC(x)                  STMT_START { if (SvGMAGICAL(x)) mg_get(x); } STMT_END
   6058 +#endif
   6059 +#ifndef PERL_MAGIC_sv
   6060 +#  define PERL_MAGIC_sv                  '\0'
   6061 +#endif
   6062 +
   6063 +#ifndef PERL_MAGIC_overload
   6064 +#  define PERL_MAGIC_overload            'A'
   6065 +#endif
   6066 +
   6067 +#ifndef PERL_MAGIC_overload_elem
   6068 +#  define PERL_MAGIC_overload_elem       'a'
   6069 +#endif
   6070 +
   6071 +#ifndef PERL_MAGIC_overload_table
   6072 +#  define PERL_MAGIC_overload_table      'c'
   6073 +#endif
   6074 +
   6075 +#ifndef PERL_MAGIC_bm
   6076 +#  define PERL_MAGIC_bm                  'B'
   6077 +#endif
   6078 +
   6079 +#ifndef PERL_MAGIC_regdata
   6080 +#  define PERL_MAGIC_regdata             'D'
   6081 +#endif
   6082 +
   6083 +#ifndef PERL_MAGIC_regdatum
   6084 +#  define PERL_MAGIC_regdatum            'd'
   6085 +#endif
   6086 +
   6087 +#ifndef PERL_MAGIC_env
   6088 +#  define PERL_MAGIC_env                 'E'
   6089 +#endif
   6090 +
   6091 +#ifndef PERL_MAGIC_envelem
   6092 +#  define PERL_MAGIC_envelem             'e'
   6093 +#endif
   6094 +
   6095 +#ifndef PERL_MAGIC_fm
   6096 +#  define PERL_MAGIC_fm                  'f'
   6097 +#endif
   6098 +
   6099 +#ifndef PERL_MAGIC_regex_global
   6100 +#  define PERL_MAGIC_regex_global        'g'
   6101 +#endif
   6102 +
   6103 +#ifndef PERL_MAGIC_isa
   6104 +#  define PERL_MAGIC_isa                 'I'
   6105 +#endif
   6106 +
   6107 +#ifndef PERL_MAGIC_isaelem
   6108 +#  define PERL_MAGIC_isaelem             'i'
   6109 +#endif
   6110 +
   6111 +#ifndef PERL_MAGIC_nkeys
   6112 +#  define PERL_MAGIC_nkeys               'k'
   6113 +#endif
   6114 +
   6115 +#ifndef PERL_MAGIC_dbfile
   6116 +#  define PERL_MAGIC_dbfile              'L'
   6117 +#endif
   6118 +
   6119 +#ifndef PERL_MAGIC_dbline
   6120 +#  define PERL_MAGIC_dbline              'l'
   6121 +#endif
   6122 +
   6123 +#ifndef PERL_MAGIC_mutex
   6124 +#  define PERL_MAGIC_mutex               'm'
   6125 +#endif
   6126 +
   6127 +#ifndef PERL_MAGIC_shared
   6128 +#  define PERL_MAGIC_shared              'N'
   6129 +#endif
   6130 +
   6131 +#ifndef PERL_MAGIC_shared_scalar
   6132 +#  define PERL_MAGIC_shared_scalar       'n'
   6133 +#endif
   6134 +
   6135 +#ifndef PERL_MAGIC_collxfrm
   6136 +#  define PERL_MAGIC_collxfrm            'o'
   6137 +#endif
   6138 +
   6139 +#ifndef PERL_MAGIC_tied
   6140 +#  define PERL_MAGIC_tied                'P'
   6141 +#endif
   6142 +
   6143 +#ifndef PERL_MAGIC_tiedelem
   6144 +#  define PERL_MAGIC_tiedelem            'p'
   6145 +#endif
   6146 +
   6147 +#ifndef PERL_MAGIC_tiedscalar
   6148 +#  define PERL_MAGIC_tiedscalar          'q'
   6149 +#endif
   6150 +
   6151 +#ifndef PERL_MAGIC_qr
   6152 +#  define PERL_MAGIC_qr                  'r'
   6153 +#endif
   6154 +
   6155 +#ifndef PERL_MAGIC_sig
   6156 +#  define PERL_MAGIC_sig                 'S'
   6157 +#endif
   6158 +
   6159 +#ifndef PERL_MAGIC_sigelem
   6160 +#  define PERL_MAGIC_sigelem             's'
   6161 +#endif
   6162 +
   6163 +#ifndef PERL_MAGIC_taint
   6164 +#  define PERL_MAGIC_taint               't'
   6165 +#endif
   6166 +
   6167 +#ifndef PERL_MAGIC_uvar
   6168 +#  define PERL_MAGIC_uvar                'U'
   6169 +#endif
   6170 +
   6171 +#ifndef PERL_MAGIC_uvar_elem
   6172 +#  define PERL_MAGIC_uvar_elem           'u'
   6173 +#endif
   6174 +
   6175 +#ifndef PERL_MAGIC_vstring
   6176 +#  define PERL_MAGIC_vstring             'V'
   6177 +#endif
   6178 +
   6179 +#ifndef PERL_MAGIC_vec
   6180 +#  define PERL_MAGIC_vec                 'v'
   6181 +#endif
   6182 +
   6183 +#ifndef PERL_MAGIC_utf8
   6184 +#  define PERL_MAGIC_utf8                'w'
   6185 +#endif
   6186 +
   6187 +#ifndef PERL_MAGIC_substr
   6188 +#  define PERL_MAGIC_substr              'x'
   6189 +#endif
   6190 +
   6191 +#ifndef PERL_MAGIC_defelem
   6192 +#  define PERL_MAGIC_defelem             'y'
   6193 +#endif
   6194 +
   6195 +#ifndef PERL_MAGIC_glob
   6196 +#  define PERL_MAGIC_glob                '*'
   6197 +#endif
   6198 +
   6199 +#ifndef PERL_MAGIC_arylen
   6200 +#  define PERL_MAGIC_arylen              '#'
   6201 +#endif
   6202 +
   6203 +#ifndef PERL_MAGIC_pos
   6204 +#  define PERL_MAGIC_pos                 '.'
   6205 +#endif
   6206 +
   6207 +#ifndef PERL_MAGIC_backref
   6208 +#  define PERL_MAGIC_backref             '<'
   6209 +#endif
   6210 +
   6211 +#ifndef PERL_MAGIC_ext
   6212 +#  define PERL_MAGIC_ext                 '~'
   6213 +#endif
   6214 +
   6215 +/* That's the best we can do... */
   6216 +#ifndef sv_catpvn_nomg
   6217 +#  define sv_catpvn_nomg                 sv_catpvn
   6218 +#endif
   6219 +
   6220 +#ifndef sv_catsv_nomg
   6221 +#  define sv_catsv_nomg                  sv_catsv
   6222 +#endif
   6223 +
   6224 +#ifndef sv_setsv_nomg
   6225 +#  define sv_setsv_nomg                  sv_setsv
   6226 +#endif
   6227 +
   6228 +#ifndef sv_pvn_nomg
   6229 +#  define sv_pvn_nomg                    sv_pvn
   6230 +#endif
   6231 +
   6232 +#ifndef SvIV_nomg
   6233 +#  define SvIV_nomg                      SvIV
   6234 +#endif
   6235 +
   6236 +#ifndef SvUV_nomg
   6237 +#  define SvUV_nomg                      SvUV
   6238 +#endif
   6239 +
   6240 +#ifndef sv_catpv_mg
   6241 +#  define sv_catpv_mg(sv, ptr)          \
   6242 +   STMT_START {                         \
   6243 +     SV *TeMpSv = sv;                   \
   6244 +     sv_catpv(TeMpSv,ptr);              \
   6245 +     SvSETMAGIC(TeMpSv);                \
   6246 +   } STMT_END
   6247 +#endif
   6248 +
   6249 +#ifndef sv_catpvn_mg
   6250 +#  define sv_catpvn_mg(sv, ptr, len)    \
   6251 +   STMT_START {                         \
   6252 +     SV *TeMpSv = sv;                   \
   6253 +     sv_catpvn(TeMpSv,ptr,len);         \
   6254 +     SvSETMAGIC(TeMpSv);                \
   6255 +   } STMT_END
   6256 +#endif
   6257 +
   6258 +#ifndef sv_catsv_mg
   6259 +#  define sv_catsv_mg(dsv, ssv)         \
   6260 +   STMT_START {                         \
   6261 +     SV *TeMpSv = dsv;                  \
   6262 +     sv_catsv(TeMpSv,ssv);              \
   6263 +     SvSETMAGIC(TeMpSv);                \
   6264 +   } STMT_END
   6265 +#endif
   6266 +
   6267 +#ifndef sv_setiv_mg
   6268 +#  define sv_setiv_mg(sv, i)            \
   6269 +   STMT_START {                         \
   6270 +     SV *TeMpSv = sv;                   \
   6271 +     sv_setiv(TeMpSv,i);                \
   6272 +     SvSETMAGIC(TeMpSv);                \
   6273 +   } STMT_END
   6274 +#endif
   6275 +
   6276 +#ifndef sv_setnv_mg
   6277 +#  define sv_setnv_mg(sv, num)          \
   6278 +   STMT_START {                         \
   6279 +     SV *TeMpSv = sv;                   \
   6280 +     sv_setnv(TeMpSv,num);              \
   6281 +     SvSETMAGIC(TeMpSv);                \
   6282 +   } STMT_END
   6283 +#endif
   6284 +
   6285 +#ifndef sv_setpv_mg
   6286 +#  define sv_setpv_mg(sv, ptr)          \
   6287 +   STMT_START {                         \
   6288 +     SV *TeMpSv = sv;                   \
   6289 +     sv_setpv(TeMpSv,ptr);              \
   6290 +     SvSETMAGIC(TeMpSv);                \
   6291 +   } STMT_END
   6292 +#endif
   6293 +
   6294 +#ifndef sv_setpvn_mg
   6295 +#  define sv_setpvn_mg(sv, ptr, len)    \
   6296 +   STMT_START {                         \
   6297 +     SV *TeMpSv = sv;                   \
   6298 +     sv_setpvn(TeMpSv,ptr,len);         \
   6299 +     SvSETMAGIC(TeMpSv);                \
   6300 +   } STMT_END
   6301 +#endif
   6302 +
   6303 +#ifndef sv_setsv_mg
   6304 +#  define sv_setsv_mg(dsv, ssv)         \
   6305 +   STMT_START {                         \
   6306 +     SV *TeMpSv = dsv;                  \
   6307 +     sv_setsv(TeMpSv,ssv);              \
   6308 +     SvSETMAGIC(TeMpSv);                \
   6309 +   } STMT_END
   6310 +#endif
   6311 +
   6312 +#ifndef sv_setuv_mg
   6313 +#  define sv_setuv_mg(sv, i)            \
   6314 +   STMT_START {                         \
   6315 +     SV *TeMpSv = sv;                   \
   6316 +     sv_setuv(TeMpSv,i);                \
   6317 +     SvSETMAGIC(TeMpSv);                \
   6318 +   } STMT_END
   6319 +#endif
   6320 +
   6321 +#ifndef sv_usepvn_mg
   6322 +#  define sv_usepvn_mg(sv, ptr, len)    \
   6323 +   STMT_START {                         \
   6324 +     SV *TeMpSv = sv;                   \
   6325 +     sv_usepvn(TeMpSv,ptr,len);         \
   6326 +     SvSETMAGIC(TeMpSv);                \
   6327 +   } STMT_END
   6328 +#endif
   6329 +#ifndef SvVSTRING_mg
   6330 +#  define SvVSTRING_mg(sv)               (SvMAGICAL(sv) ? mg_find(sv, PERL_MAGIC_vstring) : NULL)
   6331 +#endif
   6332 +
   6333 +/* Hint: sv_magic_portable
   6334 + * This is a compatibility function that is only available with
   6335 + * Devel::PPPort. It is NOT in the perl core.
   6336 + * Its purpose is to mimic the 5.8.0 behaviour of sv_magic() when
   6337 + * it is being passed a name pointer with namlen == 0. In that
   6338 + * case, perl 5.8.0 and later store the pointer, not a copy of it.
   6339 + * The compatibility can be provided back to perl 5.004. With
   6340 + * earlier versions, the code will not compile.
   6341 + */
   6342 +
   6343 +#if (PERL_BCDVERSION < 0x5004000)
   6344 +
   6345 +  /* code that uses sv_magic_portable will not compile */
   6346 +
   6347 +#elif (PERL_BCDVERSION < 0x5008000)
   6348 +
   6349 +#  define sv_magic_portable(sv, obj, how, name, namlen)     \
   6350 +   STMT_START {                                             \
   6351 +     SV *SvMp_sv = (sv);                                    \
   6352 +     char *SvMp_name = (char *) (name);                     \
   6353 +     I32 SvMp_namlen = (namlen);                            \
   6354 +     if (SvMp_name && SvMp_namlen == 0)                     \
   6355 +     {                                                      \
   6356 +       MAGIC *mg;                                           \
   6357 +       sv_magic(SvMp_sv, obj, how, 0, 0);                   \
   6358 +       mg = SvMAGIC(SvMp_sv);                               \
   6359 +       mg->mg_len = -42; /* XXX: this is the tricky part */ \
   6360 +       mg->mg_ptr = SvMp_name;                              \
   6361 +     }                                                      \
   6362 +     else                                                   \
   6363 +     {                                                      \
   6364 +       sv_magic(SvMp_sv, obj, how, SvMp_name, SvMp_namlen); \
   6365 +     }                                                      \
   6366 +   } STMT_END
   6367 +
   6368 +#else
   6369 +
   6370 +#  define sv_magic_portable(a, b, c, d, e)  sv_magic(a, b, c, d, e)
   6371 +
   6372 +#endif
   6373 +
   6374 +#ifdef USE_ITHREADS
   6375 +#ifndef CopFILE
   6376 +#  define CopFILE(c)                     ((c)->cop_file)
   6377 +#endif
   6378 +
   6379 +#ifndef CopFILEGV
   6380 +#  define CopFILEGV(c)                   (CopFILE(c) ? gv_fetchfile(CopFILE(c)) : Nullgv)
   6381 +#endif
   6382 +
   6383 +#ifndef CopFILE_set
   6384 +#  define CopFILE_set(c,pv)              ((c)->cop_file = savepv(pv))
   6385 +#endif
   6386 +
   6387 +#ifndef CopFILESV
   6388 +#  define CopFILESV(c)                   (CopFILE(c) ? GvSV(gv_fetchfile(CopFILE(c))) : Nullsv)
   6389 +#endif
   6390 +
   6391 +#ifndef CopFILEAV
   6392 +#  define CopFILEAV(c)                   (CopFILE(c) ? GvAV(gv_fetchfile(CopFILE(c))) : Nullav)
   6393 +#endif
   6394 +
   6395 +#ifndef CopSTASHPV
   6396 +#  define CopSTASHPV(c)                  ((c)->cop_stashpv)
   6397 +#endif
   6398 +
   6399 +#ifndef CopSTASHPV_set
   6400 +#  define CopSTASHPV_set(c,pv)           ((c)->cop_stashpv = ((pv) ? savepv(pv) : Nullch))
   6401 +#endif
   6402 +
   6403 +#ifndef CopSTASH
   6404 +#  define CopSTASH(c)                    (CopSTASHPV(c) ? gv_stashpv(CopSTASHPV(c),GV_ADD) : Nullhv)
   6405 +#endif
   6406 +
   6407 +#ifndef CopSTASH_set
   6408 +#  define CopSTASH_set(c,hv)             CopSTASHPV_set(c, (hv) ? HvNAME(hv) : Nullch)
   6409 +#endif
   6410 +
   6411 +#ifndef CopSTASH_eq
   6412 +#  define CopSTASH_eq(c,hv)              ((hv) && (CopSTASHPV(c) == HvNAME(hv) \
   6413 +                                        || (CopSTASHPV(c) && HvNAME(hv) \
   6414 +                                        && strEQ(CopSTASHPV(c), HvNAME(hv)))))
   6415 +#endif
   6416 +
   6417 +#else
   6418 +#ifndef CopFILEGV
   6419 +#  define CopFILEGV(c)                   ((c)->cop_filegv)
   6420 +#endif
   6421 +
   6422 +#ifndef CopFILEGV_set
   6423 +#  define CopFILEGV_set(c,gv)            ((c)->cop_filegv = (GV*)SvREFCNT_inc(gv))
   6424 +#endif
   6425 +
   6426 +#ifndef CopFILE_set
   6427 +#  define CopFILE_set(c,pv)              CopFILEGV_set((c), gv_fetchfile(pv))
   6428 +#endif
   6429 +
   6430 +#ifndef CopFILESV
   6431 +#  define CopFILESV(c)                   (CopFILEGV(c) ? GvSV(CopFILEGV(c)) : Nullsv)
   6432 +#endif
   6433 +
   6434 +#ifndef CopFILEAV
   6435 +#  define CopFILEAV(c)                   (CopFILEGV(c) ? GvAV(CopFILEGV(c)) : Nullav)
   6436 +#endif
   6437 +
   6438 +#ifndef CopFILE
   6439 +#  define CopFILE(c)                     (CopFILESV(c) ? SvPVX(CopFILESV(c)) : Nullch)
   6440 +#endif
   6441 +
   6442 +#ifndef CopSTASH
   6443 +#  define CopSTASH(c)                    ((c)->cop_stash)
   6444 +#endif
   6445 +
   6446 +#ifndef CopSTASH_set
   6447 +#  define CopSTASH_set(c,hv)             ((c)->cop_stash = (hv))
   6448 +#endif
   6449 +
   6450 +#ifndef CopSTASHPV
   6451 +#  define CopSTASHPV(c)                  (CopSTASH(c) ? HvNAME(CopSTASH(c)) : Nullch)
   6452 +#endif
   6453 +
   6454 +#ifndef CopSTASHPV_set
   6455 +#  define CopSTASHPV_set(c,pv)           CopSTASH_set((c), gv_stashpv(pv,GV_ADD))
   6456 +#endif
   6457 +
   6458 +#ifndef CopSTASH_eq
   6459 +#  define CopSTASH_eq(c,hv)              (CopSTASH(c) == (hv))
   6460 +#endif
   6461 +
   6462 +#endif /* USE_ITHREADS */
   6463 +#ifndef IN_PERL_COMPILETIME
   6464 +#  define IN_PERL_COMPILETIME            (PL_curcop == &PL_compiling)
   6465 +#endif
   6466 +
   6467 +#ifndef IN_LOCALE_RUNTIME
   6468 +#  define IN_LOCALE_RUNTIME              (PL_curcop->op_private & HINT_LOCALE)
   6469 +#endif
   6470 +
   6471 +#ifndef IN_LOCALE_COMPILETIME
   6472 +#  define IN_LOCALE_COMPILETIME          (PL_hints & HINT_LOCALE)
   6473 +#endif
   6474 +
   6475 +#ifndef IN_LOCALE
   6476 +#  define IN_LOCALE                      (IN_PERL_COMPILETIME ? IN_LOCALE_COMPILETIME : IN_LOCALE_RUNTIME)
   6477 +#endif
   6478 +#ifndef IS_NUMBER_IN_UV
   6479 +#  define IS_NUMBER_IN_UV                0x01
   6480 +#endif
   6481 +
   6482 +#ifndef IS_NUMBER_GREATER_THAN_UV_MAX
   6483 +#  define IS_NUMBER_GREATER_THAN_UV_MAX  0x02
   6484 +#endif
   6485 +
   6486 +#ifndef IS_NUMBER_NOT_INT
   6487 +#  define IS_NUMBER_NOT_INT              0x04
   6488 +#endif
   6489 +
   6490 +#ifndef IS_NUMBER_NEG
   6491 +#  define IS_NUMBER_NEG                  0x08
   6492 +#endif
   6493 +
   6494 +#ifndef IS_NUMBER_INFINITY
   6495 +#  define IS_NUMBER_INFINITY             0x10
   6496 +#endif
   6497 +
   6498 +#ifndef IS_NUMBER_NAN
   6499 +#  define IS_NUMBER_NAN                  0x20
   6500 +#endif
   6501 +#ifndef GROK_NUMERIC_RADIX
   6502 +#  define GROK_NUMERIC_RADIX(sp, send)   grok_numeric_radix(sp, send)
   6503 +#endif
   6504 +#ifndef PERL_SCAN_GREATER_THAN_UV_MAX
   6505 +#  define PERL_SCAN_GREATER_THAN_UV_MAX  0x02
   6506 +#endif
   6507 +
   6508 +#ifndef PERL_SCAN_SILENT_ILLDIGIT
   6509 +#  define PERL_SCAN_SILENT_ILLDIGIT      0x04
   6510 +#endif
   6511 +
   6512 +#ifndef PERL_SCAN_ALLOW_UNDERSCORES
   6513 +#  define PERL_SCAN_ALLOW_UNDERSCORES    0x01
   6514 +#endif
   6515 +
   6516 +#ifndef PERL_SCAN_DISALLOW_PREFIX
   6517 +#  define PERL_SCAN_DISALLOW_PREFIX      0x02
   6518 +#endif
   6519 +
   6520 +#ifndef grok_numeric_radix
   6521 +#if defined(NEED_grok_numeric_radix)
   6522 +static bool DPPP_(my_grok_numeric_radix)(pTHX_ const char ** sp, const char * send);
   6523 +static
   6524 +#else
   6525 +extern bool DPPP_(my_grok_numeric_radix)(pTHX_ const char ** sp, const char * send);
   6526 +#endif
   6527 +
   6528 +#ifdef grok_numeric_radix
   6529 +#  undef grok_numeric_radix
   6530 +#endif
   6531 +#define grok_numeric_radix(a,b) DPPP_(my_grok_numeric_radix)(aTHX_ a,b)
   6532 +#define Perl_grok_numeric_radix DPPP_(my_grok_numeric_radix)
   6533 +
   6534 +#if defined(NEED_grok_numeric_radix) || defined(NEED_grok_numeric_radix_GLOBAL)
   6535 +bool
   6536 +DPPP_(my_grok_numeric_radix)(pTHX_ const char **sp, const char *send)
   6537 +{
   6538 +#ifdef USE_LOCALE_NUMERIC
   6539 +#ifdef PL_numeric_radix_sv
   6540 +    if (PL_numeric_radix_sv && IN_LOCALE) {
   6541 +        STRLEN len;
   6542 +        char* radix = SvPV(PL_numeric_radix_sv, len);
   6543 +        if (*sp + len <= send && memEQ(*sp, radix, len)) {
   6544 +            *sp += len;
   6545 +            return TRUE;
   6546 +        }
   6547 +    }
   6548 +#else
   6549 +    /* older perls don't have PL_numeric_radix_sv so the radix
   6550 +     * must manually be requested from locale.h
   6551 +     */
   6552 +#include <locale.h>
   6553 +    dTHR;  /* needed for older threaded perls */
   6554 +    struct lconv *lc = localeconv();
   6555 +    char *radix = lc->decimal_point;
   6556 +    if (radix && IN_LOCALE) {
   6557 +        STRLEN len = strlen(radix);
   6558 +        if (*sp + len <= send && memEQ(*sp, radix, len)) {
   6559 +            *sp += len;
   6560 +            return TRUE;
   6561 +        }
   6562 +    }
   6563 +#endif
   6564 +#endif /* USE_LOCALE_NUMERIC */
   6565 +    /* always try "." if numeric radix didn't match because
   6566 +     * we may have data from different locales mixed */
   6567 +    if (*sp < send && **sp == '.') {
   6568 +        ++*sp;
   6569 +        return TRUE;
   6570 +    }
   6571 +    return FALSE;
   6572 +}
   6573 +#endif
   6574 +#endif
   6575 +
   6576 +#ifndef grok_number
   6577 +#if defined(NEED_grok_number)
   6578 +static int DPPP_(my_grok_number)(pTHX_ const char * pv, STRLEN len, UV * valuep);
   6579 +static
   6580 +#else
   6581 +extern int DPPP_(my_grok_number)(pTHX_ const char * pv, STRLEN len, UV * valuep);
   6582 +#endif
   6583 +
   6584 +#ifdef grok_number
   6585 +#  undef grok_number
   6586 +#endif
   6587 +#define grok_number(a,b,c) DPPP_(my_grok_number)(aTHX_ a,b,c)
   6588 +#define Perl_grok_number DPPP_(my_grok_number)
   6589 +
   6590 +#if defined(NEED_grok_number) || defined(NEED_grok_number_GLOBAL)
   6591 +int
   6592 +DPPP_(my_grok_number)(pTHX_ const char *pv, STRLEN len, UV *valuep)
   6593 +{
   6594 +  const char *s = pv;
   6595 +  const char *send = pv + len;
   6596 +  const UV max_div_10 = UV_MAX / 10;
   6597 +  const char max_mod_10 = UV_MAX % 10;
   6598 +  int numtype = 0;
   6599 +  int sawinf = 0;
   6600 +  int sawnan = 0;
   6601 +
   6602 +  while (s < send && isSPACE(*s))
   6603 +    s++;
   6604 +  if (s == send) {
   6605 +    return 0;
   6606 +  } else if (*s == '-') {
   6607 +    s++;
   6608 +    numtype = IS_NUMBER_NEG;
   6609 +  }
   6610 +  else if (*s == '+')
   6611 +  s++;
   6612 +
   6613 +  if (s == send)
   6614 +    return 0;
   6615 +
   6616 +  /* next must be digit or the radix separator or beginning of infinity */
   6617 +  if (isDIGIT(*s)) {
   6618 +    /* UVs are at least 32 bits, so the first 9 decimal digits cannot
   6619 +       overflow.  */
   6620 +    UV value = *s - '0';
   6621 +    /* This construction seems to be more optimiser friendly.
   6622 +       (without it gcc does the isDIGIT test and the *s - '0' separately)
   6623 +       With it gcc on arm is managing 6 instructions (6 cycles) per digit.
   6624 +       In theory the optimiser could deduce how far to unroll the loop
   6625 +       before checking for overflow.  */
   6626 +    if (++s < send) {
   6627 +      int digit = *s - '0';
   6628 +      if (digit >= 0 && digit <= 9) {
   6629 +        value = value * 10 + digit;
   6630 +        if (++s < send) {
   6631 +          digit = *s - '0';
   6632 +          if (digit >= 0 && digit <= 9) {
   6633 +            value = value * 10 + digit;
   6634 +            if (++s < send) {
   6635 +              digit = *s - '0';
   6636 +              if (digit >= 0 && digit <= 9) {
   6637 +                value = value * 10 + digit;
   6638 +                if (++s < send) {
   6639 +                  digit = *s - '0';
   6640 +                  if (digit >= 0 && digit <= 9) {
   6641 +                    value = value * 10 + digit;
   6642 +                    if (++s < send) {
   6643 +                      digit = *s - '0';
   6644 +                      if (digit >= 0 && digit <= 9) {
   6645 +                        value = value * 10 + digit;
   6646 +                        if (++s < send) {
   6647 +                          digit = *s - '0';
   6648 +                          if (digit >= 0 && digit <= 9) {
   6649 +                            value = value * 10 + digit;
   6650 +                            if (++s < send) {
   6651 +                              digit = *s - '0';
   6652 +                              if (digit >= 0 && digit <= 9) {
   6653 +                                value = value * 10 + digit;
   6654 +                                if (++s < send) {
   6655 +                                  digit = *s - '0';
   6656 +                                  if (digit >= 0 && digit <= 9) {
   6657 +                                    value = value * 10 + digit;
   6658 +                                    if (++s < send) {
   6659 +                                      /* Now got 9 digits, so need to check
   6660 +                                         each time for overflow.  */
   6661 +                                      digit = *s - '0';
   6662 +                                      while (digit >= 0 && digit <= 9
   6663 +                                             && (value < max_div_10
   6664 +                                                 || (value == max_div_10
   6665 +                                                     && digit <= max_mod_10))) {
   6666 +                                        value = value * 10 + digit;
   6667 +                                        if (++s < send)
   6668 +                                          digit = *s - '0';
   6669 +                                        else
   6670 +                                          break;
   6671 +                                      }
   6672 +                                      if (digit >= 0 && digit <= 9
   6673 +                                          && (s < send)) {
   6674 +                                        /* value overflowed.
   6675 +                                           skip the remaining digits, don't
   6676 +                                           worry about setting *valuep.  */
   6677 +                                        do {
   6678 +                                          s++;
   6679 +                                        } while (s < send && isDIGIT(*s));
   6680 +                                        numtype |=
   6681 +                                          IS_NUMBER_GREATER_THAN_UV_MAX;
   6682 +                                        goto skip_value;
   6683 +                                      }
   6684 +                                    }
   6685 +                                  }
   6686 +                                }
   6687 +                              }
   6688 +                            }
   6689 +                          }
   6690 +                        }
   6691 +                      }
   6692 +                    }
   6693 +                  }
   6694 +                }
   6695 +              }
   6696 +            }
   6697 +          }
   6698 +        }
   6699 +      }
   6700 +    }
   6701 +    numtype |= IS_NUMBER_IN_UV;
   6702 +    if (valuep)
   6703 +      *valuep = value;
   6704 +
   6705 +  skip_value:
   6706 +    if (GROK_NUMERIC_RADIX(&s, send)) {
   6707 +      numtype |= IS_NUMBER_NOT_INT;
   6708 +      while (s < send && isDIGIT(*s))  /* optional digits after the radix */
   6709 +        s++;
   6710 +    }
   6711 +  }
   6712 +  else if (GROK_NUMERIC_RADIX(&s, send)) {
   6713 +    numtype |= IS_NUMBER_NOT_INT | IS_NUMBER_IN_UV; /* valuep assigned below */
   6714 +    /* no digits before the radix means we need digits after it */
   6715 +    if (s < send && isDIGIT(*s)) {
   6716 +      do {
   6717 +        s++;
   6718 +      } while (s < send && isDIGIT(*s));
   6719 +      if (valuep) {
   6720 +        /* integer approximation is valid - it's 0.  */
   6721 +        *valuep = 0;
   6722 +      }
   6723 +    }
   6724 +    else
   6725 +      return 0;
   6726 +  } else if (*s == 'I' || *s == 'i') {
   6727 +    s++; if (s == send || (*s != 'N' && *s != 'n')) return 0;
   6728 +    s++; if (s == send || (*s != 'F' && *s != 'f')) return 0;
   6729 +    s++; if (s < send && (*s == 'I' || *s == 'i')) {
   6730 +      s++; if (s == send || (*s != 'N' && *s != 'n')) return 0;
   6731 +      s++; if (s == send || (*s != 'I' && *s != 'i')) return 0;
   6732 +      s++; if (s == send || (*s != 'T' && *s != 't')) return 0;
   6733 +      s++; if (s == send || (*s != 'Y' && *s != 'y')) return 0;
   6734 +      s++;
   6735 +    }
   6736 +    sawinf = 1;
   6737 +  } else if (*s == 'N' || *s == 'n') {
   6738 +    /* XXX TODO: There are signaling NaNs and quiet NaNs. */
   6739 +    s++; if (s == send || (*s != 'A' && *s != 'a')) return 0;
   6740 +    s++; if (s == send || (*s != 'N' && *s != 'n')) return 0;
   6741 +    s++;
   6742 +    sawnan = 1;
   6743 +  } else
   6744 +    return 0;
   6745 +
   6746 +  if (sawinf) {
   6747 +    numtype &= IS_NUMBER_NEG; /* Keep track of sign  */
   6748 +    numtype |= IS_NUMBER_INFINITY | IS_NUMBER_NOT_INT;
   6749 +  } else if (sawnan) {
   6750 +    numtype &= IS_NUMBER_NEG; /* Keep track of sign  */
   6751 +    numtype |= IS_NUMBER_NAN | IS_NUMBER_NOT_INT;
   6752 +  } else if (s < send) {
   6753 +    /* we can have an optional exponent part */
   6754 +    if (*s == 'e' || *s == 'E') {
   6755 +      /* The only flag we keep is sign.  Blow away any "it's UV"  */
   6756 +      numtype &= IS_NUMBER_NEG;
   6757 +      numtype |= IS_NUMBER_NOT_INT;
   6758 +      s++;
   6759 +      if (s < send && (*s == '-' || *s == '+'))
   6760 +        s++;
   6761 +      if (s < send && isDIGIT(*s)) {
   6762 +        do {
   6763 +          s++;
   6764 +        } while (s < send && isDIGIT(*s));
   6765 +      }
   6766 +      else
   6767 +      return 0;
   6768 +    }
   6769 +  }
   6770 +  while (s < send && isSPACE(*s))
   6771 +    s++;
   6772 +  if (s >= send)
   6773 +    return numtype;
   6774 +  if (len == 10 && memEQ(pv, "0 but true", 10)) {
   6775 +    if (valuep)
   6776 +      *valuep = 0;
   6777 +    return IS_NUMBER_IN_UV;
   6778 +  }
   6779 +  return 0;
   6780 +}
   6781 +#endif
   6782 +#endif
   6783 +
   6784 +/*
   6785 + * The grok_* routines have been modified to use warn() instead of
   6786 + * Perl_warner(). Also, 'hexdigit' was the former name of PL_hexdigit,
   6787 + * which is why the stack variable has been renamed to 'xdigit'.
   6788 + */
   6789 +
   6790 +#ifndef grok_bin
   6791 +#if defined(NEED_grok_bin)
   6792 +static UV DPPP_(my_grok_bin)(pTHX_ const char * start, STRLEN * len_p, I32 * flags, NV * result);
   6793 +static
   6794 +#else
   6795 +extern UV DPPP_(my_grok_bin)(pTHX_ const char * start, STRLEN * len_p, I32 * flags, NV * result);
   6796 +#endif
   6797 +
   6798 +#ifdef grok_bin
   6799 +#  undef grok_bin
   6800 +#endif
   6801 +#define grok_bin(a,b,c,d) DPPP_(my_grok_bin)(aTHX_ a,b,c,d)
   6802 +#define Perl_grok_bin DPPP_(my_grok_bin)
   6803 +
   6804 +#if defined(NEED_grok_bin) || defined(NEED_grok_bin_GLOBAL)
   6805 +UV
   6806 +DPPP_(my_grok_bin)(pTHX_ const char *start, STRLEN *len_p, I32 *flags, NV *result)
   6807 +{
   6808 +    const char *s = start;
   6809 +    STRLEN len = *len_p;
   6810 +    UV value = 0;
   6811 +    NV value_nv = 0;
   6812 +
   6813 +    const UV max_div_2 = UV_MAX / 2;
   6814 +    bool allow_underscores = *flags & PERL_SCAN_ALLOW_UNDERSCORES;
   6815 +    bool overflowed = FALSE;
   6816 +
   6817 +    if (!(*flags & PERL_SCAN_DISALLOW_PREFIX)) {
   6818 +        /* strip off leading b or 0b.
   6819 +           for compatibility silently suffer "b" and "0b" as valid binary
   6820 +           numbers. */
   6821 +        if (len >= 1) {
   6822 +            if (s[0] == 'b') {
   6823 +                s++;
   6824 +                len--;
   6825 +            }
   6826 +            else if (len >= 2 && s[0] == '0' && s[1] == 'b') {
   6827 +                s+=2;
   6828 +                len-=2;
   6829 +            }
   6830 +        }
   6831 +    }
   6832 +
   6833 +    for (; len-- && *s; s++) {
   6834 +        char bit = *s;
   6835 +        if (bit == '0' || bit == '1') {
   6836 +            /* Write it in this wonky order with a goto to attempt to get the
   6837 +               compiler to make the common case integer-only loop pretty tight.
   6838 +               With gcc seems to be much straighter code than old scan_bin.  */
   6839 +          redo:
   6840 +            if (!overflowed) {
   6841 +                if (value <= max_div_2) {
   6842 +                    value = (value << 1) | (bit - '0');
   6843 +                    continue;
   6844 +                }
   6845 +                /* Bah. We're just overflowed.  */
   6846 +                warn("Integer overflow in binary number");
   6847 +                overflowed = TRUE;
   6848 +                value_nv = (NV) value;
   6849 +            }
   6850 +            value_nv *= 2.0;
   6851 +            /* If an NV has not enough bits in its mantissa to
   6852 +             * represent a UV this summing of small low-order numbers
   6853 +             * is a waste of time (because the NV cannot preserve
   6854 +             * the low-order bits anyway): we could just remember when
   6855 +             * did we overflow and in the end just multiply value_nv by the
   6856 +             * right amount. */
   6857 +            value_nv += (NV)(bit - '0');
   6858 +            continue;
   6859 +        }
   6860 +        if (bit == '_' && len && allow_underscores && (bit = s[1])
   6861 +            && (bit == '0' || bit == '1'))
   6862 +            {
   6863 +                --len;
   6864 +                ++s;
   6865 +                goto redo;
   6866 +            }
   6867 +        if (!(*flags & PERL_SCAN_SILENT_ILLDIGIT))
   6868 +            warn("Illegal binary digit '%c' ignored", *s);
   6869 +        break;
   6870 +    }
   6871 +
   6872 +    if (   ( overflowed && value_nv > 4294967295.0)
   6873 +#if UVSIZE > 4
   6874 +        || (!overflowed && value > 0xffffffff  )
   6875 +#endif
   6876 +        ) {
   6877 +        warn("Binary number > 0b11111111111111111111111111111111 non-portable");
   6878 +    }
   6879 +    *len_p = s - start;
   6880 +    if (!overflowed) {
   6881 +        *flags = 0;
   6882 +        return value;
   6883 +    }
   6884 +    *flags = PERL_SCAN_GREATER_THAN_UV_MAX;
   6885 +    if (result)
   6886 +        *result = value_nv;
   6887 +    return UV_MAX;
   6888 +}
   6889 +#endif
   6890 +#endif
   6891 +
   6892 +#ifndef grok_hex
   6893 +#if defined(NEED_grok_hex)
   6894 +static UV DPPP_(my_grok_hex)(pTHX_ const char * start, STRLEN * len_p, I32 * flags, NV * result);
   6895 +static
   6896 +#else
   6897 +extern UV DPPP_(my_grok_hex)(pTHX_ const char * start, STRLEN * len_p, I32 * flags, NV * result);
   6898 +#endif
   6899 +
   6900 +#ifdef grok_hex
   6901 +#  undef grok_hex
   6902 +#endif
   6903 +#define grok_hex(a,b,c,d) DPPP_(my_grok_hex)(aTHX_ a,b,c,d)
   6904 +#define Perl_grok_hex DPPP_(my_grok_hex)
   6905 +
   6906 +#if defined(NEED_grok_hex) || defined(NEED_grok_hex_GLOBAL)
   6907 +UV
   6908 +DPPP_(my_grok_hex)(pTHX_ const char *start, STRLEN *len_p, I32 *flags, NV *result)
   6909 +{
   6910 +    const char *s = start;
   6911 +    STRLEN len = *len_p;
   6912 +    UV value = 0;
   6913 +    NV value_nv = 0;
   6914 +
   6915 +    const UV max_div_16 = UV_MAX / 16;
   6916 +    bool allow_underscores = *flags & PERL_SCAN_ALLOW_UNDERSCORES;
   6917 +    bool overflowed = FALSE;
   6918 +    const char *xdigit;
   6919 +
   6920 +    if (!(*flags & PERL_SCAN_DISALLOW_PREFIX)) {
   6921 +        /* strip off leading x or 0x.
   6922 +           for compatibility silently suffer "x" and "0x" as valid hex numbers.
   6923 +        */
   6924 +        if (len >= 1) {
   6925 +            if (s[0] == 'x') {
   6926 +                s++;
   6927 +                len--;
   6928 +            }
   6929 +            else if (len >= 2 && s[0] == '0' && s[1] == 'x') {
   6930 +                s+=2;
   6931 +                len-=2;
   6932 +            }
   6933 +        }
   6934 +    }
   6935 +
   6936 +    for (; len-- && *s; s++) {
   6937 +        xdigit = strchr((char *) PL_hexdigit, *s);
   6938 +        if (xdigit) {
   6939 +            /* Write it in this wonky order with a goto to attempt to get the
   6940 +               compiler to make the common case integer-only loop pretty tight.
   6941 +               With gcc seems to be much straighter code than old scan_hex.  */
   6942 +          redo:
   6943 +            if (!overflowed) {
   6944 +                if (value <= max_div_16) {
   6945 +                    value = (value << 4) | ((xdigit - PL_hexdigit) & 15);
   6946 +                    continue;
   6947 +                }
   6948 +                warn("Integer overflow in hexadecimal number");
   6949 +                overflowed = TRUE;
   6950 +                value_nv = (NV) value;
   6951 +            }
   6952 +            value_nv *= 16.0;
   6953 +            /* If an NV has not enough bits in its mantissa to
   6954 +             * represent a UV this summing of small low-order numbers
   6955 +             * is a waste of time (because the NV cannot preserve
   6956 +             * the low-order bits anyway): we could just remember when
   6957 +             * did we overflow and in the end just multiply value_nv by the
   6958 +             * right amount of 16-tuples. */
   6959 +            value_nv += (NV)((xdigit - PL_hexdigit) & 15);
   6960 +            continue;
   6961 +        }
   6962 +        if (*s == '_' && len && allow_underscores && s[1]
   6963 +                && (xdigit = strchr((char *) PL_hexdigit, s[1])))
   6964 +            {
   6965 +                --len;
   6966 +                ++s;
   6967 +                goto redo;
   6968 +            }
   6969 +        if (!(*flags & PERL_SCAN_SILENT_ILLDIGIT))
   6970 +            warn("Illegal hexadecimal digit '%c' ignored", *s);
   6971 +        break;
   6972 +    }
   6973 +
   6974 +    if (   ( overflowed && value_nv > 4294967295.0)
   6975 +#if UVSIZE > 4
   6976 +        || (!overflowed && value > 0xffffffff  )
   6977 +#endif
   6978 +        ) {
   6979 +        warn("Hexadecimal number > 0xffffffff non-portable");
   6980 +    }
   6981 +    *len_p = s - start;
   6982 +    if (!overflowed) {
   6983 +        *flags = 0;
   6984 +        return value;
   6985 +    }
   6986 +    *flags = PERL_SCAN_GREATER_THAN_UV_MAX;
   6987 +    if (result)
   6988 +        *result = value_nv;
   6989 +    return UV_MAX;
   6990 +}
   6991 +#endif
   6992 +#endif
   6993 +
   6994 +#ifndef grok_oct
   6995 +#if defined(NEED_grok_oct)
   6996 +static UV DPPP_(my_grok_oct)(pTHX_ const char * start, STRLEN * len_p, I32 * flags, NV * result);
   6997 +static
   6998 +#else
   6999 +extern UV DPPP_(my_grok_oct)(pTHX_ const char * start, STRLEN * len_p, I32 * flags, NV * result);
   7000 +#endif
   7001 +
   7002 +#ifdef grok_oct
   7003 +#  undef grok_oct
   7004 +#endif
   7005 +#define grok_oct(a,b,c,d) DPPP_(my_grok_oct)(aTHX_ a,b,c,d)
   7006 +#define Perl_grok_oct DPPP_(my_grok_oct)
   7007 +
   7008 +#if defined(NEED_grok_oct) || defined(NEED_grok_oct_GLOBAL)
   7009 +UV
   7010 +DPPP_(my_grok_oct)(pTHX_ const char *start, STRLEN *len_p, I32 *flags, NV *result)
   7011 +{
   7012 +    const char *s = start;
   7013 +    STRLEN len = *len_p;
   7014 +    UV value = 0;
   7015 +    NV value_nv = 0;
   7016 +
   7017 +    const UV max_div_8 = UV_MAX / 8;
   7018 +    bool allow_underscores = *flags & PERL_SCAN_ALLOW_UNDERSCORES;
   7019 +    bool overflowed = FALSE;
   7020 +
   7021 +    for (; len-- && *s; s++) {
   7022 +         /* gcc 2.95 optimiser not smart enough to figure that this subtraction
   7023 +            out front allows slicker code.  */
   7024 +        int digit = *s - '0';
   7025 +        if (digit >= 0 && digit <= 7) {
   7026 +            /* Write it in this wonky order with a goto to attempt to get the
   7027 +               compiler to make the common case integer-only loop pretty tight.
   7028 +            */
   7029 +          redo:
   7030 +            if (!overflowed) {
   7031 +                if (value <= max_div_8) {
   7032 +                    value = (value << 3) | digit;
   7033 +                    continue;
   7034 +                }
   7035 +                /* Bah. We're just overflowed.  */
   7036 +                warn("Integer overflow in octal number");
   7037 +                overflowed = TRUE;
   7038 +                value_nv = (NV) value;
   7039 +            }
   7040 +            value_nv *= 8.0;
   7041 +            /* If an NV has not enough bits in its mantissa to
   7042 +             * represent a UV this summing of small low-order numbers
   7043 +             * is a waste of time (because the NV cannot preserve
   7044 +             * the low-order bits anyway): we could just remember when
   7045 +             * did we overflow and in the end just multiply value_nv by the
   7046 +             * right amount of 8-tuples. */
   7047 +            value_nv += (NV)digit;
   7048 +            continue;
   7049 +        }
   7050 +        if (digit == ('_' - '0') && len && allow_underscores
   7051 +            && (digit = s[1] - '0') && (digit >= 0 && digit <= 7))
   7052 +            {
   7053 +                --len;
   7054 +                ++s;
   7055 +                goto redo;
   7056 +            }
   7057 +        /* Allow \octal to work the DWIM way (that is, stop scanning
   7058 +         * as soon as non-octal characters are seen, complain only iff
   7059 +         * someone seems to want to use the digits eight and nine). */
   7060 +        if (digit == 8 || digit == 9) {
   7061 +            if (!(*flags & PERL_SCAN_SILENT_ILLDIGIT))
   7062 +                warn("Illegal octal digit '%c' ignored", *s);
   7063 +        }
   7064 +        break;
   7065 +    }
   7066 +
   7067 +    if (   ( overflowed && value_nv > 4294967295.0)
   7068 +#if UVSIZE > 4
   7069 +        || (!overflowed && value > 0xffffffff  )
   7070 +#endif
   7071 +        ) {
   7072 +        warn("Octal number > 037777777777 non-portable");
   7073 +    }
   7074 +    *len_p = s - start;
   7075 +    if (!overflowed) {
   7076 +        *flags = 0;
   7077 +        return value;
   7078 +    }
   7079 +    *flags = PERL_SCAN_GREATER_THAN_UV_MAX;
   7080 +    if (result)
   7081 +        *result = value_nv;
   7082 +    return UV_MAX;
   7083 +}
   7084 +#endif
   7085 +#endif
   7086 +
   7087 +#if !defined(my_snprintf)
   7088 +#if defined(NEED_my_snprintf)
   7089 +static int DPPP_(my_my_snprintf)(char * buffer, const Size_t len, const char * format, ...);
   7090 +static
   7091 +#else
   7092 +extern int DPPP_(my_my_snprintf)(char * buffer, const Size_t len, const char * format, ...);
   7093 +#endif
   7094 +
   7095 +#define my_snprintf DPPP_(my_my_snprintf)
   7096 +#define Perl_my_snprintf DPPP_(my_my_snprintf)
   7097 +
   7098 +#if defined(NEED_my_snprintf) || defined(NEED_my_snprintf_GLOBAL)
   7099 +
   7100 +int
   7101 +DPPP_(my_my_snprintf)(char *buffer, const Size_t len, const char *format, ...)
   7102 +{
   7103 +    dTHX;
   7104 +    int retval;
   7105 +    va_list ap;
   7106 +    va_start(ap, format);
   7107 +#ifdef HAS_VSNPRINTF
   7108 +    retval = vsnprintf(buffer, len, format, ap);
   7109 +#else
   7110 +    retval = vsprintf(buffer, format, ap);
   7111 +#endif
   7112 +    va_end(ap);
   7113 +    if (retval < 0 || (len > 0 && (Size_t)retval >= len))
   7114 +        Perl_croak(aTHX_ "panic: my_snprintf buffer overflow");
   7115 +    return retval;
   7116 +}
   7117 +
   7118 +#endif
   7119 +#endif
   7120 +
   7121 +#if !defined(my_sprintf)
   7122 +#if defined(NEED_my_sprintf)
   7123 +static int DPPP_(my_my_sprintf)(char * buffer, const char * pat, ...);
   7124 +static
   7125 +#else
   7126 +extern int DPPP_(my_my_sprintf)(char * buffer, const char * pat, ...);
   7127 +#endif
   7128 +
   7129 +#define my_sprintf DPPP_(my_my_sprintf)
   7130 +#define Perl_my_sprintf DPPP_(my_my_sprintf)
   7131 +
   7132 +#if defined(NEED_my_sprintf) || defined(NEED_my_sprintf_GLOBAL)
   7133 +
   7134 +int
   7135 +DPPP_(my_my_sprintf)(char *buffer, const char* pat, ...)
   7136 +{
   7137 +    va_list args;
   7138 +    va_start(args, pat);
   7139 +    vsprintf(buffer, pat, args);
   7140 +    va_end(args);
   7141 +    return strlen(buffer);
   7142 +}
   7143 +
   7144 +#endif
   7145 +#endif
   7146 +
   7147 +#ifdef NO_XSLOCKS
   7148 +#  ifdef dJMPENV
   7149 +#    define dXCPT             dJMPENV; int rEtV = 0
   7150 +#    define XCPT_TRY_START    JMPENV_PUSH(rEtV); if (rEtV == 0)
   7151 +#    define XCPT_TRY_END      JMPENV_POP;
   7152 +#    define XCPT_CATCH        if (rEtV != 0)
   7153 +#    define XCPT_RETHROW      JMPENV_JUMP(rEtV)
   7154 +#  else
   7155 +#    define dXCPT             Sigjmp_buf oldTOP; int rEtV = 0
   7156 +#    define XCPT_TRY_START    Copy(top_env, oldTOP, 1, Sigjmp_buf); rEtV = Sigsetjmp(top_env, 1); if (rEtV == 0)
   7157 +#    define XCPT_TRY_END      Copy(oldTOP, top_env, 1, Sigjmp_buf);
   7158 +#    define XCPT_CATCH        if (rEtV != 0)
   7159 +#    define XCPT_RETHROW      Siglongjmp(top_env, rEtV)
   7160 +#  endif
   7161 +#endif
   7162 +
   7163 +#if !defined(my_strlcat)
   7164 +#if defined(NEED_my_strlcat)
   7165 +static Size_t DPPP_(my_my_strlcat)(char * dst, const char * src, Size_t size);
   7166 +static
   7167 +#else
   7168 +extern Size_t DPPP_(my_my_strlcat)(char * dst, const char * src, Size_t size);
   7169 +#endif
   7170 +
   7171 +#define my_strlcat DPPP_(my_my_strlcat)
   7172 +#define Perl_my_strlcat DPPP_(my_my_strlcat)
   7173 +
   7174 +#if defined(NEED_my_strlcat) || defined(NEED_my_strlcat_GLOBAL)
   7175 +
   7176 +Size_t
   7177 +DPPP_(my_my_strlcat)(char *dst, const char *src, Size_t size)
   7178 +{
   7179 +    Size_t used, length, copy;
   7180 +
   7181 +    used = strlen(dst);
   7182 +    length = strlen(src);
   7183 +    if (size > 0 && used < size - 1) {
   7184 +        copy = (length >= size - used) ? size - used - 1 : length;
   7185 +        memcpy(dst + used, src, copy);
   7186 +        dst[used + copy] = '\0';
   7187 +    }
   7188 +    return used + length;
   7189 +}
   7190 +#endif
   7191 +#endif
   7192 +
   7193 +#if !defined(my_strlcpy)
   7194 +#if defined(NEED_my_strlcpy)
   7195 +static Size_t DPPP_(my_my_strlcpy)(char * dst, const char * src, Size_t size);
   7196 +static
   7197 +#else
   7198 +extern Size_t DPPP_(my_my_strlcpy)(char * dst, const char * src, Size_t size);
   7199 +#endif
   7200 +
   7201 +#define my_strlcpy DPPP_(my_my_strlcpy)
   7202 +#define Perl_my_strlcpy DPPP_(my_my_strlcpy)
   7203 +
   7204 +#if defined(NEED_my_strlcpy) || defined(NEED_my_strlcpy_GLOBAL)
   7205 +
   7206 +Size_t
   7207 +DPPP_(my_my_strlcpy)(char *dst, const char *src, Size_t size)
   7208 +{
   7209 +    Size_t length, copy;
   7210 +
   7211 +    length = strlen(src);
   7212 +    if (size > 0) {
   7213 +        copy = (length >= size) ? size - 1 : length;
   7214 +        memcpy(dst, src, copy);
   7215 +        dst[copy] = '\0';
   7216 +    }
   7217 +    return length;
   7218 +}
   7219 +
   7220 +#endif
   7221 +#endif
   7222 +#ifndef PERL_PV_ESCAPE_QUOTE
   7223 +#  define PERL_PV_ESCAPE_QUOTE           0x0001
   7224 +#endif
   7225 +
   7226 +#ifndef PERL_PV_PRETTY_QUOTE
   7227 +#  define PERL_PV_PRETTY_QUOTE           PERL_PV_ESCAPE_QUOTE
   7228 +#endif
   7229 +
   7230 +#ifndef PERL_PV_PRETTY_ELLIPSES
   7231 +#  define PERL_PV_PRETTY_ELLIPSES        0x0002
   7232 +#endif
   7233 +
   7234 +#ifndef PERL_PV_PRETTY_LTGT
   7235 +#  define PERL_PV_PRETTY_LTGT            0x0004
   7236 +#endif
   7237 +
   7238 +#ifndef PERL_PV_ESCAPE_FIRSTCHAR
   7239 +#  define PERL_PV_ESCAPE_FIRSTCHAR       0x0008
   7240 +#endif
   7241 +
   7242 +#ifndef PERL_PV_ESCAPE_UNI
   7243 +#  define PERL_PV_ESCAPE_UNI             0x0100
   7244 +#endif
   7245 +
   7246 +#ifndef PERL_PV_ESCAPE_UNI_DETECT
   7247 +#  define PERL_PV_ESCAPE_UNI_DETECT      0x0200
   7248 +#endif
   7249 +
   7250 +#ifndef PERL_PV_ESCAPE_ALL
   7251 +#  define PERL_PV_ESCAPE_ALL             0x1000
   7252 +#endif
   7253 +
   7254 +#ifndef PERL_PV_ESCAPE_NOBACKSLASH
   7255 +#  define PERL_PV_ESCAPE_NOBACKSLASH     0x2000
   7256 +#endif
   7257 +
   7258 +#ifndef PERL_PV_ESCAPE_NOCLEAR
   7259 +#  define PERL_PV_ESCAPE_NOCLEAR         0x4000
   7260 +#endif
   7261 +
   7262 +#ifndef PERL_PV_ESCAPE_RE
   7263 +#  define PERL_PV_ESCAPE_RE              0x8000
   7264 +#endif
   7265 +
   7266 +#ifndef PERL_PV_PRETTY_NOCLEAR
   7267 +#  define PERL_PV_PRETTY_NOCLEAR         PERL_PV_ESCAPE_NOCLEAR
   7268 +#endif
   7269 +#ifndef PERL_PV_PRETTY_DUMP
   7270 +#  define PERL_PV_PRETTY_DUMP            PERL_PV_PRETTY_ELLIPSES|PERL_PV_PRETTY_QUOTE
   7271 +#endif
   7272 +
   7273 +#ifndef PERL_PV_PRETTY_REGPROP
   7274 +#  define PERL_PV_PRETTY_REGPROP         PERL_PV_PRETTY_ELLIPSES|PERL_PV_PRETTY_LTGT|PERL_PV_ESCAPE_RE
   7275 +#endif
   7276 +
   7277 +/* Hint: pv_escape
   7278 + * Note that unicode functionality is only backported to
   7279 + * those perl versions that support it. For older perl
   7280 + * versions, the implementation will fall back to bytes.
   7281 + */
   7282 +
   7283 +#ifndef pv_escape
   7284 +#if defined(NEED_pv_escape)
   7285 +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);
   7286 +static
   7287 +#else
   7288 +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);
   7289 +#endif
   7290 +
   7291 +#ifdef pv_escape
   7292 +#  undef pv_escape
   7293 +#endif
   7294 +#define pv_escape(a,b,c,d,e,f) DPPP_(my_pv_escape)(aTHX_ a,b,c,d,e,f)
   7295 +#define Perl_pv_escape DPPP_(my_pv_escape)
   7296 +
   7297 +#if defined(NEED_pv_escape) || defined(NEED_pv_escape_GLOBAL)
   7298 +
   7299 +char *
   7300 +DPPP_(my_pv_escape)(pTHX_ SV *dsv, char const * const str,
   7301 +  const STRLEN count, const STRLEN max,
   7302 +  STRLEN * const escaped, const U32 flags)
   7303 +{
   7304 +    const char esc = flags & PERL_PV_ESCAPE_RE ? '%' : '\\';
   7305 +    const char dq = flags & PERL_PV_ESCAPE_QUOTE ? '"' : esc;
   7306 +    char octbuf[32] = "%123456789ABCDF";
   7307 +    STRLEN wrote = 0;
   7308 +    STRLEN chsize = 0;
   7309 +    STRLEN readsize = 1;
   7310 +#if defined(is_utf8_string) && defined(utf8_to_uvchr)
   7311 +    bool isuni = flags & PERL_PV_ESCAPE_UNI ? 1 : 0;
   7312 +#endif
   7313 +    const char *pv  = str;
   7314 +    const char * const end = pv + count;
   7315 +    octbuf[0] = esc;
   7316 +
   7317 +    if (!(flags & PERL_PV_ESCAPE_NOCLEAR))
   7318 +        sv_setpvs(dsv, "");
   7319 +
   7320 +#if defined(is_utf8_string) && defined(utf8_to_uvchr)
   7321 +    if ((flags & PERL_PV_ESCAPE_UNI_DETECT) && is_utf8_string((U8*)pv, count))
   7322 +        isuni = 1;
   7323 +#endif
   7324 +
   7325 +    for (; pv < end && (!max || wrote < max) ; pv += readsize) {
   7326 +        const UV u =
   7327 +#if defined(is_utf8_string) && defined(utf8_to_uvchr)
   7328 +                     isuni ? utf8_to_uvchr((U8*)pv, &readsize) :
   7329 +#endif
   7330 +                             (U8)*pv;
   7331 +        const U8 c = (U8)u & 0xFF;
   7332 +
   7333 +        if (u > 255 || (flags & PERL_PV_ESCAPE_ALL)) {
   7334 +            if (flags & PERL_PV_ESCAPE_FIRSTCHAR)
   7335 +                chsize = my_snprintf(octbuf, sizeof octbuf,
   7336 +                                      "%"UVxf, u);
   7337 +            else
   7338 +                chsize = my_snprintf(octbuf, sizeof octbuf,
   7339 +                                      "%cx{%"UVxf"}", esc, u);
   7340 +        } else if (flags & PERL_PV_ESCAPE_NOBACKSLASH) {
   7341 +            chsize = 1;
   7342 +        } else {
   7343 +            if (c == dq || c == esc || !isPRINT(c)) {
   7344 +                chsize = 2;
   7345 +                switch (c) {
   7346 +                case '\\' : /* fallthrough */
   7347 +                case '%'  : if (c == esc)
   7348 +                                octbuf[1] = esc;
   7349 +                            else
   7350 +                                chsize = 1;
   7351 +                            break;
   7352 +                case '\v' : octbuf[1] = 'v'; break;
   7353 +                case '\t' : octbuf[1] = 't'; break;
   7354 +                case '\r' : octbuf[1] = 'r'; break;
   7355 +                case '\n' : octbuf[1] = 'n'; break;
   7356 +                case '\f' : octbuf[1] = 'f'; break;
   7357 +                case '"'  : if (dq == '"')
   7358 +                                octbuf[1] = '"';
   7359 +                            else
   7360 +                                chsize = 1;
   7361 +                            break;
   7362 +                default:    chsize = my_snprintf(octbuf, sizeof octbuf,
   7363 +                                pv < end && isDIGIT((U8)*(pv+readsize))
   7364 +                                ? "%c%03o" : "%c%o", esc, c);
   7365 +                }
   7366 +            } else {
   7367 +                chsize = 1;
   7368 +            }
   7369 +        }
   7370 +        if (max && wrote + chsize > max) {
   7371 +            break;
   7372 +        } else if (chsize > 1) {
   7373 +            sv_catpvn(dsv, octbuf, chsize);
   7374 +            wrote += chsize;
   7375 +        } else {
   7376 +            char tmp[2];
   7377 +            my_snprintf(tmp, sizeof tmp, "%c", c);
   7378 +            sv_catpvn(dsv, tmp, 1);
   7379 +            wrote++;
   7380 +        }
   7381 +        if (flags & PERL_PV_ESCAPE_FIRSTCHAR)
   7382 +            break;
   7383 +    }
   7384 +    if (escaped != NULL)
   7385 +        *escaped= pv - str;
   7386 +    return SvPVX(dsv);
   7387 +}
   7388 +
   7389 +#endif
   7390 +#endif
   7391 +
   7392 +#ifndef pv_pretty
   7393 +#if defined(NEED_pv_pretty)
   7394 +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);
   7395 +static
   7396 +#else
   7397 +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);
   7398 +#endif
   7399 +
   7400 +#ifdef pv_pretty
   7401 +#  undef pv_pretty
   7402 +#endif
   7403 +#define pv_pretty(a,b,c,d,e,f,g) DPPP_(my_pv_pretty)(aTHX_ a,b,c,d,e,f,g)
   7404 +#define Perl_pv_pretty DPPP_(my_pv_pretty)
   7405 +
   7406 +#if defined(NEED_pv_pretty) || defined(NEED_pv_pretty_GLOBAL)
   7407 +
   7408 +char *
   7409 +DPPP_(my_pv_pretty)(pTHX_ SV *dsv, char const * const str, const STRLEN count,
   7410 +  const STRLEN max, char const * const start_color, char const * const end_color,
   7411 +  const U32 flags)
   7412 +{
   7413 +    const U8 dq = (flags & PERL_PV_PRETTY_QUOTE) ? '"' : '%';
   7414 +    STRLEN escaped;
   7415 +
   7416 +    if (!(flags & PERL_PV_PRETTY_NOCLEAR))
   7417 +        sv_setpvs(dsv, "");
   7418 +
   7419 +    if (dq == '"')
   7420 +        sv_catpvs(dsv, "\"");
   7421 +    else if (flags & PERL_PV_PRETTY_LTGT)
   7422 +        sv_catpvs(dsv, "<");
   7423 +
   7424 +    if (start_color != NULL)
   7425 +        sv_catpv(dsv, D_PPP_CONSTPV_ARG(start_color));
   7426 +
   7427 +    pv_escape(dsv, str, count, max, &escaped, flags | PERL_PV_ESCAPE_NOCLEAR);
   7428 +
   7429 +    if (end_color != NULL)
   7430 +        sv_catpv(dsv, D_PPP_CONSTPV_ARG(end_color));
   7431 +
   7432 +    if (dq == '"')
   7433 +        sv_catpvs(dsv, "\"");
   7434 +    else if (flags & PERL_PV_PRETTY_LTGT)
   7435 +        sv_catpvs(dsv, ">");
   7436 +
   7437 +    if ((flags & PERL_PV_PRETTY_ELLIPSES) && escaped < count)
   7438 +        sv_catpvs(dsv, "...");
   7439 +
   7440 +    return SvPVX(dsv);
   7441 +}
   7442 +
   7443 +#endif
   7444 +#endif
   7445 +
   7446 +#ifndef pv_display
   7447 +#if defined(NEED_pv_display)
   7448 +static char * DPPP_(my_pv_display)(pTHX_ SV * dsv, const char * pv, STRLEN cur, STRLEN len, STRLEN pvlim);
   7449 +static
   7450 +#else
   7451 +extern char * DPPP_(my_pv_display)(pTHX_ SV * dsv, const char * pv, STRLEN cur, STRLEN len, STRLEN pvlim);
   7452 +#endif
   7453 +
   7454 +#ifdef pv_display
   7455 +#  undef pv_display
   7456 +#endif
   7457 +#define pv_display(a,b,c,d,e) DPPP_(my_pv_display)(aTHX_ a,b,c,d,e)
   7458 +#define Perl_pv_display DPPP_(my_pv_display)
   7459 +
   7460 +#if defined(NEED_pv_display) || defined(NEED_pv_display_GLOBAL)
   7461 +
   7462 +char *
   7463 +DPPP_(my_pv_display)(pTHX_ SV *dsv, const char *pv, STRLEN cur, STRLEN len, STRLEN pvlim)
   7464 +{
   7465 +    pv_pretty(dsv, pv, cur, pvlim, NULL, NULL, PERL_PV_PRETTY_DUMP);
   7466 +    if (len > cur && pv[cur] == '\0')
   7467 +        sv_catpvs(dsv, "\\0");
   7468 +    return SvPVX(dsv);
   7469 +}
   7470 +
   7471 +#endif
   7472 +#endif
   7473 +
   7474 +#endif /* _P_P_PORTABILITY_H_ */
   7475 +
   7476 +/* End of File ppport.h */