Changeset 2067
- Timestamp:
- 09/12/09 08:25:33 (2 years ago)
- File:
-
- 1 edited
-
branches/Search-Tools/xs-tokenizer/ppport.h (modified) (176 diffs)
Legend:
- Unmodified
- Added
- Removed
-
branches/Search-Tools/xs-tokenizer/ppport.h
r767 r2067 5 5 ---------------------------------------------------------------------- 6 6 7 ppport.h -- Perl/Pollution/Portability Version 3.03 8 9 Automatically created by Devel::PPPort running under 10 perl 5.008006 on Tue Jul 11 09:34:09 2006. 11 7 ppport.h -- Perl/Pollution/Portability Version 3.13 8 9 Automatically created by Devel::PPPort running under perl 5.010000. 10 12 11 Do NOT edit this file directly! -- Edit PPPort_pm.PL and the 13 12 includes in parts/inc/ instead. 14 13 15 14 Use 'perldoc ppport.h' to view the documentation below. 16 15 … … 23 22 =head1 NAME 24 23 25 ppport.h - Perl/Pollution/Portability version 3. 0324 ppport.h - Perl/Pollution/Portability version 3.13 26 25 27 26 =head1 SYNOPSIS 28 27 29 perl ppport.h [options] [files] 28 perl ppport.h [options] [source files] 29 30 Searches current directory for files if no [source files] are given 30 31 31 32 --help show short help 33 34 --version show version 32 35 33 36 --patch=file write one patch file with changes … … 42 45 --nohints don't show hints 43 46 --nochanges don't suggest changes 47 --nofilter don't filter input files 48 49 --strip strip all script and doc functionality from 50 ppport.h 44 51 45 52 --list-provided list provided API 46 53 --list-unsupported list unsupported API 54 --api-info=name show Perl API portability information 47 55 48 56 =head1 COMPATIBILITY 49 57 50 58 This version of F<ppport.h> is designed to support operation with Perl 51 installations back to 5.003, and has been tested up to 5. 9.2.59 installations back to 5.003, and has been tested up to 5.10.0. 52 60 53 61 =head1 OPTIONS … … 56 64 57 65 Display a brief usage summary. 66 67 =head2 --version 68 69 Display the version of F<ppport.h>. 58 70 59 71 =head2 --patch=I<file> … … 67 79 If this option is given, a copy of each file will be saved with 68 80 the given suffix that contains the suggested changes. This does 69 not require any external programs. 81 not require any external programs. Note that this does not 82 automagially add a dot between the original filename and the 83 suffix. If you want the dot, you have to include it in the option 84 argument. 70 85 71 86 If neither C<--patch> or C<--copy> are given, the default is to … … 85 100 version 5.003. You can use this option to reduce the output 86 101 of F<ppport.h> if you intend to be backward compatible only 87 upto a certain Perl version.102 down to a certain Perl version. 88 103 89 104 =head2 --cplusplus … … 106 121 107 122 Don't output any hints. Hints often contain useful portability 108 notes. 123 notes. Warnings will still be displayed. 109 124 110 125 =head2 --nochanges … … 113 128 unless these are also deactivated. 114 129 130 =head2 --nofilter 131 132 Don't filter the list of input files. By default, files not looking 133 like source code (i.e. not *.xs, *.c, *.cc, *.cpp or *.h) are skipped. 134 135 =head2 --strip 136 137 Strip all script and documentation functionality from F<ppport.h>. 138 This reduces the size of F<ppport.h> dramatically and may be useful 139 if you want to include F<ppport.h> in smaller modules without 140 increasing their distribution size too much. 141 142 The stripped F<ppport.h> will have a C<--unstrip> option that allows 143 you to undo the stripping, but only if an appropriate C<Devel::PPPort> 144 module is installed. 145 115 146 =head2 --list-provided 116 147 117 148 Lists the API elements for which compatibility is provided by 118 149 F<ppport.h>. Also lists if it must be explicitly requested, 119 if it has dependencies, and if there are hints for it.150 if it has dependencies, and if there are hints or warnings for it. 120 151 121 152 =head2 --list-unsupported … … 124 155 F<ppport.h> and below which version of Perl they probably 125 156 won't be available or work. 157 158 =head2 --api-info=I<name> 159 160 Show portability information for API elements matching I<name>. 161 If I<name> is surrounded by slashes, it is interpreted as a regular 162 expression. 126 163 127 164 =head1 DESCRIPTION … … 152 189 =item * 153 190 154 If you use one of a few functions that were not present in earlier155 versions of Perl, and that can't be provided using a macro, you have 156 to explicitly request support for these functions by adding one or191 If you use one of a few functions or variables that were not present in 192 earlier versions of Perl, and that can't be provided using a macro, you 193 have to explicitly request support for these functions by adding one or 157 194 more C<#define>s in your source code before the inclusion of F<ppport.h>. 158 195 159 These functions will be marked C<explicit> in the list shown by160 C<--list-provided>.196 These functions or variables will be marked C<explicit> in the list shown 197 by C<--list-provided>. 161 198 162 199 Depending on whether you module has a single or multiple files that 163 use such functions, you want either C<static> or global variants. 164 165 For a C<static> function, use: 200 use such functions or variables, you want either C<static> or global 201 variants. 202 203 For a C<static> function or variable (used only in a single source 204 file), use: 166 205 167 206 #define NEED_function 168 169 For a global function, use: 207 #define NEED_variable 208 209 For a global function or variable (used in multiple source files), 210 use: 170 211 171 212 #define NEED_function_GLOBAL 172 173 Note that you mustn't have more than one global request for one 174 function in your project. 175 176 Function Static Request Global Request 213 #define NEED_variable_GLOBAL 214 215 Note that you mustn't have more than one global request for the 216 same function or variable in your project. 217 218 Function / Variable Static Request Global Request 177 219 ----------------------------------------------------------------------------------------- 178 eval_pv() NEED_eval_pv NEED_eval_pv_GLOBAL 179 grok_bin() NEED_grok_bin NEED_grok_bin_GLOBAL 180 grok_hex() NEED_grok_hex NEED_grok_hex_GLOBAL 181 grok_number() NEED_grok_number NEED_grok_number_GLOBAL 182 grok_numeric_radix() NEED_grok_numeric_radix NEED_grok_numeric_radix_GLOBAL 183 grok_oct() NEED_grok_oct NEED_grok_oct_GLOBAL 184 newCONSTSUB() NEED_newCONSTSUB NEED_newCONSTSUB_GLOBAL 185 newRV_noinc() NEED_newRV_noinc NEED_newRV_noinc_GLOBAL 186 sv_2pv_nolen() NEED_sv_2pv_nolen NEED_sv_2pv_nolen_GLOBAL 187 sv_2pvbyte() NEED_sv_2pvbyte NEED_sv_2pvbyte_GLOBAL 188 sv_catpvf_mg() NEED_sv_catpvf_mg NEED_sv_catpvf_mg_GLOBAL 220 PL_signals NEED_PL_signals NEED_PL_signals_GLOBAL 221 eval_pv() NEED_eval_pv NEED_eval_pv_GLOBAL 222 grok_bin() NEED_grok_bin NEED_grok_bin_GLOBAL 223 grok_hex() NEED_grok_hex NEED_grok_hex_GLOBAL 224 grok_number() NEED_grok_number NEED_grok_number_GLOBAL 225 grok_numeric_radix() NEED_grok_numeric_radix NEED_grok_numeric_radix_GLOBAL 226 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 231 newCONSTSUB() NEED_newCONSTSUB NEED_newCONSTSUB_GLOBAL 232 newRV_noinc() NEED_newRV_noinc NEED_newRV_noinc_GLOBAL 233 newSVpvn_share() NEED_newSVpvn_share NEED_newSVpvn_share_GLOBAL 234 sv_2pv_flags() NEED_sv_2pv_flags NEED_sv_2pv_flags_GLOBAL 235 sv_2pvbyte() NEED_sv_2pvbyte NEED_sv_2pvbyte_GLOBAL 236 sv_catpvf_mg() NEED_sv_catpvf_mg NEED_sv_catpvf_mg_GLOBAL 189 237 sv_catpvf_mg_nocontext() NEED_sv_catpvf_mg_nocontext NEED_sv_catpvf_mg_nocontext_GLOBAL 190 sv_setpvf_mg() NEED_sv_setpvf_mg NEED_sv_setpvf_mg_GLOBAL 238 sv_pvn_force_flags() NEED_sv_pvn_force_flags NEED_sv_pvn_force_flags_GLOBAL 239 sv_setpvf_mg() NEED_sv_setpvf_mg NEED_sv_setpvf_mg_GLOBAL 191 240 sv_setpvf_mg_nocontext() NEED_sv_setpvf_mg_nocontext NEED_sv_setpvf_mg_nocontext_GLOBAL 192 vnewSVpvf() NEED_vnewSVpvf NEED_vnewSVpvf_GLOBAL 241 vload_module() NEED_vload_module NEED_vload_module_GLOBAL 242 vnewSVpvf() NEED_vnewSVpvf NEED_vnewSVpvf_GLOBAL 243 warner() NEED_warner NEED_warner_GLOBAL 193 244 194 245 To avoid namespace conflicts, you can change the namespace of the 195 explicitly exported functions using the C<DPPP_NAMESPACE> macro.196 Just C<#define> the macro before including C<ppport.h>:246 explicitly exported functions / variables using the C<DPPP_NAMESPACE> 247 macro. Just C<#define> the macro before including C<ppport.h>: 197 248 198 249 #define DPPP_NAMESPACE MyOwnNamespace_ … … 239 290 This would output context diffs with 10 lines of context. 240 291 292 If you want to create patched copies of your files instead, use: 293 294 perl ppport.h --copy=.new 295 296 To display portability information for the C<newSVpvn> function, 297 use: 298 299 perl ppport.h --api-info=newSVpvn 300 301 Since the argument to C<--api-info> can be a regular expression, 302 you can use 303 304 perl ppport.h --api-info=/_nomg$/ 305 306 to display portability information for all C<_nomg> functions or 307 308 perl ppport.h --api-info=/./ 309 310 to display information for all known API elements. 311 241 312 =head1 BUGS 242 313 … … 281 352 =head1 COPYRIGHT 282 353 283 Version 3.x, Copyright (c) 2004 , Marcus Holland-Moritz.354 Version 3.x, Copyright (c) 2004-2007, Marcus Holland-Moritz. 284 355 285 356 Version 2.x, Copyright (C) 2001, Paul Marquess. … … 297 368 298 369 use strict; 370 371 # Disable broken TRIE-optimization 372 BEGIN { eval '${^RE_TRIE_MAXBUF} = -1' if $] >= 5.009004 && $] <= 5.009005 } 373 374 my $VERSION = 3.13; 299 375 300 376 my %opt = ( … … 304 380 changes => 1, 305 381 cplusplus => 0, 382 filter => 1, 383 strip => 0, 384 version => 0, 306 385 ); 307 386 … … 310 389 my $HS = "[ \t]"; # horizontal whitespace 311 390 391 # Never use C comments in this file! 392 my $ccs = '/'.'*'; 393 my $cce = '*'.'/'; 394 my $rccs = quotemeta $ccs; 395 my $rcce = quotemeta $cce; 396 312 397 eval { 313 398 require Getopt::Long; 314 399 Getopt::Long::GetOptions(\%opt, qw( 315 help quiet diag! hints! changes! cplusplus400 help quiet diag! filter! hints! changes! cplusplus strip version 316 401 patch=s copy=s diff=s compat-version=s 317 list-provided list-unsupported 402 list-provided list-unsupported api-info=s 318 403 )) or usage(); 319 404 }; … … 324 409 } 325 410 411 if ($opt{version}) { 412 print "This is $0 $VERSION.\n"; 413 exit 0; 414 } 415 326 416 usage() if $opt{help}; 417 strip() if $opt{strip}; 327 418 328 419 if (exists $opt{'compat-version'}) { … … 332 423 } 333 424 die "Only Perl 5 is supported\n" if $r != 5; 334 die "Invalid version number: $opt{'compat-version'}\n" if $v >= 1000 || $ v>= 1000;425 die "Invalid version number: $opt{'compat-version'}\n" if $v >= 1000 || $s >= 1000; 335 426 $opt{'compat-version'} = sprintf "%d.%03d%03d", $r, $v, $s; 336 427 } … … 339 430 } 340 431 341 # Never use C comments in this file!!!!!342 my $ccs = '/'.'*';343 my $cce = '*'.'/';344 my $rccs = quotemeta $ccs;345 my $rcce = quotemeta $cce;346 347 my @files;348 349 if (@ARGV) {350 @files = map { glob $_ } @ARGV;351 }352 else {353 eval {354 require File::Find;355 File::Find::find(sub {356 $File::Find::name =~ /\.(xs|c|h|cc)$/i357 and push @files, $File::Find::name;358 }, '.');359 };360 if ($@) {361 @files = map { glob $_ } qw(*.xs *.c *.h *.cc);362 }363 my %filter = map { /(.*)\.xs$/ ? ("$1.c" => 1) : () } @files;364 @files = grep { !/\b\Q$ppport\E$/i && !exists $filter{$_} } @files;365 }366 367 unless (@files) {368 die "No input files given!\n";369 }370 371 432 my %API = map { /^(\w+)\|([^|]*)\|([^|]*)\|(\w*)$/ 372 ? ( $1 => { 433 ? ( $1 => { 373 434 ($2 ? ( base => $2 ) : ()), 374 435 ($3 ? ( todo => $3 ) : ()), … … 405 466 EXTEND||| 406 467 EXTERN_C|5.005000||p 468 F0convert|||n 407 469 FREETMPS||| 408 470 GIMME_V||5.004000|n … … 445 507 LVRET||| 446 508 MARK||| 509 MULTICALL||5.009005| 447 510 MY_CXT_CLONE|5.009002||p 448 511 MY_CXT_INIT|5.007003||p … … 450 513 MoveD|5.009002||p 451 514 Move||| 452 NEWSV|||453 515 NOOP|5.005000||p 454 516 NUM2PTR|5.006000||p … … 457 519 NVff|5.006001||p 458 520 NVgf|5.006001||p 459 New c|||460 New z|||461 New |||521 Newxc|5.009003||p 522 Newxz|5.009003||p 523 Newx|5.009003||p 462 524 Nullav||| 463 525 Nullch||| … … 469 531 PAD_CLONE_VARS||| 470 532 PAD_COMPNAME_FLAGS||| 533 PAD_COMPNAME_GEN_set||| 471 534 PAD_COMPNAME_GEN||| 472 535 PAD_COMPNAME_OURSTASH||| … … 481 544 PAD_SVl||| 482 545 PAD_SV||| 483 PERL_BCDVERSION|5.009002||p 546 PERL_ABS|5.008001||p 547 PERL_BCDVERSION|5.009005||p 484 548 PERL_GCC_BRACE_GROUPS_FORBIDDEN|5.008001||p 549 PERL_HASH|5.004000||p 485 550 PERL_INT_MAX|5.004000||p 486 551 PERL_INT_MIN|5.004000||p … … 498 563 PERL_MAGIC_ext|5.007002||p 499 564 PERL_MAGIC_fm|5.007002||p 500 PERL_MAGIC_glob|5.00 7002||p565 PERL_MAGIC_glob|5.009005||p 501 566 PERL_MAGIC_isaelem|5.007002||p 502 567 PERL_MAGIC_isa|5.007002||p 503 PERL_MAGIC_mutex|5.00 7002||p568 PERL_MAGIC_mutex|5.009005||p 504 569 PERL_MAGIC_nkeys|5.007002||p 505 570 PERL_MAGIC_overload_elem|5.007002||p … … 535 600 PERL_SHORT_MAX|5.004000||p 536 601 PERL_SHORT_MIN|5.004000||p 602 PERL_SIGNALS_UNSAFE_FLAG|5.008001||p 537 603 PERL_SUBVERSION|5.006000||p 538 604 PERL_UCHAR_MAX|5.004000||p … … 542 608 PERL_ULONG_MAX|5.004000||p 543 609 PERL_ULONG_MIN|5.004000||p 610 PERL_UNUSED_ARG|5.009003||p 611 PERL_UNUSED_CONTEXT|5.009004||p 544 612 PERL_UNUSED_DECL|5.007002||p 613 PERL_UNUSED_VAR|5.007002||p 545 614 PERL_UQUAD_MAX|5.004000||p 546 615 PERL_UQUAD_MIN|5.004000||p 616 PERL_USE_GCC_BRACE_GROUPS|5.009004||p 547 617 PERL_USHORT_MAX|5.004000||p 548 618 PERL_USHORT_MIN|5.004000||p 549 619 PERL_VERSION|5.006000||p 620 PL_DBsignal|5.005000||p 550 621 PL_DBsingle|||pn 551 622 PL_DBsub|||pn 552 PL_DBtrace||| n623 PL_DBtrace|||pn 553 624 PL_Sv|5.005000||p 554 625 PL_compiling|5.004050||p 555 PL_copline|5.00 5000||p626 PL_copline|5.009005||p 556 627 PL_curcop|5.004050||p 557 628 PL_curstash|5.004050||p … … 562 633 PL_dowarn|||pn 563 634 PL_errgv|5.004050||p 635 PL_expect|5.009005||p 564 636 PL_hexdigit|5.005000||p 565 637 PL_hints|5.005000||p 566 638 PL_last_in_gv|||n 639 PL_laststatval|5.005000||p 567 640 PL_modglobal||5.005000|n 568 641 PL_na|5.004050||pn … … 575 648 PL_rsfp|5.004050||p 576 649 PL_rs|||n 650 PL_signals|5.008001||p 577 651 PL_stack_base|5.004050||p 578 652 PL_stack_sp|5.004050||p 653 PL_statcache|5.005000||p 579 654 PL_stdingv|5.004050||p 580 655 PL_sv_arenaroot|5.004050||p … … 584 659 PL_tainted|5.004050||p 585 660 PL_tainting|5.004050||p 661 POP_MULTICALL||5.009005| 586 662 POPi|||n 587 663 POPl|||n … … 597 673 PTRV|5.006000||p 598 674 PUSHMARK||| 675 PUSH_MULTICALL||5.009005| 599 676 PUSHi||| 600 677 PUSHmortal|5.009002||p … … 606 683 PerlIO_clearerr||5.007003| 607 684 PerlIO_close||5.007003| 685 PerlIO_context_layers||5.009004| 608 686 PerlIO_eof||5.007003| 609 687 PerlIO_error||5.007003| … … 626 704 PerlIO_unread||5.007003| 627 705 PerlIO_write||5.007003| 706 Perl_signbit||5.009005|n 707 PoisonFree|5.009004||p 708 PoisonNew|5.009004||p 709 PoisonWith|5.009004||p 628 710 Poison|5.008000||p 629 711 RETVAL|||n … … 641 723 STMT_END|||p 642 724 STMT_START|||p 725 STR_WITH_LEN|5.009003||p 643 726 ST||| 727 SV_CONST_RETURN|5.009003||p 728 SV_COW_DROP_PV|5.008001||p 729 SV_COW_SHARED_HASH_KEYS|5.009005||p 730 SV_GMAGIC|5.007002||p 731 SV_HAS_TRAILING_NUL|5.009004||p 732 SV_IMMEDIATE_UNREF|5.007001||p 733 SV_MUTABLE_RETURN|5.009003||p 734 SV_NOSTEAL|5.009002||p 735 SV_SMAGIC|5.009003||p 736 SV_UTF8_NO_ENCODING|5.008001||p 737 SVf|5.006000||p 644 738 SVt_IV||| 645 739 SVt_NV||| … … 652 746 Slab_Alloc||| 653 747 Slab_Free||| 748 Slab_to_rw||| 654 749 StructCopy||| 655 750 SvCUR_set||| 656 751 SvCUR||| 657 752 SvEND||| 753 SvGAMAGIC||5.006001| 658 754 SvGETMAGIC|5.004050||p 659 755 SvGROW||| … … 668 764 SvIVX||| 669 765 SvIV_nomg|5.009001||p 766 SvIV_set||| 670 767 SvIVx||| 671 768 SvIV||| 672 769 SvIsCOW_shared_hash||5.008003| 673 770 SvIsCOW||5.008003| 771 SvLEN_set||| 674 772 SvLEN||| 675 773 SvLOCK||5.007003| 774 SvMAGIC_set|5.009003||p 676 775 SvNIOK_off||| 677 776 SvNIOKp||| … … 683 782 SvNOK||| 684 783 SvNVX||| 784 SvNV_set||| 685 785 SvNVx||| 686 786 SvNV||| … … 693 793 SvPOKp||| 694 794 SvPOK||| 795 SvPVX_const|5.009003||p 796 SvPVX_mutable|5.009003||p 695 797 SvPVX||| 798 SvPV_const|5.009003||p 799 SvPV_flags_const_nolen|5.009003||p 800 SvPV_flags_const|5.009003||p 801 SvPV_flags_mutable|5.009003||p 802 SvPV_flags|5.007002||p 803 SvPV_force_flags_mutable|5.009003||p 804 SvPV_force_flags_nolen|5.009003||p 805 SvPV_force_flags|5.007002||p 806 SvPV_force_mutable|5.009003||p 807 SvPV_force_nolen|5.009003||p 808 SvPV_force_nomg_nolen|5.009003||p 696 809 SvPV_force_nomg|5.007002||p 697 SvPV_force||| 810 SvPV_force|||p 811 SvPV_mutable|5.009003||p 812 SvPV_nolen_const|5.009003||p 698 813 SvPV_nolen|5.006000||p 814 SvPV_nomg_const_nolen|5.009003||p 815 SvPV_nomg_const|5.009003||p 699 816 SvPV_nomg|5.007002||p 817 SvPV_set||| 700 818 SvPVbyte_force||5.009002| 701 819 SvPVbyte_nolen||5.006000| … … 711 829 SvPV||| 712 830 SvREFCNT_dec||| 713 SvREFCNT_inc||| 831 SvREFCNT_inc_NN|5.009004||p 832 SvREFCNT_inc_simple_NN|5.009004||p 833 SvREFCNT_inc_simple_void_NN|5.009004||p 834 SvREFCNT_inc_simple_void|5.009004||p 835 SvREFCNT_inc_simple|5.009004||p 836 SvREFCNT_inc_void_NN|5.009004||p 837 SvREFCNT_inc_void|5.009004||p 838 SvREFCNT_inc|||p 714 839 SvREFCNT||| 715 840 SvROK_off||| 716 841 SvROK_on||| 717 842 SvROK||| 843 SvRV_set|5.009003||p 718 844 SvRV||| 845 SvRXOK||5.009005| 846 SvRX||5.009005| 719 847 SvSETMAGIC||| 848 SvSHARED_HASH|5.009003||p 720 849 SvSHARE||5.007003| 850 SvSTASH_set|5.009003||p 721 851 SvSTASH||| 722 852 SvSetMagicSV_nosteal||5.004000| … … 731 861 SvTYPE||| 732 862 SvUNLOCK||5.007003| 733 SvUOK| |5.007001|863 SvUOK|5.007001|5.006000|p 734 864 SvUPGRADE||| 735 865 SvUTF8_off||5.006000| … … 739 869 SvUVX|5.004000||p 740 870 SvUV_nomg|5.009001||p 871 SvUV_set|5.009003||p 741 872 SvUVx|5.004000||p 742 873 SvUV|5.004000||p 743 874 SvVOK||5.008001| 875 SvVSTRING_mg|5.009004||p 744 876 THIS|||n 745 877 UNDERBAR|5.009002||p 878 UTF8_MAXBYTES|5.009002||p 746 879 UVSIZE|5.006000||p 747 880 UVTYPE|5.006000||p … … 750 883 UVuf|5.006000||p 751 884 UVxf|5.006000||p 885 WARN_ALL|5.006000||p 886 WARN_AMBIGUOUS|5.006000||p 887 WARN_ASSERTIONS|5.009005||p 888 WARN_BAREWORD|5.006000||p 889 WARN_CLOSED|5.006000||p 890 WARN_CLOSURE|5.006000||p 891 WARN_DEBUGGING|5.006000||p 892 WARN_DEPRECATED|5.006000||p 893 WARN_DIGIT|5.006000||p 894 WARN_EXEC|5.006000||p 895 WARN_EXITING|5.006000||p 896 WARN_GLOB|5.006000||p 897 WARN_INPLACE|5.006000||p 898 WARN_INTERNAL|5.006000||p 899 WARN_IO|5.006000||p 900 WARN_LAYER|5.008000||p 901 WARN_MALLOC|5.006000||p 902 WARN_MISC|5.006000||p 903 WARN_NEWLINE|5.006000||p 904 WARN_NUMERIC|5.006000||p 905 WARN_ONCE|5.006000||p 906 WARN_OVERFLOW|5.006000||p 907 WARN_PACK|5.006000||p 908 WARN_PARENTHESIS|5.006000||p 909 WARN_PIPE|5.006000||p 910 WARN_PORTABLE|5.006000||p 911 WARN_PRECEDENCE|5.006000||p 912 WARN_PRINTF|5.006000||p 913 WARN_PROTOTYPE|5.006000||p 914 WARN_QW|5.006000||p 915 WARN_RECURSION|5.006000||p 916 WARN_REDEFINE|5.006000||p 917 WARN_REGEXP|5.006000||p 918 WARN_RESERVED|5.006000||p 919 WARN_SEMICOLON|5.006000||p 920 WARN_SEVERE|5.006000||p 921 WARN_SIGNAL|5.006000||p 922 WARN_SUBSTR|5.006000||p 923 WARN_SYNTAX|5.006000||p 924 WARN_TAINT|5.006000||p 925 WARN_THREADS|5.008000||p 926 WARN_UNINITIALIZED|5.006000||p 927 WARN_UNOPENED|5.006000||p 928 WARN_UNPACK|5.006000||p 929 WARN_UNTIE|5.006000||p 930 WARN_UTF8|5.006000||p 931 WARN_VOID|5.006000||p 932 XCPT_CATCH|5.009002||p 933 XCPT_RETHROW|5.009002||p 934 XCPT_TRY_END|5.009002||p 935 XCPT_TRY_START|5.009002||p 752 936 XPUSHi||| 753 937 XPUSHmortal|5.009002||p … … 764 948 XSRETURN_UV|5.008001||p 765 949 XSRETURN_YES||| 766 XSRETURN||| 950 XSRETURN|||p 767 951 XST_mIV||| 768 952 XST_mNO||| … … 774 958 XS_VERSION_BOOTCHECK||| 775 959 XS_VERSION||| 960 XSprePUSH|5.006000||p 776 961 XS||| 777 962 ZeroD|5.009002||p … … 781 966 aMY_CXT_|5.007003||p 782 967 aMY_CXT|5.007003||p 968 aTHXR_|5.009005||p 969 aTHXR|5.009005||p 783 970 aTHX_|5.006000||p 784 971 aTHX|5.006000||p 785 add_data||| 972 add_data|||n 973 addmad||| 786 974 allocmy||| 787 975 amagic_call||| 976 amagic_cmp_locale||| 977 amagic_cmp||| 978 amagic_i_ncmp||| 979 amagic_ncmp||| 788 980 any_dup||| 789 981 ao||| 790 982 append_elem||| 791 983 append_list||| 984 append_madprops||| 792 985 apply_attrs_my||| 793 986 apply_attrs_string||5.006001| 794 987 apply_attrs||| 795 988 apply||| 796 asIV|||797 asUV|||798 989 atfork_lock||5.007003|n 799 990 atfork_unlock||5.007003|n 991 av_arylen_p||5.009003| 800 992 av_clear||| 993 av_create_and_push||5.009005| 994 av_create_and_unshift_one||5.009005| 801 995 av_delete||5.006000| 802 996 av_exists||5.006000| … … 823 1017 boot_core_PerlIO||| 824 1018 boot_core_UNIVERSAL||| 1019 boot_core_mro||| 825 1020 boot_core_xsutils||| 826 1021 bytes_from_utf8||5.007001| 1022 bytes_to_uni|||n 827 1023 bytes_to_utf8||5.006001| 828 cache_re|||829 1024 call_argv|5.006000||p 830 1025 call_atexit||5.006000| 831 call_body|||832 call_list_body|||833 1026 call_list||5.004000| 834 1027 call_method|5.006000||p … … 841 1034 cast_ulong||5.006000| 842 1035 cast_uv||5.006000| 1036 check_type_and_open||| 843 1037 check_uni||| 844 1038 checkcomma||| 845 1039 checkposixcc||| 846 cl_and||| 847 cl_anything||| 848 cl_init_zero||| 849 cl_init||| 850 cl_is_anything||| 851 cl_or||| 1040 ckWARN|5.006000||p 1041 ck_anoncode||| 1042 ck_bitop||| 1043 ck_concat||| 1044 ck_defined||| 1045 ck_delete||| 1046 ck_die||| 1047 ck_eof||| 1048 ck_eval||| 1049 ck_exec||| 1050 ck_exists||| 1051 ck_exit||| 1052 ck_ftst||| 1053 ck_fun||| 1054 ck_glob||| 1055 ck_grep||| 1056 ck_index||| 1057 ck_join||| 1058 ck_lengthconst||| 1059 ck_lfun||| 1060 ck_listiob||| 1061 ck_match||| 1062 ck_method||| 1063 ck_null||| 1064 ck_open||| 1065 ck_readline||| 1066 ck_repeat||| 1067 ck_require||| 1068 ck_retarget||| 1069 ck_return||| 1070 ck_rfun||| 1071 ck_rvconst||| 1072 ck_sassign||| 1073 ck_select||| 1074 ck_shift||| 1075 ck_sort||| 1076 ck_spair||| 1077 ck_split||| 1078 ck_subr||| 1079 ck_substr||| 1080 ck_svconst||| 1081 ck_trunc||| 1082 ck_unpack||| 1083 ckwarn_d||5.009003| 1084 ckwarn||5.009003| 1085 cl_and|||n 1086 cl_anything|||n 1087 cl_init_zero|||n 1088 cl_init|||n 1089 cl_is_anything|||n 1090 cl_or|||n 1091 clear_placeholders||| 852 1092 closest_cop||| 853 1093 convert||| 854 1094 cop_free||| 855 1095 cr_textfilter||| 1096 create_eval_scope||| 856 1097 croak_nocontext|||vn 857 1098 croak|||v 858 csighandler||5.007001|n 1099 csighandler||5.009003|n 1100 curmad||| 859 1101 custom_op_desc||5.007003| 860 1102 custom_op_name||5.007003| 1103 cv_ckproto_len||| 861 1104 cv_ckproto||| 862 1105 cv_clone||| … … 867 1110 cx_dup||| 868 1111 cxinc||| 1112 dAXMARK|5.009003||p 869 1113 dAX|5.007002||p 870 1114 dITEMS|5.007002||p 871 1115 dMARK||| 1116 dMULTICALL||5.009003| 872 1117 dMY_CXT_SV|5.007003||p 873 1118 dMY_CXT|5.007003||p … … 876 1121 dSP||| 877 1122 dTHR|5.004050||p 1123 dTHXR|5.009005||p 878 1124 dTHXa|5.006000||p 879 1125 dTHXoa|5.006000||p 880 1126 dTHX|5.006000||p 881 1127 dUNDERBAR|5.009002||p 1128 dVAR|5.009003||p 1129 dXCPT|5.009002||p 882 1130 dXSARGS||| 883 1131 dXSI32||| 1132 dXSTARG|5.006000||p 884 1133 deb_curcv||| 885 1134 deb_nocontext|||vn … … 891 1140 debstackptrs||5.007003| 892 1141 debstack||5.007003| 1142 debug_start_match||| 893 1143 deb||5.007003|v 894 default_protect|||v895 del_he|||896 1144 del_sv||| 897 del_xiv||| 898 del_xnv||| 899 del_xpvav||| 900 del_xpvbm||| 901 del_xpvcv||| 902 del_xpvhv||| 903 del_xpviv||| 904 del_xpvlv||| 905 del_xpvmg||| 906 del_xpvnv||| 907 del_xpv||| 908 del_xrv||| 1145 delete_eval_scope||| 909 1146 delimcpy||5.004000| 910 depcom|||911 1147 deprecate_old||| 912 1148 deprecate||| 913 1149 despatch_signals||5.007001| 1150 destroy_matcher||| 914 1151 die_nocontext|||vn 915 1152 die_where||| … … 942 1179 do_oddball||| 943 1180 do_op_dump||5.006000| 1181 do_op_xmldump||| 944 1182 do_open9||5.006000| 945 1183 do_openn||5.007001| … … 947 1185 do_pipe||| 948 1186 do_pmop_dump||5.006000| 1187 do_pmop_xmldump||| 949 1188 do_print||| 950 1189 do_readline||| … … 952 1191 do_semop||| 953 1192 do_shmio||| 1193 do_smartmatch||| 954 1194 do_spawn_nowait||| 955 1195 do_spawn||| … … 970 1210 docatch_body||| 971 1211 docatch||| 972 doencodes|||973 1212 doeval||| 974 1213 dofile||| … … 980 1219 doparseform||| 981 1220 dopoptoeval||| 1221 dopoptogiven||| 982 1222 dopoptolabel||| 983 1223 dopoptoloop||| 984 1224 dopoptosub_at||| 985 1225 dopoptosub||| 1226 dopoptowhen||| 1227 doref||5.009003| 986 1228 dounwind||| 987 1229 dowantarray||| 988 1230 dump_all||5.006000| 989 1231 dump_eval||5.006000| 1232 dump_exec_pos||| 990 1233 dump_fds||| 991 1234 dump_form||5.006000| … … 994 1237 dump_packsubs||5.006000| 995 1238 dump_sub||5.006000| 1239 dump_sv_child||| 1240 dump_trie_interim_list||| 1241 dump_trie_interim_table||| 1242 dump_trie||| 996 1243 dump_vindent||5.006000| 997 1244 dumpuntil||| 998 1245 dup_attrlist||| 1246 emulate_cop_io||| 999 1247 emulate_eaccess||| 1000 1248 eval_pv|5.006000||p 1001 1249 eval_sv|5.006000||p 1250 exec_failed||| 1002 1251 expect_number||| 1003 1252 fbm_compile||5.005000| 1004 1253 fbm_instr||5.005000| 1005 1254 fd_on_nosuid_fs||| 1255 feature_is_enabled||| 1006 1256 filter_add||| 1007 1257 filter_del||| 1008 1258 filter_gets||| 1009 1259 filter_read||| 1260 find_and_forget_pmops||| 1261 find_array_subscript||| 1010 1262 find_beginning||| 1011 1263 find_byclass||| 1264 find_hash_subscript||| 1012 1265 find_in_my_stash||| 1013 find_runcv|| |1266 find_runcv||5.008001| 1014 1267 find_rundefsvoffset||5.009002| 1015 1268 find_script||| 1016 1269 find_uninit_var||| 1270 first_symbol|||n 1017 1271 fold_constants||| 1018 1272 forbid_setid||| … … 1022 1276 force_version||| 1023 1277 force_word||| 1278 forget_pmop||| 1024 1279 form_nocontext|||vn 1025 1280 form||5.004000|v 1026 1281 fp_dup||| 1027 1282 fprintf_nocontext|||vn 1283 free_global_struct||| 1028 1284 free_tied_hv_pool||| 1029 1285 free_tmps||| 1030 1286 gen_constant_list||| 1287 get_arena||| 1031 1288 get_av|5.006000||p 1032 1289 get_context||5.006000|n 1290 get_cvn_flags||5.009005| 1033 1291 get_cv|5.006000||p 1034 1292 get_db_sub||| … … 1043 1301 get_opargs||| 1044 1302 get_ppaddr||5.006000| 1303 get_re_arg||| 1045 1304 get_sv|5.006000||p 1046 1305 get_vtbl||5.005030| 1047 1306 getcwd_sv||5.007002| 1048 1307 getenv_len||| 1308 glob_2number||| 1309 glob_2pv||| 1310 glob_assign_glob||| 1311 glob_assign_ref||| 1049 1312 gp_dup||| 1050 1313 gp_free||| … … 1059 1322 gv_HVadd||| 1060 1323 gv_IOadd||| 1324 gv_SVadd||| 1061 1325 gv_autoload4||5.004000| 1062 1326 gv_check||| 1327 gv_const_sv||5.009003| 1063 1328 gv_dump||5.006000| 1064 1329 gv_efullname3||5.004000| … … 1066 1331 gv_efullname||| 1067 1332 gv_ename||| 1333 gv_fetchfile_flags||5.009005| 1068 1334 gv_fetchfile||| 1069 1335 gv_fetchmeth_autoload||5.007003| … … 1071 1337 gv_fetchmethod||| 1072 1338 gv_fetchmeth||| 1339 gv_fetchpvn_flags||5.009002| 1073 1340 gv_fetchpv||| 1341 gv_fetchsv||5.009002| 1074 1342 gv_fullname3||5.004000| 1075 1343 gv_fullname4||5.006001| … … 1078 1346 gv_init_sv||| 1079 1347 gv_init||| 1080 gv_share||| 1081 gv_stashpvn|5.006000||p 1348 gv_name_set||5.009004| 1349 gv_stashpvn|5.004000||p 1350 gv_stashpvs||5.009003| 1082 1351 gv_stashpv||| 1083 1352 gv_stashsv||| 1084 1353 he_dup||| 1354 hek_dup||| 1085 1355 hfreeentries||| 1086 1356 hsplit||| 1087 hv_assert||5.009001| 1357 hv_assert||5.009005| 1358 hv_auxinit|||n 1359 hv_backreferences_p||| 1088 1360 hv_clear_placeholders||5.009001| 1089 1361 hv_clear||| 1362 hv_copy_hints_hv||| 1090 1363 hv_delayfree_ent||5.004000| 1091 1364 hv_delete_common||| 1092 1365 hv_delete_ent||5.004000| 1093 1366 hv_delete||| 1367 hv_eiter_p||5.009003| 1368 hv_eiter_set||5.009003| 1094 1369 hv_exists_ent||5.004000| 1095 1370 hv_exists||| 1096 1371 hv_fetch_common||| 1097 1372 hv_fetch_ent||5.004000| 1373 hv_fetchs|5.009003||p 1098 1374 hv_fetch||| 1099 1375 hv_free_ent||5.004000| … … 1105 1381 hv_iternext||| 1106 1382 hv_iterval||| 1383 hv_kill_backrefs||| 1107 1384 hv_ksplit||5.004000| 1108 hv_magic_check||| 1385 hv_magic_check|||n 1386 hv_magic_uvar_xkey||| 1109 1387 hv_magic||| 1388 hv_name_set||5.009003| 1110 1389 hv_notallowed||| 1390 hv_placeholders_get||5.009003| 1391 hv_placeholders_p||5.009003| 1392 hv_placeholders_set||5.009003| 1393 hv_riter_p||5.009003| 1394 hv_riter_set||5.009003| 1111 1395 hv_scalar||5.009001| 1112 1396 hv_store_ent||5.004000| 1113 1397 hv_store_flags||5.008000| 1398 hv_stores|5.009004||p 1114 1399 hv_store||| 1115 1400 hv_undef||| … … 1119 1404 incl_perldb||| 1120 1405 incline||| 1406 incpush_if_exists||| 1121 1407 incpush||| 1122 1408 ingroup||| 1123 1409 init_argv_symbols||| 1124 1410 init_debugger||| 1411 init_global_struct||| 1125 1412 init_i18nl10n||5.006000| 1126 1413 init_i18nl14n||5.006000| 1127 1414 init_ids||| 1128 1415 init_interp||| 1129 init_lexer|||1130 1416 init_main_stash||| 1131 1417 init_perllib||| … … 1147 1433 isUPPER||| 1148 1434 is_an_int||| 1435 is_gv_magical_sv||| 1149 1436 is_gv_magical||| 1150 is_handle_constructor||| 1437 is_handle_constructor|||n 1438 is_list_assignment||| 1151 1439 is_lvalue_sub||5.007001| 1152 1440 is_uni_alnum_lc||5.006000| … … 1182 1470 is_utf8_alpha||5.006000| 1183 1471 is_utf8_ascii||5.006000| 1472 is_utf8_char_slow|||n 1184 1473 is_utf8_char||5.006000| 1185 1474 is_utf8_cntrl||5.006000| 1475 is_utf8_common||| 1186 1476 is_utf8_digit||5.006000| 1187 1477 is_utf8_graph||5.006000| … … 1193 1483 is_utf8_punct||5.006000| 1194 1484 is_utf8_space||5.006000| 1485 is_utf8_string_loclen||5.009003| 1195 1486 is_utf8_string_loc||5.008001| 1196 1487 is_utf8_string||5.006001| … … 1201 1492 ix|||n 1202 1493 jmaybe||| 1494 join_exact||| 1203 1495 keyword||| 1204 1496 leave_scope||| … … 1206 1498 lex_start||| 1207 1499 linklist||| 1208 list_assignment|||1209 1500 listkids||| 1210 1501 list||| 1211 1502 load_module_nocontext|||vn 1212 load_module| |5.006000|v1503 load_module|5.006000||pv 1213 1504 localize||| 1505 looks_like_bool||| 1214 1506 looks_like_number||| 1215 1507 lop||| … … 1222 1514 mXPUSHp|5.009002||p 1223 1515 mXPUSHu|5.009002||p 1516 mad_free||| 1517 madlex||| 1518 madparse||| 1224 1519 magic_clear_all_env||| 1225 1520 magic_clearenv||| 1521 magic_clearhint||| 1226 1522 magic_clearpack||| 1227 1523 magic_clearsig||| 1228 1524 magic_dump||5.006000| 1229 1525 magic_existspack||| 1526 magic_freearylen_p||| 1230 1527 magic_freeovrld||| 1231 1528 magic_freeregexp||| 1232 1529 magic_getarylen||| 1233 1530 magic_getdefelem||| 1234 magic_getglob|||1235 1531 magic_getnkeys||| 1236 1532 magic_getpack||| … … 1261 1557 magic_setfm||| 1262 1558 magic_setglob||| 1559 magic_sethint||| 1263 1560 magic_setisa||| 1264 1561 magic_setmglob||| … … 1277 1574 magic_wipepack||| 1278 1575 magicname||| 1576 make_matcher||| 1577 make_trie_failtable||| 1578 make_trie||| 1279 1579 malloced_size|||n 1280 1580 malloc||5.007002|n 1281 1581 markstack_grow||| 1582 matcher_matches_sv||| 1282 1583 measure_struct||| 1283 1584 memEQ|5.004000||p … … 1296 1597 mg_get||| 1297 1598 mg_length||5.005000| 1599 mg_localize||| 1298 1600 mg_magical||| 1299 1601 mg_set||| … … 1304 1606 modkids||| 1305 1607 mod||| 1306 more_ he|||1608 more_bodies||| 1307 1609 more_sv||| 1308 more_xiv|||1309 more_xnv|||1310 more_xpvav|||1311 more_xpvbm|||1312 more_xpvcv|||1313 more_xpvhv|||1314 more_xpviv|||1315 more_xpvlv|||1316 more_xpvmg|||1317 more_xpvnv|||1318 more_xpv|||1319 more_xrv|||1320 1610 moreswitches||| 1611 mro_get_linear_isa_c3||5.009005| 1612 mro_get_linear_isa_dfs||5.009005| 1613 mro_get_linear_isa||5.009005| 1614 mro_isa_changed_in||| 1615 mro_meta_dup||| 1616 mro_meta_init||| 1617 mro_method_changed_in||5.009005| 1321 1618 mul128||| 1322 1619 mulexp10|||n … … 1333 1630 my_bzero|||n 1334 1631 my_chsize||| 1632 my_clearenv||| 1633 my_cxt_index||| 1634 my_cxt_init||| 1635 my_dirfd||5.009005| 1335 1636 my_exit_jump||| 1336 1637 my_exit||| … … 1366 1667 my_popen||5.004000| 1367 1668 my_setenv||| 1669 my_snprintf|5.009004||pvn 1368 1670 my_socketpair||5.007003|n 1671 my_sprintf||5.009003|vn 1369 1672 my_stat||| 1370 1673 my_strftime||5.007002| 1674 my_strlcat|5.009004||pn 1675 my_strlcpy|5.009004||pn 1371 1676 my_swabn|||n 1372 1677 my_swap||| 1373 1678 my_unexec||| 1679 my_vsnprintf||5.009004|n 1374 1680 my||| 1681 need_utf8|||n 1375 1682 newANONATTRSUB||5.006000| 1376 1683 newANONHASH||| … … 1383 1690 newBINOP||| 1384 1691 newCONDOP||| 1385 newCONSTSUB|5.00 6000||p1692 newCONSTSUB|5.004050||p 1386 1693 newCVREF||| 1387 1694 newDEFSVOP||| 1388 1695 newFORM||| 1389 1696 newFOROP||| 1697 newGIVENOP||5.009003| 1698 newGIVWHENOP||| 1699 newGP||| 1390 1700 newGVOP||| 1391 1701 newGVREF||| … … 1399 1709 newLOOPEX||| 1400 1710 newLOOPOP||| 1401 newMYSUB||5.006000| 1711 newMADPROP||| 1712 newMADsv||| 1713 newMYSUB||| 1402 1714 newNULLLIST||| 1403 1715 newOP||| 1404 newPADOP|| 5.006000|1716 newPADOP||| 1405 1717 newPMOP||| 1406 1718 newPROG||| … … 1408 1720 newRANGE||| 1409 1721 newRV_inc|5.004000||p 1410 newRV_noinc|5.00 6000||p1722 newRV_noinc|5.004000||p 1411 1723 newRV||| 1412 1724 newSLICEOP||| … … 1415 1727 newSVOP||| 1416 1728 newSVREF||| 1729 newSV_type||5.009005| 1730 newSVhek||5.009003| 1417 1731 newSViv||| 1418 1732 newSVnv||| 1419 1733 newSVpvf_nocontext|||vn 1420 1734 newSVpvf||5.004000|v 1421 newSVpvn_share||5.007001| 1422 newSVpvn|5.006000||p 1735 newSVpvn_share|5.007001||p 1736 newSVpvn|5.004050||p 1737 newSVpvs_share||5.009003| 1738 newSVpvs|5.009003||p 1423 1739 newSVpv||| 1424 1740 newSVrv||| … … 1426 1742 newSVuv|5.006000||p 1427 1743 newSV||| 1744 newTOKEN||| 1428 1745 newUNOP||| 1429 newWHILEOP||5.004040| 1746 newWHENOP||5.009003| 1747 newWHILEOP||5.009003| 1748 newXS_flags||5.009004| 1430 1749 newXSproto||5.006000| 1431 1750 newXS||5.006000| … … 1438 1757 new_stackinfo||5.005000| 1439 1758 new_version||5.009000| 1440 new_xiv||| 1441 new_xnv||| 1442 new_xpvav||| 1443 new_xpvbm||| 1444 new_xpvcv||| 1445 new_xpvhv||| 1446 new_xpviv||| 1447 new_xpvlv||| 1448 new_xpvmg||| 1449 new_xpvnv||| 1450 new_xpv||| 1451 new_xrv||| 1759 new_warnings_bitfield||| 1452 1760 next_symbol||| 1453 1761 nextargv||| … … 1461 1769 nuke_stacks||| 1462 1770 num_overflow|||n 1771 offer_nice_chunk||| 1463 1772 oopsAV||| 1464 1773 oopsCV||| … … 1468 1777 op_dump||5.006000| 1469 1778 op_free||| 1779 op_getmad_weak||| 1780 op_getmad||| 1470 1781 op_null||5.007002| 1782 op_refcnt_dec||| 1783 op_refcnt_inc||| 1784 op_refcnt_lock||5.009002| 1785 op_refcnt_unlock||5.009002| 1786 op_xmldump||| 1471 1787 open_script||| 1472 1788 pMY_CXT_|5.007003||p … … 1474 1790 pTHX_|5.006000||p 1475 1791 pTHX|5.006000||p 1792 packWARN|5.007003||p 1476 1793 pack_cat||5.007003| 1477 1794 pack_rec||| … … 1483 1800 pad_block_start||| 1484 1801 pad_check_dup||| 1802 pad_compname_type||| 1485 1803 pad_findlex||| 1486 1804 pad_findmy||| … … 1489 1807 pad_leavemy||| 1490 1808 pad_new||| 1809 pad_peg|||n 1491 1810 pad_push||| 1492 1811 pad_reset||| 1493 1812 pad_setsv||| 1494 pad_sv|| |1813 pad_sv||5.009005| 1495 1814 pad_swipe||| 1496 1815 pad_tidy||| … … 1498 1817 parse_body||| 1499 1818 parse_unicode_opts||| 1500 path_is_absolute||| 1819 parser_dup||| 1820 parser_free||| 1821 path_is_absolute|||n 1501 1822 peep||| 1502 pending_ ident|||1823 pending_Slabs_to_ro||| 1503 1824 perl_alloc_using|||n 1504 1825 perl_alloc|||n … … 1511 1832 perl_run|||n 1512 1833 pidgone||| 1834 pm_description||| 1513 1835 pmflag||| 1514 1836 pmop_dump||5.006000| 1837 pmop_xmldump||| 1515 1838 pmruntime||| 1516 1839 pmtrans||| 1517 1840 pop_scope||| 1518 pregcomp|| |1841 pregcomp||5.009005| 1519 1842 pregexec||| 1520 1843 pregfree||| 1521 1844 prepend_elem||| 1845 prepend_madprops||| 1846 printbuf||| 1522 1847 printf_nocontext|||vn 1523 ptr_table_clear||| 1524 ptr_table_fetch||| 1525 ptr_table_free||| 1526 ptr_table_new||| 1527 ptr_table_split||| 1528 ptr_table_store||| 1848 process_special_blocks||| 1849 ptr_table_clear||5.009005| 1850 ptr_table_fetch||5.009005| 1851 ptr_table_find|||n 1852 ptr_table_free||5.009005| 1853 ptr_table_new||5.009005| 1854 ptr_table_split||5.009005| 1855 ptr_table_store||5.009005| 1529 1856 push_scope||| 1530 1857 put_byte||| 1531 1858 pv_display||5.006000| 1859 pv_escape||5.009004| 1860 pv_pretty||5.009004| 1532 1861 pv_uni_display||5.007003| 1533 1862 qerror||| 1863 qsortsvu||| 1864 re_compile||5.009005| 1534 1865 re_croak2||| 1535 1866 re_dup||| 1536 re_intuit_start||5.00 6000|1867 re_intuit_start||5.009005| 1537 1868 re_intuit_string||5.006000| 1869 readpipe_override||| 1538 1870 realloc||5.007002|n 1539 1871 reentrant_free||| … … 1541 1873 reentrant_retry|||vn 1542 1874 reentrant_size||| 1875 ref_array_or_hash||| 1876 refcounted_he_chain_2hv||| 1877 refcounted_he_fetch||| 1878 refcounted_he_free||| 1879 refcounted_he_new||| 1880 refcounted_he_value||| 1543 1881 refkids||| 1544 1882 refto||| 1545 ref||| 1883 ref||5.009003| 1884 reg_check_named_buff_matched||| 1885 reg_named_buff_all||5.009005| 1886 reg_named_buff_exists||5.009005| 1887 reg_named_buff_fetch||5.009005| 1888 reg_named_buff_firstkey||5.009005| 1889 reg_named_buff_iter||| 1890 reg_named_buff_nextkey||5.009005| 1891 reg_named_buff_scalar||5.009005| 1892 reg_named_buff||| 1893 reg_namedseq||| 1546 1894 reg_node||| 1895 reg_numbered_buff_fetch||| 1896 reg_numbered_buff_length||| 1897 reg_numbered_buff_store||| 1898 reg_qr_package||| 1899 reg_recode||| 1900 reg_scan_name||| 1901 reg_skipcomment||| 1902 reg_stringify||5.009005| 1903 reg_temp_copy||| 1547 1904 reganode||| 1548 1905 regatom||| 1549 1906 regbranch||| 1550 regclass_swash||5.00 7003|1907 regclass_swash||5.009004| 1551 1908 regclass||| 1552 regcp_set_to|||1553 1909 regcppop||| 1554 1910 regcppush||| 1555 regcurly||| 1911 regcurly|||n 1912 regdump_extflags||| 1556 1913 regdump||5.005000| 1914 regdupe_internal||| 1557 1915 regexec_flags||5.005000| 1558 reg hop3|||1559 reghop maybe3|||1560 reghop maybe|||1561 reghop |||1916 regfree_internal||5.009005| 1917 reghop3|||n 1918 reghop4|||n 1919 reghopmaybe3|||n 1562 1920 reginclass||| 1563 1921 reginitcolors||5.006000| … … 1565 1923 regmatch||| 1566 1924 regnext||5.005000| 1567 regoptail|||1568 1925 regpiece||| 1569 1926 regpposixcc||| 1570 1927 regprop||| 1571 regrepeat_hard|||1572 1928 regrepeat||| 1929 regtail_study||| 1573 1930 regtail||| 1574 1931 regtry||| 1575 1932 reguni||| 1576 regwhite||| 1933 regwhite|||n 1577 1934 reg||| 1578 1935 repeatcpy||| 1579 1936 report_evil_fh||| 1580 1937 report_uninit||| 1581 require_errno|||1582 1938 require_pv||5.006000| 1939 require_tie_mod||| 1940 restore_magic||| 1583 1941 rninstr||| 1584 1942 rsignal_restore||| … … 1587 1945 rsignal||5.004000| 1588 1946 run_body||| 1947 run_user_filter||| 1589 1948 runops_debug||5.005000| 1590 1949 runops_standard||5.005000| 1950 rvpv_dup||| 1591 1951 rxres_free||| 1592 1952 rxres_restore||| … … 1616 1976 save_gp||5.004000| 1617 1977 save_hash||| 1618 save_hek_flags||| 1978 save_hek_flags|||n 1619 1979 save_helem||5.004050| 1620 1980 save_hints||5.005000| … … 1639 1999 save_sptr||| 1640 2000 save_svref||| 1641 save_threadsv||5.005000|1642 2001 save_vptr||5.006000| 1643 2002 savepvn||| 2003 savepvs||5.009003| 1644 2004 savepv||| 2005 savesharedpvn||5.009005| 1645 2006 savesharedpv||5.007003| 1646 2007 savestack_grow_cnt||5.008001| 1647 2008 savestack_grow||| 2009 savesvpv||5.009002| 1648 2010 sawparens||| 1649 scalar_mod_type||| 2011 scalar_mod_type|||n 1650 2012 scalarboolean||| 1651 2013 scalarkids||| … … 1668 2030 scan_trans||| 1669 2031 scan_version||5.009001| 1670 scan_vstring||5.00 8001|2032 scan_vstring||5.009005| 1671 2033 scan_word||| 1672 2034 scope||| 1673 2035 screaminstr||5.005000| 1674 seed||| 2036 seed||5.008001| 2037 sequence_num||| 2038 sequence_tail||| 2039 sequence||| 1675 2040 set_context||5.006000|n 1676 2041 set_csh||| … … 1681 2046 setenv_getix||| 1682 2047 share_hek_flags||| 1683 share_hek|| |2048 share_hek||5.004000| 1684 2049 si_dup||| 1685 2050 sighandler|||n 1686 2051 simplify_sort||| 2052 skipspace0||| 2053 skipspace1||| 2054 skipspace2||| 1687 2055 skipspace||| 2056 softref2xv||| 2057 sortcv_stacked||| 2058 sortcv_xsub||| 2059 sortcv||| 2060 sortsv_flags||5.009003| 1688 2061 sortsv||5.007003| 2062 space_join_names_mortal||| 1689 2063 ss_dup||| 1690 2064 stack_grow||| 2065 start_force||| 1691 2066 start_glob||| 1692 2067 start_subparse||5.004000| 2068 stashpv_hvname_match||5.009005| 1693 2069 stdize_locale||| 1694 2070 strEQ||| … … 1699 2075 strNE||| 1700 2076 str_to_version||5.006000| 2077 strip_return||| 1701 2078 strnEQ||| 1702 2079 strnNE||| … … 1709 2086 sv_2cv||| 1710 2087 sv_2io||| 2088 sv_2iuv_common||| 1711 2089 sv_2iuv_non_preserve||| 1712 2090 sv_2iv_flags||5.009001| … … 1714 2092 sv_2mortal||| 1715 2093 sv_2nv||| 1716 sv_2pv_flags| |5.007002|2094 sv_2pv_flags|5.007002||p 1717 2095 sv_2pv_nolen|5.006000||p 1718 sv_2pvbyte_nolen| ||2096 sv_2pvbyte_nolen|5.006000||p 1719 2097 sv_2pvbyte|5.006000||p 1720 2098 sv_2pvutf8_nolen||5.006000| … … 1728 2106 sv_bless||| 1729 2107 sv_cat_decode||5.008001| 1730 sv_catpv_mg|5.00 6000||p2108 sv_catpv_mg|5.004050||p 1731 2109 sv_catpvf_mg_nocontext|||pvn 1732 2110 sv_catpvf_mg|5.006000|5.004000|pv … … 1734 2112 sv_catpvf||5.004000|v 1735 2113 sv_catpvn_flags||5.007002| 1736 sv_catpvn_mg|5.00 6000||p2114 sv_catpvn_mg|5.004050||p 1737 2115 sv_catpvn_nomg|5.007002||p 1738 2116 sv_catpvn||| 2117 sv_catpvs|5.009003||p 1739 2118 sv_catpv||| 1740 2119 sv_catsv_flags||5.007002| 1741 sv_catsv_mg|5.00 6000||p2120 sv_catsv_mg|5.004050||p 1742 2121 sv_catsv_nomg|5.007002||p 1743 2122 sv_catsv||| 2123 sv_catxmlpvn||| 2124 sv_catxmlsv||| 1744 2125 sv_chop||| 1745 2126 sv_clean_all||| … … 1754 2135 sv_del_backref||| 1755 2136 sv_derived_from||5.004000| 2137 sv_does||5.009004| 1756 2138 sv_dump||| 1757 2139 sv_dup||| 1758 2140 sv_eq||| 2141 sv_exp_grow||| 1759 2142 sv_force_normal_flags||5.007001| 1760 2143 sv_force_normal||5.006000| … … 1764 2147 sv_gets||5.004000| 1765 2148 sv_grow||| 2149 sv_i_ncmp||| 1766 2150 sv_inc||| 1767 2151 sv_insert||| … … 1769 2153 sv_isobject||| 1770 2154 sv_iv||5.005000| 2155 sv_kill_backrefs||| 1771 2156 sv_len_utf8||5.006000| 1772 2157 sv_len||| 2158 sv_magic_portable|5.009005|5.004000|p 1773 2159 sv_magicext||5.007003| 1774 2160 sv_magic||| 1775 2161 sv_mortalcopy||| 2162 sv_ncmp||| 1776 2163 sv_newmortal||| 1777 2164 sv_newref||| 1778 2165 sv_nolocking||5.007003| 1779 2166 sv_nosharing||5.007003| 1780 sv_nounlocking|| 5.007003|2167 sv_nounlocking||| 1781 2168 sv_nv||5.005000| 1782 2169 sv_peek||5.005000| 2170 sv_pos_b2u_midway||| 1783 2171 sv_pos_b2u||5.006000| 2172 sv_pos_u2b_cached||| 2173 sv_pos_u2b_forwards|||n 2174 sv_pos_u2b_midway|||n 1784 2175 sv_pos_u2b||5.006000| 1785 2176 sv_pvbyten_force||5.006000| 1786 2177 sv_pvbyten||5.006000| 1787 2178 sv_pvbyte||5.006000| 1788 sv_pvn_force_flags| |5.007002|1789 sv_pvn_force||| p2179 sv_pvn_force_flags|5.007002||p 2180 sv_pvn_force||| 1790 2181 sv_pvn_nomg|5.007003||p 1791 sv_pvn| 5.006000||p2182 sv_pvn||| 1792 2183 sv_pvutf8n_force||5.006000| 1793 2184 sv_pvutf8n||5.006000| … … 1797 2188 sv_reftype||| 1798 2189 sv_release_COW||| 1799 sv_release_IVX|||1800 2190 sv_replace||| 1801 2191 sv_report_used||| 1802 2192 sv_reset||| 1803 2193 sv_rvweaken||5.006000| 1804 sv_setiv_mg|5.00 6000||p2194 sv_setiv_mg|5.004050||p 1805 2195 sv_setiv||| 1806 2196 sv_setnv_mg|5.006000||p 1807 2197 sv_setnv||| 1808 sv_setpv_mg|5.00 6000||p2198 sv_setpv_mg|5.004050||p 1809 2199 sv_setpvf_mg_nocontext|||pvn 1810 2200 sv_setpvf_mg|5.006000|5.004000|pv … … 1813 2203 sv_setpviv_mg||5.008001| 1814 2204 sv_setpviv||5.008001| 1815 sv_setpvn_mg|5.00 6000||p2205 sv_setpvn_mg|5.004050||p 1816 2206 sv_setpvn||| 2207 sv_setpvs|5.009004||p 1817 2208 sv_setpv||| 1818 2209 sv_setref_iv||| … … 1823 2214 sv_setsv_cow||| 1824 2215 sv_setsv_flags||5.007002| 1825 sv_setsv_mg|5.00 6000||p2216 sv_setsv_mg|5.004050||p 1826 2217 sv_setsv_nomg|5.007002||p 1827 2218 sv_setsv||| 1828 sv_setuv_mg|5.00 6000||p1829 sv_setuv|5.00 6000||p2219 sv_setuv_mg|5.004050||p 2220 sv_setuv|5.004000||p 1830 2221 sv_tainted||5.004000| 1831 2222 sv_taint||5.004000| … … 1838 2229 sv_untaint||5.004000| 1839 2230 sv_upgrade||| 1840 sv_usepvn_mg|5.006000||p 2231 sv_usepvn_flags||5.009004| 2232 sv_usepvn_mg|5.004050||p 1841 2233 sv_usepvn||| 1842 2234 sv_utf8_decode||5.006000| … … 1845 2237 sv_utf8_upgrade_flags||5.007002| 1846 2238 sv_utf8_upgrade||5.007001| 1847 sv_uv|5.00 6000||p2239 sv_uv|5.005000||p 1848 2240 sv_vcatpvf_mg|5.006000|5.004000|p 1849 2241 sv_vcatpvfn||5.004000| … … 1852 2244 sv_vsetpvfn||5.004000| 1853 2245 sv_vsetpvf|5.006000|5.004000|p 2246 sv_xmlpeek||| 1854 2247 svtype||| 1855 2248 swallow_bom||| 2249 swap_match_buff||| 1856 2250 swash_fetch||5.007002| 2251 swash_get||| 1857 2252 swash_init||5.006000| 1858 2253 sys_intern_clear||| … … 1878 2273 to_utf8_title||5.007003| 1879 2274 to_utf8_upper||5.007003| 2275 token_free||| 2276 token_getmad||| 2277 tokenize_use||| 1880 2278 tokeq||| 1881 2279 tokereport||| 1882 2280 too_few_arguments||| 1883 2281 too_many_arguments||| 2282 uiv_2buf|||n 1884 2283 unlnk||| 1885 2284 unpack_rec||| … … 1889 2288 unshare_hek||| 1890 2289 unsharepvn||5.004000| 1891 upg_version||5.009000| 2290 unwind_handler_stack||| 2291 update_debugger_info||| 2292 upg_version||5.009005| 1892 2293 usage||| 1893 utf16_textfilter|||1894 2294 utf16_to_utf8_reversed||5.006001| 1895 2295 utf16_to_utf8||5.006001| 1896 utf16rev_textfilter|||1897 2296 utf8_distance||5.006000| 1898 2297 utf8_hop||5.006000| 1899 2298 utf8_length||5.007001| 1900 utf8_mg_pos_init||| 1901 utf8_mg_pos||| 2299 utf8_mg_pos_cache_update||| 1902 2300 utf8_to_bytes||5.006001| 1903 2301 utf8_to_uvchr||5.007001| 1904 2302 utf8_to_uvuni||5.007001| 1905 utf8n_to_uvchr|| 5.007001|2303 utf8n_to_uvchr||| 1906 2304 utf8n_to_uvuni||5.007001| 1907 2305 utilize||| 1908 2306 uvchr_to_utf8_flags||5.007003| 1909 uvchr_to_utf8|| 5.007001|2307 uvchr_to_utf8||| 1910 2308 uvuni_to_utf8_flags||5.007003| 1911 2309 uvuni_to_utf8||5.007001| 1912 2310 validate_suid||| 1913 vcall_body||| 1914 vcall_list_body||| 2311 varname||| 1915 2312 vcmp||5.009000| 1916 2313 vcroak||5.006000| 1917 2314 vdeb||5.007003| 1918 vdefault_protect||| 2315 vdie_common||| 2316 vdie_croak_common||| 1919 2317 vdie||| 1920 vdocatch_body|||1921 2318 vform||5.006000| 1922 2319 visit||| 1923 2320 vivify_defelem||| 1924 2321 vivify_ref||| 1925 vload_module| |5.006000|2322 vload_module|5.006000||p 1926 2323 vmess||5.006000| 1927 2324 vnewSVpvf|5.006000|5.004000|p 1928 2325 vnormal||5.009002| 1929 2326 vnumify||5.009000| 1930 vparse_body|||1931 vrun_body|||1932 2327 vstringify||5.009000| 2328 vverify||5.009003| 1933 2329 vwarner||5.006000| 1934 2330 vwarn||5.006000| … … 1936 2332 warn_nocontext|||vn 1937 2333 warner_nocontext|||vn 1938 warner| |5.006000|v2334 warner|5.006000|5.004000|pv 1939 2335 warn|||v 1940 2336 watch||| 1941 2337 whichsig||| 2338 write_no_mem||| 1942 2339 write_to_stderr||| 2340 xmldump_all||| 2341 xmldump_attr||| 2342 xmldump_eval||| 2343 xmldump_form||| 2344 xmldump_indent|||v 2345 xmldump_packsubs||| 2346 xmldump_sub||| 2347 xmldump_vindent||| 1943 2348 yyerror||| 1944 2349 yylex||| … … 1958 2363 # Scan for possible replacement candidates 1959 2364 1960 my(%replace, %need, %hints, % depends);2365 my(%replace, %need, %hints, %warnings, %depends); 1961 2366 my $replace = 0; 1962 my $hint = ''; 2367 my($hint, $define, $function); 2368 2369 sub 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 } 1963 2378 1964 2379 while (<DATA>) { 1965 2380 if ($hint) { 2381 my $h = $hint->[0] eq 'Hint' ? \%hints : \%warnings; 1966 2382 if (m{^\s*\*\s(.*?)\s*$}) { 1967 $hints{$hint} ||= ''; # suppress warning with older perls 1968 $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] .= $_; 1969 2397 } 1970 2398 else { 1971 $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; 1972 2404 } 1973 2405 } 1974 $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+)\)}; 1975 2423 1976 2424 $replace = $1 if m{^\s*$rccs\s+Replace:\s+(\d+)\s+$rcce\s*$}; … … 1984 2432 1985 2433 $need{$1} = 1 if m{^#if\s+defined\(NEED_(\w+)(?:_GLOBAL)?\)}; 2434 } 2435 2436 for (values %depends) { 2437 my %s; 2438 $_ = [sort grep !$s{$_}++, @$_]; 2439 } 2440 2441 if (exists $opt{'api-info'}) { 2442 my $f; 2443 my $count = 0; 2444 my $match = $opt{'api-info'} =~ m!^/(.*)/$! ? $1 : "^\Q$opt{'api-info'}\E\$"; 2445 for $f (sort { lc $a cmp lc $b } keys %API) { 2446 next unless $f =~ /$match/; 2447 print "\n=== $f ===\n\n"; 2448 my $info = 0; 2449 if ($API{$f}{base} || $API{$f}{todo}) { 2450 my $base = format_version($API{$f}{base} || $API{$f}{todo}); 2451 print "Supported at least starting from perl-$base.\n"; 2452 $info++; 2453 } 2454 if ($API{$f}{provided}) { 2455 my $todo = $API{$f}{todo} ? format_version($API{$f}{todo}) : "5.003"; 2456 print "Support by $ppport provided back to perl-$todo.\n"; 2457 print "Support needs to be explicitly requested by NEED_$f.\n" if exists $need{$f}; 2458 print "Depends on: ", join(', ', @{$depends{$f}}), ".\n" if exists $depends{$f}; 2459 print "\n$hints{$f}" if exists $hints{$f}; 2460 print "\nWARNING:\n$warnings{$f}" if exists $warnings{$f}; 2461 $info++; 2462 } 2463 print "No portability information available.\n" unless $info; 2464 $count++; 2465 } 2466 $count or print "Found no API matching '$opt{'api-info'}'."; 2467 print "\n"; 2468 exit 0; 1986 2469 } 1987 2470 … … 1994 2477 push @flags, 'depend' if exists $depends{$f}; 1995 2478 push @flags, 'hint' if exists $hints{$f}; 2479 push @flags, 'warning' if exists $warnings{$f}; 1996 2480 my $flags = @flags ? ' ['.join(', ', @flags).']' : ''; 1997 2481 print "$f$flags\n"; … … 2000 2484 } 2001 2485 2486 my @files; 2487 my @srcext = qw( .xs .c .h .cc .cpp -c.inc -xs.inc ); 2488 my $srcext = join '|', map { quotemeta $_ } @srcext; 2489 2490 if (@ARGV) { 2491 my %seen; 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 } 2505 } 2506 else { 2507 eval { 2508 require File::Find; 2509 File::Find::find(sub { 2510 $File::Find::name =~ /($srcext)$/i 2511 and push @files, $File::Find::name; 2512 }, '.'); 2513 }; 2514 if ($@) { 2515 @files = map { glob "*$_" } @srcext; 2516 } 2517 } 2518 2519 if (!@ARGV || $opt{filter}) { 2520 my(@in, @out); 2521 my %xsc = map { /(.*)\.xs$/ ? ("$1.c" => 1, "$1.cc" => 1) : () } @files; 2522 for (@files) { 2523 my $out = exists $xsc{$_} || /\b\Q$ppport\E$/i || !/($srcext)$/i; 2524 push @{ $out ? \@out : \@in }, $_; 2525 } 2526 if (@ARGV && @out) { 2527 warning("Skipping the following files (use --nofilter to avoid this):\n| ", join "\n| ", @out); 2528 } 2529 @files = @in; 2530 } 2531 2532 die "No input files given!\n" unless @files; 2533 2002 2534 my(%files, %global, %revreplace); 2003 2535 %revreplace = reverse %replace; … … 2018 2550 my %file = (orig => $c, changes => 0); 2019 2551 2020 # temporarily remove C comments from the code2552 # Temporarily remove C/XS comments and strings from the code 2021 2553 my @ccom; 2554 2022 2555 $c =~ s{ 2023 ( 2024 [^"'/]+ 2025 | 2026 (?:"[^"\\]*(?:\\.[^"\\]*)*" [^"'/]*)+ 2027 | 2028 (?:'[^'\\]*(?:\\.[^'\\]*)*' [^"'/]*)+ 2029 ) 2030 | 2031 (/ (?: 2032 \*[^*]*\*+(?:[^$ccs][^*]*\*+)* / 2033 | 2034 /[^\r\n]* 2035 )) 2036 }{ 2037 defined $2 and push @ccom, $2; 2038 defined $1 ? $1 : "$ccs$#ccom$cce"; 2039 }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; 2040 2564 2041 2565 $file{ccom} = \@ccom; 2042 2566 $file{code} = $c; 2043 $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; 2044 2568 2045 2569 my $func; … … 2052 2576 $file{uses_Perl}{$func}++ if $c =~ /\bPerl_$func\b/; 2053 2577 if (exists $API{$func}{provided}) { 2578 $file{uses_provided}{$func}++; 2054 2579 if (!exists $API{$func}{base} || $API{$func}{base} > $opt{'compat-version'}) { 2055 2580 $file{uses}{$func}++; … … 2062 2587 } 2063 2588 for ($func, @deps) { 2064 if (exists $need{$_}) { 2065 $file{needs}{$_} = 'static'; 2066 } 2589 $file{needs}{$_} = 'static' if exists $need{$_}; 2067 2590 } 2068 2591 } … … 2080 2603 $file{defined $3 ? 'needed_global' : 'needed_static'}{$2}++; 2081 2604 } 2082 else { 2083 warning("Possibly wrong #define $1 in $filename"); 2084 } 2605 else { warning("Possibly wrong #define $1 in $filename") } 2085 2606 } 2086 2607 … … 2119 2640 my $func; 2120 2641 my $c = $file{code}; 2642 my $warnings = 0; 2121 2643 2122 2644 for $func (sort keys %{$file{uses_Perl}}) { 2123 2645 if ($API{$func}{varargs}) { 2124 my $changes = ($c =~ s{\b(Perl_$func\s*\(\s*)(?!aTHX_?)(\)|[^\s)]*\))} 2125 { $1 . ($2 eq ')' ? 'aTHX' : 'aTHX_ ') . $2 }ge); 2126 if ($changes) { 2127 warning("Doesn't pass interpreter argument aTHX to Perl_$func"); 2128 $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 } 2129 2653 } 2130 2654 } … … 2141 2665 } 2142 2666 2143 for $func (sort keys %{$file{uses}}) { 2144 next unless $file{uses}{$func}; # if it's only a dependency 2145 if (exists $file{uses_deps}{$func}) { 2146 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 } 2147 2675 } 2148 elsif (exists $replace{$func}) { 2149 warning("Uses $func instead of $replace{$func}"); 2150 $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++; 2151 2684 } 2152 else {2153 diag("Uses $func");2154 }2155 hint($func);2156 }2157 2158 for $func (sort keys %{$file{uses_todo}}) {2159 warning("Uses $func, which may not be portable below perl ",2160 format_version($API{$func}{todo}));2161 2685 } 2162 2686 … … 2256 2780 warning("Uses $cppc C++ style comment$s, which is not portable"); 2257 2781 } 2782 2783 my $s = $warnings != 1 ? 's' : ''; 2784 my $warn = $warnings ? " ($warnings warning$s)" : ''; 2785 info("Analysis completed$warn"); 2258 2786 2259 2787 if ($file{changes}) { … … 2311 2839 2312 2840 2841 sub try_use { eval "use @_;"; return $@ eq '' } 2842 2313 2843 sub mydiff 2314 2844 { … … 2321 2851 } 2322 2852 2323 if (!defined $diff and can_use('Text::Diff')) {2853 if (!defined $diff and try_use('Text::Diff')) { 2324 2854 $diff = Text::Diff::diff($file, \$str, { STYLE => 'Unified' }); 2325 2855 $diff = <<HEADER . $diff; … … 2343 2873 2344 2874 print F $diff; 2345 2346 2875 } 2347 2876 … … 2380 2909 } 2381 2910 2382 sub can_use2383 {2384 eval "use @_;";2385 return $@ eq '';2386 }2387 2388 2911 sub rec_depend 2389 2912 { 2390 my $func = shift; 2391 my %seen; 2913 my($func, $seen) = @_; 2392 2914 return () unless exists $depends{$func}; 2393 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}}; 2394 2919 } 2395 2920 … … 2471 2996 2472 2997 my %given_hints; 2998 my %given_warnings; 2473 2999 sub hint 2474 3000 { 2475 3001 $opt{quiet} and return; 2476 $opt{hints} or return;2477 3002 my $func = shift; 2478 exists $hints{$func} or return; 2479 $given_hints{$func}++ and return; 2480 my $hint = $hints{$func}; 2481 $hint =~ s/^/ /mg; 2482 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; 2483 3016 } 2484 3017 … … 2499 3032 2500 3033 exit 2; 3034 } 3035 3036 sub 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 3043 if (\@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 } 3054 print <<END; 3055 3056 Sorry, but this is a stripped version of \$0. 3057 3058 To be able to use its original script and doc functionality, 3059 please try to regenerate this file using: 3060 3061 \$^X \$0 --unstrip 3062 3063 END 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; 2501 3080 } 2502 3081 … … 2532 3111 #endif 2533 3112 2534 #define PERL_BCDVERSION ((PERL_REVISION * 0x1000000L) + (PERL_VERSION * 0x1000L) + PERL_SUBVERSION) 2535 2536 /* It is very unlikely that anyone will try to use this with Perl 6 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)) 3115 3116 /* It is very unlikely that anyone will try to use this with Perl 6 2537 3117 (or greater), but who knows. 2538 3118 */ … … 2878 3458 # define UVSIZE IVSIZE 2879 3459 #endif 2880 2881 3460 #ifndef sv_setuv 2882 # define sv_setuv(sv, uv) \ 2883 STMT_START { \ 2884 UV TeMpUv = uv; \ 2885 if (TeMpUv <= IV_MAX) \ 2886 sv_setiv(sv, TeMpUv); \ 2887 else \ 2888 sv_setnv(sv, (double)TeMpUv); \ 2889 } STMT_END 2890 #endif 2891 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 2892 3470 #ifndef newSVuv 2893 # 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)) 2894 3472 #endif 2895 3473 #ifndef sv_2uv … … 2919 3497 # define sv_uv(sv) SvUVx(sv) 2920 3498 #endif 3499 3500 #if !defined(SvUOK) && defined(SvIOK_UV) 3501 # define SvUOK(sv) SvIOK_UV(sv) 3502 #endif 2921 3503 #ifndef XST_mUV 2922 3504 # define XST_mUV(i,v) (ST(i) = sv_2mortal(newSVuv(v)) ) … … 2934 3516 #endif 2935 3517 2936 #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 3629 typedef 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 2937 3734 /* 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) 3820 static U32 DPPP_(my_PL_signals) = D_PPP_PERL_SIGNALS_INIT; 3821 #elif defined(NEED_PL_signals_GLOBAL) 3822 U32 DPPP_(my_PL_signals) = D_PPP_PERL_SIGNALS_INIT; 3823 #else 3824 extern 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 2938 3847 # define PL_DBsingle DBsingle 2939 3848 # define PL_DBsub DBsub 3849 # define PL_DBtrace DBtrace 2940 3850 # define PL_Sv Sv 2941 3851 # define PL_compiling compiling … … 2949 3859 # define PL_dowarn dowarn 2950 3860 # define PL_errgv errgv 3861 # define PL_expect expect 2951 3862 # define PL_hexdigit hexdigit 2952 3863 # define PL_hints hints 2953 # define PL_ na na2954 # define PL_n o_modify no_modify3864 # define PL_laststatval laststatval 3865 # define PL_na na 2955 3866 # define PL_perl_destruct_level perl_destruct_level 2956 3867 # define PL_perldb perldb 2957 # define PL_ppaddr ppaddr2958 3868 # define PL_rsfp_filters rsfp_filters 2959 3869 # define PL_rsfp rsfp 2960 3870 # define PL_stack_base stack_base 2961 3871 # define PL_stack_sp stack_sp 3872 # define PL_statcache statcache 2962 3873 # define PL_stdingv stdingv 2963 3874 # define PL_sv_arenaroot sv_arenaroot … … 2970 3881 #endif 2971 3882 2972 #ifdef HASATTRIBUTE 2973 # if (defined(__GNUC__) && defined(__cplusplus)) || defined(__INTEL_COMPILER) 2974 # define PERL_UNUSED_DECL 2975 # else 2976 # define PERL_UNUSED_DECL __attribute__((unused)) 2977 # endif 2978 #else 2979 # define PERL_UNUSED_DECL 2980 #endif 2981 #ifndef NOOP 2982 # define NOOP (void)0 2983 #endif 2984 2985 #ifndef dNOOP 2986 # define dNOOP extern int Perl___notused PERL_UNUSED_DECL 2987 #endif 2988 2989 #ifndef NVTYPE 2990 # if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE) 2991 # define NVTYPE long double 2992 # else 2993 # define NVTYPE double 2994 # endif 2995 typedef NVTYPE NV; 2996 #endif 2997 2998 #ifndef INT2PTR 2999 3000 # if (IVSIZE == PTRSIZE) && (UVSIZE == PTRSIZE) 3001 # define PTRV UV 3002 # define INT2PTR(any,d) (any)(d) 3003 # else 3004 # if PTRSIZE == LONGSIZE 3005 # define PTRV unsigned long 3006 # else 3007 # define PTRV unsigned 3008 # endif 3009 # define INT2PTR(any,d) (any)(PTRV)(d) 3010 # endif 3011 3012 # define NUM2PTR(any,d) (any)(PTRV)(d) 3013 # define PTR2IV(p) INT2PTR(IV,p) 3014 # define PTR2UV(p) INT2PTR(UV,p) 3015 # define PTR2NV(p) NUM2PTR(NV,p) 3016 3017 # if PTRSIZE == LONGSIZE 3018 # define PTR2ul(p) (unsigned long)(p) 3019 # else 3020 # define PTR2ul(p) INT2PTR(unsigned long,p) 3021 # endif 3022 3023 #endif /* !INT2PTR */ 3024 3025 #undef START_EXTERN_C 3026 #undef END_EXTERN_C 3027 #undef EXTERN_C 3028 #ifdef __cplusplus 3029 # define START_EXTERN_C extern "C" { 3030 # define END_EXTERN_C } 3031 # define EXTERN_C extern "C" 3032 #else 3033 # define START_EXTERN_C 3034 # define END_EXTERN_C 3035 # define EXTERN_C extern 3036 #endif 3037 3038 #ifndef PERL_GCC_BRACE_GROUPS_FORBIDDEN 3039 # if defined(__STRICT_ANSI__) && defined(PERL_GCC_PEDANTIC) 3040 # define PERL_GCC_BRACE_GROUPS_FORBIDDEN 3041 # endif 3042 #endif 3043 3044 #undef STMT_START 3045 #undef STMT_END 3046 #if defined(__GNUC__) && !defined(PERL_GCC_BRACE_GROUPS_FORBIDDEN) && !defined(__cplusplus) 3047 # define STMT_START (void)( /* gcc supports ``({ STATEMENTS; })'' */ 3048 # define STMT_END ) 3049 #else 3050 # if defined(VOIDFLAGS) && (VOIDFLAGS) && (defined(sun) || defined(__sun__)) && !defined(__GNUC__) 3051 # define STMT_START if (1) 3052 # define STMT_END else (void)0 3053 # else 3054 # define STMT_START do 3055 # define STMT_END while (0) 3056 # endif 3057 #endif 3058 #ifndef boolSV 3059 # define boolSV(b) ((b) ? &PL_sv_yes : &PL_sv_no) 3060 #endif 3061 3062 /* DEFSV appears first in 5.004_56 */ 3063 #ifndef DEFSV 3064 # define DEFSV GvSV(PL_defgv) 3065 #endif 3066 3067 #ifndef SAVE_DEFSV 3068 # define SAVE_DEFSV SAVESPTR(GvSV(PL_defgv)) 3069 #endif 3070 3071 /* Older perls (<=5.003) lack AvFILLp */ 3072 #ifndef AvFILLp 3073 # define AvFILLp AvFILL 3074 #endif 3075 #ifndef ERRSV 3076 # define ERRSV get_sv("@",FALSE) 3077 #endif 3078 #ifndef newSVpvn 3079 # define newSVpvn(data,len) ((data) \ 3080 ? ((len) ? newSVpv((data), (len)) : newSVpv("", 0)) \ 3081 : newSV(0)) 3082 #endif 3083 3084 /* Hint: gv_stashpvn 3085 * This function's backport doesn't support the length parameter, but 3086 * rather ignores it. Portability can only be ensured if the length 3087 * parameter is used for speed reasons, but the length can always be 3088 * 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. 3089 3887 */ 3090 #ifndef gv_stashpvn 3091 # define gv_stashpvn(str,len,create) gv_stashpv(str,create) 3092 #endif 3093 3094 /* Replace: 1 */ 3095 #ifndef get_cv 3096 # define get_cv perl_get_cv 3097 #endif 3098 3099 #ifndef get_sv 3100 # define get_sv perl_get_sv 3101 #endif 3102 3103 #ifndef get_av 3104 # define get_av perl_get_av 3105 #endif 3106 3107 #ifndef get_hv 3108 # define get_hv perl_get_hv 3109 #endif 3110 3111 /* Replace: 0 */ 3112 3113 #ifdef HAS_MEMCMP 3114 #ifndef memNE 3115 # define memNE(s1,s2,l) (memcmp(s1,s2,l)) 3116 #endif 3117 3118 #ifndef memEQ 3119 # define memEQ(s1,s2,l) (!memcmp(s1,s2,l)) 3120 #endif 3121 3122 #else 3123 #ifndef memNE 3124 # define memNE(s1,s2,l) (bcmp(s1,s2,l)) 3125 #endif 3126 3127 #ifndef memEQ 3128 # define memEQ(s1,s2,l) (!bcmp(s1,s2,l)) 3129 #endif 3130 3131 #endif 3132 #ifndef MoveD 3133 # define MoveD(s,d,n,t) memmove((char*)(d),(char*)(s), (n) * sizeof(t)) 3134 #endif 3135 3136 #ifndef CopyD 3137 # define CopyD(s,d,n,t) memcpy((char*)(d),(char*)(s), (n) * sizeof(t)) 3138 #endif 3139 3140 #ifdef HAS_MEMSET 3141 #ifndef ZeroD 3142 # define ZeroD(d,n,t) memzero((char*)(d), (n) * sizeof(t)) 3143 #endif 3144 3145 #else 3146 #ifndef ZeroD 3147 # define ZeroD(d,n,t) ((void)memzero((char*)(d), (n) * sizeof(t)),d) 3148 #endif 3149 3150 #endif 3151 #ifndef Poison 3152 # define Poison(d,n,t) (void)memset((char*)(d), 0xAB, (n) * sizeof(t)) 3153 #endif 3154 #ifndef dUNDERBAR 3155 # define dUNDERBAR dNOOP 3156 #endif 3157 3158 #ifndef UNDERBAR 3159 # define UNDERBAR DEFSV 3160 #endif 3161 #ifndef dAX 3162 # define dAX I32 ax = MARK - PL_stack_base + 1 3163 #endif 3164 3165 #ifndef dITEMS 3166 # define dITEMS I32 items = SP - MARK 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) 3167 3895 #endif 3168 3896 #ifndef dTHR … … 3181 3909 3182 3910 #ifndef pTHX_ 3183 # define pTHX_ 3911 # define pTHX_ 3184 3912 #endif 3185 3913 3186 3914 #ifndef aTHX 3187 # define aTHX 3915 # define aTHX 3188 3916 #endif 3189 3917 3190 3918 #ifndef aTHX_ 3191 # define aTHX_ 3919 # 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 3192 3935 #endif 3193 3936 #ifndef dTHXoa … … 3252 3995 # define eval_sv perl_eval_sv 3253 3996 #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 3254 4008 3255 4009 /* Replace: 0 */ 3256 4010 3257 4011 /* Replace perl_eval_pv with eval_pv */ 3258 /* eval_pv depends on eval_sv */3259 4012 3260 4013 #ifndef eval_pv … … 3292 4045 3293 4046 return sv; 4047 } 4048 4049 #endif 4050 #endif 4051 4052 #ifndef vload_module 4053 #if defined(NEED_vload_module) 4054 static void DPPP_(my_vload_module)(U32 flags, SV *name, SV *ver, va_list *args); 4055 static 4056 #else 4057 extern 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 4068 void 4069 DPPP_(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;