Changeset f46d2a


Ignore:
Timestamp:
01/19/08 00:38:22 (4 years ago)
Author:
Tomash Brechko <tomash.brechko@…>
Branches:
master, ketama-compat
Children:
0c6861
Parents:
856fc9
git-author:
Tomash Brechko <tomash.brechko@…> (01/18/08 21:52:42)
git-committer:
Tomash Brechko <tomash.brechko@…> (01/19/08 00:38:22)
Message:

Update to the latest version of ppport.h.

Now, it recommends to include ppport.h back :).

Files:
2 edited

Legend:

Unmodified
Added
Removed
  • Fast.xs

    rc766ea rf46d2a  
    1111#include "perl.h" 
    1212#include "XSUB.h" 
     13 
     14#include "ppport.h" 
    1315 
    1416#include "src/client.h" 
  • ppport.h

    rde0b9c rf46d2a  
    55---------------------------------------------------------------------- 
    66 
    7     ppport.h -- Perl/Pollution/Portability Version 3.06_01 
    8  
    9     Automatically created by Devel::PPPort running under 
    10     perl 5.008008 on Tue Nov 27 14:33:05 2007. 
     7    ppport.h -- Perl/Pollution/Portability Version 3.13 
     8 
     9    Automatically created by Devel::PPPort running under perl 5.008008. 
    1110 
    1211    Do NOT edit this file directly! -- Edit PPPort_pm.PL and the 
     
    2322=head1 NAME 
    2423 
    25 ppport.h - Perl/Pollution/Portability version 3.06_01 
     24ppport.h - Perl/Pollution/Portability version 3.13 
    2625 
    2726=head1 SYNOPSIS 
     
    3231 
    3332  --help                      show short help 
     33 
     34  --version                   show version 
    3435 
    3536  --patch=file                write one patch file with changes 
     
    4647  --nofilter                  don't filter input files 
    4748 
     49  --strip                     strip all script and doc functionality from 
     50                              ppport.h 
     51 
    4852  --list-provided             list provided API 
    4953  --list-unsupported          list unsupported API 
     
    5357 
    5458This version of F<ppport.h> is designed to support operation with Perl 
    55 installations back to 5.003, and has been tested up to 5.9.3. 
     59installations back to 5.003, and has been tested up to 5.10.0. 
    5660 
    5761=head1 OPTIONS 
     
    6064 
    6165Display a brief usage summary. 
     66 
     67=head2 --version 
     68 
     69Display the version of F<ppport.h>. 
    6270 
    6371=head2 --patch=I<file> 
     
    7179If this option is given, a copy of each file will be saved with 
    7280the given suffix that contains the suggested changes. This does 
    73 not require any external programs. 
     81not require any external programs. Note that this does not 
     82automagially add a dot between the original filename and the 
     83suffix. If you want the dot, you have to include it in the option 
     84argument. 
    7485 
    7586If neither C<--patch> or C<--copy> are given, the default is to 
     
    89100version 5.003. You can use this option to reduce the output 
    90101of F<ppport.h> if you intend to be backward compatible only 
    91 up to a certain Perl version. 
     102down to a certain Perl version. 
    92103 
    93104=head2 --cplusplus 
     
    110121 
    111122Don't output any hints. Hints often contain useful portability 
    112 notes. 
     123notes. Warnings will still be displayed. 
    113124 
    114125=head2 --nochanges 
     
    122133like source code (i.e. not *.xs, *.c, *.cc, *.cpp or *.h) are skipped. 
    123134 
     135=head2 --strip 
     136 
     137Strip all script and documentation functionality from F<ppport.h>. 
     138This reduces the size of F<ppport.h> dramatically and may be useful 
     139if you want to include F<ppport.h> in smaller modules without 
     140increasing their distribution size too much. 
     141 
     142The stripped F<ppport.h> will have a C<--unstrip> option that allows 
     143you to undo the stripping, but only if an appropriate C<Devel::PPPort> 
     144module is installed. 
     145 
    124146=head2 --list-provided 
    125147 
    126148Lists the API elements for which compatibility is provided by 
    127149F<ppport.h>. Also lists if it must be explicitly requested, 
    128 if it has dependencies, and if there are hints for it. 
     150if it has dependencies, and if there are hints or warnings for it. 
    129151 
    130152=head2 --list-unsupported 
     
    167189=item * 
    168190 
    169 If you use one of a few functions that were not present in earlier 
    170 versions of Perl, and that can't be provided using a macro, you have 
    171 to explicitly request support for these functions by adding one or 
     191If you use one of a few functions or variables that were not present in 
     192earlier versions of Perl, and that can't be provided using a macro, you 
     193have to explicitly request support for these functions by adding one or 
    172194more C<#define>s in your source code before the inclusion of F<ppport.h>. 
    173195 
    174 These functions will be marked C<explicit> in the list shown by 
    175 C<--list-provided>. 
     196These functions or variables will be marked C<explicit> in the list shown 
     197by C<--list-provided>. 
    176198 
    177199Depending on whether you module has a single or multiple files that 
    178 use such functions, you want either C<static> or global variants. 
    179  
    180 For a C<static> function, use: 
     200use such functions or variables, you want either C<static> or global 
     201variants. 
     202 
     203For a C<static> function or variable (used only in a single source 
     204file), use: 
    181205 
    182206    #define NEED_function 
    183  
    184 For a global function, use: 
     207    #define NEED_variable 
     208 
     209For a global function or variable (used in multiple source files), 
     210use: 
    185211 
    186212    #define NEED_function_GLOBAL 
    187  
    188 Note that you mustn't have more than one global request for one 
    189 function in your project. 
    190  
    191     Function                  Static Request               Global Request 
     213    #define NEED_variable_GLOBAL 
     214 
     215Note that you mustn't have more than one global request for the 
     216same function or variable in your project. 
     217 
     218    Function / Variable       Static Request               Global Request 
    192219    ----------------------------------------------------------------------------------------- 
     220    PL_signals                NEED_PL_signals              NEED_PL_signals_GLOBAL 
    193221    eval_pv()                 NEED_eval_pv                 NEED_eval_pv_GLOBAL 
    194222    grok_bin()                NEED_grok_bin                NEED_grok_bin_GLOBAL 
     
    197225    grok_numeric_radix()      NEED_grok_numeric_radix      NEED_grok_numeric_radix_GLOBAL 
    198226    grok_oct()                NEED_grok_oct                NEED_grok_oct_GLOBAL 
     227    load_module()             NEED_load_module             NEED_load_module_GLOBAL 
     228    my_snprintf()             NEED_my_snprintf             NEED_my_snprintf_GLOBAL 
     229    my_strlcat()              NEED_my_strlcat              NEED_my_strlcat_GLOBAL 
     230    my_strlcpy()              NEED_my_strlcpy              NEED_my_strlcpy_GLOBAL 
    199231    newCONSTSUB()             NEED_newCONSTSUB             NEED_newCONSTSUB_GLOBAL 
    200232    newRV_noinc()             NEED_newRV_noinc             NEED_newRV_noinc_GLOBAL 
    201     sv_2pv_nolen()            NEED_sv_2pv_nolen            NEED_sv_2pv_nolen_GLOBAL 
     233    newSVpvn_share()          NEED_newSVpvn_share          NEED_newSVpvn_share_GLOBAL 
     234    sv_2pv_flags()            NEED_sv_2pv_flags            NEED_sv_2pv_flags_GLOBAL 
    202235    sv_2pvbyte()              NEED_sv_2pvbyte              NEED_sv_2pvbyte_GLOBAL 
    203236    sv_catpvf_mg()            NEED_sv_catpvf_mg            NEED_sv_catpvf_mg_GLOBAL 
    204237    sv_catpvf_mg_nocontext()  NEED_sv_catpvf_mg_nocontext  NEED_sv_catpvf_mg_nocontext_GLOBAL 
     238    sv_pvn_force_flags()      NEED_sv_pvn_force_flags      NEED_sv_pvn_force_flags_GLOBAL 
    205239    sv_setpvf_mg()            NEED_sv_setpvf_mg            NEED_sv_setpvf_mg_GLOBAL 
    206240    sv_setpvf_mg_nocontext()  NEED_sv_setpvf_mg_nocontext  NEED_sv_setpvf_mg_nocontext_GLOBAL 
     241    vload_module()            NEED_vload_module            NEED_vload_module_GLOBAL 
    207242    vnewSVpvf()               NEED_vnewSVpvf               NEED_vnewSVpvf_GLOBAL 
     243    warner()                  NEED_warner                  NEED_warner_GLOBAL 
    208244 
    209245To avoid namespace conflicts, you can change the namespace of the 
    210 explicitly exported functions using the C<DPPP_NAMESPACE> macro. 
    211 Just C<#define> the macro before including C<ppport.h>: 
     246explicitly exported functions / variables using the C<DPPP_NAMESPACE> 
     247macro. Just C<#define> the macro before including C<ppport.h>: 
    212248 
    213249    #define DPPP_NAMESPACE MyOwnNamespace_ 
     
    254290This would output context diffs with 10 lines of context. 
    255291 
     292If you want to create patched copies of your files instead, use: 
     293 
     294    perl ppport.h --copy=.new 
     295 
    256296To display portability information for the C<newSVpvn> function, 
    257297use: 
     
    312352=head1 COPYRIGHT 
    313353 
    314 Version 3.x, Copyright (c) 2004-2005, Marcus Holland-Moritz. 
     354Version 3.x, Copyright (c) 2004-2007, Marcus Holland-Moritz. 
    315355 
    316356Version 2.x, Copyright (C) 2001, Paul Marquess. 
     
    328368 
    329369use strict; 
     370 
     371# Disable broken TRIE-optimization 
     372BEGIN { eval '${^RE_TRIE_MAXBUF} = -1' if $] >= 5.009004 && $] <= 5.009005 } 
     373 
     374my $VERSION = 3.13; 
    330375 
    331376my %opt = ( 
     
    336381  cplusplus => 0, 
    337382  filter    => 1, 
     383  strip     => 0, 
     384  version   => 0, 
    338385); 
    339386 
     
    342389my $HS = "[ \t]";             # horizontal whitespace 
    343390 
     391# Never use C comments in this file! 
     392my $ccs  = '/'.'*'; 
     393my $cce  = '*'.'/'; 
     394my $rccs = quotemeta $ccs; 
     395my $rcce = quotemeta $cce; 
     396 
    344397eval { 
    345398  require Getopt::Long; 
    346399  Getopt::Long::GetOptions(\%opt, qw( 
    347     help quiet diag! filter! hints! changes! cplusplus 
     400    help quiet diag! filter! hints! changes! cplusplus strip version 
    348401    patch=s copy=s diff=s compat-version=s 
    349402    list-provided list-unsupported api-info=s 
     
    356409} 
    357410 
     411if ($opt{version}) { 
     412  print "This is $0 $VERSION.\n"; 
     413  exit 0; 
     414} 
     415 
    358416usage() if $opt{help}; 
     417strip() if $opt{strip}; 
    359418 
    360419if (exists $opt{'compat-version'}) { 
     
    370429  $opt{'compat-version'} = 5; 
    371430} 
    372  
    373 # Never use C comments in this file!!!!! 
    374 my $ccs  = '/'.'*'; 
    375 my $cce  = '*'.'/'; 
    376 my $rccs = quotemeta $ccs; 
    377 my $rcce = quotemeta $cce; 
    378431 
    379432my %API = map { /^(\w+)\|([^|]*)\|([^|]*)\|(\w*)$/ 
     
    413466EXTEND||| 
    414467EXTERN_C|5.005000||p 
     468F0convert|||n 
    415469FREETMPS||| 
    416470GIMME_V||5.004000|n 
     
    453507LVRET||| 
    454508MARK||| 
     509MULTICALL||5.009005| 
    455510MY_CXT_CLONE|5.009002||p 
    456511MY_CXT_INIT|5.007003||p 
     
    458513MoveD|5.009002||p 
    459514Move||| 
    460 NEWSV||| 
    461515NOOP|5.005000||p 
    462516NUM2PTR|5.006000||p 
     
    465519NVff|5.006001||p 
    466520NVgf|5.006001||p 
    467 Newc||| 
    468 Newz||| 
    469 New||| 
     521Newxc|5.009003||p 
     522Newxz|5.009003||p 
     523Newx|5.009003||p 
    470524Nullav||| 
    471525Nullch||| 
     
    490544PAD_SVl||| 
    491545PAD_SV||| 
    492 PERL_BCDVERSION|5.009003||p 
     546PERL_ABS|5.008001||p 
     547PERL_BCDVERSION|5.009005||p 
    493548PERL_GCC_BRACE_GROUPS_FORBIDDEN|5.008001||p 
     549PERL_HASH|5.004000||p 
    494550PERL_INT_MAX|5.004000||p 
    495551PERL_INT_MIN|5.004000||p 
     
    507563PERL_MAGIC_ext|5.007002||p 
    508564PERL_MAGIC_fm|5.007002||p 
    509 PERL_MAGIC_glob|5.007002||p 
     565PERL_MAGIC_glob|5.009005||p 
    510566PERL_MAGIC_isaelem|5.007002||p 
    511567PERL_MAGIC_isa|5.007002||p 
    512 PERL_MAGIC_mutex|5.007002||p 
     568PERL_MAGIC_mutex|5.009005||p 
    513569PERL_MAGIC_nkeys|5.007002||p 
    514570PERL_MAGIC_overload_elem|5.007002||p 
     
    544600PERL_SHORT_MAX|5.004000||p 
    545601PERL_SHORT_MIN|5.004000||p 
     602PERL_SIGNALS_UNSAFE_FLAG|5.008001||p 
    546603PERL_SUBVERSION|5.006000||p 
    547604PERL_UCHAR_MAX|5.004000||p 
     
    551608PERL_ULONG_MAX|5.004000||p 
    552609PERL_ULONG_MIN|5.004000||p 
     610PERL_UNUSED_ARG|5.009003||p 
     611PERL_UNUSED_CONTEXT|5.009004||p 
    553612PERL_UNUSED_DECL|5.007002||p 
     613PERL_UNUSED_VAR|5.007002||p 
    554614PERL_UQUAD_MAX|5.004000||p 
    555615PERL_UQUAD_MIN|5.004000||p 
     616PERL_USE_GCC_BRACE_GROUPS|5.009004||p 
    556617PERL_USHORT_MAX|5.004000||p 
    557618PERL_USHORT_MIN|5.004000||p 
    558619PERL_VERSION|5.006000||p 
     620PL_DBsignal|5.005000||p 
    559621PL_DBsingle|||pn 
    560622PL_DBsub|||pn 
    561 PL_DBtrace|||n 
     623PL_DBtrace|||pn 
    562624PL_Sv|5.005000||p 
    563625PL_compiling|5.004050||p 
    564 PL_copline|5.005000||p 
     626PL_copline|5.009005||p 
    565627PL_curcop|5.004050||p 
    566628PL_curstash|5.004050||p 
     
    571633PL_dowarn|||pn 
    572634PL_errgv|5.004050||p 
     635PL_expect|5.009005||p 
    573636PL_hexdigit|5.005000||p 
    574637PL_hints|5.005000||p 
    575638PL_last_in_gv|||n 
     639PL_laststatval|5.005000||p 
    576640PL_modglobal||5.005000|n 
    577641PL_na|5.004050||pn 
     
    584648PL_rsfp|5.004050||p 
    585649PL_rs|||n 
     650PL_signals|5.008001||p 
    586651PL_stack_base|5.004050||p 
    587652PL_stack_sp|5.004050||p 
     653PL_statcache|5.005000||p 
    588654PL_stdingv|5.004050||p 
    589655PL_sv_arenaroot|5.004050||p 
     
    593659PL_tainted|5.004050||p 
    594660PL_tainting|5.004050||p 
     661POP_MULTICALL||5.009005| 
    595662POPi|||n 
    596663POPl|||n 
     
    606673PTRV|5.006000||p 
    607674PUSHMARK||| 
     675PUSH_MULTICALL||5.009005| 
    608676PUSHi||| 
    609677PUSHmortal|5.009002||p 
     
    615683PerlIO_clearerr||5.007003| 
    616684PerlIO_close||5.007003| 
     685PerlIO_context_layers||5.009004| 
    617686PerlIO_eof||5.007003| 
    618687PerlIO_error||5.007003| 
     
    635704PerlIO_unread||5.007003| 
    636705PerlIO_write||5.007003| 
     706Perl_signbit||5.009005|n 
     707PoisonFree|5.009004||p 
     708PoisonNew|5.009004||p 
     709PoisonWith|5.009004||p 
    637710Poison|5.008000||p 
    638711RETVAL|||n 
     
    650723STMT_END|||p 
    651724STMT_START|||p 
     725STR_WITH_LEN|5.009003||p 
    652726ST||| 
     727SV_CONST_RETURN|5.009003||p 
     728SV_COW_DROP_PV|5.008001||p 
     729SV_COW_SHARED_HASH_KEYS|5.009005||p 
     730SV_GMAGIC|5.007002||p 
     731SV_HAS_TRAILING_NUL|5.009004||p 
     732SV_IMMEDIATE_UNREF|5.007001||p 
     733SV_MUTABLE_RETURN|5.009003||p 
     734SV_NOSTEAL|5.009002||p 
     735SV_SMAGIC|5.009003||p 
     736SV_UTF8_NO_ENCODING|5.008001||p 
     737SVf|5.006000||p 
    653738SVt_IV||| 
    654739SVt_NV||| 
     
    661746Slab_Alloc||| 
    662747Slab_Free||| 
     748Slab_to_rw||| 
    663749StructCopy||| 
    664750SvCUR_set||| 
    665751SvCUR||| 
    666752SvEND||| 
     753SvGAMAGIC||5.006001| 
    667754SvGETMAGIC|5.004050||p 
    668755SvGROW||| 
     
    685772SvLEN||| 
    686773SvLOCK||5.007003| 
    687 SvMAGIC_set||5.009003| 
     774SvMAGIC_set|5.009003||p 
    688775SvNIOK_off||| 
    689776SvNIOKp||| 
     
    706793SvPOKp||| 
    707794SvPOK||| 
     795SvPVX_const|5.009003||p 
     796SvPVX_mutable|5.009003||p 
    708797SvPVX||| 
     798SvPV_const|5.009003||p 
     799SvPV_flags_const_nolen|5.009003||p 
     800SvPV_flags_const|5.009003||p 
     801SvPV_flags_mutable|5.009003||p 
     802SvPV_flags|5.007002||p 
     803SvPV_force_flags_mutable|5.009003||p 
     804SvPV_force_flags_nolen|5.009003||p 
     805SvPV_force_flags|5.007002||p 
     806SvPV_force_mutable|5.009003||p 
     807SvPV_force_nolen|5.009003||p 
     808SvPV_force_nomg_nolen|5.009003||p 
    709809SvPV_force_nomg|5.007002||p 
    710 SvPV_force||| 
     810SvPV_force|||p 
     811SvPV_mutable|5.009003||p 
     812SvPV_nolen_const|5.009003||p 
    711813SvPV_nolen|5.006000||p 
     814SvPV_nomg_const_nolen|5.009003||p 
     815SvPV_nomg_const|5.009003||p 
    712816SvPV_nomg|5.007002||p 
    713817SvPV_set||| 
     
    725829SvPV||| 
    726830SvREFCNT_dec||| 
    727 SvREFCNT_inc||| 
     831SvREFCNT_inc_NN|5.009004||p 
     832SvREFCNT_inc_simple_NN|5.009004||p 
     833SvREFCNT_inc_simple_void_NN|5.009004||p 
     834SvREFCNT_inc_simple_void|5.009004||p 
     835SvREFCNT_inc_simple|5.009004||p 
     836SvREFCNT_inc_void_NN|5.009004||p 
     837SvREFCNT_inc_void|5.009004||p 
     838SvREFCNT_inc|||p 
    728839SvREFCNT||| 
    729840SvROK_off||| 
    730841SvROK_on||| 
    731842SvROK||| 
    732 SvRV_set||5.009003| 
     843SvRV_set|5.009003||p 
    733844SvRV||| 
     845SvRXOK||5.009005| 
     846SvRX||5.009005| 
    734847SvSETMAGIC||| 
     848SvSHARED_HASH|5.009003||p 
    735849SvSHARE||5.007003| 
    736 SvSTASH_set||5.009003| 
     850SvSTASH_set|5.009003||p 
    737851SvSTASH||| 
    738852SvSetMagicSV_nosteal||5.004000| 
     
    747861SvTYPE||| 
    748862SvUNLOCK||5.007003| 
    749 SvUOK||5.007001| 
     863SvUOK|5.007001|5.006000|p 
    750864SvUPGRADE||| 
    751865SvUTF8_off||5.006000| 
     
    755869SvUVX|5.004000||p 
    756870SvUV_nomg|5.009001||p 
    757 SvUV_set||5.009003| 
     871SvUV_set|5.009003||p 
    758872SvUVx|5.004000||p 
    759873SvUV|5.004000||p 
    760874SvVOK||5.008001| 
     875SvVSTRING_mg|5.009004||p 
    761876THIS|||n 
    762877UNDERBAR|5.009002||p 
     878UTF8_MAXBYTES|5.009002||p 
    763879UVSIZE|5.006000||p 
    764880UVTYPE|5.006000||p 
     
    767883UVuf|5.006000||p 
    768884UVxf|5.006000||p 
     885WARN_ALL|5.006000||p 
     886WARN_AMBIGUOUS|5.006000||p 
     887WARN_ASSERTIONS|5.009005||p 
     888WARN_BAREWORD|5.006000||p 
     889WARN_CLOSED|5.006000||p 
     890WARN_CLOSURE|5.006000||p 
     891WARN_DEBUGGING|5.006000||p 
     892WARN_DEPRECATED|5.006000||p 
     893WARN_DIGIT|5.006000||p 
     894WARN_EXEC|5.006000||p 
     895WARN_EXITING|5.006000||p 
     896WARN_GLOB|5.006000||p 
     897WARN_INPLACE|5.006000||p 
     898WARN_INTERNAL|5.006000||p 
     899WARN_IO|5.006000||p 
     900WARN_LAYER|5.008000||p 
     901WARN_MALLOC|5.006000||p 
     902WARN_MISC|5.006000||p 
     903WARN_NEWLINE|5.006000||p 
     904WARN_NUMERIC|5.006000||p 
     905WARN_ONCE|5.006000||p 
     906WARN_OVERFLOW|5.006000||p 
     907WARN_PACK|5.006000||p 
     908WARN_PARENTHESIS|5.006000||p 
     909WARN_PIPE|5.006000||p 
     910WARN_PORTABLE|5.006000||p 
     911WARN_PRECEDENCE|5.006000||p 
     912WARN_PRINTF|5.006000||p 
     913WARN_PROTOTYPE|5.006000||p 
     914WARN_QW|5.006000||p 
     915WARN_RECURSION|5.006000||p 
     916WARN_REDEFINE|5.006000||p 
     917WARN_REGEXP|5.006000||p 
     918WARN_RESERVED|5.006000||p 
     919WARN_SEMICOLON|5.006000||p 
     920WARN_SEVERE|5.006000||p 
     921WARN_SIGNAL|5.006000||p 
     922WARN_SUBSTR|5.006000||p 
     923WARN_SYNTAX|5.006000||p 
     924WARN_TAINT|5.006000||p 
     925WARN_THREADS|5.008000||p 
     926WARN_UNINITIALIZED|5.006000||p 
     927WARN_UNOPENED|5.006000||p 
     928WARN_UNPACK|5.006000||p 
     929WARN_UNTIE|5.006000||p 
     930WARN_UTF8|5.006000||p 
     931WARN_VOID|5.006000||p 
    769932XCPT_CATCH|5.009002||p 
    770933XCPT_RETHROW|5.009002||p 
     
    785948XSRETURN_UV|5.008001||p 
    786949XSRETURN_YES||| 
    787 XSRETURN||| 
     950XSRETURN|||p 
    788951XST_mIV||| 
    789952XST_mNO||| 
     
    795958XS_VERSION_BOOTCHECK||| 
    796959XS_VERSION||| 
     960XSprePUSH|5.006000||p 
    797961XS||| 
    798962ZeroD|5.009002||p 
     
    802966aMY_CXT_|5.007003||p 
    803967aMY_CXT|5.007003||p 
     968aTHXR_|5.009005||p 
     969aTHXR|5.009005||p 
    804970aTHX_|5.006000||p 
    805971aTHX|5.006000||p 
    806 add_data||| 
     972add_data|||n 
     973addmad||| 
    807974allocmy||| 
    808975amagic_call||| 
     976amagic_cmp_locale||| 
     977amagic_cmp||| 
     978amagic_i_ncmp||| 
     979amagic_ncmp||| 
    809980any_dup||| 
    810981ao||| 
    811982append_elem||| 
    812983append_list||| 
     984append_madprops||| 
    813985apply_attrs_my||| 
    814986apply_attrs_string||5.006001| 
    815987apply_attrs||| 
    816988apply||| 
    817 asIV||| 
    818 asUV||| 
    819989atfork_lock||5.007003|n 
    820990atfork_unlock||5.007003|n 
    821991av_arylen_p||5.009003| 
    822992av_clear||| 
     993av_create_and_push||5.009005| 
     994av_create_and_unshift_one||5.009005| 
    823995av_delete||5.006000| 
    824996av_exists||5.006000| 
     
    8451017boot_core_PerlIO||| 
    8461018boot_core_UNIVERSAL||| 
     1019boot_core_mro||| 
    8471020boot_core_xsutils||| 
    8481021bytes_from_utf8||5.007001| 
     1022bytes_to_uni|||n 
    8491023bytes_to_utf8||5.006001| 
    850 cache_re||| 
    8511024call_argv|5.006000||p 
    8521025call_atexit||5.006000| 
    853 call_body||| 
    854 call_list_body||| 
    8551026call_list||5.004000| 
    8561027call_method|5.006000||p 
     
    8631034cast_ulong||5.006000| 
    8641035cast_uv||5.006000| 
     1036check_type_and_open||| 
    8651037check_uni||| 
    8661038checkcomma||| 
    8671039checkposixcc||| 
     1040ckWARN|5.006000||p 
    8681041ck_anoncode||| 
    8691042ck_bitop||| 
     
    8901063ck_null||| 
    8911064ck_open||| 
     1065ck_readline||| 
    8921066ck_repeat||| 
    8931067ck_require||| 
     
    9071081ck_trunc||| 
    9081082ck_unpack||| 
    909 cl_and||| 
    910 cl_anything||| 
    911 cl_init_zero||| 
    912 cl_init||| 
    913 cl_is_anything||| 
    914 cl_or||| 
     1083ckwarn_d||5.009003| 
     1084ckwarn||5.009003| 
     1085cl_and|||n 
     1086cl_anything|||n 
     1087cl_init_zero|||n 
     1088cl_init|||n 
     1089cl_is_anything|||n 
     1090cl_or|||n 
     1091clear_placeholders||| 
    9151092closest_cop||| 
    9161093convert||| 
    9171094cop_free||| 
    9181095cr_textfilter||| 
     1096create_eval_scope||| 
    9191097croak_nocontext|||vn 
    9201098croak|||v 
    921 csighandler||5.007001|n 
     1099csighandler||5.009003|n 
     1100curmad||| 
    9221101custom_op_desc||5.007003| 
    9231102custom_op_name||5.007003| 
     1103cv_ckproto_len||| 
    9241104cv_ckproto||| 
    9251105cv_clone||| 
     
    9301110cx_dup||| 
    9311111cxinc||| 
    932 dAXMARK||5.009003| 
     1112dAXMARK|5.009003||p 
    9331113dAX|5.007002||p 
    9341114dITEMS|5.007002||p 
    9351115dMARK||| 
     1116dMULTICALL||5.009003| 
    9361117dMY_CXT_SV|5.007003||p 
    9371118dMY_CXT|5.007003||p 
     
    9401121dSP||| 
    9411122dTHR|5.004050||p 
     1123dTHXR|5.009005||p 
    9421124dTHXa|5.006000||p 
    9431125dTHXoa|5.006000||p 
    9441126dTHX|5.006000||p 
    9451127dUNDERBAR|5.009002||p 
     1128dVAR|5.009003||p 
    9461129dXCPT|5.009002||p 
    9471130dXSARGS||| 
     
    9571140debstackptrs||5.007003| 
    9581141debstack||5.007003| 
     1142debug_start_match||| 
    9591143deb||5.007003|v 
    960 del_he||| 
    9611144del_sv||| 
     1145delete_eval_scope||| 
    9621146delimcpy||5.004000| 
    963 depcom||| 
    9641147deprecate_old||| 
    9651148deprecate||| 
    9661149despatch_signals||5.007001| 
     1150destroy_matcher||| 
    9671151die_nocontext|||vn 
    9681152die_where||| 
     
    9951179do_oddball||| 
    9961180do_op_dump||5.006000| 
     1181do_op_xmldump||| 
    9971182do_open9||5.006000| 
    9981183do_openn||5.007001| 
     
    10001185do_pipe||| 
    10011186do_pmop_dump||5.006000| 
     1187do_pmop_xmldump||| 
    10021188do_print||| 
    10031189do_readline||| 
     
    10051191do_semop||| 
    10061192do_shmio||| 
     1193do_smartmatch||| 
    10071194do_spawn_nowait||| 
    10081195do_spawn||| 
     
    10321219doparseform||| 
    10331220dopoptoeval||| 
     1221dopoptogiven||| 
    10341222dopoptolabel||| 
    10351223dopoptoloop||| 
    10361224dopoptosub_at||| 
    10371225dopoptosub||| 
     1226dopoptowhen||| 
     1227doref||5.009003| 
    10381228dounwind||| 
    10391229dowantarray||| 
    10401230dump_all||5.006000| 
    10411231dump_eval||5.006000| 
     1232dump_exec_pos||| 
    10421233dump_fds||| 
    10431234dump_form||5.006000| 
     
    10461237dump_packsubs||5.006000| 
    10471238dump_sub||5.006000| 
     1239dump_sv_child||| 
     1240dump_trie_interim_list||| 
     1241dump_trie_interim_table||| 
     1242dump_trie||| 
    10481243dump_vindent||5.006000| 
    10491244dumpuntil||| 
    10501245dup_attrlist||| 
     1246emulate_cop_io||| 
    10511247emulate_eaccess||| 
    10521248eval_pv|5.006000||p 
    10531249eval_sv|5.006000||p 
     1250exec_failed||| 
    10541251expect_number||| 
    10551252fbm_compile||5.005000| 
    10561253fbm_instr||5.005000| 
    10571254fd_on_nosuid_fs||| 
     1255feature_is_enabled||| 
    10581256filter_add||| 
    10591257filter_del||| 
    10601258filter_gets||| 
    10611259filter_read||| 
     1260find_and_forget_pmops||| 
     1261find_array_subscript||| 
    10621262find_beginning||| 
    10631263find_byclass||| 
     1264find_hash_subscript||| 
    10641265find_in_my_stash||| 
    1065 find_runcv||| 
     1266find_runcv||5.008001| 
    10661267find_rundefsvoffset||5.009002| 
    10671268find_script||| 
    10681269find_uninit_var||| 
     1270first_symbol|||n 
    10691271fold_constants||| 
    10701272forbid_setid||| 
     
    10741276force_version||| 
    10751277force_word||| 
     1278forget_pmop||| 
    10761279form_nocontext|||vn 
    10771280form||5.004000|v 
     
    10821285free_tmps||| 
    10831286gen_constant_list||| 
     1287get_arena||| 
    10841288get_av|5.006000||p 
    10851289get_context||5.006000|n 
     1290get_cvn_flags||5.009005| 
    10861291get_cv|5.006000||p 
    10871292get_db_sub||| 
     
    10961301get_opargs||| 
    10971302get_ppaddr||5.006000| 
     1303get_re_arg||| 
    10981304get_sv|5.006000||p 
    10991305get_vtbl||5.005030| 
    11001306getcwd_sv||5.007002| 
    11011307getenv_len||| 
     1308glob_2number||| 
     1309glob_2pv||| 
     1310glob_assign_glob||| 
     1311glob_assign_ref||| 
    11021312gp_dup||| 
    11031313gp_free||| 
     
    11121322gv_HVadd||| 
    11131323gv_IOadd||| 
     1324gv_SVadd||| 
    11141325gv_autoload4||5.004000| 
    11151326gv_check||| 
     1327gv_const_sv||5.009003| 
    11161328gv_dump||5.006000| 
    11171329gv_efullname3||5.004000| 
     
    11191331gv_efullname||| 
    11201332gv_ename||| 
     1333gv_fetchfile_flags||5.009005| 
    11211334gv_fetchfile||| 
    11221335gv_fetchmeth_autoload||5.007003| 
     
    11331346gv_init_sv||| 
    11341347gv_init||| 
    1135 gv_share||| 
    1136 gv_stashpvn|5.006000||p 
     1348gv_name_set||5.009004| 
     1349gv_stashpvn|5.004000||p 
     1350gv_stashpvs||5.009003| 
    11371351gv_stashpv||| 
    11381352gv_stashsv||| 
     
    11411355hfreeentries||| 
    11421356hsplit||| 
    1143 hv_assert||5.009001| 
    1144 hv_auxinit||| 
     1357hv_assert||5.009005| 
     1358hv_auxinit|||n 
     1359hv_backreferences_p||| 
    11451360hv_clear_placeholders||5.009001| 
    11461361hv_clear||| 
     1362hv_copy_hints_hv||| 
    11471363hv_delayfree_ent||5.004000| 
    11481364hv_delete_common||| 
     
    11551371hv_fetch_common||| 
    11561372hv_fetch_ent||5.004000| 
     1373hv_fetchs|5.009003||p 
    11571374hv_fetch||| 
    11581375hv_free_ent||5.004000| 
     
    11641381hv_iternext||| 
    11651382hv_iterval||| 
     1383hv_kill_backrefs||| 
    11661384hv_ksplit||5.004000| 
    1167 hv_magic_check||| 
     1385hv_magic_check|||n 
     1386hv_magic_uvar_xkey||| 
    11681387hv_magic||| 
    11691388hv_name_set||5.009003| 
     
    11771396hv_store_ent||5.004000| 
    11781397hv_store_flags||5.008000| 
     1398hv_stores|5.009004||p 
    11791399hv_store||| 
    11801400hv_undef||| 
     
    11841404incl_perldb||| 
    11851405incline||| 
     1406incpush_if_exists||| 
    11861407incpush||| 
    11871408ingroup||| 
     
    11931414init_ids||| 
    11941415init_interp||| 
    1195 init_lexer||| 
    11961416init_main_stash||| 
    11971417init_perllib||| 
     
    12151435is_gv_magical_sv||| 
    12161436is_gv_magical||| 
    1217 is_handle_constructor||| 
     1437is_handle_constructor|||n 
    12181438is_list_assignment||| 
    12191439is_lvalue_sub||5.007001| 
     
    12501470is_utf8_alpha||5.006000| 
    12511471is_utf8_ascii||5.006000| 
    1252 is_utf8_char_slow||| 
     1472is_utf8_char_slow|||n 
    12531473is_utf8_char||5.006000| 
    12541474is_utf8_cntrl||5.006000| 
     1475is_utf8_common||| 
    12551476is_utf8_digit||5.006000| 
    12561477is_utf8_graph||5.006000| 
     
    12711492ix|||n 
    12721493jmaybe||| 
     1494join_exact||| 
    12731495keyword||| 
    12741496leave_scope||| 
     
    12791501list||| 
    12801502load_module_nocontext|||vn 
    1281 load_module||5.006000|v 
     1503load_module|5.006000||pv 
    12821504localize||| 
     1505looks_like_bool||| 
    12831506looks_like_number||| 
    12841507lop||| 
     
    12911514mXPUSHp|5.009002||p 
    12921515mXPUSHu|5.009002||p 
     1516mad_free||| 
     1517madlex||| 
     1518madparse||| 
    12931519magic_clear_all_env||| 
    12941520magic_clearenv||| 
     1521magic_clearhint||| 
    12951522magic_clearpack||| 
    12961523magic_clearsig||| 
     
    13021529magic_getarylen||| 
    13031530magic_getdefelem||| 
    1304 magic_getglob||| 
    13051531magic_getnkeys||| 
    13061532magic_getpack||| 
     
    13311557magic_setfm||| 
    13321558magic_setglob||| 
     1559magic_sethint||| 
    13331560magic_setisa||| 
    13341561magic_setmglob||| 
     
    13471574magic_wipepack||| 
    13481575magicname||| 
     1576make_matcher||| 
     1577make_trie_failtable||| 
    13491578make_trie||| 
    13501579malloced_size|||n 
    13511580malloc||5.007002|n 
    13521581markstack_grow||| 
     1582matcher_matches_sv||| 
    13531583measure_struct||| 
    13541584memEQ|5.004000||p 
     
    13761606modkids||| 
    13771607mod||| 
     1608more_bodies||| 
     1609more_sv||| 
    13781610moreswitches||| 
     1611mro_get_linear_isa_c3||5.009005| 
     1612mro_get_linear_isa_dfs||5.009005| 
     1613mro_get_linear_isa||5.009005| 
     1614mro_isa_changed_in||| 
     1615mro_meta_dup||| 
     1616mro_meta_init||| 
     1617mro_method_changed_in||5.009005| 
    13791618mul128||| 
    13801619mulexp10|||n 
     
    13911630my_bzero|||n 
    13921631my_chsize||| 
     1632my_clearenv||| 
     1633my_cxt_index||| 
     1634my_cxt_init||| 
     1635my_dirfd||5.009005| 
    13931636my_exit_jump||| 
    13941637my_exit||| 
     
    14241667my_popen||5.004000| 
    14251668my_setenv||| 
     1669my_snprintf|5.009004||pvn 
    14261670my_socketpair||5.007003|n 
     1671my_sprintf||5.009003|vn 
    14271672my_stat||| 
    14281673my_strftime||5.007002| 
     1674my_strlcat|5.009004||pn 
     1675my_strlcpy|5.009004||pn 
    14291676my_swabn|||n 
    14301677my_swap||| 
    14311678my_unexec||| 
     1679my_vsnprintf||5.009004|n 
    14321680my||| 
     1681need_utf8|||n 
    14331682newANONATTRSUB||5.006000| 
    14341683newANONHASH||| 
     
    14411690newBINOP||| 
    14421691newCONDOP||| 
    1443 newCONSTSUB|5.006000||p 
     1692newCONSTSUB|5.004050||p 
    14441693newCVREF||| 
    14451694newDEFSVOP||| 
    14461695newFORM||| 
    14471696newFOROP||| 
     1697newGIVENOP||5.009003| 
     1698newGIVWHENOP||| 
     1699newGP||| 
    14481700newGVOP||| 
    14491701newGVREF||| 
     
    14571709newLOOPEX||| 
    14581710newLOOPOP||| 
    1459 newMYSUB||5.006000| 
     1711newMADPROP||| 
     1712newMADsv||| 
     1713newMYSUB||| 
    14601714newNULLLIST||| 
    14611715newOP||| 
    1462 newPADOP||5.006000| 
     1716newPADOP||| 
    14631717newPMOP||| 
    14641718newPROG||| 
     
    14661720newRANGE||| 
    14671721newRV_inc|5.004000||p 
    1468 newRV_noinc|5.006000||p 
     1722newRV_noinc|5.004000||p 
    14691723newRV||| 
    14701724newSLICEOP||| 
     
    14731727newSVOP||| 
    14741728newSVREF||| 
     1729newSV_type||5.009005| 
    14751730newSVhek||5.009003| 
    14761731newSViv||| 
     
    14781733newSVpvf_nocontext|||vn 
    14791734newSVpvf||5.004000|v 
    1480 newSVpvn_share||5.007001| 
    1481 newSVpvn|5.006000||p 
     1735newSVpvn_share|5.007001||p 
     1736newSVpvn|5.004050||p 
     1737newSVpvs_share||5.009003| 
     1738newSVpvs|5.009003||p 
    14821739newSVpv||| 
    14831740newSVrv||| 
     
    14851742newSVuv|5.006000||p 
    14861743newSV||| 
     1744newTOKEN||| 
    14871745newUNOP||| 
     1746newWHENOP||5.009003| 
    14881747newWHILEOP||5.009003| 
     1748newXS_flags||5.009004| 
    14891749newXSproto||5.006000| 
    14901750newXS||5.006000| 
     
    14971757new_stackinfo||5.005000| 
    14981758new_version||5.009000| 
     1759new_warnings_bitfield||| 
    14991760next_symbol||| 
    15001761nextargv||| 
     
    15081769nuke_stacks||| 
    15091770num_overflow|||n 
     1771offer_nice_chunk||| 
    15101772oopsAV||| 
    15111773oopsCV||| 
     
    15151777op_dump||5.006000| 
    15161778op_free||| 
     1779op_getmad_weak||| 
     1780op_getmad||| 
    15171781op_null||5.007002| 
     1782op_refcnt_dec||| 
     1783op_refcnt_inc||| 
    15181784op_refcnt_lock||5.009002| 
    15191785op_refcnt_unlock||5.009002| 
     1786op_xmldump||| 
    15201787open_script||| 
    15211788pMY_CXT_|5.007003||p 
     
    15231790pTHX_|5.006000||p 
    15241791pTHX|5.006000||p 
     1792packWARN|5.007003||p 
    15251793pack_cat||5.007003| 
    15261794pack_rec||| 
     
    15391807pad_leavemy||| 
    15401808pad_new||| 
     1809pad_peg|||n 
    15411810pad_push||| 
    15421811pad_reset||| 
    15431812pad_setsv||| 
    1544 pad_sv||| 
     1813pad_sv||5.009005| 
    15451814pad_swipe||| 
    15461815pad_tidy||| 
     
    15481817parse_body||| 
    15491818parse_unicode_opts||| 
    1550 path_is_absolute||| 
     1819parser_dup||| 
     1820parser_free||| 
     1821path_is_absolute|||n 
    15511822peep||| 
    1552 pending_ident||| 
     1823pending_Slabs_to_ro||| 
    15531824perl_alloc_using|||n 
    15541825perl_alloc|||n 
     
    15611832perl_run|||n 
    15621833pidgone||| 
     1834pm_description||| 
    15631835pmflag||| 
    15641836pmop_dump||5.006000| 
     1837pmop_xmldump||| 
    15651838pmruntime||| 
    15661839pmtrans||| 
    15671840pop_scope||| 
    1568 pregcomp||| 
     1841pregcomp||5.009005| 
    15691842pregexec||| 
    15701843pregfree||| 
    15711844prepend_elem||| 
     1845prepend_madprops||| 
     1846printbuf||| 
    15721847printf_nocontext|||vn 
    1573 ptr_table_clear||| 
    1574 ptr_table_fetch||| 
    1575 ptr_table_free||| 
    1576 ptr_table_new||| 
    1577 ptr_table_split||| 
    1578 ptr_table_store||| 
     1848process_special_blocks||| 
     1849ptr_table_clear||5.009005| 
     1850ptr_table_fetch||5.009005| 
     1851ptr_table_find|||n 
     1852ptr_table_free||5.009005| 
     1853ptr_table_new||5.009005| 
     1854ptr_table_split||5.009005| 
     1855ptr_table_store||5.009005| 
    15791856push_scope||| 
    15801857put_byte||| 
    15811858pv_display||5.006000| 
     1859pv_escape||5.009004| 
     1860pv_pretty||5.009004| 
    15821861pv_uni_display||5.007003| 
    15831862qerror||| 
     1863qsortsvu||| 
     1864re_compile||5.009005| 
    15841865re_croak2||| 
    15851866re_dup||| 
    1586 re_intuit_start||5.006000| 
     1867re_intuit_start||5.009005| 
    15871868re_intuit_string||5.006000| 
     1869readpipe_override||| 
    15881870realloc||5.007002|n 
    15891871reentrant_free||| 
     
    15911873reentrant_retry|||vn 
    15921874reentrant_size||| 
     1875ref_array_or_hash||| 
     1876refcounted_he_chain_2hv||| 
     1877refcounted_he_fetch||| 
     1878refcounted_he_free||| 
     1879refcounted_he_new||| 
     1880refcounted_he_value||| 
    15931881refkids||| 
    15941882refto||| 
    1595 ref||| 
     1883ref||5.009003| 
     1884reg_check_named_buff_matched||| 
     1885reg_named_buff_all||5.009005| 
     1886reg_named_buff_exists||5.009005| 
     1887reg_named_buff_fetch||5.009005| 
     1888reg_named_buff_firstkey||5.009005| 
     1889reg_named_buff_iter||| 
     1890reg_named_buff_nextkey||5.009005| 
     1891reg_named_buff_scalar||5.009005| 
     1892reg_named_buff||| 
     1893reg_namedseq||| 
    15961894reg_node||| 
     1895reg_numbered_buff_fetch||| 
     1896reg_numbered_buff_length||| 
     1897reg_numbered_buff_store||| 
     1898reg_qr_package||| 
     1899reg_recode||| 
     1900reg_scan_name||| 
     1901reg_skipcomment||| 
     1902reg_stringify||5.009005| 
     1903reg_temp_copy||| 
    15971904reganode||| 
    15981905regatom||| 
    15991906regbranch||| 
    1600 regclass_swash||5.007003| 
     1907regclass_swash||5.009004| 
    16011908regclass||| 
    1602 regcp_set_to||| 
    16031909regcppop||| 
    16041910regcppush||| 
    1605 regcurly||| 
     1911regcurly|||n 
     1912regdump_extflags||| 
    16061913regdump||5.005000| 
     1914regdupe_internal||| 
    16071915regexec_flags||5.005000| 
    1608 reghop3||| 
    1609 reghopmaybe3||| 
    1610 reghopmaybe||| 
    1611 reghop||| 
     1916regfree_internal||5.009005| 
     1917reghop3|||n 
     1918reghop4|||n 
     1919reghopmaybe3|||n 
    16121920reginclass||| 
    16131921reginitcolors||5.006000| 
     
    16151923regmatch||| 
    16161924regnext||5.005000| 
    1617 regoptail||| 
    16181925regpiece||| 
    16191926regpposixcc||| 
    16201927regprop||| 
    1621 regrepeat_hard||| 
    16221928regrepeat||| 
     1929regtail_study||| 
    16231930regtail||| 
    16241931regtry||| 
    16251932reguni||| 
    1626 regwhite||| 
     1933regwhite|||n 
    16271934reg||| 
    16281935repeatcpy||| 
    16291936report_evil_fh||| 
    16301937report_uninit||| 
    1631 require_errno||| 
    16321938require_pv||5.006000| 
     1939require_tie_mod||| 
     1940restore_magic||| 
    16331941rninstr||| 
    16341942rsignal_restore||| 
     
    16371945rsignal||5.004000| 
    16381946run_body||| 
     1947run_user_filter||| 
    16391948runops_debug||5.005000| 
    16401949runops_standard||5.005000| 
     
    16671976save_gp||5.004000| 
    16681977save_hash||| 
    1669 save_hek_flags||| 
     1978save_hek_flags|||n 
    16701979save_helem||5.004050| 
    16711980save_hints||5.005000| 
     
    16901999save_sptr||| 
    16912000save_svref||| 
    1692 save_threadsv||5.005000| 
    16932001save_vptr||5.006000| 
    16942002savepvn||| 
     2003savepvs||5.009003| 
    16952004savepv||| 
     2005savesharedpvn||5.009005| 
    16962006savesharedpv||5.007003| 
    16972007savestack_grow_cnt||5.008001| 
     
    16992009savesvpv||5.009002| 
    17002010sawparens||| 
    1701 scalar_mod_type||| 
     2011scalar_mod_type|||n 
    17022012scalarboolean||| 
    17032013scalarkids||| 
     
    17202030scan_trans||| 
    17212031scan_version||5.009001| 
    1722 scan_vstring||5.008001| 
     2032scan_vstring||5.009005| 
    17232033scan_word||| 
    17242034scope||| 
    17252035screaminstr||5.005000| 
    1726 seed||| 
     2036seed||5.008001| 
     2037sequence_num||| 
     2038sequence_tail||| 
     2039sequence||| 
    17272040set_context||5.006000|n 
    17282041set_csh||| 
     
    17332046setenv_getix||| 
    17342047share_hek_flags||| 
    1735 share_hek||| 
     2048share_hek||5.004000| 
    17362049si_dup||| 
    17372050sighandler|||n 
    17382051simplify_sort||| 
     2052skipspace0||| 
     2053skipspace1||| 
     2054skipspace2||| 
    17392055skipspace||| 
     2056softref2xv||| 
     2057sortcv_stacked||| 
     2058sortcv_xsub||| 
     2059sortcv||| 
     2060sortsv_flags||5.009003| 
    17402061sortsv||5.007003| 
     2062space_join_names_mortal||| 
    17412063ss_dup||| 
    17422064stack_grow||| 
     2065start_force||| 
    17432066start_glob||| 
    17442067start_subparse||5.004000| 
    1745 stashpv_hvname_match||5.009003| 
     2068stashpv_hvname_match||5.009005| 
    17462069stdize_locale||| 
    17472070strEQ||| 
     
    17522075strNE||| 
    17532076str_to_version||5.006000| 
     2077strip_return||| 
    17542078strnEQ||| 
    17552079strnNE||| 
     
    17622086sv_2cv||| 
    17632087sv_2io||| 
     2088sv_2iuv_common||| 
    17642089sv_2iuv_non_preserve||| 
    17652090sv_2iv_flags||5.009001| 
     
    17672092sv_2mortal||| 
    17682093sv_2nv||| 
    1769 sv_2pv_flags||5.007002| 
     2094sv_2pv_flags|5.007002||p 
    17702095sv_2pv_nolen|5.006000||p 
    1771 sv_2pvbyte_nolen||| 
     2096sv_2pvbyte_nolen|5.006000||p 
    17722097sv_2pvbyte|5.006000||p 
    17732098sv_2pvutf8_nolen||5.006000| 
     
    17812106sv_bless||| 
    17822107sv_cat_decode||5.008001| 
    1783 sv_catpv_mg|5.006000||p 
     2108sv_catpv_mg|5.004050||p 
    17842109sv_catpvf_mg_nocontext|||pvn 
    17852110sv_catpvf_mg|5.006000|5.004000|pv 
     
    17872112sv_catpvf||5.004000|v 
    17882113sv_catpvn_flags||5.007002| 
    1789 sv_catpvn_mg|5.006000||p 
     2114sv_catpvn_mg|5.004050||p 
    17902115sv_catpvn_nomg|5.007002||p 
    17912116sv_catpvn||| 
     2117sv_catpvs|5.009003||p 
    17922118sv_catpv||| 
    17932119sv_catsv_flags||5.007002| 
    1794 sv_catsv_mg|5.006000||p 
     2120sv_catsv_mg|5.004050||p 
    17952121sv_catsv_nomg|5.007002||p 
    17962122sv_catsv||| 
     2123sv_catxmlpvn||| 
     2124sv_catxmlsv||| 
    17972125sv_chop||| 
    17982126sv_clean_all||| 
     
    18072135sv_del_backref||| 
    18082136sv_derived_from||5.004000| 
     2137sv_does||5.009004| 
    18092138sv_dump||| 
    18102139sv_dup||| 
    18112140sv_eq||| 
     2141sv_exp_grow||| 
    18122142sv_force_normal_flags||5.007001| 
    18132143sv_force_normal||5.006000| 
     
    18172147sv_gets||5.004000| 
    18182148sv_grow||| 
     2149sv_i_ncmp||| 
    18192150sv_inc||| 
    18202151sv_insert||| 
     
    18222153sv_isobject||| 
    18232154sv_iv||5.005000| 
     2155sv_kill_backrefs||| 
    18242156sv_len_utf8||5.006000| 
    18252157sv_len||| 
     2158sv_magic_portable|5.009005|5.004000|p 
    18262159sv_magicext||5.007003| 
    18272160sv_magic||| 
    18282161sv_mortalcopy||| 
     2162sv_ncmp||| 
    18292163sv_newmortal||| 
    18302164sv_newref||| 
    18312165sv_nolocking||5.007003| 
    18322166sv_nosharing||5.007003| 
    1833 sv_nounlocking||5.007003| 
     2167sv_nounlocking||| 
    18342168sv_nv||5.005000| 
    18352169sv_peek||5.005000| 
     2170sv_pos_b2u_midway||| 
    18362171sv_pos_b2u||5.006000| 
     2172sv_pos_u2b_cached||| 
     2173sv_pos_u2b_forwards|||n 
     2174sv_pos_u2b_midway|||n 
    18372175sv_pos_u2b||5.006000| 
    18382176sv_pvbyten_force||5.006000| 
    18392177sv_pvbyten||5.006000| 
    18402178sv_pvbyte||5.006000| 
    1841 sv_pvn_force_flags||5.007002| 
    1842 sv_pvn_force|||p 
     2179sv_pvn_force_flags|5.007002||p 
     2180sv_pvn_force||| 
    18432181sv_pvn_nomg|5.007003||p 
    1844 sv_pvn|5.006000||p 
     2182sv_pvn||| 
    18452183sv_pvutf8n_force||5.006000| 
    18462184sv_pvutf8n||5.006000| 
     
    18502188sv_reftype||| 
    18512189sv_release_COW||| 
    1852 sv_release_IVX||| 
    18532190sv_replace||| 
    18542191sv_report_used||| 
    18552192sv_reset||| 
    18562193sv_rvweaken||5.006000| 
    1857 sv_setiv_mg|5.006000||p 
     2194sv_setiv_mg|5.004050||p 
    18582195sv_setiv||| 
    18592196sv_setnv_mg|5.006000||p 
    18602197sv_setnv||| 
    1861 sv_setpv_mg|5.006000||p 
     2198sv_setpv_mg|5.004050||p 
    18622199sv_setpvf_mg_nocontext|||pvn 
    18632200sv_setpvf_mg|5.006000|5.004000|pv 
     
    18662203sv_setpviv_mg||5.008001| 
    18672204sv_setpviv||5.008001| 
    1868 sv_setpvn_mg|5.006000||p 
     2205sv_setpvn_mg|5.004050||p 
    18692206sv_setpvn||| 
     2207sv_setpvs|5.009004||p 
    18702208sv_setpv||| 
    18712209sv_setref_iv||| 
     
    18762214sv_setsv_cow||| 
    18772215sv_setsv_flags||5.007002| 
    1878 sv_setsv_mg|5.006000||p 
     2216sv_setsv_mg|5.004050||p 
    18792217sv_setsv_nomg|5.007002||p 
    18802218sv_setsv||| 
    1881 sv_setuv_mg|5.006000||p 
    1882 sv_setuv|5.006000||p 
     2219sv_setuv_mg|5.004050||p 
     2220sv_setuv|5.004000||p 
    18832221sv_tainted||5.004000| 
    18842222sv_taint||5.004000| 
     
    18912229sv_untaint||5.004000| 
    18922230sv_upgrade||| 
    1893 sv_usepvn_mg|5.006000||p 
     2231sv_usepvn_flags||5.009004| 
     2232sv_usepvn_mg|5.004050||p 
    18942233sv_usepvn||| 
    18952234sv_utf8_decode||5.006000| 
     
    18982237sv_utf8_upgrade_flags||5.007002| 
    18992238sv_utf8_upgrade||5.007001| 
    1900 sv_uv|5.006000||p 
     2239sv_uv|5.005000||p 
    19012240sv_vcatpvf_mg|5.006000|5.004000|p 
    19022241sv_vcatpvfn||5.004000| 
     
    19052244sv_vsetpvfn||5.004000| 
    19062245sv_vsetpvf|5.006000|5.004000|p 
     2246sv_xmlpeek||| 
    19072247svtype||| 
    19082248swallow_bom||| 
     2249swap_match_buff||| 
    19092250swash_fetch||5.007002| 
     2251swash_get||| 
    19102252swash_init||5.006000| 
    19112253sys_intern_clear||| 
     
    19312273to_utf8_title||5.007003| 
    19322274to_utf8_upper||5.007003| 
     2275token_free||| 
     2276token_getmad||| 
     2277tokenize_use||| 
    19332278tokeq||| 
    19342279tokereport||| 
    19352280too_few_arguments||| 
    19362281too_many_arguments||| 
     2282uiv_2buf|||n 
    19372283unlnk||| 
    19382284unpack_rec||| 
     
    19422288unshare_hek||| 
    19432289unsharepvn||5.004000| 
    1944 upg_version||5.009000| 
     2290unwind_handler_stack||| 
     2291update_debugger_info||| 
     2292upg_version||5.009005| 
    19452293usage||| 
    1946 utf16_textfilter||| 
    19472294utf16_to_utf8_reversed||5.006001| 
    19482295utf16_to_utf8||5.006001| 
    1949 utf16rev_textfilter||| 
    19502296utf8_distance||5.006000| 
    19512297utf8_hop||5.006000| 
    19522298utf8_length||5.007001| 
    1953 utf8_mg_pos_init||| 
    1954 utf8_mg_pos||| 
     2299utf8_mg_pos_cache_update||| 
    19552300utf8_to_bytes||5.006001| 
    19562301utf8_to_uvchr||5.007001| 
    19572302utf8_to_uvuni||5.007001| 
    1958 utf8n_to_uvchr||5.007001| 
     2303utf8n_to_uvchr||| 
    19592304utf8n_to_uvuni||5.007001| 
    19602305utilize||| 
    19612306uvchr_to_utf8_flags||5.007003| 
    1962 uvchr_to_utf8||5.007001| 
     2307uvchr_to_utf8||| 
    19632308uvuni_to_utf8_flags||5.007003| 
    19642309uvuni_to_utf8||5.007001| 
     
    19682313vcroak||5.006000| 
    19692314vdeb||5.007003| 
     2315vdie_common||| 
     2316vdie_croak_common||| 
    19702317vdie||| 
    19712318vform||5.006000| 
     
    19732320vivify_defelem||| 
    19742321vivify_ref||| 
    1975 vload_module||5.006000| 
     2322vload_module|5.006000||p 
    19762323vmess||5.006000| 
    19772324vnewSVpvf|5.006000|5.004000|p 
     
    19792326vnumify||5.009000| 
    19802327vstringify||5.009000| 
     2328vverify||5.009003| 
    19812329vwarner||5.006000| 
    19822330vwarn||5.006000| 
     
    19842332warn_nocontext|||vn 
    19852333warner_nocontext|||vn 
    1986 warner||5.006000|v 
     2334warner|5.006000|5.004000|pv 
    19872335warn|||v 
    19882336watch||| 
    19892337whichsig||| 
     2338write_no_mem||| 
    19902339write_to_stderr||| 
     2340xmldump_all||| 
     2341xmldump_attr||| 
     2342xmldump_eval||| 
     2343xmldump_form||| 
     2344xmldump_indent|||v 
     2345xmldump_packsubs||| 
     2346xmldump_sub||| 
     2347xmldump_vindent||| 
    19912348yyerror||| 
    19922349yylex||| 
     
    20062363# Scan for possible replacement candidates 
    20072364 
    2008 my(%replace, %need, %hints, %depends); 
     2365my(%replace, %need, %hints, %warnings, %depends); 
    20092366my $replace = 0; 
    2010 my $hint = ''; 
     2367my($hint, $define, $function); 
     2368 
     2369sub find_api 
     2370{ 
     2371  my $code = shift; 
     2372  $code =~ s{ 
     2373    / (?: \*[^*]*\*+(?:[^$ccs][^*]*\*+)* / | /[^\r\n]*) 
     2374  | "[^"\\]*(?:\\.[^"\\]*)*" 
     2375  | '[^'\\]*(?:\\.[^'\\]*)*' }{}egsx; 
     2376  grep { exists $API{$_} } $code =~ /(\w+)/mg; 
     2377} 
    20112378 
    20122379while (<DATA>) { 
    20132380  if ($hint) { 
     2381    my $h = $hint->[0] eq 'Hint' ? \%hints : \%warnings; 
    20142382    if (m{^\s*\*\s(.*?)\s*$}) { 
    2015       $hints{$hint} ||= '';  # suppress warning with older perls 
    2016       $hints{$hint} .= "$1\n"; 
     2383      for (@{$hint->[1]}) { 
     2384        $h->{$_} ||= '';  # suppress warning with older perls 
     2385        $h->{$_} .= "$1\n"; 
     2386      } 
     2387    } 
     2388    else { undef $hint } 
     2389  } 
     2390 
     2391  $hint = [$1, [split /,?\s+/, $2]] 
     2392      if m{^\s*$rccs\s+(Hint|Warning):\s+(\w+(?:,?\s+\w+)*)\s*$}; 
     2393 
     2394  if ($define) { 
     2395    if ($define->[1] =~ /\\$/) { 
     2396      $define->[1] .= $_; 
    20172397    } 
    20182398    else { 
    2019       $hint = ''; 
     2399      if (exists $API{$define->[0]} && $define->[1] !~ /^DPPP_\(/) { 
     2400        my @n = find_api($define->[1]); 
     2401        push @{$depends{$define->[0]}}, @n if @n 
     2402      } 
     2403      undef $define; 
    20202404    } 
    20212405  } 
    2022   $hint = $1 if m{^\s*$rccs\sHint:\s+(\w+)\s*$}; 
     2406 
     2407  $define = [$1, $2] if m{^\s*#\s*define\s+(\w+)(?:\([^)]*\))?\s+(.*)}; 
     2408 
     2409  if ($function) { 
     2410    if (/^}/) { 
     2411      if (exists $API{$function->[0]}) { 
     2412        my @n = find_api($function->[1]); 
     2413        push @{$depends{$function->[0]}}, @n if @n 
     2414      } 
     2415      undef $define; 
     2416    } 
     2417    else { 
     2418      $function->[1] .= $_; 
     2419    } 
     2420  } 
     2421 
     2422  $function = [$1, ''] if m{^DPPP_\(my_(\w+)\)}; 
    20232423 
    20242424  $replace     = $1 if m{^\s*$rccs\s+Replace:\s+(\d+)\s+$rcce\s*$}; 
     
    20322432 
    20332433  $need{$1} = 1 if m{^#if\s+defined\(NEED_(\w+)(?:_GLOBAL)?\)}; 
     2434} 
     2435 
     2436for (values %depends) { 
     2437  my %s; 
     2438  $_ = [sort grep !$s{$_}++, @$_]; 
    20342439} 
    20352440 
     
    20522457      print "Support needs to be explicitly requested by NEED_$f.\n" if exists $need{$f}; 
    20532458      print "Depends on: ", join(', ', @{$depends{$f}}), ".\n" if exists $depends{$f}; 
    2054       print "$hints{$f}" if exists $hints{$f}; 
     2459      print "\n$hints{$f}" if exists $hints{$f}; 
     2460      print "\nWARNING:\n$warnings{$f}" if exists $warnings{$f}; 
    20552461      $info++; 
    20562462    } 
    2057     unless ($info) { 
    2058       print "No portability information available.\n"; 
    2059     } 
     2463    print "No portability information available.\n" unless $info; 
    20602464    $count++; 
    20612465  } 
    2062   if ($count > 0) { 
    2063     print "\n"; 
    2064   } 
    2065   else { 
    2066     print "Found no API matching '$opt{'api-info'}'.\n"; 
    2067   } 
     2466  $count or print "Found no API matching '$opt{'api-info'}'."; 
     2467  print "\n"; 
    20682468  exit 0; 
    20692469} 
     
    20772477    push @flags, 'depend'   if exists $depends{$f}; 
    20782478    push @flags, 'hint'     if exists $hints{$f}; 
     2479    push @flags, 'warning'  if exists $warnings{$f}; 
    20792480    my $flags = @flags ? '  ['.join(', ', @flags).']' : ''; 
    20802481    print "$f$flags\n"; 
     
    20842485 
    20852486my @files; 
    2086 my @srcext = qw( xs c h cc cpp ); 
    2087 my $srcext = join '|', @srcext; 
     2487my @srcext = qw( .xs .c .h .cc .cpp -c.inc -xs.inc ); 
     2488my $srcext = join '|', map { quotemeta $_ } @srcext; 
    20882489 
    20892490if (@ARGV) { 
    20902491  my %seen; 
    2091   @files = grep { -f && !exists $seen{$_} } map { glob $_ } @ARGV; 
     2492  for (@ARGV) { 
     2493    if (-e) { 
     2494      if (-f) { 
     2495        push @files, $_ unless $seen{$_}++; 
     2496      } 
     2497      else { warn "'$_' is not a file.\n" } 
     2498    } 
     2499    else { 
     2500      my @new = grep { -f } glob $_ 
     2501          or warn "'$_' does not exist.\n"; 
     2502      push @files, grep { !$seen{$_}++ } @new; 
     2503    } 
     2504  } 
    20922505} 
    20932506else { 
     
    20952508    require File::Find; 
    20962509    File::Find::find(sub { 
    2097       $File::Find::name =~ /\.($srcext)$/i 
     2510      $File::Find::name =~ /($srcext)$/i 
    20982511          and push @files, $File::Find::name; 
    20992512    }, '.'); 
    21002513  }; 
    21012514  if ($@) { 
    2102     @files = map { glob "*.$_" } @srcext; 
     2515    @files = map { glob "*$_" } @srcext; 
    21032516  } 
    21042517} 
     
    21082521  my %xsc = map { /(.*)\.xs$/ ? ("$1.c" => 1, "$1.cc" => 1) : () } @files; 
    21092522  for (@files) { 
    2110     my $out = exists $xsc{$_} || /\b\Q$ppport\E$/i || !/\.($srcext)$/i; 
     2523    my $out = exists $xsc{$_} || /\b\Q$ppport\E$/i || !/($srcext)$/i; 
    21112524    push @{ $out ? \@out : \@in }, $_; 
    21122525  } 
     
    21172530} 
    21182531 
    2119 unless (@files) { 
    2120   die "No input files given!\n"; 
    2121 } 
     2532die "No input files given!\n" unless @files; 
    21222533 
    21232534my(%files, %global, %revreplace); 
     
    21392550  my %file = (orig => $c, changes => 0); 
    21402551 
    2141   # temporarily remove C comments from the code 
     2552  # Temporarily remove C/XS comments and strings from the code 
    21422553  my @ccom; 
     2554 
    21432555  $c =~ s{ 
    2144     ( 
    2145         [^"'/]+ 
    2146       | 
    2147         (?:"[^"\\]*(?:\\.[^"\\]*)*" [^"'/]*)+ 
    2148       | 
    2149         (?:'[^'\\]*(?:\\.[^'\\]*)*' [^"'/]*)+ 
    2150     ) 
    2151   | 
    2152     (/ (?: 
    2153         \*[^*]*\*+(?:[^$ccs][^*]*\*+)* / 
    2154         | 
    2155         /[^\r\n]* 
    2156       )) 
    2157   }{ 
    2158     defined $2 and push @ccom, $2; 
    2159     defined $1 ? $1 : "$ccs$#ccom$cce"; 
    2160   }egsx; 
     2556    ( ^$HS*\#$HS*include\b[^\r\n]+\b(?:\Q$ppport\E|XSUB\.h)\b[^\r\n]* 
     2557    | ^$HS*\#$HS*(?:define|elif|if(?:def)?)\b[^\r\n]* ) 
     2558  | ( ^$HS*\#[^\r\n]* 
     2559    | "[^"\\]*(?:\\.[^"\\]*)*" 
     2560    | '[^'\\]*(?:\\.[^'\\]*)*' 
     2561    | / (?: \*[^*]*\*+(?:[^$ccs][^*]*\*+)* / | /[^\r\n]* ) ) 
     2562  }{ defined $2 and push @ccom, $2; 
     2563     defined $1 ? $1 : "$ccs$#ccom$cce" }mgsex; 
    21612564 
    21622565  $file{ccom} = \@ccom; 
    21632566  $file{code} = $c; 
    2164   $file{has_inc_ppport} = ($c =~ /#.*include.*\Q$ppport\E/); 
     2567  $file{has_inc_ppport} = $c =~ /^$HS*#$HS*include[^\r\n]+\b\Q$ppport\E\b/m; 
    21652568 
    21662569  my $func; 
     
    21732576      $file{uses_Perl}{$func}++ if $c =~ /\bPerl_$func\b/; 
    21742577      if (exists $API{$func}{provided}) { 
     2578        $file{uses_provided}{$func}++; 
    21752579        if (!exists $API{$func}{base} || $API{$func}{base} > $opt{'compat-version'}) { 
    21762580          $file{uses}{$func}++; 
     
    21832587          } 
    21842588          for ($func, @deps) { 
    2185             if (exists $need{$_}) { 
    2186               $file{needs}{$_} = 'static'; 
    2187             } 
     2589            $file{needs}{$_} = 'static' if exists $need{$_}; 
    21882590          } 
    21892591        } 
     
    22012603      $file{defined $3 ? 'needed_global' : 'needed_static'}{$2}++; 
    22022604    } 
    2203     else { 
    2204       warning("Possibly wrong #define $1 in $filename"); 
    2205     } 
     2605    else { warning("Possibly wrong #define $1 in $filename") } 
    22062606  } 
    22072607 
     
    22402640  my $func; 
    22412641  my $c = $file{code}; 
     2642  my $warnings = 0; 
    22422643 
    22432644  for $func (sort keys %{$file{uses_Perl}}) { 
    22442645    if ($API{$func}{varargs}) { 
    2245       my $changes = ($c =~ s{\b(Perl_$func\s*\(\s*)(?!aTHX_?)(\)|[^\s)]*\))} 
    2246                             { $1 . ($2 eq ')' ? 'aTHX' : 'aTHX_ ') . $2 }ge); 
    2247       if ($changes) { 
    2248         warning("Doesn't pass interpreter argument aTHX to Perl_$func"); 
    2249         $file{changes} += $changes; 
     2646      unless ($API{$func}{nothxarg}) { 
     2647        my $changes = ($c =~ s{\b(Perl_$func\s*\(\s*)(?!aTHX_?)(\)|[^\s)]*\))} 
     2648                              { $1 . ($2 eq ')' ? 'aTHX' : 'aTHX_ ') . $2 }ge); 
     2649        if ($changes) { 
     2650          warning("Doesn't pass interpreter argument aTHX to Perl_$func"); 
     2651          $file{changes} += $changes; 
     2652        } 
    22502653      } 
    22512654    } 
     
    22622665  } 
    22632666 
    2264   for $func (sort keys %{$file{uses}}) { 
    2265     next unless $file{uses}{$func};   # if it's only a dependency 
    2266     if (exists $file{uses_deps}{$func}) { 
    2267       diag("Uses $func, which depends on ", join(', ', @{$file{uses_deps}{$func}})); 
     2667  for $func (sort keys %{$file{uses_provided}}) { 
     2668    if ($file{uses}{$func}) { 
     2669      if (exists $file{uses_deps}{$func}) { 
     2670        diag("Uses $func, which depends on ", join(', ', @{$file{uses_deps}{$func}})); 
     2671      } 
     2672      else { 
     2673        diag("Uses $func"); 
     2674      } 
    22682675    } 
    2269     elsif (exists $replace{$func}) { 
    2270       warning("Uses $func instead of $replace{$func}"); 
    2271       $file{changes} += ($c =~ s/\b$func\b/$replace{$func}/g); 
     2676    $warnings += hint($func); 
     2677  } 
     2678 
     2679  unless ($opt{quiet}) { 
     2680    for $func (sort keys %{$file{uses_todo}}) { 
     2681      print "*** WARNING: Uses $func, which may not be portable below perl ", 
     2682            format_version($API{$func}{todo}), ", even with '$ppport'\n"; 
     2683      $warnings++; 
    22722684    } 
    2273     else { 
    2274       diag("Uses $func"); 
    2275     } 
    2276     hint($func); 
    2277   } 
    2278  
    2279   for $func (sort keys %{$file{uses_todo}}) { 
    2280     warning("Uses $func, which may not be portable below perl ", 
    2281             format_version($API{$func}{todo})); 
    22822685  } 
    22832686 
     
    23772780    warning("Uses $cppc C++ style comment$s, which is not portable"); 
    23782781  } 
     2782 
     2783  my $s = $warnings != 1 ? 's' : ''; 
     2784  my $warn = $warnings ? " ($warnings warning$s)" : ''; 
     2785  info("Analysis completed$warn"); 
    23792786 
    23802787  if ($file{changes}) { 
     
    24322839 
    24332840 
     2841sub try_use { eval "use @_;"; return $@ eq '' } 
     2842 
    24342843sub mydiff 
    24352844{ 
     
    24422851  } 
    24432852 
    2444   if (!defined $diff and can_use('Text::Diff')) { 
     2853  if (!defined $diff and try_use('Text::Diff')) { 
    24452854    $diff = Text::Diff::diff($file, \$str, { STYLE => 'Unified' }); 
    24462855    $diff = <<HEADER . $diff; 
     
    24642873 
    24652874  print F $diff; 
    2466  
    24672875} 
    24682876 
     
    25012909} 
    25022910 
    2503 sub can_use 
    2504 { 
    2505   eval "use @_;"; 
    2506   return $@ eq ''; 
    2507 } 
    2508  
    25092911sub rec_depend 
    25102912{ 
    2511   my $func = shift; 
    2512   my %seen; 
     2913  my($func, $seen) = @_; 
    25132914  return () unless exists $depends{$func}; 
    2514   grep !$seen{$_}++, map { ($_, rec_depend($_)) } @{$depends{$func}}; 
     2915  $seen = {%{$seen||{}}}; 
     2916  return () if $seen->{$func}++; 
     2917  my %s; 
     2918  grep !$s{$_}++, map { ($_, rec_depend($_, $seen)) } @{$depends{$func}}; 
    25152919} 
    25162920 
     
    25922996 
    25932997my %given_hints; 
     2998my %given_warnings; 
    25942999sub hint 
    25953000{ 
    25963001  $opt{quiet} and return; 
    2597   $opt{hints} or return; 
    25983002  my $func = shift; 
    2599   exists $hints{$func} or return; 
    2600   $given_hints{$func}++ and return; 
    2601   my $hint = $hints{$func}; 
    2602   $hint =~ s/^/   /mg; 
    2603   print "   --- hint for $func ---\n", $hint; 
     3003  my $rv = 0; 
     3004  if (exists $warnings{$func} && !$given_warnings{$func}++) { 
     3005    my $warn = $warnings{$func}; 
     3006    $warn =~ s!^!*** !mg; 
     3007    print "*** WARNING: $func\n", $warn; 
     3008    $rv++; 
     3009  } 
     3010  if ($opt{hints} && exists $hints{$func} && !$given_hints{$func}++) { 
     3011    my $hint = $hints{$func}; 
     3012    $hint =~ s/^/   /mg; 
     3013    print "   --- hint for $func ---\n", $hint; 
     3014  } 
     3015  $rv; 
    26043016} 
    26053017 
     
    26203032 
    26213033  exit 2; 
     3034} 
     3035 
     3036sub strip 
     3037{ 
     3038  my $self = do { local(@ARGV,$/)=($0); <> }; 
     3039  my($copy) = $self =~ /^=head\d\s+COPYRIGHT\s*^(.*?)^=\w+/ms; 
     3040  $copy =~ s/^(?=\S+)/    /gms; 
     3041  $self =~ s/^$HS+Do NOT edit.*?(?=^-)/$copy/ms; 
     3042  $self =~ s/^SKIP.*(?=^__DATA__)/SKIP 
     3043if (\@ARGV && \$ARGV[0] eq '--unstrip') { 
     3044  eval { require Devel::PPPort }; 
     3045  \$@ and die "Cannot require Devel::PPPort, please install.\\n"; 
     3046  if (\$Devel::PPPort::VERSION < $VERSION) { 
     3047    die "$0 was originally generated with Devel::PPPort $VERSION.\\n" 
     3048      . "Your Devel::PPPort is only version \$Devel::PPPort::VERSION.\\n" 
     3049      . "Please install a newer version, or --unstrip will not work.\\n"; 
     3050  } 
     3051  Devel::PPPort::WriteFile(\$0); 
     3052  exit 0; 
     3053} 
     3054print <<END; 
     3055 
     3056Sorry, but this is a stripped version of \$0. 
     3057 
     3058To be able to use its original script and doc functionality, 
     3059please try to regenerate this file using: 
     3060 
     3061  \$^X \$0 --unstrip 
     3062 
     3063END 
     3064/ms; 
     3065  my($pl, $c) = $self =~ /(.*^__DATA__)(.*)/ms; 
     3066  $c =~ s{ 
     3067    / (?: \*[^*]*\*+(?:[^$ccs][^*]*\*+)* / | /[^\r\n]*) 
     3068  | ( "[^"\\]*(?:\\.[^"\\]*)*" 
     3069    | '[^'\\]*(?:\\.[^'\\]*)*' ) 
     3070  | ($HS+) }{ defined $2 ? ' ' : ($1 || '') }gsex; 
     3071  $c =~ s!\s+$!!mg; 
     3072  $c =~ s!^$LF!!mg; 
     3073  $c =~ s!^\s*#\s*!#!mg; 
     3074  $c =~ s!^\s+!!mg; 
     3075 
     3076  open OUT, ">$0" or die "cannot strip $0: $!\n"; 
     3077  print OUT "$pl$c\n"; 
     3078 
     3079  exit 0; 
    26223080} 
    26233081 
     
    26533111#endif 
    26543112 
    2655 #define PERL_BCDVERSION ((PERL_REVISION * 0x1000000L) + (PERL_VERSION * 0x1000L) + PERL_SUBVERSION) 
     3113#define _dpppDEC2BCD(dec) ((((dec)/100)<<8)|((((dec)%100)/10)<<4)|((dec)%10)) 
     3114#define PERL_BCDVERSION ((_dpppDEC2BCD(PERL_REVISION)<<24)|(_dpppDEC2BCD(PERL_VERSION)<<12)|_dpppDEC2BCD(PERL_SUBVERSION)) 
    26563115 
    26573116/* It is very unlikely that anyone will try to use this with Perl 6 
     
    29993458#  define UVSIZE                         IVSIZE 
    30003459#endif 
    3001  
    30023460#ifndef sv_setuv 
    3003 #  define sv_setuv(sv, uv)                  \ 
    3004    STMT_START {                             \ 
    3005        UV TeMpUv = uv;                      \ 
    3006        if (TeMpUv <= IV_MAX)                \ 
    3007            sv_setiv(sv, TeMpUv);            \ 
    3008        else                                 \ 
    3009            sv_setnv(sv, (double)TeMpUv);    \ 
    3010    } STMT_END 
    3011 #endif 
    3012  
     3461#  define sv_setuv(sv, uv)               \ 
     3462               STMT_START {                         \ 
     3463                 UV TeMpUv = uv;                    \ 
     3464                 if (TeMpUv <= IV_MAX)              \ 
     3465                   sv_setiv(sv, TeMpUv);            \ 
     3466                 else                               \ 
     3467                   sv_setnv(sv, (double)TeMpUv);    \ 
     3468               } STMT_END 
     3469#endif 
    30133470#ifndef newSVuv 
    3014 #  define newSVuv(uv) ((uv) <= IV_MAX ? newSViv((IV)uv) : newSVnv((NV)uv)) 
     3471#  define newSVuv(uv)                    ((uv) <= IV_MAX ? newSViv((IV)uv) : newSVnv((NV)uv)) 
    30153472#endif 
    30163473#ifndef sv_2uv 
     
    30403497#  define sv_uv(sv)                      SvUVx(sv) 
    30413498#endif 
     3499 
     3500#if !defined(SvUOK) && defined(SvIOK_UV) 
     3501#  define SvUOK(sv) SvIOK_UV(sv) 
     3502#endif 
    30423503#ifndef XST_mUV 
    30433504#  define XST_mUV(i,v)                   (ST(i) = sv_2mortal(newSVuv(v))  ) 
     
    30553516#endif 
    30563517 
    3057 #if (PERL_VERSION < 4) || ((PERL_VERSION == 4) && (PERL_SUBVERSION <= 5)) 
     3518#ifdef HAS_MEMCMP 
     3519#ifndef memNE 
     3520#  define memNE(s1,s2,l)                 (memcmp(s1,s2,l)) 
     3521#endif 
     3522 
     3523#ifndef memEQ 
     3524#  define memEQ(s1,s2,l)                 (!memcmp(s1,s2,l)) 
     3525#endif 
     3526 
     3527#else 
     3528#ifndef memNE 
     3529#  define memNE(s1,s2,l)                 (bcmp(s1,s2,l)) 
     3530#endif 
     3531 
     3532#ifndef memEQ 
     3533#  define memEQ(s1,s2,l)                 (!bcmp(s1,s2,l)) 
     3534#endif 
     3535 
     3536#endif 
     3537#ifndef MoveD 
     3538#  define MoveD(s,d,n,t)                 memmove((char*)(d),(char*)(s), (n) * sizeof(t)) 
     3539#endif 
     3540 
     3541#ifndef CopyD 
     3542#  define CopyD(s,d,n,t)                 memcpy((char*)(d),(char*)(s), (n) * sizeof(t)) 
     3543#endif 
     3544 
     3545#ifdef HAS_MEMSET 
     3546#ifndef ZeroD 
     3547#  define ZeroD(d,n,t)                   memzero((char*)(d), (n) * sizeof(t)) 
     3548#endif 
     3549 
     3550#else 
     3551#ifndef ZeroD 
     3552#  define ZeroD(d,n,t)                   ((void)memzero((char*)(d), (n) * sizeof(t)), d) 
     3553#endif 
     3554 
     3555#endif 
     3556#ifndef PoisonWith 
     3557#  define PoisonWith(d,n,t,b)            (void)memset((char*)(d), (U8)(b), (n) * sizeof(t)) 
     3558#endif 
     3559 
     3560#ifndef PoisonNew 
     3561#  define PoisonNew(d,n,t)               PoisonWith(d,n,t,0xAB) 
     3562#endif 
     3563 
     3564#ifndef PoisonFree 
     3565#  define PoisonFree(d,n,t)              PoisonWith(d,n,t,0xEF) 
     3566#endif 
     3567 
     3568#ifndef Poison 
     3569#  define Poison(d,n,t)                  PoisonFree(d,n,t) 
     3570#endif 
     3571#ifndef Newx 
     3572#  define Newx(v,n,t)                    New(0,v,n,t) 
     3573#endif 
     3574 
     3575#ifndef Newxc 
     3576#  define Newxc(v,n,t,c)                 Newc(0,v,n,t,c) 
     3577#endif 
     3578 
     3579#ifndef Newxz 
     3580#  define Newxz(v,n,t)                   Newz(0,v,n,t) 
     3581#endif 
     3582 
     3583#ifndef PERL_UNUSED_DECL 
     3584#  ifdef HASATTRIBUTE 
     3585#    if (defined(__GNUC__) && defined(__cplusplus)) || defined(__INTEL_COMPILER) 
     3586#      define PERL_UNUSED_DECL 
     3587#    else 
     3588#      define PERL_UNUSED_DECL __attribute__((unused)) 
     3589#    endif 
     3590#  else 
     3591#    define PERL_UNUSED_DECL 
     3592#  endif 
     3593#endif 
     3594 
     3595#ifndef PERL_UNUSED_ARG 
     3596#  if defined(lint) && defined(S_SPLINT_S) /* www.splint.org */ 
     3597#    include <note.h> 
     3598#    define PERL_UNUSED_ARG(x) NOTE(ARGUNUSED(x)) 
     3599#  else 
     3600#    define PERL_UNUSED_ARG(x) ((void)x) 
     3601#  endif 
     3602#endif 
     3603 
     3604#ifndef PERL_UNUSED_VAR 
     3605#  define PERL_UNUSED_VAR(x) ((void)x) 
     3606#endif 
     3607 
     3608#ifndef PERL_UNUSED_CONTEXT 
     3609#  ifdef USE_ITHREADS 
     3610#    define PERL_UNUSED_CONTEXT PERL_UNUSED_ARG(my_perl) 
     3611#  else 
     3612#    define PERL_UNUSED_CONTEXT 
     3613#  endif 
     3614#endif 
     3615#ifndef NOOP 
     3616#  define NOOP                           /*EMPTY*/(void)0 
     3617#endif 
     3618 
     3619#ifndef dNOOP 
     3620#  define dNOOP                          extern int /*@unused@*/ Perl___notused PERL_UNUSED_DECL 
     3621#endif 
     3622 
     3623#ifndef NVTYPE 
     3624#  if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE) 
     3625#    define NVTYPE long double 
     3626#  else 
     3627#    define NVTYPE double 
     3628#  endif 
     3629typedef NVTYPE NV; 
     3630#endif 
     3631 
     3632#ifndef INT2PTR 
     3633 
     3634#  if (IVSIZE == PTRSIZE) && (UVSIZE == PTRSIZE) 
     3635#    define PTRV                  UV 
     3636#    define INT2PTR(any,d)        (any)(d) 
     3637#  else 
     3638#    if PTRSIZE == LONGSIZE 
     3639#      define PTRV                unsigned long 
     3640#    else 
     3641#      define PTRV                unsigned 
     3642#    endif 
     3643#    define INT2PTR(any,d)        (any)(PTRV)(d) 
     3644#  endif 
     3645 
     3646#  define NUM2PTR(any,d)  (any)(PTRV)(d) 
     3647#  define PTR2IV(p)       INT2PTR(IV,p) 
     3648#  define PTR2UV(p)       INT2PTR(UV,p) 
     3649#  define PTR2NV(p)       NUM2PTR(NV,p) 
     3650 
     3651#  if PTRSIZE == LONGSIZE 
     3652#    define PTR2ul(p)     (unsigned long)(p) 
     3653#  else 
     3654#    define PTR2ul(p)     INT2PTR(unsigned long,p) 
     3655#  endif 
     3656 
     3657#endif /* !INT2PTR */ 
     3658 
     3659#undef START_EXTERN_C 
     3660#undef END_EXTERN_C 
     3661#undef EXTERN_C 
     3662#ifdef __cplusplus 
     3663#  define START_EXTERN_C extern "C" { 
     3664#  define END_EXTERN_C } 
     3665#  define EXTERN_C extern "C" 
     3666#else 
     3667#  define START_EXTERN_C 
     3668#  define END_EXTERN_C 
     3669#  define EXTERN_C extern 
     3670#endif 
     3671 
     3672#if defined(PERL_GCC_PEDANTIC) 
     3673#  ifndef PERL_GCC_BRACE_GROUPS_FORBIDDEN 
     3674#    define PERL_GCC_BRACE_GROUPS_FORBIDDEN 
     3675#  endif 
     3676#endif 
     3677 
     3678#if defined(__GNUC__) && !defined(PERL_GCC_BRACE_GROUPS_FORBIDDEN) && !defined(__cplusplus) 
     3679#  ifndef PERL_USE_GCC_BRACE_GROUPS 
     3680#    define PERL_USE_GCC_BRACE_GROUPS 
     3681#  endif 
     3682#endif 
     3683 
     3684#undef STMT_START 
     3685#undef STMT_END 
     3686#ifdef PERL_USE_GCC_BRACE_GROUPS 
     3687#  define STMT_START    (void)( /* gcc supports ``({ STATEMENTS; })'' */ 
     3688#  define STMT_END  ) 
     3689#else 
     3690#  if defined(VOIDFLAGS) && (VOIDFLAGS) && (defined(sun) || defined(__sun__)) && !defined(__GNUC__) 
     3691#    define STMT_START  if (1) 
     3692#    define STMT_END    else (void)0 
     3693#  else 
     3694#    define STMT_START  do 
     3695#    define STMT_END    while (0) 
     3696#  endif 
     3697#endif 
     3698#ifndef boolSV 
     3699#  define boolSV(b)                      ((b) ? &PL_sv_yes : &PL_sv_no) 
     3700#endif 
     3701 
     3702/* DEFSV appears first in 5.004_56 */ 
     3703#ifndef DEFSV 
     3704#  define DEFSV                          GvSV(PL_defgv) 
     3705#endif 
     3706 
     3707#ifndef SAVE_DEFSV 
     3708#  define SAVE_DEFSV                     SAVESPTR(GvSV(PL_defgv)) 
     3709#endif 
     3710 
     3711/* Older perls (<=5.003) lack AvFILLp */ 
     3712#ifndef AvFILLp 
     3713#  define AvFILLp                        AvFILL 
     3714#endif 
     3715#ifndef ERRSV 
     3716#  define ERRSV                          get_sv("@",FALSE) 
     3717#endif 
     3718#ifndef newSVpvn 
     3719#  define newSVpvn(data,len)             ((data)                                              \ 
     3720                                    ? ((len) ? newSVpv((data), (len)) : newSVpv("", 0)) \ 
     3721                                    : newSV(0)) 
     3722#endif 
     3723 
     3724/* Hint: gv_stashpvn 
     3725 * This function's backport doesn't support the length parameter, but 
     3726 * rather ignores it. Portability can only be ensured if the length 
     3727 * parameter is used for speed reasons, but the length can always be 
     3728 * correctly computed from the string argument. 
     3729 */ 
     3730#ifndef gv_stashpvn 
     3731#  define gv_stashpvn(str,len,create)    gv_stashpv(str,create) 
     3732#endif 
     3733 
    30583734/* Replace: 1 */ 
     3735#ifndef get_cv 
     3736#  define get_cv                         perl_get_cv 
     3737#endif 
     3738 
     3739#ifndef get_sv 
     3740#  define get_sv                         perl_get_sv 
     3741#endif 
     3742 
     3743#ifndef get_av 
     3744#  define get_av                         perl_get_av 
     3745#endif 
     3746 
     3747#ifndef get_hv 
     3748#  define get_hv                         perl_get_hv 
     3749#endif 
     3750 
     3751/* Replace: 0 */ 
     3752#ifndef dUNDERBAR 
     3753#  define dUNDERBAR                      dNOOP 
     3754#endif 
     3755 
     3756#ifndef UNDERBAR 
     3757#  define UNDERBAR                       DEFSV 
     3758#endif 
     3759#ifndef dAX 
     3760#  define dAX                            I32 ax = MARK - PL_stack_base + 1 
     3761#endif 
     3762 
     3763#ifndef dITEMS 
     3764#  define dITEMS                         I32 items = SP - MARK 
     3765#endif 
     3766#ifndef dXSTARG 
     3767#  define dXSTARG                        SV * targ = sv_newmortal() 
     3768#endif 
     3769#ifndef dAXMARK 
     3770#  define dAXMARK                        I32 ax = POPMARK; \ 
     3771                               register SV ** const mark = PL_stack_base + ax++ 
     3772#endif 
     3773#ifndef XSprePUSH 
     3774#  define XSprePUSH                      (sp = PL_stack_base + ax - 1) 
     3775#endif 
     3776 
     3777#if (PERL_BCDVERSION < 0x5005000) 
     3778#  undef XSRETURN 
     3779#  define XSRETURN(off)                                   \ 
     3780      STMT_START {                                        \ 
     3781          PL_stack_sp = PL_stack_base + ax + ((off) - 1); \ 
     3782          return;                                         \ 
     3783      } STMT_END 
     3784#endif 
     3785#ifndef PERL_ABS 
     3786#  define PERL_ABS(x)                    ((x) < 0 ? -(x) : (x)) 
     3787#endif 
     3788#ifndef dVAR 
     3789#  define dVAR                           dNOOP 
     3790#endif 
     3791#ifndef SVf 
     3792#  define SVf                            "_" 
     3793#endif 
     3794#ifndef UTF8_MAXBYTES 
     3795#  define UTF8_MAXBYTES                  UTF8_MAXLEN 
     3796#endif 
     3797#ifndef PERL_HASH 
     3798#  define PERL_HASH(hash,str,len)        \ 
     3799     STMT_START { \ 
     3800    const char *s_PeRlHaSh = str; \ 
     3801    I32 i_PeRlHaSh = len; \ 
     3802    U32 hash_PeRlHaSh = 0; \ 
     3803    while (i_PeRlHaSh--) \ 
     3804        hash_PeRlHaSh = hash_PeRlHaSh * 33 + *s_PeRlHaSh++; \ 
     3805    (hash) = hash_PeRlHaSh; \ 
     3806    } STMT_END 
     3807#endif 
     3808 
     3809#ifndef PERL_SIGNALS_UNSAFE_FLAG 
     3810 
     3811#define PERL_SIGNALS_UNSAFE_FLAG 0x0001 
     3812 
     3813#if (PERL_BCDVERSION < 0x5008000) 
     3814#  define D_PPP_PERL_SIGNALS_INIT   PERL_SIGNALS_UNSAFE_FLAG 
     3815#else 
     3816#  define D_PPP_PERL_SIGNALS_INIT   0 
     3817#endif 
     3818 
     3819#if defined(NEED_PL_signals) 
     3820static U32 DPPP_(my_PL_signals) = D_PPP_PERL_SIGNALS_INIT; 
     3821#elif defined(NEED_PL_signals_GLOBAL) 
     3822U32 DPPP_(my_PL_signals) = D_PPP_PERL_SIGNALS_INIT; 
     3823#else 
     3824extern U32 DPPP_(my_PL_signals); 
     3825#endif 
     3826#define PL_signals DPPP_(my_PL_signals) 
     3827 
     3828#endif 
     3829 
     3830/* Hint: PL_ppaddr 
     3831 * Calling an op via PL_ppaddr requires passing a context argument 
     3832 * for threaded builds. Since the context argument is different for 
     3833 * 5.005 perls, you can use aTHXR (supplied by ppport.h), which will 
     3834 * automatically be defined as the correct argument. 
     3835 */ 
     3836 
     3837#if (PERL_BCDVERSION <= 0x5005005) 
     3838/* Replace: 1 */ 
     3839#  define PL_ppaddr                 ppaddr 
     3840#  define PL_no_modify              no_modify 
     3841/* Replace: 0 */ 
     3842#endif 
     3843 
     3844#if (PERL_BCDVERSION <= 0x5004005) 
     3845/* Replace: 1 */ 
     3846#  define PL_DBsignal               DBsignal 
    30593847#  define PL_DBsingle               DBsingle 
    30603848#  define PL_DBsub                  DBsub 
     3849#  define PL_DBtrace                DBtrace 
    30613850#  define PL_Sv                     Sv 
    30623851#  define PL_compiling              compiling 
     
    30703859#  define PL_dowarn                 dowarn 
    30713860#  define PL_errgv                  errgv 
     3861#  define PL_expect                 expect 
    30723862#  define PL_hexdigit               hexdigit 
    30733863#  define PL_hints                  hints 
    3074 #  define PL_na                     na 
    3075 #  define PL_no_modify              no_modify 
     3864#  define PL_laststatval            laststatval 
     3865#  define PL_na                     na 
    30763866#  define PL_perl_destruct_level    perl_destruct_level 
    30773867#  define PL_perldb                 perldb 
    3078 #  define PL_ppaddr                 ppaddr 
    30793868#  define PL_rsfp_filters           rsfp_filters 
    30803869#  define PL_rsfp                   rsfp 
    30813870#  define PL_stack_base             stack_base 
    30823871#  define PL_stack_sp               stack_sp 
     3872#  define PL_statcache              statcache 
    30833873#  define PL_stdingv                stdingv 
    30843874#  define PL_sv_arenaroot           sv_arenaroot 
     
    30913881#endif 
    30923882 
    3093 #ifndef PERL_UNUSED_DECL 
    3094 #  ifdef HASATTRIBUTE 
    3095 #    if (defined(__GNUC__) && defined(__cplusplus)) || defined(__INTEL_COMPILER) 
    3096 #      define PERL_UNUSED_DECL 
    3097 #    else 
    3098 #      define PERL_UNUSED_DECL __attribute__((unused)) 
    3099 #    endif 
    3100 #  else 
    3101 #    define PERL_UNUSED_DECL 
    3102 #  endif 
    3103 #endif 
    3104 #ifndef NOOP 
    3105 #  define NOOP                           (void)0 
    3106 #endif 
    3107  
    3108 #ifndef dNOOP 
    3109 #  define dNOOP                          extern int Perl___notused PERL_UNUSED_DECL 
    3110 #endif 
    3111  
    3112 #ifndef NVTYPE 
    3113 #  if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE) 
    3114 #    define NVTYPE long double 
    3115 #  else 
    3116 #    define NVTYPE double 
    3117 #  endif 
    3118 typedef NVTYPE NV; 
    3119 #endif 
    3120  
    3121 #ifndef INT2PTR 
    3122  
    3123 #  if (IVSIZE == PTRSIZE) && (UVSIZE == PTRSIZE) 
    3124 #    define PTRV                  UV 
    3125 #    define INT2PTR(any,d)        (any)(d) 
    3126 #  else 
    3127 #    if PTRSIZE == LONGSIZE 
    3128 #      define PTRV                unsigned long 
    3129 #    else 
    3130 #      define PTRV                unsigned 
    3131 #    endif 
    3132 #    define INT2PTR(any,d)        (any)(PTRV)(d) 
    3133 #  endif 
    3134  
    3135 #  define NUM2PTR(any,d)  (any)(PTRV)(d) 
    3136 #  define PTR2IV(p)       INT2PTR(IV,p) 
    3137 #  define PTR2UV(p)       INT2PTR(UV,p) 
    3138 #  define PTR2NV(p)       NUM2PTR(NV,p) 
    3139  
    3140 #  if PTRSIZE == LONGSIZE 
    3141 #    define PTR2ul(p)     (unsigned long)(p) 
    3142 #  else 
    3143 #    define PTR2ul(p)     INT2PTR(unsigned long,p) 
    3144 #  endif 
    3145  
    3146 #endif /* !INT2PTR */ 
    3147  
    3148 #undef START_EXTERN_C 
    3149 #undef END_EXTERN_C 
    3150 #undef EXTERN_C 
    3151 #ifdef __cplusplus 
    3152 #  define START_EXTERN_C extern "C" { 
    3153 #  define END_EXTERN_C } 
    3154 #  define EXTERN_C extern "C" 
    3155 #else 
    3156 #  define START_EXTERN_C 
    3157 #  define END_EXTERN_C 
    3158 #  define EXTERN_C extern 
    3159 #endif 
    3160  
    3161 #ifndef PERL_GCC_BRACE_GROUPS_FORBIDDEN 
    3162 #  if defined(__STRICT_ANSI__) && defined(PERL_GCC_PEDANTIC) 
    3163 #    define PERL_GCC_BRACE_GROUPS_FORBIDDEN 
    3164 #  endif 
    3165 #endif 
    3166  
    3167 #undef STMT_START 
    3168 #undef STMT_END 
    3169 #if defined(__GNUC__) && !defined(PERL_GCC_BRACE_GROUPS_FORBIDDEN) && !defined(__cplusplus) 
    3170 #  define STMT_START    (void)( /* gcc supports ``({ STATEMENTS; })'' */ 
    3171 #  define STMT_END  ) 
    3172 #else 
    3173 #  if defined(VOIDFLAGS) && (VOIDFLAGS) && (defined(sun) || defined(__sun__)) && !defined(__GNUC__) 
    3174 #    define STMT_START  if (1) 
    3175 #    define STMT_END    else (void)0 
    3176 #  else 
    3177 #    define STMT_START  do 
    3178 #    define STMT_END    while (0) 
    3179 #  endif 
    3180 #endif 
    3181 #ifndef boolSV 
    3182 #  define boolSV(b)                      ((b) ? &PL_sv_yes : &PL_sv_no) 
    3183 #endif 
    3184  
    3185 /* DEFSV appears first in 5.004_56 */ 
    3186 #ifndef DEFSV 
    3187 #  define DEFSV                          GvSV(PL_defgv) 
    3188 #endif 
    3189  
    3190 #ifndef SAVE_DEFSV 
    3191 #  define SAVE_DEFSV                     SAVESPTR(GvSV(PL_defgv)) 
    3192 #endif 
    3193  
    3194 /* Older perls (<=5.003) lack AvFILLp */ 
    3195 #ifndef AvFILLp 
    3196 #  define AvFILLp                        AvFILL 
    3197 #endif 
    3198 #ifndef ERRSV 
    3199 #  define ERRSV                          get_sv("@",FALSE) 
    3200 #endif 
    3201 #ifndef newSVpvn 
    3202 #  define newSVpvn(data,len)             ((data)                                              \ 
    3203                                     ? ((len) ? newSVpv((data), (len)) : newSVpv("", 0)) \ 
    3204                                     : newSV(0)) 
    3205 #endif 
    3206  
    3207 /* Hint: gv_stashpvn 
    3208  * This function's backport doesn't support the length parameter, but 
    3209  * rather ignores it. Portability can only be ensured if the length 
    3210  * parameter is used for speed reasons, but the length can always be 
    3211  * correctly computed from the string argument. 
     3883/* Warning: PL_expect, PL_copline, PL_rsfp, PL_rsfp_filters 
     3884 * Do not use this variable. It is internal to the perl parser 
     3885 * and may change or even be removed in the future. Note that 
     3886 * as of perl 5.9.5 you cannot assign to this variable anymore. 
    32123887 */ 
    3213 #ifndef gv_stashpvn 
    3214 #  define gv_stashpvn(str,len,create)    gv_stashpv(str,create) 
    3215 #endif 
    3216  
    3217 /* Replace: 1 */ 
    3218 #ifndef get_cv 
    3219 #  define get_cv                         perl_get_cv 
    3220 #endif 
    3221  
    3222 #ifndef get_sv 
    3223 #  define get_sv                         perl_get_sv 
    3224 #endif 
    3225  
    3226 #ifndef get_av 
    3227 #  define get_av                         perl_get_av 
    3228 #endif 
    3229  
    3230 #ifndef get_hv 
    3231 #  define get_hv                         perl_get_hv 
    3232 #endif 
    3233  
    3234 /* Replace: 0 */ 
    3235  
    3236 #ifdef HAS_MEMCMP 
    3237 #ifndef memNE 
    3238 #  define memNE(s1,s2,l)                 (memcmp(s1,s2,l)) 
    3239 #endif 
    3240  
    3241 #ifndef memEQ 
    3242 #  define memEQ(s1,s2,l)                 (!memcmp(s1,s2,l)) 
    3243 #endif 
    3244  
    3245 #else 
    3246 #ifndef memNE 
    3247 #  define memNE(s1,s2,l)                 (bcmp(s1,s2,l)) 
    3248 #endif 
    3249  
    3250 #ifndef memEQ 
    3251 #  define memEQ(s1,s2,l)                 (!bcmp(s1,s2,l)) 
    3252 #endif 
    3253  
    3254 #endif 
    3255 #ifndef MoveD 
    3256 #  define MoveD(s,d,n,t)                 memmove((char*)(d),(char*)(s), (n) * sizeof(t)) 
    3257 #endif 
    3258  
    3259 #ifndef CopyD 
    3260 #  define CopyD(s,d,n,t)                 memcpy((char*)(d),(char*)(s), (n) * sizeof(t)) 
    3261 #endif 
    3262  
    3263 #ifdef HAS_MEMSET 
    3264 #ifndef ZeroD 
    3265 #  define ZeroD(d,n,t)                   memzero((char*)(d), (n) * sizeof(t)) 
    3266 #endif 
    3267  
    3268 #else 
    3269 #ifndef ZeroD 
    3270 #  define ZeroD(d,n,t)                   ((void)memzero((char*)(d), (n) * sizeof(t)),d) 
    3271 #endif 
    3272  
    3273 #endif 
    3274 #ifndef Poison 
    3275 #  define Poison(d,n,t)                  (void)memset((char*)(d), 0xAB, (n) * sizeof(t)) 
    3276 #endif 
    3277 #ifndef dUNDERBAR 
    3278 #  define dUNDERBAR                      dNOOP 
    3279 #endif 
    3280  
    3281 #ifndef UNDERBAR 
    3282 #  define UNDERBAR                       DEFSV 
    3283 #endif 
    3284 #ifndef dAX 
    3285 #  define dAX                            I32 ax = MARK - PL_stack_base + 1 
    3286 #endif 
    3287  
    3288 #ifndef dITEMS 
    3289 #  define dITEMS                         I32 items = SP - MARK 
    3290 #endif 
    3291 #ifndef dXSTARG 
    3292 #  define dXSTARG                        SV * targ = sv_newmortal() 
     3888 
     3889/* TODO: cannot assign to these vars; is it worth fixing? */ 
     3890#if (PERL_BCDVERSION >= 0x5009005) 
     3891#  define PL_expect         (PL_parser ? PL_parser->expect : 0) 
     3892#  define PL_copline        (PL_parser ? PL_parser->copline : 0) 
     3893#  define PL_rsfp           (PL_parser ? PL_parser->rsfp : (PerlIO *) 0) 
     3894#  define PL_rsfp_filters   (PL_parser ? PL_parser->rsfp_filters : (AV *) 0) 
    32933895#endif 
    32943896#ifndef dTHR 
     
    33163918#ifndef aTHX_ 
    33173919#  define aTHX_ 
     3920#endif 
     3921 
     3922#if (PERL_BCDVERSION < 0x5006000) 
     3923#  ifdef USE_THREADS 
     3924#    define aTHXR  thr 
     3925#    define aTHXR_ thr, 
     3926#  else 
     3927#    define aTHXR 
     3928#    define aTHXR_ 
     3929#  endif 
     3930#  define dTHXR  dTHR 
     3931#else 
     3932#  define aTHXR  aTHX 
     3933#  define aTHXR_ aTHX_ 
     3934#  define dTHXR  dTHX 
    33183935#endif 
    33193936#ifndef dTHXoa 
     
    33783995#  define eval_sv                        perl_eval_sv 
    33793996#endif 
     3997#ifndef PERL_LOADMOD_DENY 
     3998#  define PERL_LOADMOD_DENY              0x1 
     3999#endif 
     4000 
     4001#ifndef PERL_LOADMOD_NOIMPORT 
     4002#  define PERL_LOADMOD_NOIMPORT          0x2 
     4003#endif 
     4004 
     4005#ifndef PERL_LOADMOD_IMPORT_OPS 
     4006#  define PERL_LOADMOD_IMPORT_OPS        0x4 
     4007#endif 
    33804008 
    33814009/* Replace: 0 */ 
    33824010 
    33834011/* Replace perl_eval_pv with eval_pv */ 
    3384 /* eval_pv depends on eval_sv */ 
    33854012 
    33864013#ifndef eval_pv 
     
    34184045 
    34194046    return sv; 
     4047} 
     4048 
     4049#endif 
     4050#endif 
     4051 
     4052#ifndef vload_module 
     4053#if defined(NEED_vload_module) 
     4054static void DPPP_(my_vload_module)(U32 flags, SV *name, SV *ver, va_list *args); 
     4055static 
     4056#else 
     4057extern void DPPP_(my_vload_module)(U32 flags, SV *name, SV *ver, va_list *args); 
     4058#endif 
     4059 
     4060#ifdef vload_module 
     4061#  undef vload_module 
     4062#endif 
     4063#define vload_module(a,b,c,d) DPPP_(my_vload_module)(aTHX_ a,b,c,d) 
     4064#define Perl_vload_module DPPP_(my_vload_module) 
     4065 
     4066#if defined(NEED_vload_module) || defined(NEED_vload_module_GLOBAL) 
     4067 
     4068void 
     4069DPPP_(my_vload_module)(U32 flags, SV *name, SV *ver, va_list *args) 
     4070{ 
     4071    dTHR; 
     4072    dVAR; 
     4073    OP *veop, *imop; 
     4074 
     4075    OP * const modname = newSVOP(OP_CONST, 0, name); 
     4076    /* 5.005 has a somewhat hacky force_normal that doesn't croak on 
     4077       SvREADONLY() if PL_compling is true. Current perls take care in 
     4078       ck_require() to correctly turn off SvREADONLY before calling 
     4079       force_normal_flags(). This seems a better fix than fudging PL_compling 
     4080     */ 
     4081    SvREADONLY_off(((SVOP*)modname)->op_sv); 
     4082    modname->op_private |= OPpCONST_BARE; 
     4083    if (ver) { 
     4084    veop = newSVOP(OP_CONST, 0, ver); 
     4085    } 
     4086    else 
     4087    veop = NULL; 
     4088    if (flags & PERL_LOADMOD_NOIMPORT) { 
     4089    imop = sawparens(newNULLLIST()); 
     4090    } 
     4091    else if (flags & PERL_LOADMOD_IMPORT_OPS) { 
     4092    imop = va_arg(*args, OP*); 
     4093    } 
     4094    else { 
     4095    SV *sv; 
     4096    imop = NULL; 
     4097    sv = va_arg(*args, SV*); 
     4098    while (sv) { 
     4099        imop = append_elem(OP_LIST, imop, newSVOP(OP_CONST, 0, sv)); 
     4100        sv = va_arg(*args, SV*); 
     4101    } 
     4102    } 
     4103    { 
     4104    const line_t ocopline = PL_copline; 
     4105    COP * const ocurcop = PL_curcop; 
     4106    const int oexpect = PL_expect; 
     4107 
     4108#if (PERL_BCDVERSION >= 0x5004000) 
     4109    utilize(!(flags & PERL_LOADMOD_DENY), start_subparse(FALSE, 0), 
     4110        veop, modname, imop); 
     4111#else 
     4112    utilize(!(flags & PERL_LOADMOD_DENY), start_subparse(), 
     4113        modname, imop); 
     4114#endif 
     4115    PL_expect = oexpect; 
     4116    PL_copline = ocopline; 
     4117    PL_curcop = ocurcop; 
     4118    } 
     4119} 
     4120 
     4121#endif 
     4122#endif 
     4123 
     4124#ifndef load_module 
     4125#if defined(NEED_load_module) 
     4126static void DPPP_(my_load_module)(U32 flags, SV *name, SV *ver, ...); 
     4127static 
     4128#else 
     4129extern void DPPP_(my_load_module)(U32 flags, SV *name, SV *ver, ...); 
     4130#endif 
     4131 
     4132#ifdef load_module 
     4133#  undef load_module 
     4134#endif 
     4135#define load_module DPPP_(my_load_module) 
     4136#define Perl_load_module DPPP_(my_load_module) 
     4137 
     4138#if defined(NEED_load_module) || defined(NEED_load_module_GLOBAL) 
     4139 
     4140void 
     4141DPPP_(my_load_module)(U32 flags, SV *name, SV *ver, ...) 
     4142{ 
     4143    va_list args; 
     4144    va_start(args, ver); 
     4145    vload_module(flags, name, ver, &args); 
     4146    va_end(args); 
    34204147} 
    34214148 
     
    34574184 
    34584185/* newCONSTSUB from IO.xs is in the core starting with 5.004_63 */ 
    3459 #if ((PERL_VERSION < 4) || ((PERL_VERSION == 4) && (PERL_SUBVERSION < 63))) && ((PERL_VERSION != 4) || (PERL_SUBVERSION != 5)) 
     4186#if (PERL_BCDVERSION < 0x5004063) && (PERL_BCDVERSION != 0x5004005) 
    34604187#if defined(NEED_newCONSTSUB) 
    3461 static void DPPP_(my_newCONSTSUB)(HV *stash, char *name, SV *sv); 
     4188static void DPPP_(my_newCONSTSUB)(HV *stash, const char *name, SV *sv); 
    34624189static 
    34634190#else 
    3464 extern void DPPP_(my_newCONSTSUB)(HV *stash, char *name, SV *sv); 
     4191extern void DPPP_(my_newCONSTSUB)(HV *stash, const char *name, SV *sv); 
    34654192#endif 
    34664193 
     
    34744201 
    34754202void 
    3476 DPPP_(my_newCONSTSUB)(HV *stash, char *name, SV *sv) 
     4203DPPP_(my_newCONSTSUB)(HV *stash, const char *name, SV *sv) 
    34774204{ 
    34784205    U32 oldhints = PL_hints; 
     
    34884215    newSUB( 
    34894216 
    3490 #if   ((PERL_VERSION < 3) || ((PERL_VERSION == 3) && (PERL_SUBVERSION < 22))) 
     4217#if   (PERL_BCDVERSION < 0x5003022) 
    34914218        start_subparse(), 
    3492 #elif ((PERL_VERSION == 3) && (PERL_SUBVERSION == 22)) 
     4219#elif (PERL_BCDVERSION == 0x5003022) 
    34934220            start_subparse(0), 
    34944221#else  /* 5.003_23  onwards */ 
     
    34964223#endif 
    34974224 
    3498         newSVOP(OP_CONST, 0, newSVpv(name,0)), 
     4225        newSVOP(OP_CONST, 0, newSVpv((char *) name, 0)), 
    34994226        newSVOP(OP_CONST, 0, &PL_sv_no),   /* SvPV(&PL_sv_no) == "" -- GMB */ 
    35004227        newSTATEOP(0, Nullch, newSVOP(OP_CONST, 0, sv)) 
     
    35384265#define START_MY_CXT 
    35394266 
    3540 #if (PERL_VERSION < 4 || (PERL_VERSION == 4 && PERL_SUBVERSION < 68 )) 
     4267#if (PERL_BCDVERSION < 0x5004068) 
    35414268/* Fetches the SV that keeps the per-interpreter data. */ 
    35424269#define dMY_CXT_SV \ 
     
    36444371#endif 
    36454372 
    3646 #ifndef SvPV_nolen 
    3647  
    3648 #if defined(NEED_sv_2pv_nolen) 
    3649 static char * DPPP_(my_sv_2pv_nolen)(pTHX_ register SV *sv); 
    3650 static 
    3651 #else 
    3652 extern char * DPPP_(my_sv_2pv_nolen)(pTHX_ register SV *sv); 
    3653 #endif 
    3654  
    3655 #ifdef sv_2pv_nolen 
    3656 #  undef sv_2pv_nolen 
    3657 #endif 
    3658 #define sv_2pv_nolen(a) DPPP_(my_sv_2pv_nolen)(aTHX_ a) 
    3659 #define Perl_sv_2pv_nolen DPPP_(my_sv_2pv_nolen) 
    3660  
    3661 #if defined(NEED_sv_2pv_nolen) || defined(NEED_sv_2pv_nolen_GLOBAL) 
    3662  
    3663 char * 
    3664 DPPP_(my_sv_2pv_nolen)(pTHX_ register SV *sv) 
    3665 { 
    3666   STRLEN n_a; 
    3667   return sv_2pv(sv, &n_a); 
    3668 } 
    3669  
     4373#ifndef SvREFCNT_inc 
     4374#  ifdef PERL_USE_GCC_BRACE_GROUPS 
     4375#    define SvREFCNT_inc(sv)        \ 
     4376      ({                \ 
     4377          SV * const _sv = (SV*)(sv);   \ 
     4378          if (_sv)          \ 
     4379               (SvREFCNT(_sv))++;   \ 
     4380          _sv;              \ 
     4381      }) 
     4382#  else 
     4383#    define SvREFCNT_inc(sv)    \ 
     4384          ((PL_Sv=(SV*)(sv)) ? (++(SvREFCNT(PL_Sv)),PL_Sv) : NULL) 
     4385#  endif 
     4386#endif 
     4387 
     4388#ifndef SvREFCNT_inc_simple 
     4389#  ifdef PERL_USE_GCC_BRACE_GROUPS 
     4390#    define SvREFCNT_inc_simple(sv) \ 
     4391      ({                    \ 
     4392          if (sv)               \ 
     4393               (SvREFCNT(sv))++;        \ 
     4394          (SV *)(sv);               \ 
     4395      }) 
     4396#  else 
     4397#    define SvREFCNT_inc_simple(sv) \ 
     4398          ((sv) ? (SvREFCNT(sv)++,(SV*)(sv)) : NULL) 
     4399#  endif 
     4400#endif 
     4401 
     4402#ifndef SvREFCNT_inc_NN 
     4403#  ifdef PERL_USE_GCC_BRACE_GROUPS 
     4404#    define SvREFCNT_inc_NN(sv)     \ 
     4405      ({                    \ 
     4406          SV * const _sv = (SV*)(sv);   \ 
     4407          SvREFCNT(_sv)++;      \ 
     4408          _sv;              \ 
     4409      }) 
     4410#  else 
     4411#    define SvREFCNT_inc_NN(sv) \ 
     4412          (PL_Sv=(SV*)(sv),++(SvREFCNT(PL_Sv)),PL_Sv) 
     4413#  endif 
     4414#endif 
     4415 
     4416#ifndef SvREFCNT_inc_void 
     4417#  ifdef PERL_USE_GCC_BRACE_GROUPS 
     4418#    define SvREFCNT_inc_void(sv)       \ 
     4419      ({                    \ 
     4420          SV * const _sv = (SV*)(sv);   \ 
     4421          if (_sv)          \ 
     4422              (void)(SvREFCNT(_sv)++);  \ 
     4423      }) 
     4424#  else 
     4425#    define SvREFCNT_inc_void(sv) \ 
     4426          (void)((PL_Sv=(SV*)(sv)) ? ++(SvREFCNT(PL_Sv)) : 0) 
     4427#  endif 
     4428#endif 
     4429#ifndef SvREFCNT_inc_simple_void 
     4430#  define SvREFCNT_inc_simple_void(sv)   STMT_START { if (sv) SvREFCNT(sv)++; } STMT_END 
     4431#endif 
     4432 
     4433#ifndef SvREFCNT_inc_simple_NN 
     4434#  define SvREFCNT_inc_simple_NN(sv)     (++SvREFCNT(sv), (SV*)(sv)) 
     4435#endif 
     4436 
     4437#ifndef SvREFCNT_inc_void_NN 
     4438#  define SvREFCNT_inc_void_NN(sv)       (void)(++SvREFCNT((SV*)(sv))) 
     4439#endif 
     4440 
     4441#ifndef SvREFCNT_inc_simple_void_NN 
     4442#  define SvREFCNT_inc_simple_void_NN(sv) (void)(++SvREFCNT((SV*)(sv))) 
     4443#endif 
     4444 
     4445/* Backwards compatibility stuff... :-( */ 
     4446#if !defined(NEED_sv_2pv_flags) && defined(NEED_sv_2pv_nolen) 
     4447#  define NEED_sv_2pv_flags 
     4448#endif 
     4449#if !defined(NEED_sv_2pv_flags_GLOBAL) && defined(NEED_sv_2pv_nolen_GLOBAL) 
     4450#  define NEED_sv_2pv_flags_GLOBAL 
    36704451#endif 
    36714452 
    36724453/* Hint: sv_2pv_nolen 
    3673  * Use the SvPV_nolen() macro instead of sv_2pv_nolen(). 
     4454 * Use the SvPV_nolen() or SvPV_nolen_const() macros instead of sv_2pv_nolen(). 
    36744455 */ 
    3675  
    3676 /* SvPV_nolen depends on sv_2pv_nolen */ 
    3677 #define SvPV_nolen(sv) \ 
    3678           ((SvFLAGS(sv) & (SVf_POK)) == SVf_POK \ 
    3679            ? SvPVX(sv) : sv_2pv_nolen(sv)) 
    3680  
     4456#ifndef sv_2pv_nolen 
     4457#  define sv_2pv_nolen(sv)               SvPV_nolen(sv) 
    36814458#endif 
    36824459 
     
    36884465 */ 
    36894466 
    3690 #if ((PERL_VERSION < 7) || ((PERL_VERSION == 7) && (PERL_SUBVERSION < 0))) 
     4467#if (PERL_BCDVERSION < 0x5007000) 
    36914468 
    36924469#if defined(NEED_sv_2pvbyte) 
    3693 static char * DPPP_(my_sv_2pvbyte)(pTHX_ register SV *sv, STRLEN *lp); 
     4470static char * DPPP_(my_sv_2pvbyte)(pTHX_ SV * sv, STRLEN * lp); 
    36944471static 
    36954472#else 
    3696 extern char * DPPP_(my_sv_2pvbyte)(pTHX_ register SV *sv, STRLEN *lp); 
     4473extern char * DPPP_(my_sv_2pvbyte)(pTHX_ SV * sv, STRLEN * lp); 
    36974474#endif 
    36984475 
     
    37064483 
    37074484char * 
    3708 DPPP_(my_sv_2pvbyte)(pTHX_ register SV *sv, STRLEN *lp) 
     4485DPPP_(my_sv_2pvbyte)(pTHX_ SV *sv, STRLEN *lp) 
    37094486{ 
    37104487  sv_utf8_downgrade(sv,0); 
     
    37204497#undef SvPVbyte 
    37214498 
    3722 /* SvPVbyte depends on sv_2pvbyte */ 
    37234499#define SvPVbyte(sv, lp)                                                \ 
    37244500        ((SvFLAGS(sv) & (SVf_POK|SVf_UTF8)) == (SVf_POK)                \ 
     
    37334509 
    37344510#endif 
    3735  
    3736 /* sv_2pvbyte_nolen depends on sv_2pv_nolen */ 
    37374511#ifndef sv_2pvbyte_nolen 
    3738 #  define sv_2pvbyte_nolen               sv_2pv_nolen 
     4512#  define sv_2pvbyte_nolen(sv)           sv_2pv_nolen(sv) 
    37394513#endif 
    37404514 
     
    37424516 * Always use the SvPV() macro instead of sv_pvn(). 
    37434517 */ 
    3744 #ifndef sv_pvn 
    3745 #  define sv_pvn(sv, len)                SvPV(sv, len) 
    3746 #endif 
    37474518 
    37484519/* Hint: sv_pvn_force 
    37494520 * Always use the SvPV_force() macro instead of sv_pvn_force(). 
    37504521 */ 
    3751 #ifndef sv_pvn_force 
    3752 #  define sv_pvn_force(sv, len)          SvPV_force(sv, len) 
    3753 #endif 
    3754  
    3755 #if ((PERL_VERSION > 4) || ((PERL_VERSION == 4) && (PERL_SUBVERSION >= 0))) && !defined(vnewSVpvf) 
     4522 
     4523/* If these are undefined, they're not handled by the core anyway */ 
     4524#ifndef SV_IMMEDIATE_UNREF 
     4525#  define SV_IMMEDIATE_UNREF             0 
     4526#endif 
     4527 
     4528#ifndef SV_GMAGIC 
     4529#  define SV_GMAGIC                      0 
     4530#endif 
     4531 
     4532#ifndef SV_COW_DROP_PV 
     4533#  define SV_COW_DROP_PV                 0 
     4534#endif 
     4535 
     4536#ifndef SV_UTF8_NO_ENCODING 
     4537#  define SV_UTF8_NO_ENCODING            0 
     4538#endif 
     4539 
     4540#ifndef SV_NOSTEAL 
     4541#  define SV_NOSTEAL                     0 
     4542#endif 
     4543 
     4544#ifndef SV_CONST_RETURN 
     4545#  define SV_CONST_RETURN                0 
     4546#endif 
     4547 
     4548#ifndef SV_MUTABLE_RETURN 
     4549#  define SV_MUTABLE_RETURN              0 
     4550#endif 
     4551 
     4552#ifndef SV_SMAGIC 
     4553#  define SV_SMAGIC                      0 
     4554#endif 
     4555 
     4556#ifndef SV_HAS_TRAILING_NUL 
     4557#  define SV_HAS_TRAILING_NUL            0 
     4558#endif 
     4559 
     4560#ifndef SV_COW_SHARED_HASH_KEYS 
     4561#  define SV_COW_SHARED_HASH_KEYS        0 
     4562#endif 
     4563 
     4564#if (PERL_BCDVERSION < 0x5007002) 
     4565 
     4566#if defined(NEED_sv_2pv_flags) 
     4567static char * DPPP_(my_sv_2pv_flags)(pTHX_ SV * sv, STRLEN * lp, I32 flags); 
     4568static 
     4569#else 
     4570extern char * DPPP_(my_sv_2pv_flags)(pTHX_ SV * sv, STRLEN * lp, I32 flags); 
     4571#endif 
     4572 
     4573#ifdef sv_2pv_flags 
     4574#  undef sv_2pv_flags 
     4575#endif 
     4576#define sv_2pv_flags(a,b,c) DPPP_(my_sv_2pv_flags)(aTHX_ a,b,c) 
     4577#define Perl_sv_2pv_flags DPPP_(my_sv_2pv_flags) 
     4578 
     4579#if defined(NEED_sv_2pv_flags) || defined(NEED_sv_2pv_flags_GLOBAL) 
     4580 
     4581char * 
     4582DPPP_(my_sv_2pv_flags)(pTHX_ SV *sv, STRLEN *lp, I32 flags) 
     4583{ 
     4584  STRLEN n_a = (STRLEN) flags; 
     4585  return sv_2pv(sv, lp ? lp : &n_a); 
     4586} 
     4587 
     4588#endif 
     4589 
     4590#if defined(NEED_sv_pvn_force_flags) 
     4591static char * DPPP_(my_sv_pvn_force_flags)(pTHX_ SV * sv, STRLEN * lp, I32 flags); 
     4592static 
     4593#else 
     4594extern char * DPPP_(my_sv_pvn_force_flags)(pTHX_ SV * sv, STRLEN * lp, I32 flags); 
     4595#endif 
     4596 
     4597#ifdef sv_pvn_force_flags 
     4598#  undef sv_pvn_force_flags 
     4599#endif 
     4600#define sv_pvn_force_flags(a,b,c) DPPP_(my_sv_pvn_force_flags)(aTHX_ a,b,c) 
     4601#define Perl_sv_pvn_force_flags DPPP_(my_sv_pvn_force_flags) 
     4602 
     4603#if defined(NEED_sv_pvn_force_flags) || defined(NEED_sv_pvn_force_flags_GLOBAL) 
     4604 
     4605char * 
     4606DPPP_(my_sv_pvn_force_flags)(pTHX_ SV *sv, STRLEN *lp, I32 flags) 
     4607{ 
     4608  STRLEN n_a = (STRLEN) flags; 
     4609  return sv_pvn_force(sv, lp ? lp : &n_a); 
     4610} 
     4611 
     4612#endif 
     4613 
     4614#endif 
     4615#ifndef SvPV_const 
     4616#  define SvPV_const(sv, lp)             SvPV_flags_const(sv, lp, SV_GMAGIC) 
     4617#endif 
     4618 
     4619#ifndef SvPV_mutable 
     4620#  define SvPV_mutable(sv, lp)           SvPV_flags_mutable(sv, lp, SV_GMAGIC) 
     4621#endif 
     4622#ifndef SvPV_flags 
     4623#  define SvPV_flags(sv, lp, flags)      \ 
     4624                 ((SvFLAGS(sv) & (SVf_POK)) == SVf_POK \ 
     4625                  ? ((lp = SvCUR(sv)), SvPVX(sv)) : sv_2pv_flags(sv, &lp, flags)) 
     4626#endif 
     4627#ifndef SvPV_flags_const 
     4628#  define SvPV_flags_const(sv, lp, flags) \ 
     4629                 ((SvFLAGS(sv) & (SVf_POK)) == SVf_POK \ 
     4630                  ? ((lp = SvCUR(sv)), SvPVX_const(sv)) : \ 
     4631                  (const char*) sv_2pv_flags(sv, &lp, flags|SV_CONST_RETURN)) 
     4632#endif 
     4633#ifndef SvPV_flags_const_nolen 
     4634#  define SvPV_flags_const_nolen(sv, flags) \ 
     4635                 ((SvFLAGS(sv) & (SVf_POK)) == SVf_POK \ 
     4636                  ? SvPVX_const(sv) : \ 
     4637                  (const char*) sv_2pv_flags(sv, 0, flags|SV_CONST_RETURN)) 
     4638#endif 
     4639#ifndef SvPV_flags_mutable 
     4640#  define SvPV_flags_mutable(sv, lp, flags) \ 
     4641                 ((SvFLAGS(sv) & (SVf_POK)) == SVf_POK \ 
     4642                  ? ((lp = SvCUR(sv)), SvPVX_mutable(sv)) : \ 
     4643                  sv_2pv_flags(sv, &lp, flags|SV_MUTABLE_RETURN)) 
     4644#endif 
     4645#ifndef SvPV_force 
     4646#  define SvPV_force(sv, lp)             SvPV_force_flags(sv, lp, SV_GMAGIC) 
     4647#endif 
     4648 
     4649#ifndef SvPV_force_nolen 
     4650#  define SvPV_force_nolen(sv)           SvPV_force_flags_nolen(sv, SV_GMAGIC) 
     4651#endif 
     4652 
     4653#ifndef SvPV_force_mutable 
     4654#  define SvPV_force_mutable(sv, lp)     SvPV_force_flags_mutable(sv, lp, SV_GMAGIC) 
     4655#endif 
     4656 
     4657#ifndef SvPV_force_nomg 
     4658#  define SvPV_force_nomg(sv, lp)        SvPV_force_flags(sv, lp, 0) 
     4659#endif 
     4660 
     4661#ifndef SvPV_force_nomg_nolen 
     4662#  define SvPV_force_nomg_nolen(sv)      SvPV_force_flags_nolen(sv, 0) 
     4663#endif 
     4664#ifndef SvPV_force_flags 
     4665#  define SvPV_force_flags(sv, lp, flags) \ 
     4666                 ((SvFLAGS(sv) & (SVf_POK|SVf_THINKFIRST)) == SVf_POK \ 
     4667                 ? ((lp = SvCUR(sv)), SvPVX(sv)) : sv_pvn_force_flags(sv, &lp, flags)) 
     4668#endif 
     4669#ifndef SvPV_force_flags_nolen 
     4670#  define SvPV_force_flags_nolen(sv, flags) \ 
     4671                 ((SvFLAGS(sv) & (SVf_POK|SVf_THINKFIRST)) == SVf_POK \ 
     4672                 ? SvPVX(sv) : sv_pvn_force_flags(sv, 0, flags)) 
     4673#endif 
     4674#ifndef SvPV_force_flags_mutable 
     4675#  define SvPV_force_flags_mutable(sv, lp, flags) \ 
     4676                 ((SvFLAGS(sv) & (SVf_POK|SVf_THINKFIRST)) == SVf_POK \ 
     4677                 ? ((lp = SvCUR(sv)), SvPVX_mutable(sv)) \ 
     4678                  : sv_pvn_force_flags(sv, &lp, flags|SV_MUTABLE_RETURN)) 
     4679#endif 
     4680#ifndef SvPV_nolen 
     4681#  define SvPV_nolen(sv)                 \ 
     4682                 ((SvFLAGS(sv) & (SVf_POK)) == SVf_POK \ 
     4683                  ? SvPVX(sv) : sv_2pv_flags(sv, 0, SV_GMAGIC)) 
     4684#endif 
     4685#ifndef SvPV_nolen_const 
     4686#  define SvPV_nolen_const(sv)           \ 
     4687                 ((SvFLAGS(sv) & (SVf_POK)) == SVf_POK \ 
     4688                  ? SvPVX_const(sv) : sv_2pv_flags(sv, 0, SV_GMAGIC|SV_CONST_RETURN)) 
     4689#endif 
     4690#ifndef SvPV_nomg 
     4691#  define SvPV_nomg(sv, lp)              SvPV_flags(sv, lp, 0) 
     4692#endif 
     4693 
     4694#ifndef SvPV_nomg_const 
     4695#  define SvPV_nomg_const(sv, lp)        SvPV_flags_const(sv, lp, 0) 
     4696#endif 
     4697 
     4698#ifndef SvPV_nomg_const_nolen 
     4699#  define SvPV_nomg_const_nolen(sv)      SvPV_flags_const_nolen(sv, 0) 
     4700#endif 
     4701#ifndef SvMAGIC_set 
     4702#  define SvMAGIC_set(sv, val)           \ 
     4703                STMT_START { assert(SvTYPE(sv) >= SVt_PVMG); \ 
     4704                (((XPVMG*) SvANY(sv))->xmg_magic = (val)); } STMT_END 
     4705#endif 
     4706 
     4707#if (PERL_BCDVERSION < 0x5009003) 
     4708#ifndef SvPVX_const 
     4709#  define SvPVX_const(sv)                ((const char*) (0 + SvPVX(sv))) 
     4710#endif 
     4711 
     4712#ifndef SvPVX_mutable 
     4713#  define SvPVX_mutable(sv)              (0 + SvPVX(sv)) 
     4714#endif 
     4715#ifndef SvRV_set 
     4716#  define SvRV_set(sv, val)              \ 
     4717                STMT_START { assert(SvTYPE(sv) >=  SVt_RV); \ 
     4718                (((XRV*) SvANY(sv))->xrv_rv = (val)); } STMT_END 
     4719#endif 
     4720 
     4721#else 
     4722#ifndef SvPVX_const 
     4723#  define SvPVX_const(sv)                ((const char*)((sv)->sv_u.svu_pv)) 
     4724#endif 
     4725 
     4726#ifndef SvPVX_mutable 
     4727#  define SvPVX_mutable(sv)              ((sv)->sv_u.svu_pv) 
     4728#endif 
     4729#ifndef SvRV_set 
     4730#  define SvRV_set(sv, val)              \ 
     4731                STMT_START { assert(SvTYPE(sv) >=  SVt_RV); \ 
     4732                ((sv)->sv_u.svu_rv = (val)); } STMT_END 
     4733#endif 
     4734 
     4735#endif 
     4736#ifndef SvSTASH_set 
     4737#  define SvSTASH_set(sv, val)           \ 
     4738                STMT_START { assert(SvTYPE(sv) >= SVt_PVMG); \ 
     4739                (((XPVMG*) SvANY(sv))->xmg_stash = (val)); } STMT_END 
     4740#endif 
     4741 
     4742#if (PERL_BCDVERSION < 0x5004000) 
     4743#ifndef SvUV_set 
     4744#  define SvUV_set(sv, val)              \ 
     4745                STMT_START { assert(SvTYPE(sv) == SVt_IV || SvTYPE(sv) >= SVt_PVIV); \ 
     4746                (((XPVIV*) SvANY(sv))->xiv_iv = (IV) (val)); } STMT_END 
     4747#endif 
     4748 
     4749#else 
     4750#ifndef SvUV_set 
     4751#  define SvUV_set(sv, val)              \ 
     4752                STMT_START { assert(SvTYPE(sv) == SVt_IV || SvTYPE(sv) >= SVt_PVIV); \ 
     4753                (((XPVUV*) SvANY(sv))->xuv_uv = (val)); } STMT_END 
     4754#endif 
     4755 
     4756#endif 
     4757 
     4758#if (PERL_BCDVERSION >= 0x5004000) && !defined(vnewSVpvf) 
    37564759#if defined(NEED_vnewSVpvf) 
    37574760static SV * DPPP_(my_vnewSVpvf)(pTHX_ const char * pat, va_list * args); 
     
    37804783#endif 
    37814784 
    3782 /* sv_vcatpvf depends on sv_vcatpvfn */ 
    3783 #if ((PERL_VERSION > 4) || ((PERL_VERSION == 4) && (PERL_SUBVERSION >= 0))) && !defined(sv_vcatpvf) 
     4785#if (PERL_BCDVERSION >= 0x5004000) && !defined(sv_vcatpvf) 
    37844786#  define sv_vcatpvf(sv, pat, args)  sv_vcatpvfn(sv, pat, strlen(pat), args, Null(SV**), 0, Null(bool*)) 
    37854787#endif 
    37864788 
    3787 /* sv_vsetpvf depends on sv_vsetpvfn */ 
    3788 #if ((PERL_VERSION > 4) || ((PERL_VERSION == 4) && (PERL_SUBVERSION >= 0))) && !defined(sv_vsetpvf) 
     4789#if (PERL_BCDVERSION >= 0x5004000) && !defined(sv_vsetpvf) 
    37894790#  define sv_vsetpvf(sv, pat, args)  sv_vsetpvfn(sv, pat, strlen(pat), args, Null(SV**), 0, Null(bool*)) 
    37904791#endif 
    37914792 
    3792 /* sv_catpvf_mg depends on sv_vcatpvfn, sv_catpvf_mg_nocontext */ 
    3793 #if ((PERL_VERSION > 4) || ((PERL_VERSION == 4) && (PERL_SUBVERSION >= 0))) && !defined(sv_catpvf_mg) 
     4793#if (PERL_BCDVERSION >= 0x5004000) && !defined(sv_catpvf_mg) 
    37944794#if defined(NEED_sv_catpvf_mg) 
    37954795static void DPPP_(my_sv_catpvf_mg)(pTHX_ SV * sv, const char * pat, ...); 
     
    38164816#endif 
    38174817 
    3818 /* sv_catpvf_mg_nocontext depends on sv_vcatpvfn */ 
    38194818#ifdef PERL_IMPLICIT_CONTEXT 
    3820 #if ((PERL_VERSION > 4) || ((PERL_VERSION == 4) && (PERL_SUBVERSION >= 0))) && !defined(sv_catpvf_mg_nocontext) 
     4819#if (PERL_BCDVERSION >= 0x5004000) && !defined(sv_catpvf_mg_nocontext) 
    38214820#if defined(NEED_sv_catpvf_mg_nocontext) 
    38224821static void DPPP_(my_sv_catpvf_mg_nocontext)(SV * sv, const char * pat, ...); 
     
    38464845#endif 
    38474846 
     4847/* sv_catpvf_mg depends on sv_catpvf_mg_nocontext */ 
    38484848#ifndef sv_catpvf_mg 
    38494849#  ifdef PERL_IMPLICIT_CONTEXT 
     
    38544854#endif 
    38554855 
    3856 /* sv_vcatpvf_mg depends on sv_vcatpvfn */ 
    3857 #if ((PERL_VERSION > 4) || ((PERL_VERSION == 4) && (PERL_SUBVERSION >= 0))) && !defined(sv_vcatpvf_mg) 
     4856#if (PERL_BCDVERSION >= 0x5004000) && !defined(sv_vcatpvf_mg) 
    38584857#  define sv_vcatpvf_mg(sv, pat, args)                                     \ 
    38594858   STMT_START {                                                            \ 
     
    38634862#endif 
    38644863 
    3865 /* sv_setpvf_mg depends on sv_vsetpvfn, sv_setpvf_mg_nocontext */ 
    3866 #if ((PERL_VERSION > 4) || ((PERL_VERSION == 4) && (PERL_SUBVERSION >= 0))) && !defined(sv_setpvf_mg) 
     4864#if (PERL_BCDVERSION >= 0x5004000) && !defined(sv_setpvf_mg) 
    38674865#if defined(NEED_sv_setpvf_mg) 
    38684866static void DPPP_(my_sv_setpvf_mg)(pTHX_ SV * sv, const char * pat, ...); 
     
    38894887#endif 
    38904888 
    3891 /* sv_setpvf_mg_nocontext depends on sv_vsetpvfn */ 
    38924889#ifdef PERL_IMPLICIT_CONTEXT 
    3893 #if ((PERL_VERSION > 4) || ((PERL_VERSION == 4) && (PERL_SUBVERSION >= 0))) && !defined(sv_setpvf_mg_nocontext) 
     4890#if (PERL_BCDVERSION >= 0x5004000) && !defined(sv_setpvf_mg_nocontext) 
    38944891#if defined(NEED_sv_setpvf_mg_nocontext) 
    38954892static void DPPP_(my_sv_setpvf_mg_nocontext)(SV * sv, const char * pat, ...); 
     
    39194916#endif 
    39204917 
     4918/* sv_setpvf_mg depends on sv_setpvf_mg_nocontext */ 
    39214919#ifndef sv_setpvf_mg 
    39224920#  ifdef PERL_IMPLICIT_CONTEXT 
     
    39274925#endif 
    39284926 
    3929 /* sv_vsetpvf_mg depends on sv_vsetpvfn */ 
    3930 #if ((PERL_VERSION > 4) || ((PERL_VERSION == 4) && (PERL_SUBVERSION >= 0))) && !defined(sv_vsetpvf_mg) 
     4927#if (PERL_BCDVERSION >= 0x5004000) && !defined(sv_vsetpvf_mg) 
    39314928#  define sv_vsetpvf_mg(sv, pat, args)                                     \ 
    39324929   STMT_START {                                                            \ 
     
    39354932   } STMT_END 
    39364933#endif 
     4934 
     4935#ifndef newSVpvn_share 
     4936 
     4937#if defined(NEED_newSVpvn_share) 
     4938static SV * DPPP_(my_newSVpvn_share)(pTHX_ const char *src, I32 len, U32 hash); 
     4939static 
     4940#else 
     4941extern SV * DPPP_(my_newSVpvn_share)(pTHX_ const char *src, I32 len, U32 hash); 
     4942#endif 
     4943 
     4944#ifdef newSVpvn_share 
     4945#  undef newSVpvn_share 
     4946#endif 
     4947#define newSVpvn_share(a,b,c) DPPP_(my_newSVpvn_share)(aTHX_ a,b,c) 
     4948#define Perl_newSVpvn_share DPPP_(my_newSVpvn_share) 
     4949 
     4950#if defined(NEED_newSVpvn_share) || defined(NEED_newSVpvn_share_GLOBAL) 
     4951 
     4952SV * 
     4953DPPP_(my_newSVpvn_share)(pTHX_ const char *src, I32 len, U32 hash) 
     4954{ 
     4955  SV *sv; 
     4956  if (len < 0) 
     4957    len = -len; 
     4958  if (!hash) 
     4959    PERL_HASH(hash, (char*) src, len); 
     4960  sv = newSVpvn((char *) src, len); 
     4961  sv_upgrade(sv, SVt_PVIV); 
     4962  SvIVX(sv) = hash; 
     4963  SvREADONLY_on(sv); 
     4964  SvPOK_on(sv); 
     4965  return sv; 
     4966} 
     4967 
     4968#endif 
     4969 
     4970#endif 
     4971#ifndef SvSHARED_HASH 
     4972#  define SvSHARED_HASH(sv)              (0 + SvUVX(sv)) 
     4973#endif 
     4974#ifndef WARN_ALL 
     4975#  define WARN_ALL                       0 
     4976#endif 
     4977 
     4978#ifndef WARN_CLOSURE 
     4979#  define WARN_CLOSURE                   1 
     4980#endif 
     4981 
     4982#ifndef WARN_DEPRECATED 
     4983#  define WARN_DEPRECATED                2 
     4984#endif 
     4985 
     4986#ifndef WARN_EXITING 
     4987#  define WARN_EXITING                   3 
     4988#endif 
     4989 
     4990#ifndef WARN_GLOB 
     4991#  define WARN_GLOB                      4 
     4992#endif 
     4993 
     4994#ifndef WARN_IO 
     4995#  define WARN_IO                        5 
     4996#endif 
     4997 
     4998#ifndef WARN_CLOSED 
     4999#  define WARN_CLOSED                    6 
     5000#endif 
     5001 
     5002#ifndef WARN_EXEC 
     5003#  define WARN_EXEC                      7 
     5004#endif 
     5005 
     5006#ifndef WARN_LAYER 
     5007#  define WARN_LAYER                     8 
     5008#endif 
     5009 
     5010#ifndef WARN_NEWLINE 
     5011#  define WARN_NEWLINE                   9 
     5012#endif 
     5013 
     5014#ifndef WARN_PIPE 
     5015#  define WARN_PIPE                      10 
     5016#endif 
     5017 
     5018#ifndef WARN_UNOPENED 
     5019#  define WARN_UNOPENED                  11 
     5020#endif 
     5021 
     5022#ifndef WARN_MISC 
     5023#  define WARN_MISC                      12 
     5024#endif 
     5025 
     5026#ifndef WARN_NUMERIC 
     5027#  define WARN_NUMERIC                   13 
     5028#endif 
     5029 
     5030#ifndef WARN_ONCE 
     5031#  define WARN_ONCE                      14 
     5032#endif 
     5033 
     5034#ifndef WARN_OVERFLOW 
     5035#  define WARN_OVERFLOW                  15 
     5036#endif 
     5037 
     5038#ifndef WARN_PACK 
     5039#  define WARN_PACK                      16 
     5040#endif 
     5041 
     5042#ifndef WARN_PORTABLE 
     5043#  define WARN_PORTABLE                  17 
     5044#endif 
     5045 
     5046#ifndef WARN_RECURSION 
     5047#  define WARN_RECURSION                 18 
     5048#endif 
     5049 
     5050#ifndef WARN_REDEFINE 
     5051#  define WARN_REDEFINE                  19 
     5052#endif 
     5053 
     5054#ifndef WARN_REGEXP 
     5055#  define WARN_REGEXP                    20 
     5056#endif 
     5057 
     5058#ifndef WARN_SEVERE 
     5059#  define WARN_SEVERE                    21 
     5060#endif 
     5061 
     5062#ifndef WARN_DEBUGGING 
     5063#  define WARN_DEBUGGING                 22 
     5064#endif 
     5065 
     5066#ifndef WARN_INPLACE 
     5067#  define WARN_INPLACE                   23 
     5068#endif 
     5069 
     5070#ifndef WARN_INTERNAL 
     5071#  define WARN_INTERNAL                  24 
     5072#endif 
     5073 
     5074#ifndef WARN_MALLOC 
     5075#  define WARN_MALLOC                    25 
     5076#endif 
     5077 
     5078#ifndef WARN_SIGNAL 
     5079#  define WARN_SIGNAL                    26 
     5080#endif 
     5081 
     5082#ifndef WARN_SUBSTR 
     5083#  define WARN_SUBSTR                    27 
     5084#endif 
     5085 
     5086#ifndef WARN_SYNTAX 
     5087#  define WARN_SYNTAX                    28 
     5088#endif 
     5089 
     5090#ifndef WARN_AMBIGUOUS 
     5091#  define WARN_AMBIGUOUS                 29 
     5092#endif 
     5093 
     5094#ifndef WARN_BAREWORD 
     5095#  define WARN_BAREWORD                  30 
     5096#endif 
     5097 
     5098#ifndef WARN_DIGIT 
     5099#  define WARN_DIGIT                     31 
     5100#endif 
     5101 
     5102#ifndef WARN_PARENTHESIS 
     5103#  define WARN_PARENTHESIS               32 
     5104#endif 
     5105 
     5106#ifndef WARN_PRECEDENCE 
     5107#  define WARN_PRECEDENCE                33 
     5108#endif 
     5109 
     5110#ifndef WARN_PRINTF 
     5111#  define WARN_PRINTF                    34 
     5112#endif 
     5113 
     5114#ifndef WARN_PROTOTYPE 
     5115#  define WARN_PROTOTYPE                 35 
     5116#endif 
     5117 
     5118#ifndef WARN_QW 
     5119#  define WARN_QW                        36 
     5120#endif 
     5121 
     5122#ifndef WARN_RESERVED 
     5123#  define WARN_RESERVED                  37 
     5124#endif 
     5125 
     5126#ifndef WARN_SEMICOLON 
     5127#  define WARN_SEMICOLON                 38 
     5128#endif 
     5129 
     5130#ifndef WARN_TAINT 
     5131#  define WARN_TAINT                     39 
     5132#endif 
     5133 
     5134#ifndef WARN_THREADS 
     5135#  define WARN_THREADS                   40 
     5136#endif 
     5137 
     5138#ifndef WARN_UNINITIALIZED 
     5139#  define WARN_UNINITIALIZED             41 
     5140#endif 
     5141 
     5142#ifndef WARN_UNPACK 
     5143#  define WARN_UNPACK                    42 
     5144#endif 
     5145 
     5146#ifndef WARN_UNTIE 
     5147#  define WARN_UNTIE                     43 
     5148#endif 
     5149 
     5150#ifndef WARN_UTF8 
     5151#  define WARN_UTF8                      44 
     5152#endif 
     5153 
     5154#ifndef WARN_VOID 
     5155#  define WARN_VOID                      45 
     5156#endif 
     5157 
     5158#ifndef WARN_ASSERTIONS 
     5159#  define WARN_ASSERTIONS                46 
     5160#endif 
     5161#ifndef packWARN 
     5162#  define packWARN(a)                    (a) 
     5163#endif 
     5164 
     5165#ifndef ckWARN 
     5166#  ifdef G_WARN_ON 
     5167#    define  ckWARN(a)                  (PL_dowarn & G_WARN_ON) 
     5168#  else 
     5169#    define  ckWARN(a)                  PL_dowarn 
     5170#  endif 
     5171#endif 
     5172 
     5173#if (PERL_BCDVERSION >= 0x5004000) && !defined(warner) 
     5174#if defined(NEED_warner) 
     5175static void DPPP_(my_warner)(U32 err, const char *pat, ...); 
     5176static 
     5177#else 
     5178extern void DPPP_(my_warner)(U32 err, const char *pat, ...); 
     5179#endif 
     5180 
     5181#define Perl_warner DPPP_(my_warner) 
     5182 
     5183#if defined(NEED_warner) || defined(NEED_warner_GLOBAL) 
     5184 
     5185void 
     5186DPPP_(my_warner)(U32 err, const char *pat, ...) 
     5187{ 
     5188  SV *sv; 
     5189  va_list args; 
     5190 
     5191  PERL_UNUSED_ARG(err); 
     5192 
     5193  va_start(args, pat); 
     5194  sv = vnewSVpvf(pat, &args); 
     5195  va_end(args); 
     5196  sv_2mortal(sv); 
     5197  warn("%s", SvPV_nolen(sv)); 
     5198} 
     5199 
     5200#define warner  Perl_warner 
     5201 
     5202#define Perl_warner_nocontext  Perl_warner 
     5203 
     5204#endif 
     5205#endif 
     5206 
     5207/* concatenating with "" ensures that only literal strings are accepted as argument 
     5208 * note that STR_WITH_LEN() can't be used as argument to macros or functions that 
     5209 * under some configurations might be macros 
     5210 */ 
     5211#ifndef STR_WITH_LEN 
     5212#  define STR_WITH_LEN(s)                (s ""), (sizeof(s)-1) 
     5213#endif 
     5214#ifndef newSVpvs 
     5215#  define newSVpvs(str)                  newSVpvn(str "", sizeof(str) - 1) 
     5216#endif 
     5217 
     5218#ifndef sv_catpvs 
     5219#  define sv_catpvs(sv, str)             sv_catpvn(sv, str "", sizeof(str) - 1) 
     5220#endif 
     5221 
     5222#ifndef sv_setpvs 
     5223#  define sv_setpvs(sv, str)             sv_setpvn(sv, str "", sizeof(str) - 1) 
     5224#endif 
     5225 
     5226#ifndef hv_fetchs 
     5227#  define hv_fetchs(hv, key, lval)       hv_fetch(hv, key "", sizeof(key) - 1, lval) 
     5228#endif 
     5229 
     5230#ifndef hv_stores 
     5231#  define hv_stores(hv, key, val)        hv_store(hv, key "", sizeof(key) - 1, val, 0) 
     5232#endif 
    39375233#ifndef SvGETMAGIC 
    39385234#  define SvGETMAGIC(x)                  STMT_START { if (SvGMAGICAL(x)) mg_get(x); } STMT_END 
     
    40955391 
    40965392/* That's the best we can do... */ 
    4097 #ifndef SvPV_force_nomg 
    4098 #  define SvPV_force_nomg                SvPV_force 
    4099 #endif 
    4100  
    4101 #ifndef SvPV_nomg 
    4102 #  define SvPV_nomg                      SvPV 
    4103 #endif 
    4104  
    41055393#ifndef sv_catpvn_nomg 
    41065394#  define sv_catpvn_nomg                 sv_catpvn 
     
    42165504   } STMT_END 
    42175505#endif 
     5506#ifndef SvVSTRING_mg 
     5507#  define SvVSTRING_mg(sv)               (SvMAGICAL(sv) ? mg_find(sv, PERL_MAGIC_vstring) : NULL) 
     5508#endif 
     5509 
     5510/* Hint: sv_magic_portable 
     5511 * This is a compatibility function that is only available with 
     5512 * Devel::PPPort. It is NOT in the perl core. 
     5513 * Its purpose is to mimic the 5.8.0 behaviour of sv_magic() when 
     5514 * it is being passed a name pointer with namlen == 0. In that 
     5515 * case, perl 5.8.0 and later store the pointer, not a copy of it. 
     5516 * The compatibility can be provided back to perl 5.004. With 
     5517 * earlier versions, the code will not compile. 
     5518 */ 
     5519 
     5520#if (PERL_BCDVERSION < 0x5004000) 
     5521 
     5522  /* code that uses sv_magic_portable will not compile */ 
     5523 
     5524#elif (PERL_BCDVERSION < 0x5008000) 
     5525 
     5526#  define sv_magic_portable(sv, obj, how, name, namlen)     \ 
     5527   STMT_START {                                             \ 
     5528     SV *SvMp_sv = (sv);                                    \ 
     5529     char *SvMp_name = (char *) (name);                     \ 
     5530     I32 SvMp_namlen = (namlen);                            \ 
     5531     if (SvMp_name && SvMp_namlen == 0)                     \ 
     5532     {                                                      \ 
     5533       MAGIC *mg;                                           \ 
     5534       sv_magic(SvMp_sv, obj, how, 0, 0);                   \ 
     5535       mg = SvMAGIC(SvMp_sv);                               \ 
     5536       mg->mg_len = -42; /* XXX: this is the tricky part */ \ 
     5537       mg->mg_ptr = SvMp_name;                              \ 
     5538     }                                                      \ 
     5539     else                                                   \ 
     5540     {                                                      \ 
     5541       sv_magic(SvMp_sv, obj, how, SvMp_name, SvMp_namlen); \ 
     5542     }                                                      \ 
     5543   } STMT_END 
     5544 
     5545#else 
     5546 
     5547#  define sv_magic_portable(a, b, c, d, e)  sv_magic(a, b, c, d, e) 
     5548 
     5549#endif 
    42185550 
    42195551#ifdef USE_ITHREADS 
     
    43445676#  define IS_NUMBER_NAN                  0x20 
    43455677#endif 
    4346  
    4347 /* GROK_NUMERIC_RADIX depends on grok_numeric_radix */ 
    43485678#ifndef GROK_NUMERIC_RADIX 
    43495679#  define GROK_NUMERIC_RADIX(sp, send)   grok_numeric_radix(sp, send) 
     
    44085738        } 
    44095739    } 
    4410 #endif /* PERL_VERSION */ 
     5740#endif 
    44115741#endif /* USE_LOCALE_NUMERIC */ 
    44125742    /* always try "." if numeric radix didn't match because 
     
    44205750#endif 
    44215751#endif 
    4422  
    4423 /* grok_number depends on grok_numeric_radix */ 
    44245752 
    44255753#ifndef grok_number 
     
    46395967#ifndef grok_bin 
    46405968#if defined(NEED_grok_bin) 
    4641 static UV DPPP_(my_grok_bin)(pTHX_ char *start, STRLEN *len_p, I32 *flags, NV *result); 
     5969static UV DPPP_(my_grok_bin)(pTHX_ const char * start, STRLEN * len_p, I32 * flags, NV * result); 
    46425970static 
    46435971#else 
    4644 extern UV DPPP_(my_grok_bin)(pTHX_ char *start, STRLEN *len_p, I32 *flags, NV *result); 
     5972extern UV DPPP_(my_grok_bin)(pTHX_ const char * start, STRLEN * len_p, I32 * flags, NV * result); 
    46455973#endif 
    46465974 
     
    46535981#if defined(NEED_grok_bin) || defined(NEED_grok_bin_GLOBAL) 
    46545982UV 
    4655 DPPP_(my_grok_bin)(pTHX_ char *start, STRLEN *len_p, I32 *flags, NV *result) 
     5983DPPP_(my_grok_bin)(pTHX_ const char *start, STRLEN *len_p, I32 *flags, NV *result) 
    46565984{ 
    46575985    const char *s = start; 
     
    47416069#ifndef grok_hex 
    47426070#if defined(NEED_grok_hex) 
    4743 static UV DPPP_(my_grok_hex)(pTHX_ char *start, STRLEN *len_p, I32 *flags, NV *result); 
     6071static UV DPPP_(my_grok_hex)(pTHX_ const char * start, STRLEN * len_p, I32 * flags, NV * result); 
    47446072static 
    47456073#else 
    4746 extern UV DPPP_(my_grok_hex)(pTHX_ char *start, STRLEN *len_p, I32 *flags, NV *result); 
     6074extern UV DPPP_(my_grok_hex)(pTHX_ const char * start, STRLEN * len_p, I32 * flags, NV * result); 
    47476075#endif 
    47486076 
     
    47556083#if defined(NEED_grok_hex) || defined(NEED_grok_hex_GLOBAL) 
    47566084UV 
    4757 DPPP_(my_grok_hex)(pTHX_ char *start, STRLEN *len_p, I32 *flags, NV *result) 
     6085DPPP_(my_grok_hex)(pTHX_ const char *start, STRLEN *len_p, I32 *flags, NV *result) 
    47586086{ 
    47596087    const char *s = start; 
     
    48436171#ifndef grok_oct 
    48446172#if defined(NEED_grok_oct) 
    4845 static UV DPPP_(my_grok_oct)(pTHX_ char *start, STRLEN *len_p, I32 *flags, NV *result); 
     6173static UV DPPP_(my_grok_oct)(pTHX_ const char * start, STRLEN * len_p, I32 * flags, NV * result); 
    48466174static 
    48476175#else 
    4848 extern UV DPPP_(my_grok_oct)(pTHX_ char *start, STRLEN *len_p, I32 *flags, NV *result); 
     6176extern UV DPPP_(my_grok_oct)(pTHX_ const char * start, STRLEN * len_p, I32 * flags, NV * result); 
    48496177#endif 
    48506178 
     
    48576185#if defined(NEED_grok_oct) || defined(NEED_grok_oct_GLOBAL) 
    48586186UV 
    4859 DPPP_(my_grok_oct)(pTHX_ char *start, STRLEN *len_p, I32 *flags, NV *result) 
     6187DPPP_(my_grok_oct)(pTHX_ const char *start, STRLEN *len_p, I32 *flags, NV *result) 
    48606188{ 
    48616189    const char *s = start; 
     
    49346262#endif 
    49356263 
     6264#if !defined(my_snprintf) 
     6265#if defined(NEED_my_snprintf) 
     6266static int DPPP_(my_my_snprintf)(char * buffer, const Size_t len, const char * format, ...); 
     6267static 
     6268#else 
     6269extern int DPPP_(my_my_snprintf)(char * buffer, const Size_t len, const char * format, ...); 
     6270#endif 
     6271 
     6272#define my_snprintf DPPP_(my_my_snprintf) 
     6273#define Perl_my_snprintf DPPP_(my_my_snprintf) 
     6274 
     6275#if defined(NEED_my_snprintf) || defined(NEED_my_snprintf_GLOBAL) 
     6276 
     6277int 
     6278DPPP_(my_my_snprintf)(char *buffer, const Size_t len, const char *format, ...) 
     6279{ 
     6280    dTHX; 
     6281    int retval; 
     6282    va_list ap; 
     6283    va_start(ap, format); 
     6284#ifdef HAS_VSNPRINTF 
     6285    retval = vsnprintf(buffer, len, format, ap); 
     6286#else 
     6287    retval = vsprintf(buffer, format, ap); 
     6288#endif 
     6289    va_end(ap); 
     6290    if (retval >= (int)len) 
     6291    Perl_croak(aTHX_ "panic: my_snprintf buffer overflow"); 
     6292    return retval; 
     6293} 
     6294 
     6295#endif 
     6296#endif 
     6297 
    49366298#ifdef NO_XSLOCKS 
    49376299#  ifdef dJMPENV 
     
    49506312#endif 
    49516313 
     6314#if !defined(my_strlcat) 
     6315#if defined(NEED_my_strlcat) 
     6316static Size_t DPPP_(my_my_strlcat)(char * dst, const char * src, Size_t size); 
     6317static 
     6318#else 
     6319extern Size_t DPPP_(my_my_strlcat)(char * dst, const char * src, Size_t size); 
     6320#endif 
     6321 
     6322#define my_strlcat DPPP_(my_my_strlcat) 
     6323#define Perl_my_strlcat DPPP_(my_my_strlcat) 
     6324 
     6325#if defined(NEED_my_strlcat) || defined(NEED_my_strlcat_GLOBAL) 
     6326 
     6327Size_t 
     6328DPPP_(my_my_strlcat)(char *dst, const char *src, Size_t size) 
     6329{ 
     6330    Size_t used, length, copy; 
     6331 
     6332    used = strlen(dst); 
     6333    length = strlen(src); 
     6334    if (size > 0 && used < size - 1) { 
     6335        copy = (length >= size - used) ? size - used - 1 : length; 
     6336        memcpy(dst + used, src, copy); 
     6337        dst[used + copy] = '\0'; 
     6338    } 
     6339    return used + length; 
     6340} 
     6341#endif 
     6342#endif 
     6343 
     6344#if !defined(my_strlcpy) 
     6345#if defined(NEED_my_strlcpy) 
     6346static Size_t DPPP_(my_my_strlcpy)(char * dst, const char * src, Size_t size); 
     6347static 
     6348#else 
     6349extern Size_t DPPP_(my_my_strlcpy)(char * dst, const char * src, Size_t size); 
     6350#endif 
     6351 
     6352#define my_strlcpy DPPP_(my_my_strlcpy) 
     6353#define Perl_my_strlcpy DPPP_(my_my_strlcpy) 
     6354 
     6355#if defined(NEED_my_strlcpy) || defined(NEED_my_strlcpy_GLOBAL) 
     6356 
     6357Size_t 
     6358DPPP_(my_my_strlcpy)(char *dst, const char *src, Size_t size) 
     6359{ 
     6360    Size_t length, copy; 
     6361 
     6362    length = strlen(src); 
     6363    if (size > 0) { 
     6364        copy = (length >= size) ? size - 1 : length; 
     6365        memcpy(dst, src, copy); 
     6366        dst[copy] = '\0'; 
     6367    } 
     6368    return length; 
     6369} 
     6370 
     6371#endif 
     6372#endif 
     6373 
    49526374#endif /* _P_P_PORTABILITY_H_ */ 
    49536375 
Note: See TracChangeset for help on using the changeset viewer.