From: Marcus Holland-Moritz Date: Sat, 20 May 2006 18:22:00 +0000 (+0000) Subject: Upgrade to Devel::PPPort 3.08_01 X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=f2ab5a41215d98b800435a2513b81bb0da0e651d;p=p5sagit%2Fp5-mst-13.2.git Upgrade to Devel::PPPort 3.08_01 p4raw-id: //depot/perl@28259 --- diff --git a/MANIFEST b/MANIFEST index 6f7d0a8..deaa8ed 100644 --- a/MANIFEST +++ b/MANIFEST @@ -346,7 +346,6 @@ ext/Devel/PPPort/devel/mktodo.pl Devel::PPPort baseline/todo generator ext/Devel/PPPort/devel/scanprov Devel::PPPort provided API scanner ext/Devel/PPPort/HACKERS Devel::PPPort hackers documentation ext/Devel/PPPort/Makefile.PL Devel::PPPort makefile writer -ext/Devel/PPPort/MANIFEST Devel::PPPort Manifest ext/Devel/PPPort/MANIFEST.SKIP Devel::PPPort Manifest skip specs ext/Devel/PPPort/mktests.PL Devel::PPPort test file writer ext/Devel/PPPort/module2.c Devel::PPPort test file @@ -379,10 +378,12 @@ ext/Devel/PPPort/parts/base/5008004 Devel::PPPort baseline todo file ext/Devel/PPPort/parts/base/5008005 Devel::PPPort baseline todo file ext/Devel/PPPort/parts/base/5008006 Devel::PPPort baseline todo file ext/Devel/PPPort/parts/base/5008007 Devel::PPPort baseline todo file +ext/Devel/PPPort/parts/base/5008008 Devel::PPPort baseline todo file ext/Devel/PPPort/parts/base/5009000 Devel::PPPort baseline todo file ext/Devel/PPPort/parts/base/5009001 Devel::PPPort baseline todo file ext/Devel/PPPort/parts/base/5009002 Devel::PPPort baseline todo file ext/Devel/PPPort/parts/base/5009003 Devel::PPPort baseline todo file +ext/Devel/PPPort/parts/base/5009004 Devel::PPPort baseline todo file ext/Devel/PPPort/parts/embed.fnc Devel::PPPort Perl API listing ext/Devel/PPPort/parts/inc/call Devel::PPPort include ext/Devel/PPPort/parts/inc/cop Devel::PPPort include @@ -400,6 +401,8 @@ ext/Devel/PPPort/parts/inc/newRV Devel::PPPort include ext/Devel/PPPort/parts/inc/ppphbin Devel::PPPort include ext/Devel/PPPort/parts/inc/ppphdoc Devel::PPPort include ext/Devel/PPPort/parts/inc/ppphtest Devel::PPPort include +ext/Devel/PPPort/parts/inc/pvs Devel::PPPort include +ext/Devel/PPPort/parts/inc/snprintf Devel::PPPort include ext/Devel/PPPort/parts/inc/SvPV Devel::PPPort include ext/Devel/PPPort/parts/inc/Sv_set Devel::PPPort include ext/Devel/PPPort/parts/inc/sv_xpvf Devel::PPPort include @@ -407,6 +410,7 @@ ext/Devel/PPPort/parts/inc/threads Devel::PPPort include ext/Devel/PPPort/parts/inc/uv Devel::PPPort include ext/Devel/PPPort/parts/inc/variables Devel::PPPort include ext/Devel/PPPort/parts/inc/version Devel::PPPort include +ext/Devel/PPPort/parts/inc/warn Devel::PPPort include ext/Devel/PPPort/parts/ppptools.pl Devel::PPPort various utilities ext/Devel/PPPort/parts/todo/5004000 Devel::PPPort todo file ext/Devel/PPPort/parts/todo/5004010 Devel::PPPort todo file @@ -434,10 +438,12 @@ ext/Devel/PPPort/parts/todo/5008004 Devel::PPPort todo file ext/Devel/PPPort/parts/todo/5008005 Devel::PPPort todo file ext/Devel/PPPort/parts/todo/5008006 Devel::PPPort todo file ext/Devel/PPPort/parts/todo/5008007 Devel::PPPort todo file +ext/Devel/PPPort/parts/todo/5008008 Devel::PPPort todo file ext/Devel/PPPort/parts/todo/5009000 Devel::PPPort todo file ext/Devel/PPPort/parts/todo/5009001 Devel::PPPort todo file ext/Devel/PPPort/parts/todo/5009002 Devel::PPPort todo file ext/Devel/PPPort/parts/todo/5009003 Devel::PPPort todo file +ext/Devel/PPPort/parts/todo/5009004 Devel::PPPort todo file ext/Devel/PPPort/ppport_h.PL Devel::PPPort ppport.h writer ext/Devel/PPPort/PPPort.pm Devel::PPPort extension ext/Devel/PPPort/PPPort_pm.PL Devel::PPPort PPPort.pm writer @@ -459,6 +465,8 @@ ext/Devel/PPPort/t/newCONSTSUB.t Devel::PPPort test file ext/Devel/PPPort/t/newRV.t Devel::PPPort test file ext/Devel/PPPort/TODO Devel::PPPort Todo ext/Devel/PPPort/t/ppphtest.t Devel::PPPort test file +ext/Devel/PPPort/t/pvs.t Devel::PPPort test file +ext/Devel/PPPort/t/snprintf.t Devel::PPPort test file ext/Devel/PPPort/t/SvPV.t Devel::PPPort test file ext/Devel/PPPort/t/Sv_set.t Devel::PPPort test file ext/Devel/PPPort/t/sv_xpvf.t Devel::PPPort test file @@ -466,6 +474,7 @@ ext/Devel/PPPort/t/testutil.pl Devel::PPPort test utilities ext/Devel/PPPort/t/threads.t Devel::PPPort test file ext/Devel/PPPort/t/uv.t Devel::PPPort test file ext/Devel/PPPort/t/variables.t Devel::PPPort test file +ext/Devel/PPPort/t/warn.t Devel::PPPort test file ext/Devel/PPPort/typemap Devel::PPPort Typemap ext/Digest/MD5/Changes Digest::MD5 extension changes ext/Digest/MD5/hints/dec_osf.pl Hints for named architecture diff --git a/ext/Devel/PPPort/Changes b/ext/Devel/PPPort/Changes index 0adb5de..6654bb0 100755 --- a/ext/Devel/PPPort/Changes +++ b/ext/Devel/PPPort/Changes @@ -1,3 +1,26 @@ +3.08_01 - 2006-05-20 + + * update NOOP and dNOOP to include lint directives + * update API info (for 5.8.8 and 5.9.3) + * added support for the following API + ckWARN + dVAR + hv_fetchs + hv_stores + my_snprintf + newSVpvs + packWARN + PERL_ABS + PERL_UNUSED_ARG + PERL_UNUSED_CONTEXT + PERL_UNUSED_VAR + STR_WITH_LEN + sv_catpvs + sv_setpvs + SVf + SvVSTRING_mg + warner + 3.08 - 2006-01-19 * thanks to Craig Berry for fixing my broken ppphtest diff --git a/ext/Devel/PPPort/HACKERS b/ext/Devel/PPPort/HACKERS index 42acd38..770ceeb 100644 --- a/ext/Devel/PPPort/HACKERS +++ b/ext/Devel/PPPort/HACKERS @@ -11,15 +11,15 @@ lying around in this distribution. =head1 DESCRIPTION -=head2 How to build 98 versions of Perl +=head2 How to build 105 versions of Perl C supports Perl versions between 5.003 and bleadperl. To guarantee this support, I need some of these versions on my -machine. I currently have 98 different Perl version/configuration +machine. I currently have 105 different Perl version/configuration combinations installed on my laptop. As many of the old Perl distributions need patching to compile -cleanly on newer systems (and because building 98 Perls by hand +cleanly on newer systems (and because building 105 Perls by hand just isn't fun), I wrote a tool to build all the different versions and configurations. You can find it in F. It can currently build the following Perl releases: diff --git a/ext/Devel/PPPort/MANIFEST b/ext/Devel/PPPort/MANIFEST deleted file mode 100644 index 8f493d0..0000000 --- a/ext/Devel/PPPort/MANIFEST +++ /dev/null @@ -1,131 +0,0 @@ -apicheck_c.PL -Changes -devel/buildperl.pl -devel/mkapidoc.sh -devel/mktodo -devel/mktodo.pl -devel/scanprov -HACKERS -Makefile.PL -MANIFEST -MANIFEST.SKIP -mktests.PL -module2.c -module3.c -parts/apicheck.pl -parts/apidoc.fnc -parts/base/5004000 -parts/base/5004010 -parts/base/5004020 -parts/base/5004030 -parts/base/5004040 -parts/base/5004050 -parts/base/5005000 -parts/base/5005010 -parts/base/5005020 -parts/base/5005030 -parts/base/5005040 -parts/base/5006000 -parts/base/5006001 -parts/base/5006002 -parts/base/5007000 -parts/base/5007001 -parts/base/5007002 -parts/base/5007003 -parts/base/5008000 -parts/base/5008001 -parts/base/5008002 -parts/base/5008003 -parts/base/5008004 -parts/base/5008005 -parts/base/5008006 -parts/base/5008007 -parts/base/5009000 -parts/base/5009001 -parts/base/5009002 -parts/base/5009003 -parts/embed.fnc -parts/inc/call -parts/inc/cop -parts/inc/exception -parts/inc/format -parts/inc/grok -parts/inc/limits -parts/inc/magic -parts/inc/memory -parts/inc/misc -parts/inc/mPUSH -parts/inc/MY_CXT -parts/inc/newCONSTSUB -parts/inc/newRV -parts/inc/ppphbin -parts/inc/ppphdoc -parts/inc/ppphtest -parts/inc/Sv_set -parts/inc/sv_xpvf -parts/inc/SvPV -parts/inc/threads -parts/inc/uv -parts/inc/variables -parts/inc/version -parts/ppptools.pl -parts/todo/5004000 -parts/todo/5004010 -parts/todo/5004020 -parts/todo/5004030 -parts/todo/5004040 -parts/todo/5004050 -parts/todo/5005000 -parts/todo/5005010 -parts/todo/5005020 -parts/todo/5005030 -parts/todo/5005040 -parts/todo/5006000 -parts/todo/5006001 -parts/todo/5006002 -parts/todo/5007000 -parts/todo/5007001 -parts/todo/5007002 -parts/todo/5007003 -parts/todo/5008000 -parts/todo/5008001 -parts/todo/5008002 -parts/todo/5008003 -parts/todo/5008004 -parts/todo/5008005 -parts/todo/5008006 -parts/todo/5008007 -parts/todo/5009000 -parts/todo/5009001 -parts/todo/5009002 -parts/todo/5009003 -PPPort.pm -PPPort.xs -ppport_h.PL -PPPort_pm.PL -PPPort_xs.PL -README -soak -t/call.t -t/cop.t -t/exception.t -t/grok.t -t/limits.t -t/magic.t -t/memory.t -t/misc.t -t/mPUSH.t -t/MY_CXT.t -t/newCONSTSUB.t -t/newRV.t -t/ppphtest.t -t/Sv_set.t -t/sv_xpvf.t -t/SvPV.t -t/testutil.pl -t/threads.t -t/uv.t -t/variables.t -TODO -typemap -META.yml Module meta-data (added by MakeMaker) diff --git a/ext/Devel/PPPort/PPPort.pm b/ext/Devel/PPPort/PPPort.pm index a7e8ea9..df6d9c9 100644 --- a/ext/Devel/PPPort/PPPort.pm +++ b/ext/Devel/PPPort/PPPort.pm @@ -8,9 +8,9 @@ # ################################################################################ # -# $Revision: 41 $ +# $Revision: 42 $ # $Author: mhx $ -# $Date: 2006/01/14 18:07:56 +0100 $ +# $Date: 2006/05/18 23:13:47 +0200 $ # ################################################################################ # @@ -120,6 +120,7 @@ in older Perl releases: call_method call_pv call_sv + ckWARN CopFILE CopFILE_set CopFILEAV @@ -144,6 +145,7 @@ in older Perl releases: dTHXa dTHXoa dUNDERBAR + dVAR dXCPT dXSTARG END_EXTERN_C @@ -162,6 +164,8 @@ in older Perl releases: grok_numeric_radix grok_oct gv_stashpvn + hv_fetchs + hv_stores IN_LOCALE IN_LOCALE_COMPILETIME IN_LOCALE_RUNTIME @@ -190,10 +194,12 @@ in older Perl releases: MY_CXT MY_CXT_CLONE MY_CXT_INIT + my_snprintf newCONSTSUB newRV_inc newRV_noinc newSVpvn + newSVpvs newSVuv Newx Newxc @@ -204,6 +210,8 @@ in older Perl releases: NVff NVgf NVTYPE + packWARN + PERL_ABS PERL_BCDVERSION PERL_GCC_BRACE_GROUPS_FORBIDDEN PERL_INT_MAX @@ -266,12 +274,17 @@ in older Perl releases: PERL_UINT_MIN PERL_ULONG_MAX PERL_ULONG_MIN + PERL_UNUSED_ARG + PERL_UNUSED_CONTEXT PERL_UNUSED_DECL + PERL_UNUSED_VAR PERL_UQUAD_MAX PERL_UQUAD_MIN PERL_USHORT_MAX PERL_USHORT_MIN PERL_VERSION + Perl_warner + Perl_warner_nocontext PL_compiling PL_copline PL_curcop @@ -321,6 +334,7 @@ in older Perl releases: START_MY_CXT STMT_END STMT_START + STR_WITH_LEN sv_2pv_nolen sv_2pvbyte sv_2uv @@ -329,6 +343,7 @@ in older Perl releases: sv_catpvf_mg_nocontext sv_catpvn_mg sv_catpvn_nomg + sv_catpvs sv_catsv_mg sv_catsv_nomg sv_pvn @@ -340,6 +355,7 @@ in older Perl releases: sv_setpvf_mg sv_setpvf_mg_nocontext sv_setpvn_mg + sv_setpvs sv_setsv_mg sv_setsv_nomg sv_setuv @@ -350,6 +366,7 @@ in older Perl releases: sv_vcatpvf_mg sv_vsetpvf sv_vsetpvf_mg + SVf SvGETMAGIC SvIV_nomg SvMAGIC_set @@ -367,6 +384,7 @@ in older Perl releases: SvUVX SvUVx SvUVXx + SvVSTRING_mg UNDERBAR UVof UVSIZE @@ -375,6 +393,54 @@ in older Perl releases: UVXf UVxf vnewSVpvf + WARN_ALL + WARN_AMBIGUOUS + WARN_ASSERTIONS + WARN_BAREWORD + WARN_CLOSED + WARN_CLOSURE + WARN_DEBUGGING + WARN_DEPRECATED + WARN_DIGIT + WARN_EXEC + WARN_EXITING + WARN_GLOB + WARN_INPLACE + WARN_INTERNAL + WARN_IO + WARN_LAYER + WARN_MALLOC + WARN_MISC + WARN_NEWLINE + WARN_NUMERIC + WARN_ONCE + WARN_OVERFLOW + WARN_PACK + WARN_PARENTHESIS + WARN_PIPE + WARN_PORTABLE + WARN_PRECEDENCE + WARN_PRINTF + WARN_PROTOTYPE + WARN_QW + WARN_RECURSION + WARN_REDEFINE + WARN_REGEXP + WARN_RESERVED + WARN_SEMICOLON + WARN_SEVERE + WARN_SIGNAL + WARN_SUBSTR + WARN_SYNTAX + WARN_TAINT + WARN_THREADS + WARN_UNINITIALIZED + WARN_UNOPENED + WARN_UNPACK + WARN_UNTIE + WARN_UTF8 + WARN_VOID + warner XCPT_CATCH XCPT_RETHROW XCPT_TRY_END @@ -398,12 +464,29 @@ Perl below which it is unsupported: =over 4 -=item perl 5.9.3 +=item perl 5.9.4 MULTICALL POP_MULTICALL PUSH_MULTICALL - SvSTASH_set + PoisonNew + PoisonWith + SvREFCNT_inc_NN + SvREFCNT_inc_simple + SvREFCNT_inc_simple_NN + SvREFCNT_inc_simple_void + SvREFCNT_inc_void + SvREFCNT_inc_void_NN + gv_name_set + my_vsnprintf + newXS_flags + pad_sv + regclass_swash + stashpv_hvname_match + sv_usepvn_flags + +=item perl 5.9.3 + av_arylen_p ckwarn ckwarn_d @@ -427,7 +510,6 @@ Perl below which it is unsupported: newWHILEOP ref sortsv_flags - stashpv_hvname_match vverify =item perl 5.9.2 @@ -528,7 +610,6 @@ Perl below which it is unsupported: pack_cat perl_destruct pv_uni_display - regclass_swash save_shared_pvref savesharedpv sortsv @@ -536,7 +617,6 @@ Perl below which it is unsupported: sv_magicext sv_nolocking sv_nosharing - sv_nounlocking sv_recode_to_utf8 sv_uni_display to_uni_fold @@ -599,6 +679,7 @@ Perl below which it is unsupported: =item perl 5.6.1 + SvGAMAGIC apply_attrs_string bytes_to_utf8 gv_efullname4 @@ -704,7 +785,6 @@ Perl below which it is unsupported: my_fflush_all newANONATTRSUB newATTRSUB - newMYSUB newPADOP newXS newXSproto @@ -765,7 +845,6 @@ Perl below which it is unsupported: vmess vwarn vwarner - warner =item perl 5.005_03 @@ -795,7 +874,6 @@ Perl below which it is unsupported: runops_standard save_hints save_iv - save_threadsv screaminstr sv_iv sv_nv @@ -875,6 +953,7 @@ Perl below which it is unsupported: sv_vsetpvfn unsharepvn vnewSVpvf + warner =back @@ -925,7 +1004,7 @@ require DynaLoader; use strict; use vars qw($VERSION @ISA $data); -$VERSION = do { my @r = '$Snapshot: /Devel-PPPort/3.08 $' =~ /(\d+\.\d+(?:_\d+)?)/; @r ? $r[0] : '9.99' }; +$VERSION = do { my @r = '$Snapshot: /Devel-PPPort/3.08_01 $' =~ /(\d+\.\d+(?:_\d+)?)/; @r ? $r[0] : '9.99' }; @ISA = qw(DynaLoader); @@ -1174,6 +1253,7 @@ SKIP |> grok_number() NEED_grok_number NEED_grok_number_GLOBAL |> grok_numeric_radix() NEED_grok_numeric_radix NEED_grok_numeric_radix_GLOBAL |> grok_oct() NEED_grok_oct NEED_grok_oct_GLOBAL +|> my_snprintf() NEED_my_snprintf NEED_my_snprintf_GLOBAL |> newCONSTSUB() NEED_newCONSTSUB NEED_newCONSTSUB_GLOBAL |> newRV_noinc() NEED_newRV_noinc NEED_newRV_noinc_GLOBAL |> sv_2pv_nolen() NEED_sv_2pv_nolen NEED_sv_2pv_nolen_GLOBAL @@ -1183,6 +1263,7 @@ SKIP |> sv_setpvf_mg() NEED_sv_setpvf_mg NEED_sv_setpvf_mg_GLOBAL |> sv_setpvf_mg_nocontext() NEED_sv_setpvf_mg_nocontext NEED_sv_setpvf_mg_nocontext_GLOBAL |> vnewSVpvf() NEED_vnewSVpvf NEED_vnewSVpvf_GLOBAL +|> warner() NEED_warner NEED_warner_GLOBAL |> |>To avoid namespace conflicts, you can change the namespace of the |>explicitly exported functions / variables using the C @@ -1433,13 +1514,12 @@ IVdf|5.006000||p LEAVE||| LVRET||| MARK||| -MULTICALL||5.009003| +MULTICALL||5.009004| MY_CXT_CLONE|5.009002||p MY_CXT_INIT|5.007003||p MY_CXT|5.007003||p MoveD|5.009002||p Move||| -NEWSV||| NOOP|5.005000||p NUM2PTR|5.006000||p NVTYPE|5.006000||p @@ -1471,7 +1551,8 @@ PAD_SET_CUR_NOSAVE||| PAD_SET_CUR||| PAD_SVl||| PAD_SV||| -PERL_BCDVERSION|5.009003||p +PERL_ABS|5.008001||p +PERL_BCDVERSION|5.009004||p PERL_GCC_BRACE_GROUPS_FORBIDDEN|5.008001||p PERL_INT_MAX|5.004000||p PERL_INT_MIN|5.004000||p @@ -1533,7 +1614,10 @@ PERL_UINT_MAX|5.004000||p PERL_UINT_MIN|5.004000||p PERL_ULONG_MAX|5.004000||p PERL_ULONG_MIN|5.004000||p +PERL_UNUSED_ARG|5.009003||p +PERL_UNUSED_CONTEXT|5.009004||p PERL_UNUSED_DECL|5.007002||p +PERL_UNUSED_VAR|5.007002||p PERL_UQUAD_MAX|5.004000||p PERL_UQUAD_MIN|5.004000||p PERL_USHORT_MAX|5.004000||p @@ -1576,7 +1660,7 @@ PL_sv_undef|5.004050||pn PL_sv_yes|5.004050||pn PL_tainted|5.004050||p PL_tainting|5.004050||p -POP_MULTICALL||5.009003| +POP_MULTICALL||5.009004| POPi|||n POPl|||n POPn|||n @@ -1590,7 +1674,7 @@ PTR2UV|5.006000||p PTR2ul|5.007001||p PTRV|5.006000||p PUSHMARK||| -PUSH_MULTICALL||5.009003| +PUSH_MULTICALL||5.009004| PUSHi||| PUSHmortal|5.009002||p PUSHn||| @@ -1620,6 +1704,10 @@ PerlIO_stdout||5.007003| PerlIO_tell||5.007003| PerlIO_unread||5.007003| PerlIO_write||5.007003| +Perl_warner_nocontext|5.006000||p +Perl_warner|5.006000||p +PoisonNew||5.009004| +PoisonWith||5.009004| Poison|5.008000||p RETVAL|||n Renewc||| @@ -1635,7 +1723,9 @@ START_EXTERN_C|5.005000||p START_MY_CXT|5.007003||p STMT_END|||p STMT_START|||p +STR_WITH_LEN|5.009003||p ST||| +SVf|||p SVt_IV||| SVt_NV||| SVt_PVAV||| @@ -1650,6 +1740,7 @@ StructCopy||| SvCUR_set||| SvCUR||| SvEND||| +SvGAMAGIC||5.006001| SvGETMAGIC|5.004050||p SvGROW||| SvIOK_UV||5.006000| @@ -1712,6 +1803,12 @@ SvPVutf8||5.006000| SvPVx||| SvPV||| SvREFCNT_dec||| +SvREFCNT_inc_NN||5.009004| +SvREFCNT_inc_simple_NN||5.009004| +SvREFCNT_inc_simple_void||5.009004| +SvREFCNT_inc_simple||5.009004| +SvREFCNT_inc_void_NN||5.009004| +SvREFCNT_inc_void||5.009004| SvREFCNT_inc||| SvREFCNT||| SvROK_off||| @@ -1721,7 +1818,7 @@ SvRV_set|5.009003||p SvRV||| SvSETMAGIC||| SvSHARE||5.007003| -SvSTASH_set|5.009003|5.009003|p +SvSTASH_set|5.009004||p SvSTASH||| SvSetMagicSV_nosteal||5.004000| SvSetMagicSV||5.004000| @@ -1746,6 +1843,7 @@ SvUV_set|5.009003||p SvUVx|5.004000||p SvUV|5.004000||p SvVOK||5.008001| +SvVSTRING_mg|5.009004||p THIS|||n UNDERBAR|5.009002||p UVSIZE|5.006000||p @@ -1754,6 +1852,53 @@ UVXf|5.007001||p UVof|5.006000||p UVuf|5.006000||p UVxf|5.006000||p +WARN_ALL|5.006000||p +WARN_AMBIGUOUS|5.006000||p +WARN_ASSERTIONS|5.009000||p +WARN_BAREWORD|5.006000||p +WARN_CLOSED|5.006000||p +WARN_CLOSURE|5.006000||p +WARN_DEBUGGING|5.006000||p +WARN_DEPRECATED|5.006000||p +WARN_DIGIT|5.006000||p +WARN_EXEC|5.006000||p +WARN_EXITING|5.006000||p +WARN_GLOB|5.006000||p +WARN_INPLACE|5.006000||p +WARN_INTERNAL|5.006000||p +WARN_IO|5.006000||p +WARN_LAYER|5.008000||p +WARN_MALLOC|5.006000||p +WARN_MISC|5.006000||p +WARN_NEWLINE|5.006000||p +WARN_NUMERIC|5.006000||p +WARN_ONCE|5.006000||p +WARN_OVERFLOW|5.006000||p +WARN_PACK|5.006000||p +WARN_PARENTHESIS|5.006000||p +WARN_PIPE|5.006000||p +WARN_PORTABLE|5.006000||p +WARN_PRECEDENCE|5.006000||p +WARN_PRINTF|5.006000||p +WARN_PROTOTYPE|5.006000||p +WARN_QW|5.006000||p +WARN_RECURSION|5.006000||p +WARN_REDEFINE|5.006000||p +WARN_REGEXP|5.006000||p +WARN_RESERVED|5.006000||p +WARN_SEMICOLON|5.006000||p +WARN_SEVERE|5.006000||p +WARN_SIGNAL|5.006000||p +WARN_SUBSTR|5.006000||p +WARN_SYNTAX|5.006000||p +WARN_TAINT|5.006000||p +WARN_THREADS|5.008000||p +WARN_UNINITIALIZED|5.006000||p +WARN_UNOPENED|5.006000||p +WARN_UNPACK|5.006000||p +WARN_UNTIE|5.006000||p +WARN_UTF8|5.006000||p +WARN_VOID|5.006000||p XCPT_CATCH|5.009002||p XCPT_RETHROW|5.009002||p XCPT_TRY_END|5.009002||p @@ -1792,7 +1937,8 @@ aMY_CXT_|5.007003||p aMY_CXT|5.007003||p aTHX_|5.006000||p aTHX|5.006000||p -add_data||| +add_data|||n +addmad||| allocmy||| amagic_call||| amagic_cmp_locale||| @@ -1803,6 +1949,7 @@ any_dup||| ao||| append_elem||| append_list||| +append_madprops||| apply_attrs_my||| apply_attrs_string||5.006001| apply_attrs||| @@ -1837,12 +1984,10 @@ boot_core_PerlIO||| boot_core_UNIVERSAL||| boot_core_xsutils||| bytes_from_utf8||5.007001| +bytes_to_uni||| bytes_to_utf8||5.006001| -cache_re||| call_argv|5.006000||p call_atexit||5.006000| -call_body||| -call_list_body||| call_list||5.004000| call_method|5.006000||p call_pv|5.006000||p @@ -1857,6 +2002,7 @@ check_type_and_open||| check_uni||| checkcomma||| checkposixcc||| +ckWARN|||p ck_anoncode||| ck_bitop||| ck_concat||| @@ -1901,21 +2047,25 @@ ck_trunc||| ck_unpack||| ckwarn_d||5.009003| ckwarn||5.009003| -cl_and||| -cl_anything||| -cl_init_zero||| -cl_init||| -cl_is_anything||| -cl_or||| +cl_and|||n +cl_anything|||n +cl_init_zero|||n +cl_init|||n +cl_is_anything|||n +cl_or|||n +clear_placeholders||| closest_cop||| convert||| cop_free||| cr_textfilter||| +create_eval_scope||| croak_nocontext|||vn croak|||v csighandler||5.009003|n +curmad||| custom_op_desc||5.007003| custom_op_name||5.007003| +cv_ckproto_len||| cv_ckproto||| cv_clone||| cv_const_sv||5.004000| @@ -1939,6 +2089,7 @@ dTHXa|5.006000||p dTHXoa|5.006000||p dTHX|5.006000||p dUNDERBAR|5.009002||p +dVAR|5.009003||p dXCPT|5.009002||p dXSARGS||| dXSI32||| @@ -1954,6 +2105,7 @@ debstackptrs||5.007003| debstack||5.007003| deb||5.007003|v del_sv||| +delete_eval_scope||| delimcpy||5.004000| deprecate_old||| deprecate||| @@ -1989,11 +2141,13 @@ do_msgrcv||| do_msgsnd||| do_oddball||| do_op_dump||5.006000| +do_op_xmldump||| do_open9||5.006000| do_openn||5.007001| do_open||5.004000| do_pipe||| do_pmop_dump||5.006000| +do_pmop_xmldump||| do_print||| do_readline||| do_seek||| @@ -2060,8 +2214,10 @@ filter_add||| filter_del||| filter_gets||| filter_read||| +find_array_subscript||| find_beginning||| find_byclass||| +find_hash_subscript||| find_in_my_stash||| find_runcv||| find_rundefsvoffset||5.009002| @@ -2083,6 +2239,7 @@ free_global_struct||| free_tied_hv_pool||| free_tmps||| gen_constant_list||| +get_arena||| get_av|5.006000||p get_context||5.006000|n get_cv|5.006000||p @@ -2101,6 +2258,10 @@ get_sv|5.006000||p get_vtbl||5.005030| getcwd_sv||5.007002| getenv_len||| +glob_2number||| +glob_2pv||| +glob_assign_glob||| +glob_assign_ref||| gp_dup||| gp_free||| gp_ref||| @@ -2136,6 +2297,7 @@ gv_fullname||| gv_handler||5.007001| gv_init_sv||| gv_init||| +gv_name_set||5.009004| gv_stashpvn|5.006000||p gv_stashpv||| gv_stashsv||| @@ -2144,10 +2306,11 @@ hek_dup||| hfreeentries||| hsplit||| hv_assert||5.009001| -hv_auxinit||| +hv_auxinit|||n hv_backreferences_p||| hv_clear_placeholders||5.009001| hv_clear||| +hv_copy_hints_hv||| hv_delayfree_ent||5.004000| hv_delete_common||| hv_delete_ent||5.004000| @@ -2158,6 +2321,7 @@ hv_exists_ent||5.004000| hv_exists||| hv_fetch_common||| hv_fetch_ent||5.004000| +hv_fetchs|5.009003||p hv_fetch||| hv_free_ent||5.004000| hv_iterinit||| @@ -2169,7 +2333,7 @@ hv_iternext||| hv_iterval||| hv_kill_backrefs||| hv_ksplit||5.004000| -hv_magic_check||| +hv_magic_check|||n hv_magic||| hv_name_set||5.009003| hv_notallowed||| @@ -2181,6 +2345,7 @@ hv_riter_set||5.009003| hv_scalar||5.009001| hv_store_ent||5.004000| hv_store_flags||5.008000| +hv_stores|5.009004||p hv_store||| hv_undef||| ibcmp_locale||5.004000| @@ -2220,7 +2385,7 @@ isUPPER||| is_an_int||| is_gv_magical_sv||| is_gv_magical||| -is_handle_constructor||| +is_handle_constructor|||n is_list_assignment||| is_lvalue_sub||5.007001| is_uni_alnum_lc||5.006000| @@ -2255,7 +2420,7 @@ is_utf8_alnumc||5.006000| is_utf8_alnum||5.006000| is_utf8_alpha||5.006000| is_utf8_ascii||5.006000| -is_utf8_char_slow||| +is_utf8_char_slow|||n is_utf8_char||5.006000| is_utf8_cntrl||5.006000| is_utf8_common||| @@ -2298,8 +2463,12 @@ mXPUSHi|5.009002||p mXPUSHn|5.009002||p mXPUSHp|5.009002||p mXPUSHu|5.009002||p +mad_free||| +madlex||| +madparse||| magic_clear_all_env||| magic_clearenv||| +magic_clearhint||| magic_clearpack||| magic_clearsig||| magic_dump||5.006000| @@ -2309,7 +2478,6 @@ magic_freeovrld||| magic_freeregexp||| magic_getarylen||| magic_getdefelem||| -magic_getglob||| magic_getnkeys||| magic_getpack||| magic_getpos||| @@ -2338,6 +2506,7 @@ magic_setdefelem||| magic_setenv||| magic_setfm||| magic_setglob||| +magic_sethint||| magic_setisa||| magic_setmglob||| magic_setnkeys||| @@ -2385,6 +2554,8 @@ missingterm||| mode_from_discipline||| modkids||| mod||| +more_bodies||| +more_sv||| moreswitches||| mul128||| mulexp10|||n @@ -2435,6 +2606,7 @@ my_pclose||5.004000| my_popen_list||5.007001| my_popen||5.004000| my_setenv||| +my_snprintf|5.009004||pvn my_socketpair||5.007003|n my_sprintf||5.009003|vn my_stat||| @@ -2442,6 +2614,7 @@ my_strftime||5.007002| my_swabn|||n my_swap||| my_unexec||| +my_vsnprintf||5.009004|n my||| need_utf8|||n newANONATTRSUB||5.006000| @@ -2461,6 +2634,7 @@ newFORM||| newFOROP||| newGIVENOP||5.009003| newGIVWHENOP||| +newGP||| newGVOP||| newGVREF||| newGVgen||| @@ -2472,7 +2646,9 @@ newLISTOP||| newLOGOP||| newLOOPEX||| newLOOPOP||| -newMYSUB||5.006000| +newMADPROP||| +newMADsv||| +newMYSUB||| newNULLLIST||| newOP||| newPADOP||5.006000| @@ -2495,14 +2671,17 @@ newSVpvf_nocontext|||vn newSVpvf||5.004000|v newSVpvn_share||5.007001| newSVpvn|5.006000||p +newSVpvs|5.009003||p newSVpv||| newSVrv||| newSVsv||| newSVuv|5.006000||p newSV||| +newTOKEN||| newUNOP||| newWHENOP||5.009003| newWHILEOP||5.009003| +newXS_flags||5.009004| newXSproto||5.006000| newXS||5.006000| new_collate||5.006000| @@ -2513,6 +2692,7 @@ new_logop||| new_numeric||5.006000| new_stackinfo||5.005000| new_version||5.009000| +new_warnings_bitfield||| next_symbol||| nextargv||| nextchar||| @@ -2532,14 +2712,18 @@ op_clear||| op_const_sv||| op_dump||5.006000| op_free||| +op_getmad_weak||| +op_getmad||| op_null||5.007002| op_refcnt_lock||5.009002| op_refcnt_unlock||5.009002| +op_xmldump||| open_script||| pMY_CXT_|5.007003||p pMY_CXT|5.007003||p pTHX_|5.006000||p pTHX|5.006000||p +packWARN|5.007003||p pack_cat||5.007003| pack_rec||| package||| @@ -2556,16 +2740,17 @@ pad_fixup_inner_anons||| pad_free||| pad_leavemy||| pad_new||| +pad_peg|||n pad_push||| pad_reset||| pad_setsv||| -pad_sv||| +pad_sv||5.009004| pad_swipe||| pad_tidy||| pad_undef||| parse_body||| parse_unicode_opts||| -path_is_absolute||| +path_is_absolute|||n peep||| pending_ident||| perl_alloc_using|||n @@ -2578,8 +2763,10 @@ perl_free|||n perl_parse||5.006000|n perl_run|||n pidgone||| +pm_description||| pmflag||| pmop_dump||5.006000| +pmop_xmldump||| pmruntime||| pmtrans||| pop_scope||| @@ -2587,9 +2774,12 @@ pregcomp||| pregexec||| pregfree||| prepend_elem||| +prepend_madprops||| +printbuf||| printf_nocontext|||vn ptr_table_clear||| ptr_table_fetch||| +ptr_table_find|||n ptr_table_free||| ptr_table_new||| ptr_table_split||| @@ -2609,6 +2799,9 @@ reentrant_init||| reentrant_retry|||vn reentrant_size||| ref_array_or_hash||| +refcounted_he_chain_2hv||| +refcounted_he_free||| +refcounted_he_new||| refkids||| refto||| ref||5.009003| @@ -2616,32 +2809,28 @@ reg_node||| reganode||| regatom||| regbranch||| -regclass_swash||5.007003| +regclass_swash||5.009004| regclass||| regcppop||| regcppush||| -regcurly||| +regcurly|||n regdump||5.005000| regexec_flags||5.005000| -reghop3||| -reghopmaybe3||| -reghopmaybe||| -reghop||| +reghop3|||n +reghopmaybe3|||n reginclass||| reginitcolors||5.006000| reginsert||| regmatch||| regnext||5.005000| -regoptail||| regpiece||| regpposixcc||| regprop||| -regrepeat_hard||| regrepeat||| regtail||| regtry||| reguni||| -regwhite||| +regwhite|||n reg||| repeatcpy||| report_evil_fh||| @@ -2686,7 +2875,7 @@ save_generic_pvref||5.006001| save_generic_svref||5.005030| save_gp||5.004000| save_hash||| -save_hek_flags||| +save_hek_flags|||n save_helem||5.004050| save_hints||5.005000| save_hptr||| @@ -2709,7 +2898,6 @@ save_set_svflags||5.009000| save_shared_pvref||5.007003| save_sptr||| save_svref||| -save_threadsv||5.005000| save_vptr||5.006000| savepvn||| savepv||| @@ -2718,7 +2906,7 @@ savestack_grow_cnt||5.008001| savestack_grow||| savesvpv||5.009002| sawparens||| -scalar_mod_type||| +scalar_mod_type|||n scalarboolean||| scalarkids||| scalarseq||| @@ -2745,6 +2933,7 @@ scope||| screaminstr||5.005000| seed||5.008001| sequence_num||| +sequence_tail||| sequence||| set_context||5.006000|n set_csh||| @@ -2758,17 +2947,22 @@ share_hek||5.004000| si_dup||| sighandler|||n simplify_sort||| +skipspace0||| +skipspace1||| +skipspace2||| skipspace||| sortcv_stacked||| sortcv_xsub||| sortcv||| sortsv_flags||5.009003| sortsv||5.007003| +space_join_names_mortal||| ss_dup||| stack_grow||| +start_force||| start_glob||| start_subparse||5.004000| -stashpv_hvname_match||5.009003| +stashpv_hvname_match||5.009004| stdize_locale||| strEQ||| strGE||| @@ -2789,6 +2983,7 @@ sublex_start||| sv_2bool||| sv_2cv||| sv_2io||| +sv_2iuv_common||| sv_2iuv_non_preserve||| sv_2iv_flags||5.009001| sv_2iv||| @@ -2817,11 +3012,14 @@ sv_catpvn_flags||5.007002| sv_catpvn_mg|5.004050||p sv_catpvn_nomg|5.007002||p sv_catpvn||| +sv_catpvs|5.009003||p sv_catpv||| sv_catsv_flags||5.007002| sv_catsv_mg|5.004050||p sv_catsv_nomg|5.007002||p sv_catsv||| +sv_catxmlpvn||| +sv_catxmlsv||| sv_chop||| sv_clean_all||| sv_clean_objs||| @@ -2862,10 +3060,15 @@ sv_newmortal||| sv_newref||| sv_nolocking||5.007003| sv_nosharing||5.007003| -sv_nounlocking||5.007003| +sv_nounlocking||| sv_nv||5.005000| sv_peek||5.005000| +sv_pos_b2u_forwards||| +sv_pos_b2u_midway||| sv_pos_b2u||5.006000| +sv_pos_u2b_cached||| +sv_pos_u2b_forwards|||n +sv_pos_u2b_midway|||n sv_pos_u2b||5.006000| sv_pvbyten_force||5.006000| sv_pvbyten||5.006000| @@ -2899,6 +3102,7 @@ sv_setpviv_mg||5.008001| sv_setpviv||5.008001| sv_setpvn_mg|5.006000||p sv_setpvn||| +sv_setpvs|5.009004||p sv_setpv||| sv_setref_iv||| sv_setref_nv||| @@ -2922,7 +3126,8 @@ sv_unref_flags||5.007001| sv_unref||| sv_untaint||5.004000| sv_upgrade||| -sv_usepvn_mg|5.006000||p +sv_usepvn_flags||5.009004| +sv_usepvn_mg|5.004050||p sv_usepvn||| sv_utf8_decode||5.006000| sv_utf8_downgrade||5.006000| @@ -2936,6 +3141,7 @@ sv_vcatpvf|5.006000|5.004000|p sv_vsetpvf_mg|5.006000|5.004000|p sv_vsetpvfn||5.004000| sv_vsetpvf|5.006000|5.004000|p +sv_xmlpeek||| svtype||| swallow_bom||| swash_fetch||5.007002| @@ -2963,6 +3169,8 @@ to_utf8_lower||5.007003| to_utf8_substr||| to_utf8_title||5.007003| to_utf8_upper||5.007003| +token_free||| +token_getmad||| tokenize_use||| tokeq||| tokereport||| @@ -2984,8 +3192,7 @@ utf16_to_utf8||5.006001| utf8_distance||5.006000| utf8_hop||5.006000| utf8_length||5.007001| -utf8_mg_pos_init||| -utf8_mg_pos||| +utf8_mg_pos_cache_update||| utf8_to_bytes||5.006001| utf8_to_uvchr||5.007001| utf8_to_uvuni||5.007001| @@ -3020,12 +3227,20 @@ vwarn||5.006000| wait4pid||| warn_nocontext|||vn warner_nocontext|||vn -warner||5.006000|v +warner|5.006000|5.004000|pv warn|||v watch||| whichsig||| write_no_mem||| write_to_stderr||| +xmldump_all||| +xmldump_attr||| +xmldump_eval||| +xmldump_form||| +xmldump_indent|||v +xmldump_packsubs||| +xmldump_sub||| +xmldump_vindent||| yyerror||| yylex||| yyparse||| @@ -4219,12 +4434,33 @@ __DATA__ # define PERL_UNUSED_DECL # endif #endif + +#ifndef PERL_UNUSED_ARG +# if defined(lint) && defined(S_SPLINT_S) /* www.splint.org */ +# include +# define PERL_UNUSED_ARG(x) NOTE(ARGUNUSED(x)) +# else +# define PERL_UNUSED_ARG(x) ((void)x) +# endif +#endif + +#ifndef PERL_UNUSED_VAR +# define PERL_UNUSED_VAR(x) ((void)x) +#endif + +#ifndef PERL_UNUSED_CONTEXT +# ifdef USE_ITHREADS +# define PERL_UNUSED_CONTEXT PERL_UNUSED_ARG(my_perl) +# else +# define PERL_UNUSED_CONTEXT +# endif +#endif #ifndef NOOP -# define NOOP (void)0 +# define NOOP /*EMPTY*/(void)0 #endif #ifndef dNOOP -# define dNOOP extern int Perl___notused PERL_UNUSED_DECL +# define dNOOP extern int /*@unused@*/ Perl___notused PERL_UNUSED_DECL #endif #ifndef NVTYPE @@ -4383,6 +4619,15 @@ typedef NVTYPE NV; return; \ } STMT_END #endif +#ifndef PERL_ABS +# define PERL_ABS(x) ((x) < 0 ? -(x) : (x)) +#endif +#ifndef dVAR +# define dVAR dNOOP +#endif +#ifndef SVf +# define SVf "_" +#endif #ifndef PERL_SIGNALS_UNSAFE_FLAG @@ -5097,6 +5342,267 @@ DPPP_(my_sv_setpvf_mg_nocontext)(SV *sv, const char *pat, ...) SvSETMAGIC(sv); \ } STMT_END #endif +#ifndef WARN_ALL +# define WARN_ALL 0 +#endif + +#ifndef WARN_CLOSURE +# define WARN_CLOSURE 1 +#endif + +#ifndef WARN_DEPRECATED +# define WARN_DEPRECATED 2 +#endif + +#ifndef WARN_EXITING +# define WARN_EXITING 3 +#endif + +#ifndef WARN_GLOB +# define WARN_GLOB 4 +#endif + +#ifndef WARN_IO +# define WARN_IO 5 +#endif + +#ifndef WARN_CLOSED +# define WARN_CLOSED 6 +#endif + +#ifndef WARN_EXEC +# define WARN_EXEC 7 +#endif + +#ifndef WARN_LAYER +# define WARN_LAYER 8 +#endif + +#ifndef WARN_NEWLINE +# define WARN_NEWLINE 9 +#endif + +#ifndef WARN_PIPE +# define WARN_PIPE 10 +#endif + +#ifndef WARN_UNOPENED +# define WARN_UNOPENED 11 +#endif + +#ifndef WARN_MISC +# define WARN_MISC 12 +#endif + +#ifndef WARN_NUMERIC +# define WARN_NUMERIC 13 +#endif + +#ifndef WARN_ONCE +# define WARN_ONCE 14 +#endif + +#ifndef WARN_OVERFLOW +# define WARN_OVERFLOW 15 +#endif + +#ifndef WARN_PACK +# define WARN_PACK 16 +#endif + +#ifndef WARN_PORTABLE +# define WARN_PORTABLE 17 +#endif + +#ifndef WARN_RECURSION +# define WARN_RECURSION 18 +#endif + +#ifndef WARN_REDEFINE +# define WARN_REDEFINE 19 +#endif + +#ifndef WARN_REGEXP +# define WARN_REGEXP 20 +#endif + +#ifndef WARN_SEVERE +# define WARN_SEVERE 21 +#endif + +#ifndef WARN_DEBUGGING +# define WARN_DEBUGGING 22 +#endif + +#ifndef WARN_INPLACE +# define WARN_INPLACE 23 +#endif + +#ifndef WARN_INTERNAL +# define WARN_INTERNAL 24 +#endif + +#ifndef WARN_MALLOC +# define WARN_MALLOC 25 +#endif + +#ifndef WARN_SIGNAL +# define WARN_SIGNAL 26 +#endif + +#ifndef WARN_SUBSTR +# define WARN_SUBSTR 27 +#endif + +#ifndef WARN_SYNTAX +# define WARN_SYNTAX 28 +#endif + +#ifndef WARN_AMBIGUOUS +# define WARN_AMBIGUOUS 29 +#endif + +#ifndef WARN_BAREWORD +# define WARN_BAREWORD 30 +#endif + +#ifndef WARN_DIGIT +# define WARN_DIGIT 31 +#endif + +#ifndef WARN_PARENTHESIS +# define WARN_PARENTHESIS 32 +#endif + +#ifndef WARN_PRECEDENCE +# define WARN_PRECEDENCE 33 +#endif + +#ifndef WARN_PRINTF +# define WARN_PRINTF 34 +#endif + +#ifndef WARN_PROTOTYPE +# define WARN_PROTOTYPE 35 +#endif + +#ifndef WARN_QW +# define WARN_QW 36 +#endif + +#ifndef WARN_RESERVED +# define WARN_RESERVED 37 +#endif + +#ifndef WARN_SEMICOLON +# define WARN_SEMICOLON 38 +#endif + +#ifndef WARN_TAINT +# define WARN_TAINT 39 +#endif + +#ifndef WARN_THREADS +# define WARN_THREADS 40 +#endif + +#ifndef WARN_UNINITIALIZED +# define WARN_UNINITIALIZED 41 +#endif + +#ifndef WARN_UNPACK +# define WARN_UNPACK 42 +#endif + +#ifndef WARN_UNTIE +# define WARN_UNTIE 43 +#endif + +#ifndef WARN_UTF8 +# define WARN_UTF8 44 +#endif + +#ifndef WARN_VOID +# define WARN_VOID 45 +#endif + +#ifndef WARN_ASSERTIONS +# define WARN_ASSERTIONS 46 +#endif +#ifndef packWARN +# define packWARN(a) (a) +#endif + +#ifndef ckWARN +# ifdef G_WARN_ON +# define ckWARN(a) (PL_dowarn & G_WARN_ON) +# else +# define ckWARN(a) PL_dowarn +# endif +#endif + +/* warner depends on vnewSVpvf */ +#if ((PERL_VERSION > 4) || ((PERL_VERSION == 4) && (PERL_SUBVERSION >= 0))) && !defined(warner) +#if defined(NEED_warner) +static void DPPP_(my_warner)(U32 err, const char *pat, ...); +static +#else +extern void DPPP_(my_warner)(U32 err, const char *pat, ...); +#endif + +#define Perl_warner DPPP_(my_warner) + +#if defined(NEED_warner) || defined(NEED_warner_GLOBAL) + +void +DPPP_(my_warner)(U32 err, const char *pat, ...) +{ + SV *sv; + va_list args; + + PERL_UNUSED_ARG(err); + + va_start(args, pat); + sv = vnewSVpvf(pat, &args); + va_end(args); + sv_2mortal(sv); + warn("%s", SvPV_nolen(sv)); +} + +#define warner Perl_warner + +/* Perl_warner_nocontext depends on warner */ +#define Perl_warner_nocontext Perl_warner + +#endif +#endif + +/* concatenating with "" ensures that only literal strings are accepted as argument + * note that STR_WITH_LEN() can't be used as argument to macros or functions that + * under some configurations might be macros + */ +#ifndef STR_WITH_LEN +# define STR_WITH_LEN(s) (s ""), (sizeof(s)-1) +#endif +#ifndef newSVpvs +# define newSVpvs(str) newSVpvn(str "", sizeof(str) - 1) +#endif + +#ifndef sv_catpvs +# define sv_catpvs(sv, str) sv_catpvn(sv, str "", sizeof(str) - 1) +#endif + +#ifndef sv_setpvs +# define sv_setpvs(sv, str) sv_setpvn(sv, str "", sizeof(str) - 1) +#endif + +#ifndef hv_fetchs +# define hv_fetchs(hv,key,lval) hv_fetch(hv, key "", sizeof(key) - 1, lval) +#endif + +#ifndef hv_stores +# define hv_stores(hv,key,val,hash) hv_store(hv, key "", sizeof(key) - 1, val, hash) +#endif #ifndef SvGETMAGIC # define SvGETMAGIC(x) STMT_START { if (SvGMAGICAL(x)) mg_get(x); } STMT_END #endif @@ -5378,6 +5884,9 @@ DPPP_(my_sv_setpvf_mg_nocontext)(SV *sv, const char *pat, ...) SvSETMAGIC(TeMpSv); \ } STMT_END #endif +#ifndef SvVSTRING_mg +# define SvVSTRING_mg(sv) (SvMAGICAL(sv) ? mg_find(sv, PERL_MAGIC_vstring) : NULL) +#endif #ifdef USE_ITHREADS #ifndef CopFILE @@ -6096,6 +6605,40 @@ DPPP_(my_grok_oct)(pTHX_ char *start, STRLEN *len_p, I32 *flags, NV *result) #endif #endif +#if !defined(my_snprintf) +#if defined(NEED_my_snprintf) +static int DPPP_(my_my_snprintf)(char * buffer, const Size_t len, const char * format, ...); +static +#else +extern int DPPP_(my_my_snprintf)(char * buffer, const Size_t len, const char * format, ...); +#endif + +#define my_snprintf DPPP_(my_my_snprintf) +#define Perl_my_snprintf DPPP_(my_my_snprintf) + +#if defined(NEED_my_snprintf) || defined(NEED_my_snprintf_GLOBAL) + +int +DPPP_(my_my_snprintf)(char *buffer, const Size_t len, const char *format, ...) +{ + dTHX; + int retval; + va_list ap; + va_start(ap, format); +#ifdef HAS_VSNPRINTF + retval = vsnprintf(buffer, len, format, ap); +#else + retval = vsprintf(buffer, format, ap); +#endif + va_end(ap); + if (retval >= (int)len) + Perl_croak(aTHX_ "panic: my_snprintf buffer overflow"); + return retval; +} + +#endif +#endif + #ifdef NO_XSLOCKS # ifdef dJMPENV # define dXCPT dJMPENV; int rEtV = 0 diff --git a/ext/Devel/PPPort/PPPort.xs b/ext/Devel/PPPort/PPPort.xs index a2ebac4..b658e89 100644 --- a/ext/Devel/PPPort/PPPort.xs +++ b/ext/Devel/PPPort/PPPort.xs @@ -51,6 +51,9 @@ /* ---- from parts/inc/newRV ---- */ #define NEED_newRV_noinc +/* ---- from parts/inc/snprintf ---- */ +#define NEED_my_snprintf + /* ---- from parts/inc/sv_xpvf ---- */ #define NEED_vnewSVpvf #define NEED_sv_catpvf_mg @@ -65,6 +68,9 @@ /* ---- from parts/inc/variables ---- */ #define NEED_PL_signals +/* ---- from parts/inc/warn ---- */ +#define NEED_warner + /* =========== END XSINIT =================================================== */ #include "ppport.h" @@ -563,6 +569,14 @@ sv_usepvn_mg(sv, sv2) Copy(str, copy, len+1, char); sv_usepvn_mg(sv, copy, len); +int +SvVSTRING_mg(sv) + SV *sv; + CODE: + RETVAL = SvVSTRING_mg(sv) != NULL; + OUTPUT: + RETVAL + ##---------------------------------------------------------------------- ## XSUBs from parts/inc/memory ##---------------------------------------------------------------------- @@ -740,6 +754,20 @@ prepush() XSRETURN(1); } +int +PERL_ABS(a) + int a + +void +SVf(x) + SV *x + PPCODE: +#if ((PERL_VERSION > 4) || ((PERL_VERSION == 4) && (PERL_SUBVERSION >= 0))) + x = newSVpvf("[%"SVf"]", x); +#endif + XPUSHs(x); + XSRETURN(1); + ##---------------------------------------------------------------------- ## XSUBs from parts/inc/mPUSH ##---------------------------------------------------------------------- @@ -884,6 +912,60 @@ newRV_noinc_REFCNT() RETVAL ##---------------------------------------------------------------------- +## XSUBs from parts/inc/pvs +##---------------------------------------------------------------------- + +void +newSVpvs() + PPCODE: + XPUSHs(newSVpvs("newSVpvs")); + XSRETURN(1); + +void +sv_catpvs(sv) + SV *sv + PPCODE: + sv_catpvs(sv, "sv_catpvs"); + +void +sv_setpvs(sv) + SV *sv + PPCODE: + sv_setpvs(sv, "sv_setpvs"); + +void +hv_fetchs(hv) + SV *hv + PREINIT: + SV **s; + PPCODE: + s = hv_fetchs((HV *) SvRV(hv), "hv_fetchs", 0); + XPUSHs(sv_mortalcopy(*s)); + XSRETURN(1); + +void +hv_stores(hv, sv) + SV *hv + SV *sv + PPCODE: + hv_stores((HV *) SvRV(hv), "hv_stores", SvREFCNT_inc(sv), 0); + +##---------------------------------------------------------------------- +## XSUBs from parts/inc/snprintf +##---------------------------------------------------------------------- + +void +my_snprintf() + PREINIT: + char buf[128]; + int len; + PPCODE: + len = my_snprintf(buf, sizeof buf, "foo%s%d", "bar", 42); + XPUSHs(newSViv(len)); + XPUSHs(newSVpv(buf, 0)); + XSRETURN(2); + +##---------------------------------------------------------------------- ## XSUBs from parts/inc/Sv_set ##---------------------------------------------------------------------- @@ -913,6 +995,15 @@ TestSvPVX_mutable(sv) OUTPUT: RETVAL +void +TestSvSTASH_set(sv, name) + SV *sv + char *name + CODE: + sv = SvRV(sv); + SvREFCNT_dec(SvSTASH(sv)); + SvSTASH_set(sv, (HV*) SvREFCNT_inc(gv_stashpv(name, 0))); + ##---------------------------------------------------------------------- ## XSUBs from parts/inc/sv_xpvf ##---------------------------------------------------------------------- @@ -1118,3 +1209,36 @@ compare_PL_signals() } OUTPUT: RETVAL + +##---------------------------------------------------------------------- +## XSUBs from parts/inc/warn +##---------------------------------------------------------------------- + +void +warner() + CODE: +#if ((PERL_VERSION > 4) || ((PERL_VERSION == 4) && (PERL_SUBVERSION >= 0))) + warner(packWARN(WARN_MISC), "warner %s:%d", "bar", 42); +#endif + +void +Perl_warner() + CODE: +#if ((PERL_VERSION > 4) || ((PERL_VERSION == 4) && (PERL_SUBVERSION >= 0))) + Perl_warner(aTHX_ packWARN(WARN_MISC), "Perl_warner %s:%d", "bar", 42); +#endif + +void +Perl_warner_nocontext() + CODE: +#if ((PERL_VERSION > 4) || ((PERL_VERSION == 4) && (PERL_SUBVERSION >= 0))) + Perl_warner_nocontext(packWARN(WARN_MISC), "Perl_warner_nocontext %s:%d", "bar", 42); +#endif + +void +ckWARN() + CODE: +#if ((PERL_VERSION > 4) || ((PERL_VERSION == 4) && (PERL_SUBVERSION >= 0))) + if (ckWARN(WARN_MISC)) + Perl_warner_nocontext(packWARN(WARN_MISC), "ckWARN %s:%d", "bar", 42); +#endif diff --git a/ext/Devel/PPPort/PPPort_pm.PL b/ext/Devel/PPPort/PPPort_pm.PL index ee6ec75..c6a3f8b 100644 --- a/ext/Devel/PPPort/PPPort_pm.PL +++ b/ext/Devel/PPPort/PPPort_pm.PL @@ -4,9 +4,9 @@ # ################################################################################ # -# $Revision: 41 $ +# $Revision: 42 $ # $Author: mhx $ -# $Date: 2006/01/14 18:07:56 +0100 $ +# $Date: 2006/05/18 23:13:47 +0200 $ # ################################################################################ # @@ -335,9 +335,9 @@ __DATA__ # ################################################################################ # -# $Revision: 41 $ +# $Revision: 42 $ # $Author: mhx $ -# $Date: 2006/01/14 18:07:56 +0100 $ +# $Date: 2006/05/18 23:13:47 +0200 $ # ################################################################################ # @@ -499,7 +499,7 @@ require DynaLoader; use strict; use vars qw($VERSION @ISA $data); -$VERSION = do { my @r = '$Snapshot: /Devel-PPPort/3.08 $' =~ /(\d+\.\d+(?:_\d+)?)/; @r ? $r[0] : '9.99' }; +$VERSION = do { my @r = '$Snapshot: /Devel-PPPort/3.08_01 $' =~ /(\d+\.\d+(?:_\d+)?)/; @r ? $r[0] : '9.99' }; @ISA = qw(DynaLoader); @@ -603,12 +603,18 @@ __DATA__ %include sv_xpvf +%include warn + +%include pvs + %include magic %include cop %include grok +%include snprintf + %include exception #endif /* _P_P_PORTABILITY_H_ */ diff --git a/ext/Devel/PPPort/TODO b/ext/Devel/PPPort/TODO index 3728069..6214d6c 100644 --- a/ext/Devel/PPPort/TODO +++ b/ext/Devel/PPPort/TODO @@ -1,5 +1,13 @@ TODO: +* see if we can add more stuff from recent perls + +* see if we can implement sv_catpvf() for < 5.004 + +* add hv_stores() to blead + +* Andy's SvREFCNT_inc patches? + * MULTICALL ? * improve apicheck (things like utf8_mg_pos_init() are diff --git a/ext/Devel/PPPort/parts/apicheck.pl b/ext/Devel/PPPort/parts/apicheck.pl index d17345b..5a43ce0 100644 --- a/ext/Devel/PPPort/parts/apicheck.pl +++ b/ext/Devel/PPPort/parts/apicheck.pl @@ -5,9 +5,9 @@ # ################################################################################ # -# $Revision: 14 $ +# $Revision: 16 $ # $Author: mhx $ -# $Date: 2006/01/14 18:07:58 +0100 $ +# $Date: 2006/05/19 16:15:51 +0200 $ # ################################################################################ # @@ -152,6 +152,7 @@ print OUT < $n (\**) # pointer => $p + (?:\s*const\s*)? # const ((?:\[[^\]]*\])*) # dimension => $d $/x or die "$0 - cannot parse argument: [$a]\n"; diff --git a/ext/Devel/PPPort/parts/apidoc.fnc b/ext/Devel/PPPort/parts/apidoc.fnc index 1a7609b..337e217 100644 --- a/ext/Devel/PPPort/parts/apidoc.fnc +++ b/ext/Devel/PPPort/parts/apidoc.fnc @@ -34,6 +34,7 @@ Am|bool|SvVOK|SV* sv Am|char*|HePV|HE* he|STRLEN len Am|char*|HvNAME|HV* stash Am|char*|SvEND|SV* sv +Am|char*|SvGAMAGIC|SV* sv Am|char *|SvGROW|SV* sv|STRLEN len Am|char*|SvPVbyte_force|SV* sv|STRLEN len Am|char*|SvPVbyte_nolen|SV* sv @@ -113,9 +114,14 @@ Am|SV*|HeSVKEY|HE* he Am|SV*|HeSVKEY_set|HE* he|SV* sv Am|SV*|HeVAL|HE* he Am|SV*|newRV_inc|SV* sv -Am|SV*|NEWSV|int id|STRLEN len Am|SV*|ST|int ix +Am|SV*|SvREFCNT_inc_NN|SV* sv +Am|SV*|SvREFCNT_inc_simple_NN|SV* sv +Am|SV*|SvREFCNT_inc_simple|SV* sv +Am|SV*|SvREFCNT_inc_simple_void|SV* sv Am|SV*|SvREFCNT_inc|SV* sv +Am|SV*|SvREFCNT_inc_void_NN|SV* sv +Am|SV*|SvREFCNT_inc_void|SV* sv Am|SV*|SvRV|SV* sv Am|svtype|SvTYPE|SV* sv Ams||XCPT_RETHROW @@ -177,7 +183,9 @@ Am|void|mXPUSHu|UV uv Am|void|Newxc|void* ptr|int nitems|type|cast Am|void|Newx|void* ptr|int nitems|type Am|void|Newxz|void* ptr|int nitems|type +Am|void|PoisonNew|void* dest|int nitems|type Am|void|Poison|void* dest|int nitems|type +Am|void|PoisonWith|void* dest|int nitems|type|U8 byte Am|void|PUSHi|IV iv Am|void|PUSHMARK|SP Am|void|PUSHmortal @@ -222,7 +230,7 @@ Am|void|sv_setsv_nomg|SV* dsv|SV* ssv Am|void|SvSetSV_nosteal|SV* dsv|SV* ssv Am|void|SvSetSV|SV* dsb|SV* ssv Am|void|SvSHARE|SV* sv -Am|void|SvSTASH_set|SV* sv|STASH* val +Am|void|SvSTASH_set|SV* sv|HV* val Am|void|SvTAINTED_off|SV* sv Am|void|SvTAINTED_on|SV* sv Am|void|SvTAINT|SV* sv diff --git a/ext/Devel/PPPort/parts/base/5004050 b/ext/Devel/PPPort/parts/base/5004050 index 0888015..fdd3c62 100644 --- a/ext/Devel/PPPort/parts/base/5004050 +++ b/ext/Devel/PPPort/parts/base/5004050 @@ -6,6 +6,7 @@ PL_sv_yes # E SvGETMAGIC # U sv_catpvn_mg # U sv_catsv_mg # U +sv_usepvn_mg # U AvFILLp # added by devel/scanprov DEFSV # added by devel/scanprov ERRSV # added by devel/scanprov diff --git a/ext/Devel/PPPort/parts/base/5006000 b/ext/Devel/PPPort/parts/base/5006000 index 9d9f62c..46ab41a 100644 --- a/ext/Devel/PPPort/parts/base/5006000 +++ b/ext/Devel/PPPort/parts/base/5006000 @@ -222,7 +222,6 @@ newBINOP # E (Perl_newBINOP) newCONDOP # E (Perl_newCONDOP) newCONSTSUB # E (Perl_newCONSTSUB) newCVREF # E (Perl_newCVREF) -newFORM # E (Perl_newFORM) newFOROP # E (Perl_newFOROP) newGVOP # E (Perl_newGVOP) newGVREF # E (Perl_newGVREF) @@ -235,7 +234,6 @@ newLISTOP # E (Perl_newLISTOP) newLOGOP # E (Perl_newLOGOP) newLOOPEX # E (Perl_newLOOPEX) newLOOPOP # E (Perl_newLOOPOP) -newMYSUB # E newNULLLIST # E (Perl_newNULLLIST) newOP # E (Perl_newOP) newPADOP # E @@ -269,7 +267,6 @@ new_stackinfo # E (Perl_new_stackinfo) ninstr # E (Perl_ninstr) op_dump # E op_free # E (Perl_op_free) -pad_sv # E (Perl_pad_sv) perl_parse # E (perl_parse) pmflag # E (Perl_pmflag) pmop_dump # E @@ -326,7 +323,6 @@ save_re_context # E save_scalar # E (Perl_save_scalar) save_sptr # E (Perl_save_sptr) save_svref # E (Perl_save_svref) -save_threadsv # E (Perl_save_threadsv) save_vptr # E savepv # E (Perl_savepv) savepvn # E (Perl_savepvn) @@ -422,8 +418,6 @@ sv_true # E (Perl_sv_true) sv_unmagic # E (Perl_sv_unmagic) sv_untaint # E (Perl_sv_untaint) sv_upgrade # E (Perl_sv_upgrade) -sv_usepvn # E (Perl_sv_usepvn) -sv_usepvn_mg # E (Perl_sv_usepvn_mg) sv_utf8_decode # E sv_utf8_downgrade # E sv_utf8_encode # E @@ -480,11 +474,57 @@ PTR2IV # added by devel/scanprov PTR2NV # added by devel/scanprov PTR2UV # added by devel/scanprov PTRV # added by devel/scanprov +Perl_warner # added by devel/scanprov +Perl_warner_nocontext # added by devel/scanprov UVSIZE # added by devel/scanprov UVTYPE # added by devel/scanprov UVof # added by devel/scanprov UVuf # added by devel/scanprov UVxf # added by devel/scanprov +WARN_ALL # added by devel/scanprov +WARN_AMBIGUOUS # added by devel/scanprov +WARN_BAREWORD # added by devel/scanprov +WARN_CLOSED # added by devel/scanprov +WARN_CLOSURE # added by devel/scanprov +WARN_DEBUGGING # added by devel/scanprov +WARN_DEPRECATED # added by devel/scanprov +WARN_DIGIT # added by devel/scanprov +WARN_EXEC # added by devel/scanprov +WARN_EXITING # added by devel/scanprov +WARN_GLOB # added by devel/scanprov +WARN_INPLACE # added by devel/scanprov +WARN_INTERNAL # added by devel/scanprov +WARN_IO # added by devel/scanprov +WARN_MALLOC # added by devel/scanprov +WARN_MISC # added by devel/scanprov +WARN_NEWLINE # added by devel/scanprov +WARN_NUMERIC # added by devel/scanprov +WARN_ONCE # added by devel/scanprov +WARN_OVERFLOW # added by devel/scanprov +WARN_PACK # added by devel/scanprov +WARN_PARENTHESIS # added by devel/scanprov +WARN_PIPE # added by devel/scanprov +WARN_PORTABLE # added by devel/scanprov +WARN_PRECEDENCE # added by devel/scanprov +WARN_PRINTF # added by devel/scanprov +WARN_PROTOTYPE # added by devel/scanprov +WARN_QW # added by devel/scanprov +WARN_RECURSION # added by devel/scanprov +WARN_REDEFINE # added by devel/scanprov +WARN_REGEXP # added by devel/scanprov +WARN_RESERVED # added by devel/scanprov +WARN_SEMICOLON # added by devel/scanprov +WARN_SEVERE # added by devel/scanprov +WARN_SIGNAL # added by devel/scanprov +WARN_SUBSTR # added by devel/scanprov +WARN_SYNTAX # added by devel/scanprov +WARN_TAINT # added by devel/scanprov +WARN_UNINITIALIZED # added by devel/scanprov +WARN_UNOPENED # added by devel/scanprov +WARN_UNPACK # added by devel/scanprov +WARN_UNTIE # added by devel/scanprov +WARN_UTF8 # added by devel/scanprov +WARN_VOID # added by devel/scanprov XSprePUSH # added by devel/scanprov aTHX # added by devel/scanprov aTHX_ # added by devel/scanprov diff --git a/ext/Devel/PPPort/parts/base/5006001 b/ext/Devel/PPPort/parts/base/5006001 index eaebd56..5daad5a 100644 --- a/ext/Devel/PPPort/parts/base/5006001 +++ b/ext/Devel/PPPort/parts/base/5006001 @@ -1,4 +1,5 @@ 5.006001 +SvGAMAGIC # E apply_attrs_string # U bytes_to_utf8 # E gv_efullname4 # U diff --git a/ext/Devel/PPPort/parts/base/5007002 b/ext/Devel/PPPort/parts/base/5007002 index 8efc978..a526903 100644 --- a/ext/Devel/PPPort/parts/base/5007002 +++ b/ext/Devel/PPPort/parts/base/5007002 @@ -69,3 +69,4 @@ PERL_MAGIC_tiedscalar # added by devel/scanprov PERL_MAGIC_uvar # added by devel/scanprov PERL_MAGIC_vec # added by devel/scanprov PERL_UNUSED_DECL # added by devel/scanprov +PERL_UNUSED_VAR # added by devel/scanprov diff --git a/ext/Devel/PPPort/parts/base/5007003 b/ext/Devel/PPPort/parts/base/5007003 index 2d41668..63a0449 100644 --- a/ext/Devel/PPPort/parts/base/5007003 +++ b/ext/Devel/PPPort/parts/base/5007003 @@ -41,7 +41,6 @@ my_socketpair # E pack_cat # E perl_destruct # E (perl_destruct) pv_uni_display # E -regclass_swash # E (Perl_regclass_swash) save_shared_pvref # E savesharedpv # E sortsv # E @@ -49,7 +48,6 @@ sv_copypv # E sv_magicext # E sv_nolocking # E sv_nosharing # E -sv_nounlocking # E sv_pvn_nomg # E sv_recode_to_utf8 # E sv_uni_display # E @@ -84,3 +82,4 @@ dMY_CXT # added by devel/scanprov dMY_CXT_SV # added by devel/scanprov pMY_CXT # added by devel/scanprov pMY_CXT_ # added by devel/scanprov +packWARN # added by devel/scanprov diff --git a/ext/Devel/PPPort/parts/base/5008000 b/ext/Devel/PPPort/parts/base/5008000 index 5af2a55..9a91f3d 100644 --- a/ext/Devel/PPPort/parts/base/5008000 +++ b/ext/Devel/PPPort/parts/base/5008000 @@ -4,3 +4,5 @@ hv_iternext_flags # E hv_store_flags # E is_utf8_idcont # U nothreadhook # U +WARN_LAYER # added by devel/scanprov +WARN_THREADS # added by devel/scanprov diff --git a/ext/Devel/PPPort/parts/base/5008001 b/ext/Devel/PPPort/parts/base/5008001 index 2060d15..d0fec85 100644 --- a/ext/Devel/PPPort/parts/base/5008001 +++ b/ext/Devel/PPPort/parts/base/5008001 @@ -14,6 +14,7 @@ sv_setpviv # U sv_setpviv_mg # U unpackstring # U IN_PERL_COMPILETIME # added by devel/scanprov +PERL_ABS # added by devel/scanprov PERL_GCC_BRACE_GROUPS_FORBIDDEN # added by devel/scanprov PERL_MAGIC_utf8 # added by devel/scanprov PERL_MAGIC_vstring # added by devel/scanprov diff --git a/ext/Devel/PPPort/parts/base/5008008 b/ext/Devel/PPPort/parts/base/5008008 new file mode 100644 index 0000000..f17b19f --- /dev/null +++ b/ext/Devel/PPPort/parts/base/5008008 @@ -0,0 +1 @@ +5.008008 diff --git a/ext/Devel/PPPort/parts/base/5009000 b/ext/Devel/PPPort/parts/base/5009000 index 8b45dc7..8c39ded 100644 --- a/ext/Devel/PPPort/parts/base/5009000 +++ b/ext/Devel/PPPort/parts/base/5009000 @@ -5,3 +5,4 @@ upg_version # E vcmp # U vnumify # E vstringify # E +WARN_ASSERTIONS # added by devel/scanprov diff --git a/ext/Devel/PPPort/parts/base/5009003 b/ext/Devel/PPPort/parts/base/5009003 index c448c06..e50d5f1 100644 --- a/ext/Devel/PPPort/parts/base/5009003 +++ b/ext/Devel/PPPort/parts/base/5009003 @@ -1,13 +1,9 @@ 5.009003 -MULTICALL # E Newx # E Newxc # E Newxz # E -POP_MULTICALL # E -PUSH_MULTICALL # E SvMAGIC_set # U SvRV_set # U -SvSTASH_set # E SvUV_set # U av_arylen_p # E ckwarn # U @@ -33,8 +29,12 @@ newWHENOP # E newWHILEOP # E (Perl_newWHILEOP) ref # E (Perl_ref) sortsv_flags # U -stashpv_hvname_match # U vverify # U -PERL_BCDVERSION # added by devel/scanprov +PERL_UNUSED_ARG # added by devel/scanprov +STR_WITH_LEN # added by devel/scanprov SvPVX_const # added by devel/scanprov SvPVX_mutable # added by devel/scanprov +dVAR # added by devel/scanprov +hv_fetchs # added by devel/scanprov +newSVpvs # added by devel/scanprov +sv_catpvs # added by devel/scanprov diff --git a/ext/Devel/PPPort/parts/base/5009004 b/ext/Devel/PPPort/parts/base/5009004 new file mode 100644 index 0000000..eca5e86 --- /dev/null +++ b/ext/Devel/PPPort/parts/base/5009004 @@ -0,0 +1,26 @@ +5.009004 +MULTICALL # E +POP_MULTICALL # E +PUSH_MULTICALL # E +PoisonNew # E +PoisonWith # E +SvREFCNT_inc_NN # E +SvREFCNT_inc_simple # E +SvREFCNT_inc_simple_NN # E +SvREFCNT_inc_simple_void # E +SvREFCNT_inc_void # E +SvREFCNT_inc_void_NN # E +SvSTASH_set # E +gv_name_set # U +my_snprintf # U +my_vsnprintf # U +newXS_flags # E +pad_sv # U +regclass_swash # E (Perl_regclass_swash) +stashpv_hvname_match # U +sv_usepvn_flags # U +PERL_BCDVERSION # added by devel/scanprov +PERL_UNUSED_CONTEXT # added by devel/scanprov +SvVSTRING_mg # added by devel/scanprov +hv_stores # added by devel/scanprov +sv_setpvs # added by devel/scanprov diff --git a/ext/Devel/PPPort/parts/embed.fnc b/ext/Devel/PPPort/parts/embed.fnc index 2f0a8fd..dac19c7 100644 --- a/ext/Devel/PPPort/parts/embed.fnc +++ b/ext/Devel/PPPort/parts/embed.fnc @@ -129,6 +129,7 @@ ApR |UV |cast_uv |NV f ApR |I32 |my_chsize |int fd|Off_t length #endif pR |OP* |convert |I32 optype|I32 flags|NULLOK OP* o +pM |PERL_CONTEXT* |create_eval_scope|U32 flags : croak()'s first parm can be NULL. Otherwise, mod_perl breaks. Afprd |void |croak |NULLOK const char* pat|... Apr |void |vcroak |NN const char* pat|NULLOK va_list* args @@ -149,7 +150,10 @@ Afnp |void |sv_setpvf_mg_nocontext|NN SV* sv|NN const char* pat|... Afnp |int |fprintf_nocontext|NN PerlIO* stream|NN const char* fmt|... Afnp |int |printf_nocontext|NN const char* fmt|... #endif -p |void |cv_ckproto |NN const CV* cv|NULLOK const GV* gv|NULLOK const char* p +bp |void |cv_ckproto |NN const CV* cv|NULLOK const GV* gv\ + |NULLOK const char* p +p |void |cv_ckproto_len |NN const CV* cv|NULLOK const GV* gv\ + |NULLOK const char* p|const STRLEN len pd |CV* |cv_clone |NN CV* proto ApdR |SV* |gv_const_sv |NN GV* gv ApdR |SV* |cv_const_sv |NULLOK CV* cv @@ -164,7 +168,7 @@ ApPR |char** |get_op_names pPR |const char* |get_no_modify pPR |U32* |get_opargs ApPR |PPADDR_t*|get_ppaddr -EpR |I32 |cxinc +EXpR |I32 |cxinc Afp |void |deb |NN const char* pat|... Ap |void |vdeb |NN const char* pat|NULLOK va_list* args Ap |void |debprofdump @@ -173,6 +177,7 @@ Ap |I32 |debstack Ap |I32 |debstackptrs Ap |char* |delimcpy |NN char* to|NN const char* toend|NN const char* from \ |NN const char* fromend|int delim|NN I32* retlen +pM |void |delete_eval_scope p |void |deprecate |NN const char* s p |void |deprecate_old |NN const char* s Afp |OP* |die |NULLOK const char* pat|... @@ -180,7 +185,7 @@ p |OP* |vdie |NULLOK const char* pat|NULLOK va_list* args p |OP* |die_where |NULLOK const char* message|STRLEN msglen Ap |void |dounwind |I32 cxix pmb |bool |do_aexec |NULLOK SV* really|NN SV** mark|NN SV** sp -p |bool |do_aexec5 |NULLOK SV* really|NN SV** mark|NN SV** sp|int fd|int flag +p |bool |do_aexec5 |NULLOK SV* really|NN SV** mark|NN SV** sp|int fd|int do_report Ap |int |do_binmode |NN PerlIO *fp|int iotype|int mode p |void |do_chop |NN SV* asv|NN SV* sv Ap |bool |do_close |NN GV* gv|bool not_implicit @@ -198,7 +203,7 @@ Ap |int |do_spawn |NN char* cmd Ap |int |do_spawn_nowait|NN char* cmd #endif #if !defined(WIN32) -p |bool |do_exec3 |NN const char* cmd|int fd|int flag +p |bool |do_exec3 |NN const char* cmd|int fd|int do_report #endif p |void |do_execfree #if defined(HAS_MSG) || defined(HAS_SEM) || defined(HAS_SHM) @@ -277,11 +282,14 @@ Ap |GV* |gv_fetchpv |NN const char* name|I32 add|I32 sv_type Ap |void |gv_fullname |NN SV* sv|NN const GV* gv Apmb |void |gv_fullname3 |NN SV* sv|NN const GV* gv|NULLOK const char* prefix Ap |void |gv_fullname4 |NN SV* sv|NN const GV* gv|NULLOK const char* prefix|bool keepmain +pMox |GP * |newGP |NN GV *const gv Ap |void |gv_init |NN GV* gv|NULLOK HV* stash|NN const char* name|STRLEN len|int multi +Ap |void |gv_name_set |NN GV* gv|NN const char *name|U32 len|U32 flags Apd |HV* |gv_stashpv |NN const char* name|I32 create Apd |HV* |gv_stashpvn |NN const char* name|U32 namelen|I32 create Apd |HV* |gv_stashsv |NULLOK SV* sv|I32 create Apd |void |hv_clear |NULLOK HV* tb +poM |HV * |hv_copy_hints_hv|NN HV *const ohv Ap |void |hv_delayfree_ent|NN HV* hv|NULLOK HE* entry Apd |SV* |hv_delete |NULLOK HV* tb|NN const char* key|I32 klen|I32 flags Apd |SV* |hv_delete_ent |NULLOK HV* tb|NN SV* key|I32 flags|U32 hash @@ -299,6 +307,11 @@ ApMdR |HE* |hv_iternext_flags|NN HV* tb|I32 flags ApdR |SV* |hv_iterval |NN HV* tb|NN HE* entry Ap |void |hv_ksplit |NN HV* hv|IV newmax Apdbm |void |hv_magic |NN HV* hv|NULLOK GV* gv|int how +dpoM |HV * |refcounted_he_chain_2hv|NULLOK const struct refcounted_he *c +dpoM |void |refcounted_he_free|NULLOK struct refcounted_he *he +dpoM |struct refcounted_he *|refcounted_he_new \ + |NULLOK struct refcounted_he *const parent \ + |NULLOK SV *const key|NULLOK SV *const value Apd |SV** |hv_store |NULLOK HV* tb|NULLOK const char* key|I32 klen|NULLOK SV* val \ |U32 hash Apd |HE* |hv_store_ent |NULLOK HV* tb|NULLOK SV* key|NULLOK SV* val|U32 hash @@ -398,6 +411,7 @@ ApdR |bool |grok_numeric_radix|NN const char **sp|NN const char *send Apd |UV |grok_oct |NN const char* start|NN STRLEN* len_p|NN I32* flags|NULLOK NV *result p |int |magic_clearenv |NN SV* sv|NN MAGIC* mg p |int |magic_clear_all_env|NN SV* sv|NN MAGIC* mg +dp |int |magic_clearhint|NN SV* sv|NN MAGIC* mg p |int |magic_clearpack|NN SV* sv|NN MAGIC* mg p |int |magic_clearsig |NN SV* sv|NN MAGIC* mg p |int |magic_existspack|NN SV* sv|NN MAGIC* mg @@ -406,7 +420,6 @@ p |int |magic_freeovrld|NN SV* sv|NN MAGIC* mg p |int |magic_get |NN SV* sv|NN MAGIC* mg p |int |magic_getarylen|NN SV* sv|NN const MAGIC* mg p |int |magic_getdefelem|NN SV* sv|NN MAGIC* mg -p |int |magic_getglob |NN SV* sv|NN MAGIC* mg p |int |magic_getnkeys |NN SV* sv|NN MAGIC* mg p |int |magic_getpack |NN SV* sv|NN MAGIC* mg p |int |magic_getpos |NN SV* sv|NN MAGIC* mg @@ -429,6 +442,7 @@ p |int |magic_setdbline|NN SV* sv|NN MAGIC* mg p |int |magic_setdefelem|NN SV* sv|NN MAGIC* mg p |int |magic_setenv |NN SV* sv|NN MAGIC* mg p |int |magic_setfm |NN SV* sv|NN MAGIC* mg +dp |int |magic_sethint |NN SV* sv|NN MAGIC* mg p |int |magic_setisa |NN SV* sv|NN MAGIC* mg p |int |magic_setglob |NN SV* sv|NN MAGIC* mg p |int |magic_setmglob |NN SV* sv|NN MAGIC* mg @@ -454,8 +468,8 @@ p |char* |mem_collxfrm |NN const char* s|STRLEN len|NN STRLEN* xlen Afp |SV* |mess |NN const char* pat|... Ap |SV* |vmess |NN const char* pat|NULLOK va_list* args p |void |qerror |NN SV* err -Apd |void |sortsv |NN SV** array|size_t num_elts|SVCOMPARE_t cmp -Apd |void |sortsv_flags |NN SV** array|size_t num_elts|SVCOMPARE_t cmp|U32 flags +Apd |void |sortsv |NN SV** array|size_t num_elts|NN SVCOMPARE_t cmp +Apd |void |sortsv_flags |NN SV** array|size_t num_elts|NN SVCOMPARE_t cmp|U32 flags Apd |int |mg_clear |NN SV* sv Apd |int |mg_copy |NN SV* sv|NN SV* nsv|NULLOK const char* key|I32 klen pd |void |mg_localize |NN SV* sv|NN SV* nsv @@ -509,7 +523,11 @@ Ap |OP* |newANONSUB |I32 floor|NULLOK OP* proto|NULLOK OP* block Apa |OP* |newASSIGNOP |I32 flags|NULLOK OP* left|I32 optype|NULLOK OP* right Apa |OP* |newCONDOP |I32 flags|NN OP* first|NULLOK OP* trueop|NULLOK OP* falseop Apd |CV* |newCONSTSUB |NULLOK HV* stash|NULLOK const char* name|NULLOK SV* sv +#ifdef PERL_MAD +Ap |OP* |newFORM |I32 floor|NULLOK OP* o|NULLOK OP* block +#else Ap |void |newFORM |I32 floor|NULLOK OP* o|NULLOK OP* block +#endif Apa |OP* |newFOROP |I32 flags|NULLOK char* label|line_t forline \ |NULLOK OP* sv|NN OP* expr|NULLOK OP* block|NULLOK OP* cont Apa |OP* |newGIVENOP |NN OP* cond|NN OP* block|PADOFFSET defsv_off @@ -523,6 +541,9 @@ Apa |OP* |newRANGE |I32 flags|NN OP* left|NN OP* right Apa |OP* |newSLICEOP |I32 flags|NULLOK OP* subscript|NULLOK OP* listop Apa |OP* |newSTATEOP |I32 flags|NULLOK char* label|NULLOK OP* o Ap |CV* |newSUB |I32 floor|NULLOK OP* o|NULLOK OP* proto|NULLOK OP* block +ApM |CV * |newXS_flags |NULLOK const char *name|NN XSUBADDR_t subaddr\ + |NN const char *const filename \ + |NULLOK const char *const proto|U32 flags Apd |CV* |newXS |NULLOK const char* name|NN XSUBADDR_t f|NN const char* filename Apda |AV* |newAV Apa |OP* |newAVREF |NN OP* o @@ -539,8 +560,8 @@ Apa |OP* |newLISTOP |I32 type|I32 flags|NULLOK OP* first|NULLOK OP* last Apa |OP* |newPADOP |I32 type|I32 flags|NULLOK SV* sv Apa |OP* |newPMOP |I32 type|I32 flags Apa |OP* |newPVOP |I32 type|I32 flags|NULLOK char* pv -Apa |SV* |newRV |NN SV* pref -Apda |SV* |newRV_noinc |NN SV *sv +Apa |SV* |newRV |NN SV* sv +Apda |SV* |newRV_noinc |NN SV* sv Apda |SV* |newSV |STRLEN len Apa |OP* |newSVREF |NN OP* o Apa |OP* |newSVOP |I32 type|I32 flags|NN SV* sv @@ -553,7 +574,7 @@ Apda |SV* |newSVhek |NULLOK const HEK *hek Apda |SV* |newSVpvn_share |NULLOK const char* s|I32 len|U32 hash Afpda |SV* |newSVpvf |NN const char* pat|... Apa |SV* |vnewSVpvf |NN const char* pat|NULLOK va_list* args -Apda |SV* |newSVrv |NN SV* rv|NULLOK const char* classname +Apd |SV* |newSVrv |NN SV* rv|NULLOK const char* classname Apda |SV* |newSVsv |NULLOK SV* old Apa |OP* |newUNOP |I32 type|I32 flags|NULLOK OP* first Apa |OP* |newWHENOP |NULLOK OP* cond|NN OP* block @@ -575,9 +596,13 @@ ApP |char* |ninstr |NN const char* big|NN const char* bigend \ |NN const char* little|NN const char* lend pr |OP* |oopsCV |NN OP* o Ap |void |op_free |NULLOK OP* arg +#ifdef PERL_MAD +p |OP* |package |NN OP* o +#else p |void |package |NN OP* o +#endif pd |PADOFFSET|pad_alloc |I32 optype|U32 tmptype -p |PADOFFSET|allocmy |NN char* name +p |PADOFFSET|allocmy |NN const char *const name pdR |PADOFFSET|pad_findmy |NN const char* name Ap |PADOFFSET|find_rundefsvoffset | pR |OP* |oopsAV |NN OP* o @@ -631,8 +656,8 @@ p |OP* |prepend_elem |I32 optype|NULLOK OP* head|NULLOK OP* tail Ap |void |push_scope Amb |OP* |ref |NULLOK OP* o|I32 type p |OP* |refkids |NULLOK OP* o|I32 type -Ap |void |regdump |NN regexp* r -Ap |SV* |regclass_swash |NN const struct regnode *n|bool doinit|NULLOK SV **listsvp|NULLOK SV **altsvp +Ap |void |regdump |NN const regexp* r +Ap |SV* |regclass_swash |NULLOK const regexp *prog|NN const struct regnode *n|bool doinit|NULLOK SV **listsvp|NULLOK SV **altsvp Ap |I32 |pregexec |NN regexp* prog|NN char* stringarg \ |NN char* strend|NN char* strbeg|I32 minend \ |NN SV* screamer|U32 nosave @@ -646,7 +671,7 @@ Ap |I32 |regexec_flags |NN regexp* prog|NN char* stringarg \ |NN char* strend|NN char* strbeg|I32 minend \ |NN SV* screamer|NULLOK void* data|U32 flags ApR |regnode*|regnext |NN regnode* p -Ep |void |regprop |NN SV* sv|NN const regnode* o +Ep |void |regprop |NULLOK const regexp *prog|NN SV* sv|NN const regnode* o Ap |void |repeatcpy |NN char* to|NN const char* from|I32 len|I32 count ApP |char* |rninstr |NN const char* big|NN const char* bigend \ |NN const char* little|NN const char* lend @@ -666,7 +691,7 @@ Apda |char* |savesharedpv |NULLOK const char* pv Apda |char* |savesvpv |NN SV* sv Ap |void |savestack_grow Ap |void |savestack_grow_cnt |I32 need -Ap |void |save_aelem |NN const AV* av|I32 idx|NN SV **sptr +Ap |void |save_aelem |NN AV* av|I32 idx|NN SV **sptr Ap |I32 |save_alloc |I32 size|I32 pad Ap |void |save_aptr |NN AV** aptr Ap |AV* |save_ary |NN GV* gv @@ -704,7 +729,6 @@ Ap |void |save_re_context Ap |void |save_padsv |PADOFFSET off Ap |void |save_sptr |NN SV** sptr Ap |SV* |save_svref |NN SV** sptr -Apr |SV** |save_threadsv |PADOFFSET i p |OP* |sawparens |NULLOK OP* o p |OP* |scalar |NULLOK OP* o p |OP* |scalarkids |NULLOK OP* o @@ -735,6 +759,10 @@ p |void |sub_crush_depth|NN CV* cv Apd |bool |sv_2bool |NN SV* sv Apd |CV* |sv_2cv |NULLOK SV* sv|NN HV** st|NN GV** gvp|I32 lref Apd |IO* |sv_2io |NN SV* sv +#ifdef PERL_IN_SV_C +s |bool |glob_2number |NN GV* const gv +s |char* |glob_2pv |NN GV* const gv|NULLOK STRLEN * const len +#endif Amb |IV |sv_2iv |NN SV* sv Apd |IV |sv_2iv_flags |NN SV* sv|I32 flags Apd |SV* |sv_2mortal |NULLOK SV* sv @@ -790,7 +818,7 @@ Apd |STRLEN |sv_len |NULLOK SV* sv Apd |STRLEN |sv_len_utf8 |NULLOK SV* sv Apd |void |sv_magic |NN SV* sv|NULLOK SV* obj|int how|NULLOK const char* name \ |I32 namlen -Apd |MAGIC *|sv_magicext |NN SV* sv|NULLOK SV* obj|int how|NULLOK const MGVTBL *vtbl \ +Apd |MAGIC *|sv_magicext |NN SV* sv|NULLOK SV* obj|int how|NULLOK MGVTBL *vtbl \ |NULLOK const char* name|I32 namlen ApdaR |SV* |sv_mortalcopy |NULLOK SV* oldsv ApdR |SV* |sv_newmortal @@ -829,7 +857,9 @@ Apdmb |void |sv_unref |NN SV* sv Apd |void |sv_unref_flags |NN SV* sv|U32 flags Apd |void |sv_untaint |NN SV* sv Apd |void |sv_upgrade |NN SV* sv|U32 mt -Apd |void |sv_usepvn |NN SV* sv|NULLOK char* ptr|STRLEN len +Apdmb |void |sv_usepvn |NN SV* sv|NULLOK char* ptr|STRLEN len +Apd |void |sv_usepvn_flags|NN SV* sv|NULLOK char* ptr|STRLEN len\ + |U32 flags Apd |void |sv_vcatpvfn |NN SV* sv|NN const char* pat|STRLEN patlen \ |NULLOK va_list* args|NULLOK SV** svargs|I32 svmax \ |NULLOK bool *maybe_tainted @@ -856,8 +886,13 @@ Apd |I32 |unpack_str |NN const char *pat|NN const char *patend|NN const char *s Apd |I32 |unpackstring |NN const char *pat|NN const char *patend|NN const char *s \ |NN const char *strend|U32 flags Ap |void |unsharepvn |NULLOK const char* sv|I32 len|U32 hash -p |void |unshare_hek |NULLOK HEK* hek +XEp |void |unshare_hek |NULLOK HEK* hek +#ifdef PERL_MAD +p |OP * |utilize |int aver|I32 floor|NULLOK OP* version \ + |NN OP* idop|NULLOK OP* arg +#else p |void |utilize |int aver|I32 floor|NULLOK OP* version|NN OP* idop|NULLOK OP* arg +#endif Ap |U8* |utf16_to_utf8 |NN U8* p|NN U8 *d|I32 bytelen|NN I32 *newlen Ap |U8* |utf16_to_utf8_reversed|NN U8* p|NN U8 *d|I32 bytelen|NN I32 *newlen AdpPR |STRLEN |utf8_length |NN const U8* s|NN const U8 *e @@ -936,7 +971,7 @@ Apd |void |sv_setnv_mg |NN SV *sv|NV num Apd |void |sv_setpv_mg |NN SV *sv|NULLOK const char *ptr Apd |void |sv_setpvn_mg |NN SV *sv|NN const char *ptr|STRLEN len Apd |void |sv_setsv_mg |NN SV *dstr|NULLOK SV *sstr -Apd |void |sv_usepvn_mg |NN SV *sv|NULLOK char *ptr|STRLEN len +Apdbm |void |sv_usepvn_mg |NN SV *sv|NULLOK char *ptr|STRLEN len ApR |MGVTBL*|get_vtbl |int vtbl_id Ap |char* |pv_display |NN SV *dsv|NN const char *pv|STRLEN cur|STRLEN len \ |STRLEN pvlim @@ -971,7 +1006,12 @@ Apd |SV* |sv_rvweaken |NN SV *sv p |int |magic_killbackrefs|NN SV *sv|NN MAGIC *mg Ap |OP* |newANONATTRSUB |I32 floor|NULLOK OP *proto|NULLOK OP *attrs|NULLOK OP *block Ap |CV* |newATTRSUB |I32 floor|NULLOK OP *o|NULLOK OP *proto|NULLOK OP *attrs|NULLOK OP *block +#ifdef PERL_MAD +Apr |OP * |newMYSUB |I32 floor|NULLOK OP *o|NULLOK OP *proto \ + |NULLOK OP *attrs|NULLOK OP *block +#else Apr |void |newMYSUB |I32 floor|NULLOK OP *o|NULLOK OP *proto|NULLOK OP *attrs|NULLOK OP *block +#endif p |OP * |my_attrs |NN OP *o|NULLOK OP *attrs p |void |boot_core_xsutils #if defined(USE_ITHREADS) @@ -1012,18 +1052,22 @@ pMX |int |sv_release_IVX |NN SV *sv Adp |void |sv_nosharing |NULLOK SV *sv Adpbm |void |sv_nolocking |NULLOK SV *sv +#ifdef NO_MATHOMS Adpbm |void |sv_nounlocking |NULLOK SV *sv +#else +Adpb |void |sv_nounlocking |NULLOK SV *sv +#endif Adp |int |nothreadhook END_EXTERN_C #if defined(PERL_IN_DOOP_C) || defined(PERL_DECL_PROT) -sR |I32 |do_trans_simple |NN SV *sv -sR |I32 |do_trans_count |NN SV *sv -sR |I32 |do_trans_complex |NN SV *sv -sR |I32 |do_trans_simple_utf8 |NN SV *sv -sR |I32 |do_trans_count_utf8 |NN SV *sv -sR |I32 |do_trans_complex_utf8 |NN SV *sv +sR |I32 |do_trans_simple |NN SV * const sv +sR |I32 |do_trans_count |NN SV * const sv +sR |I32 |do_trans_complex |NN SV * const sv +sR |I32 |do_trans_simple_utf8 |NN SV * const sv +sR |I32 |do_trans_count_utf8 |NN SV * const sv +sR |I32 |do_trans_complex_utf8 |NN SV * const sv #endif #if defined(PERL_IN_GV_C) || defined(PERL_DECL_PROT) @@ -1031,20 +1075,25 @@ s |void |gv_init_sv |NN GV *gv|I32 sv_type s |void |require_errno |NN GV *gv #endif +: #if defined(PERL_IN_HV_C) || defined(PERL_IN_SV_C) || defined(PERL_DECL_PROT) +paRxo |void* |get_arena |int svtype +: #endif + #if defined(PERL_IN_HV_C) || defined(PERL_DECL_PROT) s |void |hsplit |NN HV *hv s |void |hfreeentries |NN HV *hv sa |HE* |new_he -sa |HEK* |save_hek_flags |NN const char *str|I32 len|U32 hash|int flags -s |void |hv_magic_check |NN HV *hv|NN bool *needs_copy|NN bool *needs_store +sanR |HEK* |save_hek_flags |NN const char *str|I32 len|U32 hash|int flags +sn |void |hv_magic_check |NN HV *hv|NN bool *needs_copy|NN bool *needs_store s |void |unshare_hek_or_pvn|NULLOK const HEK* hek|NULLOK const char* str|I32 len|U32 hash sR |HEK* |share_hek_flags|NN const char* sv|I32 len|U32 hash|int flags rs |void |hv_notallowed |int flags|NN const char *key|I32 klen|NN const char *msg -s |struct xpvhv_aux*|hv_auxinit|NN HV *hv +sn |struct xpvhv_aux*|hv_auxinit|NN HV *hv sM |SV* |hv_delete_common|NULLOK HV* tb|NULLOK SV* keysv|NULLOK const char* key \ |STRLEN klen|int k_flags|I32 d_flags|U32 hash sM |HE* |hv_fetch_common|NULLOK HV* tb|NULLOK SV* keysv|NULLOK const char* key \ |STRLEN klen|int flags|int action|NULLOK SV* val|U32 hash +sM |void |clear_placeholders |NN HV* hb|U32 items #endif #if defined(PERL_IN_MG_C) || defined(PERL_DECL_PROT) @@ -1100,7 +1149,7 @@ pR |OP* |ck_substr |NN OP *o pR |OP* |ck_svconst |NN OP *o pR |OP* |ck_trunc |NN OP *o pR |OP* |ck_unpack |NN OP *o -sR |bool |is_handle_constructor|NN const OP *o|I32 numargs +sRn |bool |is_handle_constructor|NN const OP *o|I32 numargs sR |I32 |is_list_assignment|NULLOK const OP *o s |void |cop_free |NN COP *cop s |OP* |modkids |NULLOK OP *o|I32 type @@ -1109,7 +1158,7 @@ sR |OP* |newDEFSVOP sR |OP* |new_logop |I32 type|I32 flags|NN OP **firstp|NN OP **otherp s |void |simplify_sort |NN OP *o s |const char* |gv_ename |NN GV *gv -s |bool |scalar_mod_type|NN const OP *o|I32 type +sRn |bool |scalar_mod_type|NN const OP *o|I32 type s |OP * |my_kid |NULLOK OP *o|NULLOK OP *attrs|NN OP **imopsp s |OP * |dup_attrlist |NN OP *o s |void |apply_attrs |NN HV *stash|NN SV *target|NULLOK OP *attrs|bool for_my @@ -1119,7 +1168,7 @@ s |void |no_bareword_allowed|NN const OP *o sR |OP* |no_fh_allowed|NN OP *o sR |OP* |too_few_arguments|NN OP *o|NN const char* name sR |OP* |too_many_arguments|NN OP *o|NN const char* name -s |bool |looks_like_bool|NN OP* o +s |bool |looks_like_bool|NN const OP* o s |OP* |newGIVWHENOP |NULLOK OP* cond|NN OP *block \ |I32 enter_opcode|I32 leave_opcode \ |PADOFFSET entertarg @@ -1132,7 +1181,7 @@ Ap |void |Slab_Free |NN void *op #if defined(PERL_IN_PERL_C) || defined(PERL_DECL_PROT) s |void |find_beginning -s |void |forbid_setid |NN const char * s +s |void |forbid_setid |const char flag|const int suidscript s |void |incpush |NULLOK const char *dir|bool addsubdirs|bool addoldvers|bool usesep|bool canrelocate s |void |init_interp s |void |init_ids @@ -1143,16 +1192,17 @@ s |void |init_postdump_symbols|int argc|NN char **argv|NULLOK char **env s |void |init_predump_symbols rs |void |my_exit_jump s |void |nuke_stacks -s |void |open_script |NN const char *scriptname|bool dosearch|NN SV *sv +s |int |open_script |NN const char *scriptname|bool dosearch \ + |NN SV *sv|NN int *suidscript s |void |usage |NN const char *name -s |void |validate_suid |NN const char *validarg|NN const char *scriptname +s |void |validate_suid |NN const char *validarg \ + |NN const char *scriptname|int fdscript \ + |int suidscript # if defined(IAMSUID) s |int |fd_on_nosuid_fs|int fd # endif s |void* |parse_body |NULLOK char **env|XSINIT_t xsinit rs |void |run_body |I32 oldscope -s |void |call_body |NN const OP *myop|bool is_eval -s |void* |call_list_body |NN CV *cv s |SV * |incpush_if_exists|NN SV *dir #endif @@ -1174,6 +1224,7 @@ sR |const char *|get_num |NN const char *ppat|NN I32 *lenptr ns |bool |need_utf8 |NN const char *pat|NN const char *patend ns |char |first_symbol |NN const char *pat|NN const char *patend sR |char * |sv_exp_grow |NN SV *sv|STRLEN needed +sR |char * |bytes_to_uni |NN const U8 *start|STRLEN len|NN char *dest #endif #if defined(PERL_IN_PP_CTL_C) || defined(PERL_DECL_PROT) @@ -1193,7 +1244,7 @@ s |void |save_lines |NULLOK AV *array|NN SV *sv sR |OP* |doeval |int gimme|NULLOK OP** startop|NULLOK CV* outside|U32 seq sR |PerlIO *|check_type_and_open|NN const char *name|NN const char *mode sR |PerlIO *|doopen_pm |NN const char *name|NN const char *mode -sR |bool |path_is_absolute|NN const char *name +sRn |bool |path_is_absolute|NN const char *name sR |I32 |run_user_filter|int idx|NN SV *buf_sv|int maxlen sR |PMOP* |make_matcher |NN regexp* re sR |bool |matcher_matches_sv|NN PMOP* matcher|NN SV* sv @@ -1225,6 +1276,7 @@ s |int |emulate_eaccess|NN const char* path|Mode_t mode # if !defined(HAS_MKDIR) || !defined(HAS_RMDIR) sR |int |dooneliner |NN const char *cmd|NN const char *filename # endif +s |SV * |space_join_names_mortal|NN char *const *array #endif #if defined(PERL_IN_REGCOMP_C) || defined(PERL_DECL_PROT) @@ -1232,34 +1284,34 @@ Es |regnode*|reg |NN struct RExC_state_t *state|I32 paren|NN I32 *flagp Es |regnode*|reganode |NN struct RExC_state_t *state|U8 op|U32 arg Es |regnode*|regatom |NN struct RExC_state_t *state|NN I32 *flagp Es |regnode*|regbranch |NN struct RExC_state_t *state|NN I32 *flagp|I32 first -Es |void |reguni |NN const struct RExC_state_t *state|UV uv|NN char *s|NN STRLEN *lenp +Es |STRLEN |reguni |NN const struct RExC_state_t *state|UV uv|NN char *s Es |regnode*|regclass |NN struct RExC_state_t *state -ERs |I32 |regcurly |NN const char * +ERsn |I32 |regcurly |NN const char * Es |regnode*|reg_node |NN struct RExC_state_t *state|U8 op Es |regnode*|regpiece |NN struct RExC_state_t *state|NN I32 *flagp Es |void |reginsert |NN struct RExC_state_t *state|U8 op|NN regnode *opnd -Es |void |regoptail |NN struct RExC_state_t *state|NN regnode *p|NN regnode *val -Es |void |regtail |NN struct RExC_state_t *state|NN regnode *p|NN regnode *val -Es |char* |regwhite |NN char *p|NN const char *e +Es |void |regtail |NN const struct RExC_state_t *state|NN regnode *p|NN const regnode *val +EsRn |char* |regwhite |NN char *p|NN const char *e Es |char* |nextchar |NN struct RExC_state_t *state # ifdef DEBUGGING -Es |regnode*|dumpuntil |NN regnode *start|NN regnode *node \ - |NULLOK regnode *last|NN SV* sv|I32 l +Es |const regnode*|dumpuntil|NN const regexp *r|NN const regnode *start \ + |NN const regnode *node \ + |NULLOK const regnode *last|NN SV* sv|I32 l Es |void |put_byte |NN SV* sv|int c # endif -Es |void |scan_commit |NN struct RExC_state_t* state|NN struct scan_data_t *data -Es |void |cl_anything |NN struct RExC_state_t* state|NN struct regnode_charclass_class *cl -Es |int |cl_is_anything |NN const struct regnode_charclass_class *cl -Es |void |cl_init |NN struct RExC_state_t* state|NN struct regnode_charclass_class *cl -Es |void |cl_init_zero |NN struct RExC_state_t* state|NN struct regnode_charclass_class *cl -Es |void |cl_and |NN struct regnode_charclass_class *cl \ +Es |void |scan_commit |NN const struct RExC_state_t* state|NN struct scan_data_t *data +Esn |void |cl_anything |NN const struct RExC_state_t* state|NN struct regnode_charclass_class *cl +EsRn |int |cl_is_anything |NN const struct regnode_charclass_class *cl +Esn |void |cl_init |NN const struct RExC_state_t* state|NN struct regnode_charclass_class *cl +Esn |void |cl_init_zero |NN const struct RExC_state_t* state|NN struct regnode_charclass_class *cl +Esn |void |cl_and |NN struct regnode_charclass_class *cl \ |NN const struct regnode_charclass_class *and_with -Es |void |cl_or |NN struct RExC_state_t* state|NN struct regnode_charclass_class *cl \ +Esn |void |cl_or |NN const struct RExC_state_t* state|NN struct regnode_charclass_class *cl \ |NN const struct regnode_charclass_class *or_with Es |I32 |study_chunk |NN struct RExC_state_t* state|NN regnode **scanp \ |NN I32 *deltap|NN regnode *last|NULLOK struct scan_data_t *data \ |U32 flags|U32 depth -Es |I32 |add_data |NN struct RExC_state_t* state|I32 n|NN const char *s +EsRn |I32 |add_data |NN struct RExC_state_t* state|I32 n|NN const char *s rs |void |re_croak2 |NN const char* pat1|NN const char* pat2|... Es |I32 |regpposixcc |NN struct RExC_state_t* state|I32 value Es |void |checkposixcc |NN struct RExC_state_t* state @@ -1270,20 +1322,16 @@ Es |I32 |make_trie |NN struct RExC_state_t* state|NN regnode *startbranch \ #endif #if defined(PERL_IN_REGEXEC_C) || defined(PERL_DECL_PROT) -ERs |I32 |regmatch |NN regnode *prog -ERs |I32 |regrepeat |NN const regnode *p|I32 max -ERs |I32 |regrepeat_hard |NN regnode *p|I32 max|NN I32 *lp -ERs |I32 |regtry |NN regexp *prog|NN char *startpos -ERs |bool |reginclass |NN const regnode *n|NN const U8 *p|NULLOK STRLEN *lenp\ +ERs |I32 |regmatch |NN const regmatch_info *reginfo|NN regnode *prog +ERs |I32 |regrepeat |NN const regexp *prog|NN const regnode *p|I32 max +ERs |I32 |regtry |NN const regmatch_info *reginfo|NN char *startpos +ERs |bool |reginclass |NULLOK const regexp *prog|NN const regnode *n|NN const U8 *p|NULLOK STRLEN *lenp\ |bool do_utf8sv_is_utf8 Es |CHECKPOINT|regcppush |I32 parenfloor -Es |char*|regcppop -Es |void |cache_re |NN regexp *prog -ERs |U8* |reghop |NN U8 *pos|I32 off -ERs |U8* |reghop3 |NN U8 *pos|I32 off|NN U8 *lim -ERs |U8* |reghopmaybe |NN U8 *pos|I32 off -ERs |U8* |reghopmaybe3 |NN U8 *pos|I32 off|NN U8 *lim -ERs |char* |find_byclass |NN regexp * prog|NN regnode *c|NN char *s|NN const char *strend|I32 norun +Es |char* |regcppop |NN const regexp *rex +ERsn |U8* |reghop3 |NN U8 *pos|I32 off|NN const U8 *lim +ERsn |U8* |reghopmaybe3 |NN U8 *pos|I32 off|NN const U8 *lim +ERs |char* |find_byclass |NN regexp * prog|NN const regnode *c|NN char *s|NN const char *strend|NULLOK const regmatch_info *reginfo Es |void |to_utf8_substr |NN regexp * prog Es |void |to_byte_substr |NN regexp * prog #endif @@ -1292,7 +1340,9 @@ Es |void |to_byte_substr |NN regexp * prog s |CV* |deb_curcv |I32 ix s |void |debprof |NN const OP *o s |void |sequence |NULLOK const OP *o +s |void |sequence_tail |NULLOK const OP *o s |UV |sequence_num |NULLOK const OP *o +s |SV* |pm_description |NN const PMOP *pm #endif #if defined(PERL_IN_SCOPE_C) || defined(PERL_DECL_PROT) @@ -1323,18 +1373,34 @@ s |int |sv_2iuv_non_preserve |NN SV *sv|I32 numtype # endif sR |I32 |expect_number |NN char** pattern # -s |bool |utf8_mg_pos |NN SV *sv|NN MAGIC **mgp|NN STRLEN **cachep \ - |I32 i|NN I32 *offsetp|I32 uoff \ - |NN const U8 **sp|NN const U8 *start \ - |NN const U8 *send -s |bool |utf8_mg_pos_init |NN SV *sv|NN MAGIC **mgp \ - |NN STRLEN **cachep|I32 i|I32 offsetp \ - |NN const U8 *s|NN const U8 *start +sn |STRLEN |sv_pos_u2b_forwards|NN const U8 *const start \ + |NN const U8 *const send|STRLEN uoffset +sn |STRLEN |sv_pos_u2b_midway|NN const U8 *const start \ + |NN const U8 *send|STRLEN uoffset|STRLEN uend +s |STRLEN |sv_pos_u2b_cached|NN SV *sv|NN MAGIC **mgp \ + |NN const U8 *const start|NN const U8 *const send \ + |STRLEN uoffset|STRLEN uoffset0|STRLEN boffset0 +s |void |utf8_mg_pos_cache_update|NN SV *sv|NN MAGIC **mgp \ + |STRLEN byte|STRLEN utf8|STRLEN blen +s |STRLEN |sv_pos_b2u_forwards|NN const U8 *s|NN const U8 *const target +s |STRLEN |sv_pos_b2u_midway|NN const U8 *s|NN const U8 *const target \ + |NN const U8 *end|STRLEN endu s |char * |stringify_regexp|NN SV *sv|NN MAGIC *mg|NULLOK STRLEN *lp sn |char * |F0convert |NV nv|NN char *endbuf|NN STRLEN *len -#if defined(PERL_OLD_COPY_ON_WRITE) +# if defined(PERL_OLD_COPY_ON_WRITE) sM |void |sv_release_COW |NN SV *sv|NN const char *pvx|STRLEN len|NN SV *after -#endif +# endif +s |SV * |more_sv +s |void * |more_bodies |svtype sv_type +s |bool |sv_2iuv_common |NN SV *sv +s |void |glob_assign_glob|NN SV *dstr|NN SV *sstr|const int dtype +s |void |glob_assign_ref|NN SV *dstr|NN SV *sstr +# if defined(USE_ITHREADS) +sRn |PTR_TBL_ENT_t *|ptr_table_find|NN PTR_TBL_t *tbl|NN const void *sv +# endif +s |SV * |find_hash_subscript|NULLOK HV *hv|NN SV *val +s |I32 |find_array_subscript|NULLOK AV *av|NN SV *val +s |SV * |find_uninit_var|NULLOK OP *obase|NULLOK SV *uninit_sv|bool match #endif #if defined(PERL_IN_TOKE_C) || defined(PERL_DECL_PROT) @@ -1359,8 +1425,9 @@ s |char* |scan_word |NN char *s|NN char *dest|STRLEN destlen \ |int allow_package|NN STRLEN *slp sR |char* |skipspace |NN char *s sR |char* |swallow_bom |NN U8 *s -s |void |checkcomma |NN char *s|NN const char *name|NN const char *what -s |bool |feature_is_enabled|NN char* name|STRLEN namelen +s |void |checkcomma |NN const char *s|NN const char *name \ + |NN const char *what +s |bool |feature_is_enabled|NN const char* name|STRLEN namelen s |void |force_ident |NN const char *s|int kind s |void |incline |NN char *s s |int |intuit_method |NN char *s|NULLOK GV *gv|NULLOK CV *cv @@ -1385,11 +1452,12 @@ s |void |strip_return |NN SV *sv # endif # if defined(DEBUGGING) s |int |tokereport |I32 rv +s |void |printbuf |NN const char* fmt|NN const char* s # endif #endif #if defined(PERL_IN_UNIVERSAL_C) || defined(PERL_DECL_PROT) -s |SV*|isa_lookup |NULLOK HV *stash|NN const char *name|NULLOK HV *name_stash|int len|int level +s |bool|isa_lookup |NULLOK HV *stash|NN const char *name|NULLOK HV *name_stash|int len|int level #endif #if defined(PERL_IN_LOCALE_C) || defined(PERL_DECL_PROT) @@ -1399,7 +1467,7 @@ s |char* |stdize_locale |NN char* locs #endif #if defined(PERL_IN_UTIL_C) || defined(PERL_DECL_PROT) -s |COP* |closest_cop |NN COP *cop|NULLOK const OP *o +s |const COP*|closest_cop |NN const COP *cop|NULLOK const OP *o s |SV* |mess_alloc s |const char *|vdie_croak_common|NULLOK const char *pat|NULLOK va_list *args \ |NULLOK STRLEN *msglen|NULLOK I32* utf8 @@ -1413,7 +1481,7 @@ sn |NV|mulexp10 |NV value|I32 exponent #endif #if defined(PERL_IN_UTF8_C) || defined(PERL_DECL_PROT) -s |STRLEN |is_utf8_char_slow|NN const U8 *s|const STRLEN len +sRn |STRLEN |is_utf8_char_slow|NN const U8 *s|const STRLEN len sR |bool |is_utf8_common |NN const U8 *const p|NN SV **swash|NN const char * const swashname sR |SV* |swash_get |NN SV* swash|UV start|UV span #endif @@ -1468,7 +1536,7 @@ s |void |deb_stack_n |NN SV** stack_base|I32 stack_min \ pda |PADLIST*|pad_new |int flags pd |void |pad_undef |NN CV* cv pd |PADOFFSET|pad_add_name |NN const char *name\ - |NULLOK HV* typestash|NULLOK HV* ourstash|bool clone + |NULLOK HV* typestash|NULLOK HV* ourstash|bool clone|bool state pd |PADOFFSET|pad_add_anon |NN SV* sv|OPCODE op_type pd |void |pad_check_dup |NN const char* name|bool is_our|NN const HV* ourstash #ifdef DEBUGGING @@ -1503,7 +1571,7 @@ ApoR |I32* |hv_riter_p |NN HV* hv ApoR |HE** |hv_eiter_p |NN HV* hv Apo |void |hv_riter_set |NN HV* hv|I32 riter Apo |void |hv_eiter_set |NN HV* hv|NULLOK HE* eiter -Ap |void |hv_name_set |NN HV* hv|NULLOK const char *name|I32 len|int flags +Ap |void |hv_name_set |NN HV* hv|NULLOK const char *name|U32 len|U32 flags poM |AV** |hv_backreferences_p |NN HV* hv #if defined(PERL_IN_DUMP_C) || defined(PERL_IN_HV_C) || defined(PERL_IN_SV_C) || defined(PERL_DECL_PROT) poM |void |hv_kill_backrefs |NN HV* hv @@ -1609,6 +1677,8 @@ Ap |GV* |gv_SVadd |NN GV* gv #endif Apo |bool |ckwarn |U32 w Apo |bool |ckwarn_d |U32 w +XEopMa |STRLEN *|new_warnings_bitfield|NULLOK STRLEN *buffer \ + |NN const char *const bits|STRLEN size p |void |offer_nice_chunk |NN void *chunk|U32 chunk_size @@ -1616,12 +1686,63 @@ p |void |offer_nice_chunk |NN void *chunk|U32 chunk_size Apnod |int |my_sprintf |NN char *buffer|NN const char *pat|... #endif +Apnod |int |my_snprintf |NN char *buffer|const Size_t len|NN const char *format|... +Apnod |int |my_vsnprintf |NN char *buffer|const Size_t len|NN const char *format|va_list ap + px |void |my_clearenv #ifdef PERL_IMPLICIT_CONTEXT Apo |void* |my_cxt_init |NN int *index|size_t size #endif +#ifdef PERL_MAD +Mnp |void |pad_peg |NN const char* s +#if defined(PERL_IN_DUMP_C) || defined(PERL_DECL_PROT) +sf |void |xmldump_attr |I32 level|NN PerlIO *file|NN const char* pat \ + |... +#endif +Mfp |void |xmldump_indent |I32 level|NN PerlIO *file|NN const char* pat \ + |... +Mp |void |xmldump_vindent|I32 level|NN PerlIO *file|NN const char* pat \ + |NULLOK va_list *args +Mp |void |xmldump_all +Mp |void |xmldump_packsubs |NN const HV* stash +Mp |void |xmldump_sub |NN const GV* gv +Mp |void |xmldump_form |NN const GV* gv +Mp |void |xmldump_eval +Mp |char* |sv_catxmlsv |NN SV *dsv|NN SV *ssv +Mp |char* |sv_catxmlpvn |NN SV *dsv|NN char *pv|STRLEN len|int utf8 +Mp |char* |sv_xmlpeek |NN SV* sv +Mp |void |do_pmop_xmldump|I32 level|NN PerlIO *file \ + |NULLOK const PMOP *pm +Mp |void |pmop_xmldump |NULLOK const PMOP* pm +Mp |void |do_op_xmldump |I32 level|NN PerlIO *file|NULLOK const OP *o +Mp |void |op_xmldump |NN const OP* arg + +Mp |TOKEN* |newTOKEN |I32 optype|YYSTYPE lval \ + |NULLOK MADPROP* madprop +Mp |void |token_free |NN TOKEN* arg +Mp |void |token_getmad |NN TOKEN* arg|NULLOK OP* o|char slot +Mp |void |op_getmad_weak |NULLOK OP* from|NULLOK OP* o|char slot +Mp |void |op_getmad |NULLOK OP* from|NULLOK OP* o|char slot +Mp |void |prepend_madprops|NULLOK MADPROP* mp|NULLOK OP* o|char slot +Mp |void |append_madprops|NULLOK MADPROP* tm|NULLOK OP* o|char slot +Mp |void |addmad |NULLOK MADPROP* tm|NULLOK MADPROP** root \ + |char slot +Mp |MADPROP*|newMADsv |char key|NN SV* sv +Mp |MADPROP*|newMADPROP |char key|char type|NULLOK void* val|I32 vlen +Mp |void |mad_free |NULLOK MADPROP* mp + +# if defined(PERL_IN_TOKE_C) || defined(PERL_DECL_PROT) +s |char* |skipspace0 |NN char *s +s |char* |skipspace1 |NN char *s +s |char* |skipspace2 |NN char *s|NULLOK SV **sv +s |void |start_force |int where +s |void |curmad |char slot|NULLOK SV *sv +# endif +Mp |int |madlex +Mp |int |madparse +#endif END_EXTERN_C /* diff --git a/ext/Devel/PPPort/parts/inc/Sv_set b/ext/Devel/PPPort/parts/inc/Sv_set index 2463478..4c374da 100644 --- a/ext/Devel/PPPort/parts/inc/Sv_set +++ b/ext/Devel/PPPort/parts/inc/Sv_set @@ -1,8 +1,8 @@ ################################################################################ ## -## $Revision: 3 $ +## $Revision: 4 $ ## $Author: mhx $ -## $Date: 2006/01/14 18:07:58 +0100 $ +## $Date: 2006/05/19 23:58:03 +0200 $ ## ################################################################################ ## @@ -91,9 +91,34 @@ TestSvPVX_mutable(sv) OUTPUT: RETVAL -=tests plan => 3 +void +TestSvSTASH_set(sv, name) + SV *sv + char *name + CODE: + sv = SvRV(sv); + SvREFCNT_dec(SvSTASH(sv)); + SvSTASH_set(sv, (HV*) SvREFCNT_inc(gv_stashpv(name, 0))); + +=tests plan => 5 my $foo = 5; ok(&Devel::PPPort::TestSvUV_set($foo, 12345), 42); ok(&Devel::PPPort::TestSvPVX_const("mhx"), 43); ok(&Devel::PPPort::TestSvPVX_mutable("mhx"), 44); + +my $bar = []; + +bless $bar, 'foo'; +ok($bar->x(), 'foobar'); + +Devel::PPPort::TestSvSTASH_set($bar, 'bar'); +ok($bar->x(), 'hacker'); + +package foo; + +sub x { 'foobar' } + +package bar; + +sub x { 'hacker' } diff --git a/ext/Devel/PPPort/parts/inc/magic b/ext/Devel/PPPort/parts/inc/magic index f649f5d..bdbdc5a 100644 --- a/ext/Devel/PPPort/parts/inc/magic +++ b/ext/Devel/PPPort/parts/inc/magic @@ -1,8 +1,8 @@ ################################################################################ ## -## $Revision: 9 $ +## $Revision: 10 $ ## $Author: mhx $ -## $Date: 2006/01/14 18:08:03 +0100 $ +## $Date: 2006/05/18 23:10:24 +0200 $ ## ################################################################################ ## @@ -164,6 +164,8 @@ __UNDEFINED__ SvUV_nomg SvUV } STMT_END #endif +__UNDEFINED__ SvVSTRING_mg(sv) (SvMAGICAL(sv) ? mg_find(sv, PERL_MAGIC_vstring) : NULL) + =xsubs void @@ -250,7 +252,15 @@ sv_usepvn_mg(sv, sv2) Copy(str, copy, len+1, char); sv_usepvn_mg(sv, copy, len); -=tests plan => 10 +int +SvVSTRING_mg(sv) + SV *sv; + CODE: + RETVAL = SvVSTRING_mg(sv) != NULL; + OUTPUT: + RETVAL + +=tests plan => 13 use Tie::Hash; my %h; @@ -288,3 +298,8 @@ ok($h{sv}, 4711); &Devel::PPPort::sv_usepvn_mg($h{sv}, 'Perl'); ok($h{sv}, 'Perl'); +my $ver = eval qq[qv("v1.2.0")]; +ok($[ < 5.009 || $@ eq ''); +ok($@ || Devel::PPPort::SvVSTRING_mg($ver)); +ok(!Devel::PPPort::SvVSTRING_mg(4711)); + diff --git a/ext/Devel/PPPort/parts/inc/misc b/ext/Devel/PPPort/parts/inc/misc index b22c973..17a81e7 100644 --- a/ext/Devel/PPPort/parts/inc/misc +++ b/ext/Devel/PPPort/parts/inc/misc @@ -1,8 +1,8 @@ ################################################################################ ## -## $Revision: 30 $ +## $Revision: 35 $ ## $Author: mhx $ -## $Date: 2006/01/14 18:08:03 +0100 $ +## $Date: 2006/05/19 23:57:26 +0200 $ ## ################################################################################ ## @@ -19,6 +19,9 @@ __UNDEFINED__ PERL_UNUSED_DECL +PERL_UNUSED_ARG +PERL_UNUSED_VAR +PERL_UNUSED_CONTEXT PERL_GCC_BRACE_GROUPS_FORBIDDEN NVTYPE INT2PTR @@ -86,8 +89,29 @@ XSRETURN # endif #endif -__UNDEFINED__ NOOP (void)0 -__UNDEFINED__ dNOOP extern int Perl___notused PERL_UNUSED_DECL +#ifndef PERL_UNUSED_ARG +# if defined(lint) && defined(S_SPLINT_S) /* www.splint.org */ +# include +# define PERL_UNUSED_ARG(x) NOTE(ARGUNUSED(x)) +# else +# define PERL_UNUSED_ARG(x) ((void)x) +# endif +#endif + +#ifndef PERL_UNUSED_VAR +# define PERL_UNUSED_VAR(x) ((void)x) +#endif + +#ifndef PERL_UNUSED_CONTEXT +# ifdef USE_ITHREADS +# define PERL_UNUSED_CONTEXT PERL_UNUSED_ARG(my_perl) +# else +# define PERL_UNUSED_CONTEXT +# endif +#endif + +__UNDEFINED__ NOOP /*EMPTY*/(void)0 +__UNDEFINED__ dNOOP extern int /*@unused@*/ Perl___notused PERL_UNUSED_DECL #ifndef NVTYPE # if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE) @@ -213,6 +237,12 @@ __UNDEFINED__ XSprePUSH (sp = PL_stack_base + ax - 1) } STMT_END #endif +__UNDEFINED__ PERL_ABS(x) ((x) < 0 ? -(x) : (x)) + +__UNDEFINED__ dVAR dNOOP + +__UNDEFINED__ SVf "_" + =xsmisc XS(XS_Devel__PPPort_dXSTARG); /* prototype */ @@ -386,7 +416,21 @@ prepush() XSRETURN(1); } -=tests plan => 38 +int +PERL_ABS(a) + int a + +void +SVf(x) + SV *x + PPCODE: +#if { VERSION >= 5.004 } + x = newSVpvf("[%"SVf"]", x); +#endif + XPUSHs(x); + XSRETURN(1); + +=tests plan => 42 use vars qw($my_sv @my_av %my_hv); @@ -458,3 +502,10 @@ ok(Devel::PPPort::prepush(), 42); ok(join(':', Devel::PPPort::xsreturn(0)), 'test1'); ok(join(':', Devel::PPPort::xsreturn(1)), 'test1:test2'); + +ok(Devel::PPPort::PERL_ABS(42), 42); +ok(Devel::PPPort::PERL_ABS(-13), 13); + +ok(Devel::PPPort::SVf(42), $] >= 5.004 ? '[42]' : '42'); +ok(Devel::PPPort::SVf('abc'), $] >= 5.004 ? '[abc]' : 'abc'); + diff --git a/ext/Devel/PPPort/parts/inc/pvs b/ext/Devel/PPPort/parts/inc/pvs new file mode 100644 index 0000000..83fb6e8 --- /dev/null +++ b/ext/Devel/PPPort/parts/inc/pvs @@ -0,0 +1,91 @@ +################################################################################ +## +## $Revision: 2 $ +## $Author: mhx $ +## $Date: 2006/05/19 23:00:18 +0200 $ +## +################################################################################ +## +## Version 3.x, Copyright (C) 2004-2006, Marcus Holland-Moritz. +## Version 2.x, Copyright (C) 2001, Paul Marquess. +## Version 1.x, Copyright (C) 1999, Kenneth Albanowski. +## +## This program is free software; you can redistribute it and/or +## modify it under the same terms as Perl itself. +## +################################################################################ + +=provides + +__UNDEFINED__ + +=implementation + +/* concatenating with "" ensures that only literal strings are accepted as argument + * note that STR_WITH_LEN() can't be used as argument to macros or functions that + * under some configurations might be macros + */ + +__UNDEFINED__ STR_WITH_LEN(s) (s ""), (sizeof(s)-1) + +__UNDEFINED__ newSVpvs(str) newSVpvn(str "", sizeof(str) - 1) +__UNDEFINED__ sv_catpvs(sv, str) sv_catpvn(sv, str "", sizeof(str) - 1) +__UNDEFINED__ sv_setpvs(sv, str) sv_setpvn(sv, str "", sizeof(str) - 1) +__UNDEFINED__ hv_fetchs(hv,key,lval) hv_fetch(hv, key "", sizeof(key) - 1, lval) +__UNDEFINED__ hv_stores(hv,key,val,hash) hv_store(hv, key "", sizeof(key) - 1, val, hash) + +=xsubs + +void +newSVpvs() + PPCODE: + XPUSHs(newSVpvs("newSVpvs")); + XSRETURN(1); + +void +sv_catpvs(sv) + SV *sv + PPCODE: + sv_catpvs(sv, "sv_catpvs"); + +void +sv_setpvs(sv) + SV *sv + PPCODE: + sv_setpvs(sv, "sv_setpvs"); + +void +hv_fetchs(hv) + SV *hv + PREINIT: + SV **s; + PPCODE: + s = hv_fetchs((HV *) SvRV(hv), "hv_fetchs", 0); + XPUSHs(sv_mortalcopy(*s)); + XSRETURN(1); + +void +hv_stores(hv, sv) + SV *hv + SV *sv + PPCODE: + hv_stores((HV *) SvRV(hv), "hv_stores", SvREFCNT_inc(sv), 0); + +=tests plan => 7 + +my $x = 'foo'; + +ok(Devel::PPPort::newSVpvs(), "newSVpvs"); + +Devel::PPPort::sv_catpvs($x); +ok($x, "foosv_catpvs"); + +Devel::PPPort::sv_setpvs($x); +ok($x, "sv_setpvs"); + +my %h = ('hv_fetchs' => 42); +Devel::PPPort::hv_stores(\%h, 4711); +ok(scalar keys %h, 2); +ok(exists $h{'hv_stores'}); +ok($h{'hv_stores'}, 4711); +ok(Devel::PPPort::hv_fetchs(\%h), 42); diff --git a/ext/Devel/PPPort/parts/inc/snprintf b/ext/Devel/PPPort/parts/inc/snprintf new file mode 100644 index 0000000..8890db1 --- /dev/null +++ b/ext/Devel/PPPort/parts/inc/snprintf @@ -0,0 +1,70 @@ +################################################################################ +## +## $Revision: 1 $ +## $Author: mhx $ +## $Date: 2006/05/18 23:12:23 +0200 $ +## +################################################################################ +## +## Version 3.x, Copyright (C) 2004-2006, Marcus Holland-Moritz. +## Version 2.x, Copyright (C) 2001, Paul Marquess. +## Version 1.x, Copyright (C) 1999, Kenneth Albanowski. +## +## This program is free software; you can redistribute it and/or +## modify it under the same terms as Perl itself. +## +################################################################################ + +=provides + +my_snprintf + +=implementation + +#if !defined(my_snprintf) +#if { NEED my_snprintf } + +int +my_snprintf(char *buffer, const Size_t len, const char *format, ...) +{ + dTHX; + int retval; + va_list ap; + va_start(ap, format); +#ifdef HAS_VSNPRINTF + retval = vsnprintf(buffer, len, format, ap); +#else + retval = vsprintf(buffer, format, ap); +#endif + va_end(ap); + if (retval >= (int)len) + Perl_croak(aTHX_ "panic: my_snprintf buffer overflow"); + return retval; +} + +#endif +#endif + +=xsinit + +#define NEED_my_snprintf + +=xsubs + +void +my_snprintf() + PREINIT: + char buf[128]; + int len; + PPCODE: + len = my_snprintf(buf, sizeof buf, "foo%s%d", "bar", 42); + XPUSHs(newSViv(len)); + XPUSHs(newSVpv(buf, 0)); + XSRETURN(2); + +=tests plan => 2 + +my($l, $s) = Devel::PPPort::my_snprintf(); +ok($l, 8); +ok($s, "foobar42"); + diff --git a/ext/Devel/PPPort/parts/inc/warn b/ext/Devel/PPPort/parts/inc/warn new file mode 100644 index 0000000..a29b98c --- /dev/null +++ b/ext/Devel/PPPort/parts/inc/warn @@ -0,0 +1,177 @@ +################################################################################ +## +## $Revision: 2 $ +## $Author: mhx $ +## $Date: 2006/05/20 10:57:02 +0200 $ +## +################################################################################ +## +## Version 3.x, Copyright (C) 2004-2006, Marcus Holland-Moritz. +## Version 2.x, Copyright (C) 2001, Paul Marquess. +## Version 1.x, Copyright (C) 1999, Kenneth Albanowski. +## +## This program is free software; you can redistribute it and/or +## modify it under the same terms as Perl itself. +## +################################################################################ + +=provides + +__UNDEFINED__ +ckWARN +warner +Perl_warner +Perl_warner_nocontext + +=implementation + +__UNDEFINED__ WARN_ALL 0 +__UNDEFINED__ WARN_CLOSURE 1 +__UNDEFINED__ WARN_DEPRECATED 2 +__UNDEFINED__ WARN_EXITING 3 +__UNDEFINED__ WARN_GLOB 4 +__UNDEFINED__ WARN_IO 5 +__UNDEFINED__ WARN_CLOSED 6 +__UNDEFINED__ WARN_EXEC 7 +__UNDEFINED__ WARN_LAYER 8 +__UNDEFINED__ WARN_NEWLINE 9 +__UNDEFINED__ WARN_PIPE 10 +__UNDEFINED__ WARN_UNOPENED 11 +__UNDEFINED__ WARN_MISC 12 +__UNDEFINED__ WARN_NUMERIC 13 +__UNDEFINED__ WARN_ONCE 14 +__UNDEFINED__ WARN_OVERFLOW 15 +__UNDEFINED__ WARN_PACK 16 +__UNDEFINED__ WARN_PORTABLE 17 +__UNDEFINED__ WARN_RECURSION 18 +__UNDEFINED__ WARN_REDEFINE 19 +__UNDEFINED__ WARN_REGEXP 20 +__UNDEFINED__ WARN_SEVERE 21 +__UNDEFINED__ WARN_DEBUGGING 22 +__UNDEFINED__ WARN_INPLACE 23 +__UNDEFINED__ WARN_INTERNAL 24 +__UNDEFINED__ WARN_MALLOC 25 +__UNDEFINED__ WARN_SIGNAL 26 +__UNDEFINED__ WARN_SUBSTR 27 +__UNDEFINED__ WARN_SYNTAX 28 +__UNDEFINED__ WARN_AMBIGUOUS 29 +__UNDEFINED__ WARN_BAREWORD 30 +__UNDEFINED__ WARN_DIGIT 31 +__UNDEFINED__ WARN_PARENTHESIS 32 +__UNDEFINED__ WARN_PRECEDENCE 33 +__UNDEFINED__ WARN_PRINTF 34 +__UNDEFINED__ WARN_PROTOTYPE 35 +__UNDEFINED__ WARN_QW 36 +__UNDEFINED__ WARN_RESERVED 37 +__UNDEFINED__ WARN_SEMICOLON 38 +__UNDEFINED__ WARN_TAINT 39 +__UNDEFINED__ WARN_THREADS 40 +__UNDEFINED__ WARN_UNINITIALIZED 41 +__UNDEFINED__ WARN_UNPACK 42 +__UNDEFINED__ WARN_UNTIE 43 +__UNDEFINED__ WARN_UTF8 44 +__UNDEFINED__ WARN_VOID 45 +__UNDEFINED__ WARN_ASSERTIONS 46 + +__UNDEFINED__ packWARN(a) (a) + +#ifndef ckWARN +# ifdef G_WARN_ON +# define ckWARN(a) (PL_dowarn & G_WARN_ON) +# else +# define ckWARN(a) PL_dowarn +# endif +#endif + +/* warner depends on vnewSVpvf */ +#if { VERSION >= 5.004 } && !defined(warner) +#if { NEED warner } + +void +warner(U32 err, const char *pat, ...) +{ + SV *sv; + va_list args; + + PERL_UNUSED_ARG(err); + + va_start(args, pat); + sv = vnewSVpvf(pat, &args); + va_end(args); + sv_2mortal(sv); + warn("%s", SvPV_nolen(sv)); +} + +#define warner Perl_warner + +/* Perl_warner_nocontext depends on warner */ +#define Perl_warner_nocontext Perl_warner + +#endif +#endif + +=xsinit + +#define NEED_warner + +=xsubs + +void +warner() + CODE: +#if { VERSION >= 5.004 } + warner(packWARN(WARN_MISC), "warner %s:%d", "bar", 42); +#endif + +void +Perl_warner() + CODE: +#if { VERSION >= 5.004 } + Perl_warner(aTHX_ packWARN(WARN_MISC), "Perl_warner %s:%d", "bar", 42); +#endif + +void +Perl_warner_nocontext() + CODE: +#if { VERSION >= 5.004 } + Perl_warner_nocontext(packWARN(WARN_MISC), "Perl_warner_nocontext %s:%d", "bar", 42); +#endif + +void +ckWARN() + CODE: +#if { VERSION >= 5.004 } + if (ckWARN(WARN_MISC)) + Perl_warner_nocontext(packWARN(WARN_MISC), "ckWARN %s:%d", "bar", 42); +#endif + +=tests plan => 5 + +$^W = 0; + +my $warning; + +$SIG{'__WARN__'} = sub { $warning = $_[0] }; + +$warning = ''; +Devel::PPPort::warner(); +ok($] >= 5.004 ? $warning =~ /^warner bar:42/ : $warning eq ''); + +$warning = ''; +Devel::PPPort::Perl_warner(); +ok($] >= 5.004 ? $warning =~ /^Perl_warner bar:42/ : $warning eq ''); + +$warning = ''; +Devel::PPPort::Perl_warner_nocontext(); +ok($] >= 5.004 ? $warning =~ /^Perl_warner_nocontext bar:42/ : $warning eq ''); + +$warning = ''; +Devel::PPPort::ckWARN(); +ok($warning, ''); + +$^W = 1; + +$warning = ''; +Devel::PPPort::ckWARN(); +ok($] >= 5.004 ? $warning =~ /^ckWARN bar:42/ : $warning eq ''); + diff --git a/ext/Devel/PPPort/parts/todo/5004000 b/ext/Devel/PPPort/parts/todo/5004000 index e4fa09a..9ec8545 100644 --- a/ext/Devel/PPPort/parts/todo/5004000 +++ b/ext/Devel/PPPort/parts/todo/5004000 @@ -64,3 +64,4 @@ sv_vsetpvf_mg # U sv_vsetpvfn # U unsharepvn # U vnewSVpvf # E +warner # U diff --git a/ext/Devel/PPPort/parts/todo/5005000 b/ext/Devel/PPPort/parts/todo/5005000 index 443a693..5c469b1 100644 --- a/ext/Devel/PPPort/parts/todo/5005000 +++ b/ext/Devel/PPPort/parts/todo/5005000 @@ -12,14 +12,13 @@ mg_length # U mg_size # U newHVhv # E new_stackinfo # E -regdump # U +regdump # E regexec_flags # U regnext # E (Perl_regnext) runops_debug # U runops_standard # U save_hints # U save_iv # U (save_iv) -save_threadsv # E screaminstr # E (Perl_screaminstr) sv_iv # U sv_nv # U diff --git a/ext/Devel/PPPort/parts/todo/5006000 b/ext/Devel/PPPort/parts/todo/5006000 index 2bd073b..09e97c3 100644 --- a/ext/Devel/PPPort/parts/todo/5006000 +++ b/ext/Devel/PPPort/parts/todo/5006000 @@ -92,7 +92,6 @@ my_atof # U my_fflush_all # U newANONATTRSUB # E newATTRSUB # E -newMYSUB # U newPADOP # E newXS # E (Perl_newXS) newXSproto # E @@ -153,4 +152,3 @@ vload_module # U vmess # E vwarn # U vwarner # U -warner # U diff --git a/ext/Devel/PPPort/parts/todo/5006001 b/ext/Devel/PPPort/parts/todo/5006001 index bb24f78..59ceb46 100644 --- a/ext/Devel/PPPort/parts/todo/5006001 +++ b/ext/Devel/PPPort/parts/todo/5006001 @@ -1,4 +1,5 @@ 5.006001 +SvGAMAGIC # E apply_attrs_string # U bytes_to_utf8 # E gv_efullname4 # U diff --git a/ext/Devel/PPPort/parts/todo/5007003 b/ext/Devel/PPPort/parts/todo/5007003 index a742bdc..9a81d8d 100644 --- a/ext/Devel/PPPort/parts/todo/5007003 +++ b/ext/Devel/PPPort/parts/todo/5007003 @@ -38,7 +38,6 @@ my_socketpair # E pack_cat # E perl_destruct # E (perl_destruct) pv_uni_display # E -regclass_swash # E (Perl_regclass_swash) save_shared_pvref # E savesharedpv # E sortsv # E @@ -46,7 +45,6 @@ sv_copypv # E sv_magicext # E sv_nolocking # E sv_nosharing # E -sv_nounlocking # E sv_recode_to_utf8 # E sv_uni_display # E to_uni_fold # E diff --git a/ext/Devel/PPPort/parts/todo/5008008 b/ext/Devel/PPPort/parts/todo/5008008 new file mode 100644 index 0000000..f17b19f --- /dev/null +++ b/ext/Devel/PPPort/parts/todo/5008008 @@ -0,0 +1 @@ +5.008008 diff --git a/ext/Devel/PPPort/parts/todo/5009003 b/ext/Devel/PPPort/parts/todo/5009003 index 26b4e46..b3d4437 100644 --- a/ext/Devel/PPPort/parts/todo/5009003 +++ b/ext/Devel/PPPort/parts/todo/5009003 @@ -1,8 +1,4 @@ 5.009003 -MULTICALL # E -POP_MULTICALL # E -PUSH_MULTICALL # E -SvSTASH_set # E av_arylen_p # E ckwarn # U ckwarn_d # U @@ -26,5 +22,4 @@ newWHENOP # E newWHILEOP # E (Perl_newWHILEOP) ref # E (Perl_ref) sortsv_flags # U -stashpv_hvname_match # U vverify # U diff --git a/ext/Devel/PPPort/parts/todo/5009004 b/ext/Devel/PPPort/parts/todo/5009004 new file mode 100644 index 0000000..78a700d --- /dev/null +++ b/ext/Devel/PPPort/parts/todo/5009004 @@ -0,0 +1,19 @@ +5.009004 +MULTICALL # E +POP_MULTICALL # E +PUSH_MULTICALL # E +PoisonNew # E +PoisonWith # E +SvREFCNT_inc_NN # E +SvREFCNT_inc_simple # E +SvREFCNT_inc_simple_NN # E +SvREFCNT_inc_simple_void # E +SvREFCNT_inc_void # E +SvREFCNT_inc_void_NN # E +gv_name_set # U +my_vsnprintf # U +newXS_flags # E +pad_sv # U +regclass_swash # E (Perl_regclass_swash) +stashpv_hvname_match # U +sv_usepvn_flags # U diff --git a/ext/Devel/PPPort/soak b/ext/Devel/PPPort/soak index 86801a1..7b7ffe7 100644 --- a/ext/Devel/PPPort/soak +++ b/ext/Devel/PPPort/soak @@ -32,7 +32,7 @@ use Pod::Usage; use List::Util qw(max); use Config; -my $VERSION = do { my @r = '$Snapshot: /Devel-PPPort/3.08 $' =~ /(\d+\.\d+(?:_\d+)?)/; @r ? $r[0] : '9.99' }; +my $VERSION = do { my @r = '$Snapshot: /Devel-PPPort/3.08_01 $' =~ /(\d+\.\d+(?:_\d+)?)/; @r ? $r[0] : '9.99' }; $| = 1; my $verbose = 0; diff --git a/ext/Devel/PPPort/t/Sv_set.t b/ext/Devel/PPPort/t/Sv_set.t index 20956ed..cb68641 100644 --- a/ext/Devel/PPPort/t/Sv_set.t +++ b/ext/Devel/PPPort/t/Sv_set.t @@ -24,10 +24,10 @@ BEGIN { eval "use Test"; if ($@) { require 'testutil.pl'; - print "1..3\n"; + print "1..5\n"; } else { - plan(tests => 3); + plan(tests => 5); } } @@ -40,3 +40,19 @@ ok(&Devel::PPPort::TestSvUV_set($foo, 12345), 42); ok(&Devel::PPPort::TestSvPVX_const("mhx"), 43); ok(&Devel::PPPort::TestSvPVX_mutable("mhx"), 44); +my $bar = []; + +bless $bar, 'foo'; +ok($bar->x(), 'foobar'); + +Devel::PPPort::TestSvSTASH_set($bar, 'bar'); +ok($bar->x(), 'hacker'); + +package foo; + +sub x { 'foobar' } + +package bar; + +sub x { 'hacker' } + diff --git a/ext/Devel/PPPort/t/magic.t b/ext/Devel/PPPort/t/magic.t index 8f73dc6..81c257d 100644 --- a/ext/Devel/PPPort/t/magic.t +++ b/ext/Devel/PPPort/t/magic.t @@ -24,10 +24,10 @@ BEGIN { eval "use Test"; if ($@) { require 'testutil.pl'; - print "1..10\n"; + print "1..13\n"; } else { - plan(tests => 10); + plan(tests => 13); } } @@ -71,3 +71,8 @@ ok($h{sv}, 4711); &Devel::PPPort::sv_usepvn_mg($h{sv}, 'Perl'); ok($h{sv}, 'Perl'); +my $ver = eval qq[qv("v1.2.0")]; +ok($[ < 5.009 || $@ eq ''); +ok($@ || Devel::PPPort::SvVSTRING_mg($ver)); +ok(!Devel::PPPort::SvVSTRING_mg(4711)); + diff --git a/ext/Devel/PPPort/t/misc.t b/ext/Devel/PPPort/t/misc.t index 81dde3e..711b547 100644 --- a/ext/Devel/PPPort/t/misc.t +++ b/ext/Devel/PPPort/t/misc.t @@ -24,10 +24,10 @@ BEGIN { eval "use Test"; if ($@) { require 'testutil.pl'; - print "1..38\n"; + print "1..42\n"; } else { - plan(tests => 38); + plan(tests => 42); } } @@ -106,3 +106,9 @@ ok(Devel::PPPort::prepush(), 42); ok(join(':', Devel::PPPort::xsreturn(0)), 'test1'); ok(join(':', Devel::PPPort::xsreturn(1)), 'test1:test2'); +ok(Devel::PPPort::PERL_ABS(42), 42); +ok(Devel::PPPort::PERL_ABS(-13), 13); + +ok(Devel::PPPort::SVf(42), $] >= 5.004 ? '[42]' : '42'); +ok(Devel::PPPort::SVf('abc'), $] >= 5.004 ? '[abc]' : 'abc'); + diff --git a/ext/Devel/PPPort/t/pvs.t b/ext/Devel/PPPort/t/pvs.t new file mode 100644 index 0000000..dc925c3 --- /dev/null +++ b/ext/Devel/PPPort/t/pvs.t @@ -0,0 +1,54 @@ +################################################################################ +# +# !!!!! Do NOT edit this file directly! !!!!! +# +# Edit mktests.PL and/or parts/inc/pvs instead. +# +################################################################################ + +BEGIN { + if ($ENV{'PERL_CORE'}) { + chdir 't' if -d 't'; + @INC = ('../lib', '../ext/Devel/PPPort/t') if -d '../lib' && -d '../ext'; + require Config; import Config; + use vars '%Config'; + if (" $Config{'extensions'} " !~ m[ Devel/PPPort ]) { + print "1..0 # Skip -- Perl configured without Devel::PPPort module\n"; + exit 0; + } + } + else { + unshift @INC, 't'; + } + + eval "use Test"; + if ($@) { + require 'testutil.pl'; + print "1..7\n"; + } + else { + plan(tests => 7); + } +} + +use Devel::PPPort; +use strict; +$^W = 1; + +my $x = 'foo'; + +ok(Devel::PPPort::newSVpvs(), "newSVpvs"); + +Devel::PPPort::sv_catpvs($x); +ok($x, "foosv_catpvs"); + +Devel::PPPort::sv_setpvs($x); +ok($x, "sv_setpvs"); + +my %h = ('hv_fetchs' => 42); +Devel::PPPort::hv_stores(\%h, 4711); +ok(scalar keys %h, 2); +ok(exists $h{'hv_stores'}); +ok($h{'hv_stores'}, 4711); +ok(Devel::PPPort::hv_fetchs(\%h), 42); + diff --git a/ext/Devel/PPPort/t/snprintf.t b/ext/Devel/PPPort/t/snprintf.t new file mode 100644 index 0000000..f70f71f --- /dev/null +++ b/ext/Devel/PPPort/t/snprintf.t @@ -0,0 +1,41 @@ +################################################################################ +# +# !!!!! Do NOT edit this file directly! !!!!! +# +# Edit mktests.PL and/or parts/inc/snprintf instead. +# +################################################################################ + +BEGIN { + if ($ENV{'PERL_CORE'}) { + chdir 't' if -d 't'; + @INC = ('../lib', '../ext/Devel/PPPort/t') if -d '../lib' && -d '../ext'; + require Config; import Config; + use vars '%Config'; + if (" $Config{'extensions'} " !~ m[ Devel/PPPort ]) { + print "1..0 # Skip -- Perl configured without Devel::PPPort module\n"; + exit 0; + } + } + else { + unshift @INC, 't'; + } + + eval "use Test"; + if ($@) { + require 'testutil.pl'; + print "1..2\n"; + } + else { + plan(tests => 2); + } +} + +use Devel::PPPort; +use strict; +$^W = 1; + +my($l, $s) = Devel::PPPort::my_snprintf(); +ok($l, 8); +ok($s, "foobar42"); + diff --git a/ext/Devel/PPPort/t/warn.t b/ext/Devel/PPPort/t/warn.t new file mode 100644 index 0000000..2607bf6 --- /dev/null +++ b/ext/Devel/PPPort/t/warn.t @@ -0,0 +1,65 @@ +################################################################################ +# +# !!!!! Do NOT edit this file directly! !!!!! +# +# Edit mktests.PL and/or parts/inc/warn instead. +# +################################################################################ + +BEGIN { + if ($ENV{'PERL_CORE'}) { + chdir 't' if -d 't'; + @INC = ('../lib', '../ext/Devel/PPPort/t') if -d '../lib' && -d '../ext'; + require Config; import Config; + use vars '%Config'; + if (" $Config{'extensions'} " !~ m[ Devel/PPPort ]) { + print "1..0 # Skip -- Perl configured without Devel::PPPort module\n"; + exit 0; + } + } + else { + unshift @INC, 't'; + } + + eval "use Test"; + if ($@) { + require 'testutil.pl'; + print "1..5\n"; + } + else { + plan(tests => 5); + } +} + +use Devel::PPPort; +use strict; +$^W = 1; + +$^W = 0; + +my $warning; + +$SIG{'__WARN__'} = sub { $warning = $_[0] }; + +$warning = ''; +Devel::PPPort::warner(); +ok($] >= 5.004 ? $warning =~ /^warner bar:42/ : $warning eq ''); + +$warning = ''; +Devel::PPPort::Perl_warner(); +ok($] >= 5.004 ? $warning =~ /^Perl_warner bar:42/ : $warning eq ''); + +$warning = ''; +Devel::PPPort::Perl_warner_nocontext(); +ok($] >= 5.004 ? $warning =~ /^Perl_warner_nocontext bar:42/ : $warning eq ''); + +$warning = ''; +Devel::PPPort::ckWARN(); +ok($warning, ''); + +$^W = 1; + +$warning = ''; +Devel::PPPort::ckWARN(); +ok($] >= 5.004 ? $warning =~ /^ckWARN bar:42/ : $warning eq ''); +