summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarcus Holland-Moritz <mhx-perl@gmx.net>2005-01-31 18:07:29 +0000
committerMarcus Holland-Moritz <mhx-perl@gmx.net>2005-01-31 18:07:29 +0000
commit9132e1a37fb6d8c980f305a393fed9323586cbca (patch)
treee9950d5dc52359251099342ad83c22d761eb8644
parent0ca3a8747a809cd312a4430d331d6b34d04f27c0 (diff)
downloadperl-9132e1a37fb6d8c980f305a393fed9323586cbca.tar.gz
Upgrade to Devel::PPPort 3.05.
p4raw-id: //depot/perl@23912
-rw-r--r--MANIFEST4
-rwxr-xr-xext/Devel/PPPort/Changes13
-rw-r--r--ext/Devel/PPPort/HACKERS2
-rw-r--r--ext/Devel/PPPort/MANIFEST4
-rw-r--r--ext/Devel/PPPort/MANIFEST.SKIP1
-rw-r--r--ext/Devel/PPPort/META.yml2
-rw-r--r--ext/Devel/PPPort/Makefile.PL6
-rw-r--r--ext/Devel/PPPort/PPPort.pm95
-rw-r--r--ext/Devel/PPPort/PPPort.xs61
-rw-r--r--ext/Devel/PPPort/PPPort_pm.PL20
-rw-r--r--ext/Devel/PPPort/PPPort_xs.PL12
-rw-r--r--ext/Devel/PPPort/README2
-rw-r--r--ext/Devel/PPPort/TODO2
-rw-r--r--ext/Devel/PPPort/apicheck_c.PL6
-rw-r--r--ext/Devel/PPPort/devel/buildperl.pl6
-rw-r--r--ext/Devel/PPPort/devel/mkapidoc.sh8
-rw-r--r--ext/Devel/PPPort/devel/mktodo6
-rw-r--r--ext/Devel/PPPort/devel/mktodo.pl6
-rw-r--r--ext/Devel/PPPort/devel/scanprov6
-rw-r--r--ext/Devel/PPPort/mktests.PL6
-rw-r--r--ext/Devel/PPPort/module2.c6
-rw-r--r--ext/Devel/PPPort/module3.c6
-rw-r--r--ext/Devel/PPPort/parts/apicheck.pl6
-rw-r--r--ext/Devel/PPPort/parts/base/50040002
-rw-r--r--ext/Devel/PPPort/parts/base/500405014
-rw-r--r--ext/Devel/PPPort/parts/base/50050004
-rw-r--r--ext/Devel/PPPort/parts/base/50060007
-rw-r--r--ext/Devel/PPPort/parts/base/50080012
-rw-r--r--ext/Devel/PPPort/parts/base/50080061
-rw-r--r--ext/Devel/PPPort/parts/base/500900212
-rw-r--r--ext/Devel/PPPort/parts/embed.fnc49
-rw-r--r--ext/Devel/PPPort/parts/inc/MY_CXT6
-rw-r--r--ext/Devel/PPPort/parts/inc/SvPV10
-rw-r--r--ext/Devel/PPPort/parts/inc/call6
-rw-r--r--ext/Devel/PPPort/parts/inc/cop6
-rw-r--r--ext/Devel/PPPort/parts/inc/exception102
-rw-r--r--ext/Devel/PPPort/parts/inc/format6
-rw-r--r--ext/Devel/PPPort/parts/inc/grok6
-rw-r--r--ext/Devel/PPPort/parts/inc/limits6
-rw-r--r--ext/Devel/PPPort/parts/inc/mPUSH6
-rw-r--r--ext/Devel/PPPort/parts/inc/magic6
-rw-r--r--ext/Devel/PPPort/parts/inc/misc29
-rw-r--r--ext/Devel/PPPort/parts/inc/newCONSTSUB6
-rw-r--r--ext/Devel/PPPort/parts/inc/newRV6
-rw-r--r--ext/Devel/PPPort/parts/inc/ppphbin15
-rw-r--r--ext/Devel/PPPort/parts/inc/ppphdoc27
-rw-r--r--ext/Devel/PPPort/parts/inc/ppphtest6
-rw-r--r--ext/Devel/PPPort/parts/inc/sv_xpvf6
-rw-r--r--ext/Devel/PPPort/parts/inc/threads6
-rw-r--r--ext/Devel/PPPort/parts/inc/uv6
-rw-r--r--ext/Devel/PPPort/parts/inc/version6
-rw-r--r--ext/Devel/PPPort/parts/ppptools.pl6
-rw-r--r--ext/Devel/PPPort/parts/todo/50080061
-rw-r--r--ext/Devel/PPPort/parts/todo/50090025
-rw-r--r--ext/Devel/PPPort/ppport_h.PL6
-rw-r--r--ext/Devel/PPPort/soak6
-rw-r--r--ext/Devel/PPPort/t/SvPV.t2
-rw-r--r--ext/Devel/PPPort/t/exception.t54
-rw-r--r--ext/Devel/PPPort/t/misc.t6
-rw-r--r--ext/Devel/PPPort/typemap6
60 files changed, 542 insertions, 200 deletions
diff --git a/MANIFEST b/MANIFEST
index 7d33530f29..68d255b1c1 100644
--- a/MANIFEST
+++ b/MANIFEST
@@ -221,12 +221,14 @@ ext/Devel/PPPort/parts/base/5008002 Devel::PPPort baseline todo file
ext/Devel/PPPort/parts/base/5008003 Devel::PPPort baseline todo file
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/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/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
+ext/Devel/PPPort/parts/inc/exception Devel::PPPort include
ext/Devel/PPPort/parts/inc/format Devel::PPPort include
ext/Devel/PPPort/parts/inc/grok Devel::PPPort include
ext/Devel/PPPort/parts/inc/limits Devel::PPPort include
@@ -269,6 +271,7 @@ ext/Devel/PPPort/parts/todo/5008002 Devel::PPPort todo file
ext/Devel/PPPort/parts/todo/5008003 Devel::PPPort todo file
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/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
@@ -281,6 +284,7 @@ ext/Devel/PPPort/README Devel::PPPort Readme
ext/Devel/PPPort/soak Devel::PPPort Test Harness to run under various Perls
ext/Devel/PPPort/t/call.t Devel::PPPort test file
ext/Devel/PPPort/t/cop.t Devel::PPPort test file
+ext/Devel/PPPort/t/exception.t Devel::PPPort test file
ext/Devel/PPPort/t/grok.t Devel::PPPort test file
ext/Devel/PPPort/t/limits.t Devel::PPPort test file
ext/Devel/PPPort/t/magic.t Devel::PPPort test file
diff --git a/ext/Devel/PPPort/Changes b/ext/Devel/PPPort/Changes
index a21b120c6c..9e728ee141 100755
--- a/ext/Devel/PPPort/Changes
+++ b/ext/Devel/PPPort/Changes
@@ -1,3 +1,16 @@
+3.05 - 2005-01-31
+
+ * fix a test for SvPV_nolen
+ * add more examples to tht documentation
+ * improve wording baseline information
+ * added support for the following API
+ dXCPT
+ dXSTARG
+ XCPT_CATCH
+ XCPT_RETHROW
+ XCPT_TRY_END
+ XCPT_TRY_START
+
3.04 - 2004-12-29
* fix a hint for sv_pvn_force
diff --git a/ext/Devel/PPPort/HACKERS b/ext/Devel/PPPort/HACKERS
index 1eaa1abe55..8aa9c571ae 100644
--- a/ext/Devel/PPPort/HACKERS
+++ b/ext/Devel/PPPort/HACKERS
@@ -217,7 +217,7 @@ That's it.
=head1 COPYRIGHT
-Version 3.x, Copyright (C) 2004, Marcus Holland-Moritz.
+Version 3.x, Copyright (C) 2004-2005, Marcus Holland-Moritz.
Version 2.x, Copyright (C) 2001, Paul Marquess.
diff --git a/ext/Devel/PPPort/MANIFEST b/ext/Devel/PPPort/MANIFEST
index d05e8ae9d6..44cb9f0e6c 100644
--- a/ext/Devel/PPPort/MANIFEST
+++ b/ext/Devel/PPPort/MANIFEST
@@ -39,12 +39,14 @@ parts/base/5008002
parts/base/5008003
parts/base/5008004
parts/base/5008005
+parts/base/5008006
parts/base/5009000
parts/base/5009001
parts/base/5009002
parts/embed.fnc
parts/inc/call
parts/inc/cop
+parts/inc/exception
parts/inc/format
parts/inc/grok
parts/inc/limits
@@ -87,6 +89,7 @@ parts/todo/5008002
parts/todo/5008003
parts/todo/5008004
parts/todo/5008005
+parts/todo/5008006
parts/todo/5009000
parts/todo/5009001
parts/todo/5009002
@@ -99,6 +102,7 @@ README
soak
t/call.t
t/cop.t
+t/exception.t
t/grok.t
t/limits.t
t/magic.t
diff --git a/ext/Devel/PPPort/MANIFEST.SKIP b/ext/Devel/PPPort/MANIFEST.SKIP
index a6d2883e26..e0a5ec7701 100644
--- a/ext/Devel/PPPort/MANIFEST.SKIP
+++ b/ext/Devel/PPPort/MANIFEST.SKIP
@@ -11,6 +11,7 @@
^pm_to_blib
^backup
^parts/todo-
+^parts/base-
^ppport\.h$
^PPPort\.c$
Devel-PPPort.*\.tar\.gz$
diff --git a/ext/Devel/PPPort/META.yml b/ext/Devel/PPPort/META.yml
index c18fa4feac..ec326e2bfd 100644
--- a/ext/Devel/PPPort/META.yml
+++ b/ext/Devel/PPPort/META.yml
@@ -1,7 +1,7 @@
# http://module-build.sourceforge.net/META-spec.html
#XXXXXXX This is a prototype!!! It will change in the future!!! XXXXX#
name: Devel-PPPort
-version: 3.04
+version: 3.05
version_from: PPPort_pm.PL
installdirs: perl
requires:
diff --git a/ext/Devel/PPPort/Makefile.PL b/ext/Devel/PPPort/Makefile.PL
index e9b672a873..446fbb16e3 100644
--- a/ext/Devel/PPPort/Makefile.PL
+++ b/ext/Devel/PPPort/Makefile.PL
@@ -4,13 +4,13 @@
#
################################################################################
#
-# $Revision: 14 $
+# $Revision: 15 $
# $Author: mhx $
-# $Date: 2004/08/19 13:16:37 +0200 $
+# $Date: 2005/01/31 08:10:50 +0100 $
#
################################################################################
#
-# Version 3.x, Copyright (C) 2004, Marcus Holland-Moritz.
+# Version 3.x, Copyright (C) 2004-2005, Marcus Holland-Moritz.
# Version 2.x, Copyright (C) 2001, Paul Marquess.
# Version 1.x, Copyright (C) 1999, Kenneth Albanowski.
#
diff --git a/ext/Devel/PPPort/PPPort.pm b/ext/Devel/PPPort/PPPort.pm
index 514cbf5241..907cbf5fec 100644
--- a/ext/Devel/PPPort/PPPort.pm
+++ b/ext/Devel/PPPort/PPPort.pm
@@ -8,13 +8,13 @@
#
################################################################################
#
-# $Revision: 30 $
+# $Revision: 33 $
# $Author: mhx $
-# $Date: 2004/08/17 20:01:49 +0200 $
+# $Date: 2005/01/31 08:10:55 +0100 $
#
################################################################################
#
-# Version 3.x, Copyright (C) 2004, Marcus Holland-Moritz.
+# Version 3.x, Copyright (C) 2004-2005, Marcus Holland-Moritz.
# Version 2.x, Copyright (C) 2001, Paul Marquess.
# Version 1.x, Copyright (C) 1999, Kenneth Albanowski.
#
@@ -78,7 +78,7 @@ that can check your source code. It will suggest hints and portability
notes, and can even make suggestions on how to change your code. You
can run it like any other Perl program:
- perl ppport.h
+ perl ppport.h [options] [files]
It also has embedded documentation, so you can use
@@ -143,6 +143,8 @@ in older Perl releases:
dTHXa
dTHXoa
dUNDERBAR
+ dXCPT
+ dXSTARG
END_EXTERN_C
ERRSV
eval_pv
@@ -361,6 +363,10 @@ in older Perl releases:
UVXf
UVxf
vnewSVpvf
+ XCPT_CATCH
+ XCPT_RETHROW
+ XCPT_TRY_END
+ XCPT_TRY_START
XPUSHmortal
XPUSHu
XSRETURN_UV
@@ -382,6 +388,11 @@ Perl below which it is unsupported:
SvPVbyte_force
find_rundefsvoffset
+ gv_fetchpvn_flags
+ gv_fetchsv
+ op_refcnt_lock
+ op_refcnt_unlock
+ savesvpv
vnormal
=item perl 5.9.1
@@ -852,7 +863,7 @@ Version 3.x was ported back to CPAN by Marcus Holland-Moritz.
=head1 COPYRIGHT
-Version 3.x, Copyright (C) 2004, Marcus Holland-Moritz.
+Version 3.x, Copyright (C) 2004-2005, Marcus Holland-Moritz.
Version 2.x, Copyright (C) 2001, Paul Marquess.
@@ -873,7 +884,7 @@ require DynaLoader;
use strict;
use vars qw($VERSION @ISA $data);
-$VERSION = do { my @r = '$Snapshot: /Devel-PPPort/3.04 $' =~ /(\d+\.\d+(?:_\d+)?)/; @r ? $r[0] : '9.99' };
+$VERSION = do { my @r = '$Snapshot: /Devel-PPPort/3.05 $' =~ /(\d+\.\d+(?:_\d+)?)/; @r ? $r[0] : '9.99' };
@ISA = qw(DynaLoader);
@@ -1036,7 +1047,8 @@ POD
POD =head2 --api-info=I<name>
POD
POD Show portability information for API elements matching I<name>.
-POD I<name> is treated as a Perl regular expression.
+POD If I<name> is surrounded by slashes, it is interpreted as a regular
+POD expression.
POD
POD =head1 DESCRIPTION
POD
@@ -1152,6 +1164,22 @@ POD perl ppport.h --diff='diff -C 10'
POD
POD This would output context diffs with 10 lines of context.
POD
+POD To display portability information for the C<newSVpvn> function,
+POD use:
+POD
+POD perl ppport.h --api-info=newSVpvn
+POD
+POD Since the argument to C<--api-info> can be a regular expression,
+POD you can use
+POD
+POD perl ppport.h --api-info=/_nomg$/
+POD
+POD to display portability information for all C<_nomg> functions or
+POD
+POD perl ppport.h --api-info=/./
+POD
+POD to display information for all known API elements.
+POD
POD =head1 BUGS
POD
POD If this version of F<ppport.h> is causing failure during
@@ -1194,7 +1222,7 @@ POD module from CPAN.
POD
POD =head1 COPYRIGHT
POD
-POD Version 3.x, Copyright (c) 2004, Marcus Holland-Moritz.
+POD Version 3.x, Copyright (c) 2004-2005, Marcus Holland-Moritz.
POD
POD Version 2.x, Copyright (C) 2001, Paul Marquess.
POD
@@ -1663,6 +1691,10 @@ UVXf|5.007001||p
UVof|5.006000||p
UVuf|5.006000||p
UVxf|5.006000||p
+XCPT_CATCH|5.009002||p
+XCPT_RETHROW|5.009002||p
+XCPT_TRY_END|5.009002||p
+XCPT_TRY_START|5.009002||p
XPUSHi|||
XPUSHmortal|5.009002||p
XPUSHn|||
@@ -1793,8 +1825,10 @@ dTHXa|5.006000||p
dTHXoa|5.006000||p
dTHX|5.006000||p
dUNDERBAR|5.009002||p
+dXCPT|5.009002||p
dXSARGS|||
dXSI32|||
+dXSTARG|5.006000||p
deb_curcv|||
deb_nocontext|||vn
deb_stack_all|||
@@ -1805,7 +1839,6 @@ debprof|||
debstackptrs||5.007003|
debstack||5.007003|
deb||5.007003|v
-default_protect|||v
del_he|||
del_sv|||
del_xiv|||
@@ -1984,7 +2017,9 @@ gv_fetchmeth_autoload||5.007003|
gv_fetchmethod_autoload||5.004000|
gv_fetchmethod|||
gv_fetchmeth|||
+gv_fetchpvn_flags||5.009002|
gv_fetchpv|||
+gv_fetchsv||5.009002|
gv_fullname3||5.004000|
gv_fullname4||5.006001|
gv_fullname|||
@@ -2060,6 +2095,7 @@ isLOWER|||
isSPACE|||
isUPPER|||
is_an_int|||
+is_gv_magical_sv|||
is_gv_magical|||
is_handle_constructor|||
is_lvalue_sub||5.007001|
@@ -2382,6 +2418,8 @@ op_const_sv|||
op_dump||5.006000|
op_free|||
op_null||5.007002|
+op_refcnt_lock||5.009002|
+op_refcnt_unlock||5.009002|
open_script|||
pMY_CXT_|5.007003||p
pMY_CXT|5.007003||p
@@ -2559,6 +2597,7 @@ savepv|||
savesharedpv||5.007003|
savestack_grow_cnt||5.008001|
savestack_grow|||
+savesvpv||5.009002|
sawparens|||
scalar_mod_type|||
scalarboolean|||
@@ -2824,14 +2863,10 @@ uvchr_to_utf8||5.007001|
uvuni_to_utf8_flags||5.007003|
uvuni_to_utf8||5.007001|
validate_suid|||
-vcall_body|||
-vcall_list_body|||
vcmp||5.009000|
vcroak||5.006000|
vdeb||5.007003|
-vdefault_protect|||
vdie|||
-vdocatch_body|||
vform||5.006000|
visit|||
vivify_defelem|||
@@ -2841,8 +2876,6 @@ vmess||5.006000|
vnewSVpvf|5.006000|5.004000|p
vnormal||5.009002|
vnumify||5.009000|
-vparse_body|||
-vrun_body|||
vstringify||5.009000|
vwarner||5.006000|
vwarn||5.006000|
@@ -2902,18 +2935,19 @@ while (<DATA>) {
if (exists $opt{'api-info'}) {
my $f;
my $count = 0;
+ my $match = $opt{'api-info'} =~ m!^/(.*)/$! ? $1 : "^\Q$opt{'api-info'}\E\$";
for $f (sort { lc $a cmp lc $b } keys %API) {
- next unless $f =~ /$opt{'api-info'}/;
+ next unless $f =~ /$match/;
print "\n=== $f ===\n\n";
my $info = 0;
if ($API{$f}{base} || $API{$f}{todo}) {
my $base = format_version($API{$f}{base} || $API{$f}{todo});
- print "May not be supported below perl-$base.\n";
+ print "Supported at least starting from perl-$base.\n";
$info++;
}
if ($API{$f}{provided}) {
my $todo = $API{$f}{todo} ? format_version($API{$f}{todo}) : "5.003";
- print "Support by $ppport provided down to perl-$todo.\n";
+ print "Support by $ppport provided back to perl-$todo.\n";
print "Support needs to be explicitly requested by NEED_$f.\n" if exists $need{$f};
print "Depends on: ", join(', ', @{$depends{$f}}), ".\n" if exists $depends{$f};
print "$hints{$f}" if exists $hints{$f};
@@ -2928,7 +2962,7 @@ if (exists $opt{'api-info'}) {
print "\n";
}
else {
- print "Found no API matching $opt{'api-info'}.\n";
+ print "Found no API matching '$opt{'api-info'}'.\n";
}
exit 0;
}
@@ -4113,6 +4147,9 @@ typedef NVTYPE NV;
#ifndef dITEMS
# define dITEMS I32 items = SP - MARK
#endif
+#ifndef dXSTARG
+# define dXSTARG SV * targ = sv_newmortal()
+#endif
#ifndef dTHR
# define dTHR dNOOP
#endif
@@ -5755,6 +5792,26 @@ DPPP_(my_grok_oct)(pTHX_ char *start, STRLEN *len_p, I32 *flags, NV *result)
#endif
#endif
+#ifdef dJMPENV
+
+# ifndef dXCPT
+# define dXCPT dJMPENV; int rEtV = 0
+# define XCPT_TRY_START JMPENV_PUSH(rEtV); if (rEtV == 0)
+# define XCPT_TRY_END JMPENV_POP;
+# define XCPT_CATCH if (rEtV != 0)
+# define XCPT_RETHROW JMPENV_JUMP(rEtV)
+# endif
+
+#else
+
+# define dXCPT Sigjmp_buf oldTOP; int rEtV = 0
+# define XCPT_TRY_START Copy(top_env, oldTOP, 1, Sigjmp_buf); rEtV = Sigsetjmp(top_env, 1); if (rEtV == 0)
+# define XCPT_TRY_END Copy(oldTOP, top_env, 1, Sigjmp_buf);
+# define XCPT_CATCH if (rEtV != 0)
+# define XCPT_RETHROW Siglongjmp(top_env, rEtV)
+
+#endif
+
#endif /* _P_P_PORTABILITY_H_ */
/* End of File ppport.h */
diff --git a/ext/Devel/PPPort/PPPort.xs b/ext/Devel/PPPort/PPPort.xs
index 2056271131..ed3c379ea6 100644
--- a/ext/Devel/PPPort/PPPort.xs
+++ b/ext/Devel/PPPort/PPPort.xs
@@ -8,13 +8,13 @@
*
********************************************************************************
*
-* $Revision: 7 $
+* $Revision: 8 $
* $Author: mhx $
-* $Date: 2004/08/13 12:49:19 +0200 $
+* $Date: 2005/01/31 08:10:55 +0100 $
*
********************************************************************************
*
-* Version 3.x, Copyright (C) 2004, Marcus Holland-Moritz.
+* Version 3.x, Copyright (C) 2004-2005, Marcus Holland-Moritz.
* Version 2.x, Copyright (C) 2001, Paul Marquess.
* Version 1.x, Copyright (C) 1999, Kenneth Albanowski.
*
@@ -68,6 +68,46 @@
/* ========== BEGIN XSMISC ================================================== */
+/* ---- from parts/inc/exception ---- */
+static void throws_exception(int throw_e)
+{
+ if (throw_e)
+ croak("boo\n");
+}
+
+static int exception(int throw_e)
+{
+ dTHR;
+ dXCPT;
+ SV *caught = get_sv("Devel::PPPort::exception_caught", 0);
+
+ XCPT_TRY_START {
+ throws_exception(throw_e);
+ } XCPT_TRY_END
+
+ XCPT_CATCH
+ {
+ sv_setiv(caught, 1);
+ XCPT_RETHROW;
+ }
+
+ sv_setiv(caught, 0);
+
+ return 42;
+}
+
+/* ---- from parts/inc/misc ---- */
+XS(XS_Devel__PPPort_dXSTARG); /* prototype */
+XS(XS_Devel__PPPort_dXSTARG)
+{
+ dXSARGS;
+ dXSTARG;
+ SP -= items;
+ IV iv = SvIV(ST(0)) + 1;
+ PUSHi(iv);
+ XSRETURN(1);
+}
+
/* ---- from parts/inc/MY_CXT ---- */
#define MY_CXT_KEY "Devel::PPPort::_guts" XS_VERSION
@@ -134,6 +174,9 @@ static void test_sv_vsetpvf(pTHX_ SV *sv, const char *pat, ...)
MODULE = Devel::PPPort PACKAGE = Devel::PPPort
BOOT:
+ /* ---- from parts/inc/misc ---- */
+ newXS("Devel::PPPort::dXSTARG", XS_Devel__PPPort_dXSTARG, file);
+
/* ---- from parts/inc/MY_CXT ---- */
{
MY_CXT_INIT;
@@ -280,6 +323,16 @@ CopFILE()
RETVAL
##----------------------------------------------------------------------
+## XSUBs from parts/inc/exception
+##----------------------------------------------------------------------
+
+int
+exception(throw_e)
+ int throw_e
+ OUTPUT:
+ RETVAL
+
+##----------------------------------------------------------------------
## XSUBs from parts/inc/grok
##----------------------------------------------------------------------
@@ -879,7 +932,7 @@ SvPV_nolen(sv)
const char *str;
CODE:
str = SvPV_nolen(sv);
- RETVAL = strEQ(str, "mhx") ? 3 : 0;
+ RETVAL = strEQ(str, "mhx") ? 42 : 0;
OUTPUT:
RETVAL
diff --git a/ext/Devel/PPPort/PPPort_pm.PL b/ext/Devel/PPPort/PPPort_pm.PL
index 8733c448fb..2f3a19de6b 100644
--- a/ext/Devel/PPPort/PPPort_pm.PL
+++ b/ext/Devel/PPPort/PPPort_pm.PL
@@ -4,13 +4,13 @@
#
################################################################################
#
-# $Revision: 30 $
+# $Revision: 33 $
# $Author: mhx $
-# $Date: 2004/08/17 20:01:49 +0200 $
+# $Date: 2005/01/31 08:10:55 +0100 $
#
################################################################################
#
-# Version 3.x, Copyright (C) 2004, Marcus Holland-Moritz.
+# Version 3.x, Copyright (C) 2004-2005, Marcus Holland-Moritz.
# Version 2.x, Copyright (C) 2001, Paul Marquess.
# Version 1.x, Copyright (C) 1999, Kenneth Albanowski.
#
@@ -309,13 +309,13 @@ __DATA__
#
################################################################################
#
-# $Revision: 30 $
+# $Revision: 33 $
# $Author: mhx $
-# $Date: 2004/08/17 20:01:49 +0200 $
+# $Date: 2005/01/31 08:10:55 +0100 $
#
################################################################################
#
-# Version 3.x, Copyright (C) 2004, Marcus Holland-Moritz.
+# Version 3.x, Copyright (C) 2004-2005, Marcus Holland-Moritz.
# Version 2.x, Copyright (C) 2001, Paul Marquess.
# Version 1.x, Copyright (C) 1999, Kenneth Albanowski.
#
@@ -379,7 +379,7 @@ that can check your source code. It will suggest hints and portability
notes, and can even make suggestions on how to change your code. You
can run it like any other Perl program:
- perl ppport.h
+ perl ppport.h [options] [files]
It also has embedded documentation, so you can use
@@ -452,7 +452,7 @@ Version 3.x was ported back to CPAN by Marcus Holland-Moritz.
=head1 COPYRIGHT
-Version 3.x, Copyright (C) 2004, Marcus Holland-Moritz.
+Version 3.x, Copyright (C) 2004-2005, Marcus Holland-Moritz.
Version 2.x, Copyright (C) 2001, Paul Marquess.
@@ -473,7 +473,7 @@ require DynaLoader;
use strict;
use vars qw($VERSION @ISA $data);
-$VERSION = do { my @r = '$Snapshot: /Devel-PPPort/3.04 $' =~ /(\d+\.\d+(?:_\d+)?)/; @r ? $r[0] : '9.99' };
+$VERSION = do { my @r = '$Snapshot: /Devel-PPPort/3.05 $' =~ /(\d+\.\d+(?:_\d+)?)/; @r ? $r[0] : '9.99' };
@ISA = qw(DynaLoader);
@@ -575,6 +575,8 @@ __DATA__
%include grok
+%include exception
+
#endif /* _P_P_PORTABILITY_H_ */
/* End of File ppport.h */
diff --git a/ext/Devel/PPPort/PPPort_xs.PL b/ext/Devel/PPPort/PPPort_xs.PL
index e4867da2bf..6488e0474b 100644
--- a/ext/Devel/PPPort/PPPort_xs.PL
+++ b/ext/Devel/PPPort/PPPort_xs.PL
@@ -4,13 +4,13 @@
#
################################################################################
#
-# $Revision: 7 $
+# $Revision: 8 $
# $Author: mhx $
-# $Date: 2004/08/13 12:49:19 +0200 $
+# $Date: 2005/01/31 08:10:55 +0100 $
#
################################################################################
#
-# Version 3.x, Copyright (C) 2004, Marcus Holland-Moritz.
+# Version 3.x, Copyright (C) 2004-2005, Marcus Holland-Moritz.
# Version 2.x, Copyright (C) 2001, Paul Marquess.
# Version 1.x, Copyright (C) 1999, Kenneth Albanowski.
#
@@ -85,13 +85,13 @@ __DATA__
*
********************************************************************************
*
-* $Revision: 7 $
+* $Revision: 8 $
* $Author: mhx $
-* $Date: 2004/08/13 12:49:19 +0200 $
+* $Date: 2005/01/31 08:10:55 +0100 $
*
********************************************************************************
*
-* Version 3.x, Copyright (C) 2004, Marcus Holland-Moritz.
+* Version 3.x, Copyright (C) 2004-2005, Marcus Holland-Moritz.
* Version 2.x, Copyright (C) 2001, Paul Marquess.
* Version 1.x, Copyright (C) 1999, Kenneth Albanowski.
*
diff --git a/ext/Devel/PPPort/README b/ext/Devel/PPPort/README
index 738b6ed90b..26564192c7 100644
--- a/ext/Devel/PPPort/README
+++ b/ext/Devel/PPPort/README
@@ -69,7 +69,7 @@ to create a ticket for the module.
5. COPYRIGHT
------------
-Version 3.x, Copyright (C) 2004, Marcus Holland-Moritz.
+Version 3.x, Copyright (C) 2004-2005, Marcus Holland-Moritz.
Version 2.x, Copyright (C) 2001, Paul Marquess.
Version 1.x, Copyright (C) 1999, Kenneth Albanowski.
diff --git a/ext/Devel/PPPort/TODO b/ext/Devel/PPPort/TODO
index bd09e7c46f..9f4feb67ef 100644
--- a/ext/Devel/PPPort/TODO
+++ b/ext/Devel/PPPort/TODO
@@ -1,7 +1,7 @@
TODO:
* improve apicheck (things like utf8_mg_pos_init() are
- not currently checks)
+ not currently checked)
* more documentation, more tests
diff --git a/ext/Devel/PPPort/apicheck_c.PL b/ext/Devel/PPPort/apicheck_c.PL
index fb9436b4cc..8976faa2f4 100644
--- a/ext/Devel/PPPort/apicheck_c.PL
+++ b/ext/Devel/PPPort/apicheck_c.PL
@@ -4,13 +4,13 @@
#
################################################################################
#
-# $Revision: 4 $
+# $Revision: 5 $
# $Author: mhx $
-# $Date: 2004/08/13 12:49:21 +0200 $
+# $Date: 2005/01/31 08:10:48 +0100 $
#
################################################################################
#
-# Version 3.x, Copyright (C) 2004, Marcus Holland-Moritz.
+# Version 3.x, Copyright (C) 2004-2005, Marcus Holland-Moritz.
# Version 2.x, Copyright (C) 2001, Paul Marquess.
# Version 1.x, Copyright (C) 1999, Kenneth Albanowski.
#
diff --git a/ext/Devel/PPPort/devel/buildperl.pl b/ext/Devel/PPPort/devel/buildperl.pl
index a1d94b8d7f..b26a3e9e3e 100644
--- a/ext/Devel/PPPort/devel/buildperl.pl
+++ b/ext/Devel/PPPort/devel/buildperl.pl
@@ -5,13 +5,13 @@
#
################################################################################
#
-# $Revision: 3 $
+# $Revision: 4 $
# $Author: mhx $
-# $Date: 2004/08/13 12:50:19 +0200 $
+# $Date: 2005/01/31 08:10:49 +0100 $
#
################################################################################
#
-# Version 3.x, Copyright (C) 2004, Marcus Holland-Moritz.
+# Version 3.x, Copyright (C) 2004-2005, Marcus Holland-Moritz.
# Version 2.x, Copyright (C) 2001, Paul Marquess.
# Version 1.x, Copyright (C) 1999, Kenneth Albanowski.
#
diff --git a/ext/Devel/PPPort/devel/mkapidoc.sh b/ext/Devel/PPPort/devel/mkapidoc.sh
index 61b4ccc654..74da36f982 100644
--- a/ext/Devel/PPPort/devel/mkapidoc.sh
+++ b/ext/Devel/PPPort/devel/mkapidoc.sh
@@ -5,13 +5,13 @@
#
################################################################################
#
-# $Revision: 4 $
+# $Revision: 6 $
# $Author: mhx $
-# $Date: 2004/08/13 12:50:22 +0200 $
+# $Date: 2005/01/31 08:10:49 +0100 $
#
################################################################################
#
-# Version 3.x, Copyright (C) 2004, Marcus Holland-Moritz.
+# Version 3.x, Copyright (C) 2004-2005, Marcus Holland-Moritz.
# Version 2.x, Copyright (C) 2001, Paul Marquess.
# Version 1.x, Copyright (C) 1999, Kenneth Albanowski.
#
@@ -62,7 +62,7 @@ else
fi
if isperlroot $PERLROOT; then
- grep -hr '=for apidoc' $PERLROOT | sed -e 's/=for apidoc //' | grep '|' | sort | uniq \
+ grep -hr '^=for apidoc' $PERLROOT | sed -e 's/=for apidoc //' | grep '|' | sort | uniq \
| perl -e'$f=pop;open(F,$f)||die"$f:$!";while(<F>){(split/\|/)[2]=~/(\w+)/;$h{$1}++}
while(<>){(split/\|/)[2]=~/(\w+)/;$h{$1}||print}' $EMBED >$OUTPUT
else
diff --git a/ext/Devel/PPPort/devel/mktodo b/ext/Devel/PPPort/devel/mktodo
index 319f611dc8..3c6cd7d31b 100644
--- a/ext/Devel/PPPort/devel/mktodo
+++ b/ext/Devel/PPPort/devel/mktodo
@@ -5,13 +5,13 @@
#
################################################################################
#
-# $Revision: 7 $
+# $Revision: 8 $
# $Author: mhx $
-# $Date: 2004/08/13 12:50:23 +0200 $
+# $Date: 2005/01/31 08:10:49 +0100 $
#
################################################################################
#
-# Version 3.x, Copyright (C) 2004, Marcus Holland-Moritz.
+# Version 3.x, Copyright (C) 2004-2005, Marcus Holland-Moritz.
# Version 2.x, Copyright (C) 2001, Paul Marquess.
# Version 1.x, Copyright (C) 1999, Kenneth Albanowski.
#
diff --git a/ext/Devel/PPPort/devel/mktodo.pl b/ext/Devel/PPPort/devel/mktodo.pl
index 6df1eb99f6..05d921b203 100644
--- a/ext/Devel/PPPort/devel/mktodo.pl
+++ b/ext/Devel/PPPort/devel/mktodo.pl
@@ -5,13 +5,13 @@
#
################################################################################
#
-# $Revision: 6 $
+# $Revision: 7 $
# $Author: mhx $
-# $Date: 2004/08/13 12:50:23 +0200 $
+# $Date: 2005/01/31 08:10:50 +0100 $
#
################################################################################
#
-# Version 3.x, Copyright (C) 2004, Marcus Holland-Moritz.
+# Version 3.x, Copyright (C) 2004-2005, Marcus Holland-Moritz.
# Version 2.x, Copyright (C) 2001, Paul Marquess.
# Version 1.x, Copyright (C) 1999, Kenneth Albanowski.
#
diff --git a/ext/Devel/PPPort/devel/scanprov b/ext/Devel/PPPort/devel/scanprov
index 934e816c46..9d1a8d4674 100644
--- a/ext/Devel/PPPort/devel/scanprov
+++ b/ext/Devel/PPPort/devel/scanprov
@@ -5,13 +5,13 @@
#
################################################################################
#
-# $Revision: 4 $
+# $Revision: 5 $
# $Author: mhx $
-# $Date: 2004/09/08 21:08:46 +0200 $
+# $Date: 2005/01/31 08:10:50 +0100 $
#
################################################################################
#
-# Version 3.x, Copyright (C) 2004, Marcus Holland-Moritz.
+# Version 3.x, Copyright (C) 2004-2005, Marcus Holland-Moritz.
# Version 2.x, Copyright (C) 2001, Paul Marquess.
# Version 1.x, Copyright (C) 1999, Kenneth Albanowski.
#
diff --git a/ext/Devel/PPPort/mktests.PL b/ext/Devel/PPPort/mktests.PL
index cbe9a9851e..684a5cafba 100644
--- a/ext/Devel/PPPort/mktests.PL
+++ b/ext/Devel/PPPort/mktests.PL
@@ -4,13 +4,13 @@
#
################################################################################
#
-# $Revision: 18 $
+# $Revision: 19 $
# $Author: mhx $
-# $Date: 2004/08/30 20:49:12 +0200 $
+# $Date: 2005/01/31 08:10:50 +0100 $
#
################################################################################
#
-# Version 3.x, Copyright (C) 2004, Marcus Holland-Moritz.
+# Version 3.x, Copyright (C) 2004-2005, Marcus Holland-Moritz.
# Version 2.x, Copyright (C) 2001, Paul Marquess.
# Version 1.x, Copyright (C) 1999, Kenneth Albanowski.
#
diff --git a/ext/Devel/PPPort/module2.c b/ext/Devel/PPPort/module2.c
index 5e59ae3cfd..0687c1389d 100644
--- a/ext/Devel/PPPort/module2.c
+++ b/ext/Devel/PPPort/module2.c
@@ -4,13 +4,13 @@
*
********************************************************************************
*
-* $Revision: 5 $
+* $Revision: 6 $
* $Author: mhx $
-* $Date: 2004/08/23 00:51:54 +0200 $
+* $Date: 2005/01/31 08:10:50 +0100 $
*
********************************************************************************
*
-* Version 3.x, Copyright (C) 2004, Marcus Holland-Moritz.
+* Version 3.x, Copyright (C) 2004-2005, Marcus Holland-Moritz.
* Version 2.x, Copyright (C) 2001, Paul Marquess.
* Version 1.x, Copyright (C) 1999, Kenneth Albanowski.
*
diff --git a/ext/Devel/PPPort/module3.c b/ext/Devel/PPPort/module3.c
index 4df598aa31..4c230fa7e2 100644
--- a/ext/Devel/PPPort/module3.c
+++ b/ext/Devel/PPPort/module3.c
@@ -4,13 +4,13 @@
*
********************************************************************************
*
-* $Revision: 4 $
+* $Revision: 5 $
* $Author: mhx $
-* $Date: 2004/08/13 12:49:24 +0200 $
+* $Date: 2005/01/31 08:10:50 +0100 $
*
********************************************************************************
*
-* Version 3.x, Copyright (C) 2004, Marcus Holland-Moritz.
+* Version 3.x, Copyright (C) 2004-2005, Marcus Holland-Moritz.
* Version 2.x, Copyright (C) 2001, Paul Marquess.
* Version 1.x, Copyright (C) 1999, Kenneth Albanowski.
*
diff --git a/ext/Devel/PPPort/parts/apicheck.pl b/ext/Devel/PPPort/parts/apicheck.pl
index b49c53a1b8..b4b668f74d 100644
--- a/ext/Devel/PPPort/parts/apicheck.pl
+++ b/ext/Devel/PPPort/parts/apicheck.pl
@@ -5,13 +5,13 @@
#
################################################################################
#
-# $Revision: 10 $
+# $Revision: 11 $
# $Author: mhx $
-# $Date: 2004/08/17 20:56:15 +0200 $
+# $Date: 2005/01/31 08:10:51 +0100 $
#
################################################################################
#
-# Version 3.x, Copyright (C) 2004, Marcus Holland-Moritz.
+# Version 3.x, Copyright (C) 2004-2005, Marcus Holland-Moritz.
# Version 2.x, Copyright (C) 2001, Paul Marquess.
# Version 1.x, Copyright (C) 1999, Kenneth Albanowski.
#
diff --git a/ext/Devel/PPPort/parts/base/5004000 b/ext/Devel/PPPort/parts/base/5004000
index 795d0cbc01..f5f031fe3f 100644
--- a/ext/Devel/PPPort/parts/base/5004000
+++ b/ext/Devel/PPPort/parts/base/5004000
@@ -21,6 +21,8 @@ SvUV # U
SvUVX # U
SvUVx # U
XPUSHu # U
+gv_efullname3 # U
+gv_fullname3 # U
my_memcmp # U
newRV_inc # E
sv_2uv # U
diff --git a/ext/Devel/PPPort/parts/base/5004050 b/ext/Devel/PPPort/parts/base/5004050
index 4b43177c8c..d1ca35ef84 100644
--- a/ext/Devel/PPPort/parts/base/5004050
+++ b/ext/Devel/PPPort/parts/base/5004050
@@ -10,20 +10,20 @@ ERRSV # added by devel/scanprov
PL_compiling # added by devel/scanprov
PL_curcop # added by devel/scanprov
PL_curstash # added by devel/scanprov
+PL_debstash # added by devel/scanprov
PL_defgv # added by devel/scanprov
+PL_diehook # added by devel/scanprov
PL_dirty # added by devel/scanprov
+PL_errgv # added by devel/scanprov
+PL_perl_destruct_level # added by devel/scanprov
PL_perldb # added by devel/scanprov
PL_rsfp # added by devel/scanprov
PL_rsfp_filters # added by devel/scanprov
-PL_stdingv # added by devel/scanprov
-SAVE_DEFSV # added by devel/scanprov
-dTHR # added by devel/scanprov
-PL_debstash # added by devel/scanprov
-PL_diehook # added by devel/scanprov
-PL_errgv # added by devel/scanprov
-PL_perl_destruct_level # added by devel/scanprov
PL_stack_base # added by devel/scanprov
PL_stack_sp # added by devel/scanprov
+PL_stdingv # added by devel/scanprov
PL_sv_arenaroot # added by devel/scanprov
PL_tainted # added by devel/scanprov
PL_tainting # added by devel/scanprov
+SAVE_DEFSV # added by devel/scanprov
+dTHR # added by devel/scanprov
diff --git a/ext/Devel/PPPort/parts/base/5005000 b/ext/Devel/PPPort/parts/base/5005000
index f0bfeed5a2..553a4be651 100644
--- a/ext/Devel/PPPort/parts/base/5005000
+++ b/ext/Devel/PPPort/parts/base/5005000
@@ -1,10 +1,10 @@
5.005000
PL_modglobal # E
+END_EXTERN_C # added by devel/scanprov
+EXTERN_C # added by devel/scanprov
NOOP # added by devel/scanprov
PL_Sv # added by devel/scanprov
PL_copline # added by devel/scanprov
PL_hexdigit # added by devel/scanprov
PL_hints # added by devel/scanprov
-END_EXTERN_C # added by devel/scanprov
-EXTERN_C # added by devel/scanprov
START_EXTERN_C # added by devel/scanprov
diff --git a/ext/Devel/PPPort/parts/base/5006000 b/ext/Devel/PPPort/parts/base/5006000
index 6705683ed3..f26d1726ed 100644
--- a/ext/Devel/PPPort/parts/base/5006000
+++ b/ext/Devel/PPPort/parts/base/5006000
@@ -108,14 +108,12 @@ gv_autoload4 # E (Perl_gv_autoload4)
gv_check # E (Perl_gv_check)
gv_dump # E
gv_efullname # E (Perl_gv_efullname)
-gv_efullname3 # E (Perl_gv_efullname3)
gv_fetchfile # E (Perl_gv_fetchfile)
gv_fetchmeth # E (Perl_gv_fetchmeth)
gv_fetchmethod # E (Perl_gv_fetchmethod)
gv_fetchmethod_autoload # E (Perl_gv_fetchmethod_autoload)
gv_fetchpv # E (Perl_gv_fetchpv)
gv_fullname # E (Perl_gv_fullname)
-gv_fullname3 # E (Perl_gv_fullname3)
gv_init # E (Perl_gv_init)
gv_stashpv # E (Perl_gv_stashpv)
gv_stashpvn # E (Perl_gv_stashpvn)
@@ -483,6 +481,8 @@ NVTYPE # added by devel/scanprov
PERL_REVISION # added by devel/scanprov
PERL_SUBVERSION # added by devel/scanprov
PERL_VERSION # added by devel/scanprov
+PL_no_modify # added by devel/scanprov
+PL_ppaddr # added by devel/scanprov
PTR2IV # added by devel/scanprov
PTR2NV # added by devel/scanprov
PTR2UV # added by devel/scanprov
@@ -498,7 +498,6 @@ dNOOP # added by devel/scanprov
dTHX # added by devel/scanprov
dTHXa # added by devel/scanprov
dTHXoa # added by devel/scanprov
+dXSTARG # added by devel/scanprov
pTHX # added by devel/scanprov
pTHX_ # added by devel/scanprov
-PL_no_modify # added by devel/scanprov
-PL_ppaddr # added by devel/scanprov
diff --git a/ext/Devel/PPPort/parts/base/5008001 b/ext/Devel/PPPort/parts/base/5008001
index cc274f482a..08049763a9 100644
--- a/ext/Devel/PPPort/parts/base/5008001
+++ b/ext/Devel/PPPort/parts/base/5008001
@@ -13,8 +13,8 @@ sv_setpviv # U
sv_setpviv_mg # U
unpackstring # U
IN_PERL_COMPILETIME # 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
PERL_SCAN_SILENT_ILLDIGIT # added by devel/scanprov
XST_mUV # added by devel/scanprov
-PERL_GCC_BRACE_GROUPS_FORBIDDEN # added by devel/scanprov
diff --git a/ext/Devel/PPPort/parts/base/5008006 b/ext/Devel/PPPort/parts/base/5008006
new file mode 100644
index 0000000000..ba5cad07ed
--- /dev/null
+++ b/ext/Devel/PPPort/parts/base/5008006
@@ -0,0 +1 @@
+5.008006
diff --git a/ext/Devel/PPPort/parts/base/5009002 b/ext/Devel/PPPort/parts/base/5009002
index 2b66b272cc..69a452632d 100644
--- a/ext/Devel/PPPort/parts/base/5009002
+++ b/ext/Devel/PPPort/parts/base/5009002
@@ -8,6 +8,8 @@ XPUSHmortal # E
ZeroD # E
dUNDERBAR # E
find_rundefsvoffset # U
+gv_fetchpvn_flags # E
+gv_fetchsv # E
mPUSHi # U
mPUSHn # U
mPUSHp # U
@@ -16,6 +18,14 @@ mXPUSHi # U
mXPUSHn # U
mXPUSHp # U
mXPUSHu # U
+op_refcnt_lock # U
+op_refcnt_unlock # U
+savesvpv # E
vnormal # E
-PERL_BCDVERSION # added by devel/scanprov
MY_CXT_CLONE # added by devel/scanprov
+PERL_BCDVERSION # added by devel/scanprov
+XCPT_CATCH # added by devel/scanprov
+XCPT_RETHROW # added by devel/scanprov
+XCPT_TRY_END # added by devel/scanprov
+XCPT_TRY_START # added by devel/scanprov
+dXCPT # added by devel/scanprov
diff --git a/ext/Devel/PPPort/parts/embed.fnc b/ext/Devel/PPPort/parts/embed.fnc
index 8ca6b0e85a..795f3fe6c5 100644
--- a/ext/Devel/PPPort/parts/embed.fnc
+++ b/ext/Devel/PPPort/parts/embed.fnc
@@ -245,7 +245,7 @@ Ap |GV* |gv_autoload4 |HV* stash|const char* name|STRLEN len \
|I32 method
Ap |void |gv_check |HV* stash
Ap |void |gv_efullname |SV* sv|GV* gv
-Ap |void |gv_efullname3 |SV* sv|GV* gv|const char* prefix
+Amb |void |gv_efullname3 |SV* sv|GV* gv|const char* prefix
Ap |void |gv_efullname4 |SV* sv|GV* gv|const char* prefix|bool keepmain
Ap |GV* |gv_fetchfile |const char* name
Apd |GV* |gv_fetchmeth |HV* stash|const char* name|STRLEN len \
@@ -257,12 +257,12 @@ Apd |GV* |gv_fetchmethod_autoload|HV* stash|const char* name \
|I32 autoload
Ap |GV* |gv_fetchpv |const char* name|I32 add|I32 sv_type
Ap |void |gv_fullname |SV* sv|GV* gv
-Ap |void |gv_fullname3 |SV* sv|GV* gv|const char* prefix
+Amb |void |gv_fullname3 |SV* sv|GV* gv|const char* prefix
Ap |void |gv_fullname4 |SV* sv|GV* gv|const char* prefix|bool keepmain
Ap |void |gv_init |GV* gv|HV* stash|const char* name \
|STRLEN len|int multi
Apd |HV* |gv_stashpv |const char* name|I32 create
-Ap |HV* |gv_stashpvn |const char* name|U32 namelen|I32 create
+Apd |HV* |gv_stashpvn |const char* name|U32 namelen|I32 create
Apd |HV* |gv_stashsv |SV* sv|I32 create
Apd |void |hv_clear |HV* tb
Ap |void |hv_delayfree_ent|HV* hv|HE* entry
@@ -361,8 +361,10 @@ p |I32 |keyword |char* d|I32 len
Ap |void |leave_scope |I32 base
p |void |lex_end
p |void |lex_start |SV* line
-Ap |void |op_null |OP* o
+Ap |void |op_null |OP* o
p |void |op_clear |OP* o
+Ap |void |op_refcnt_lock
+Ap |void |op_refcnt_unlock
p |OP* |linklist |OP* o
p |OP* |list |OP* o
p |OP* |listkids |OP* o
@@ -594,7 +596,7 @@ Apd |void |pack_cat |SV *cat|char *pat|char *patend|SV **beglist|SV **endlist|SV
Apd |void |packlist |SV *cat|char *pat|char *patend|SV **beglist|SV **endlist
p |void |pidgone |Pid_t pid|int status
Ap |void |pmflag |U32* pmfl|int ch
-p |OP* |pmruntime |OP* pm|OP* expr|OP* repl
+p |OP* |pmruntime |OP* pm|OP* expr|bool isreg
p |OP* |pmtrans |OP* o|OP* expr|OP* repl
Ap |void |pop_scope
p |OP* |prepend_elem |I32 optype|OP* head|OP* tail
@@ -720,7 +722,7 @@ pd |void |sv_add_arena |char* ptr|U32 size|U32 flags
Apd |int |sv_backoff |SV* sv
Apd |SV* |sv_bless |SV* sv|HV* stash
Afpd |void |sv_catpvf |SV* sv|const char* pat|...
-Ap |void |sv_vcatpvf |SV* sv|const char* pat|va_list* args
+Apd |void |sv_vcatpvf |SV* sv|const char* pat|va_list* args
Apd |void |sv_catpv |SV* sv|const char* ptr
Amdb |void |sv_catpvn |SV* sv|const char* ptr|STRLEN len
Amdb |void |sv_catsv |SV* dsv|SV* ssv
@@ -754,7 +756,7 @@ Apd |STRLEN |sv_len_utf8 |SV* sv
Apd |void |sv_magic |SV* sv|SV* obj|int how|const char* name \
|I32 namlen
Apd |MAGIC *|sv_magicext |SV* sv|SV* obj|int how|MGVTBL *vtbl \
- | const char* name|I32 namlen
+ |const char* name|I32 namlen
Apd |SV* |sv_mortalcopy |SV* oldsv
Apd |SV* |sv_newmortal
Apd |SV* |sv_newref |SV* sv
@@ -772,7 +774,7 @@ Apd |void |sv_replace |SV* sv|SV* nsv
Apd |void |sv_report_used
Apd |void |sv_reset |char* s|HV* stash
Afpd |void |sv_setpvf |SV* sv|const char* pat|...
-Ap |void |sv_vsetpvf |SV* sv|const char* pat|va_list* args
+Apd |void |sv_vsetpvf |SV* sv|const char* pat|va_list* args
Apd |void |sv_setiv |SV* sv|IV num
Apdb |void |sv_setpviv |SV* sv|IV num
Apd |void |sv_setuv |SV* sv|UV num
@@ -872,12 +874,12 @@ Ap |struct perl_vars *|GetVars
Ap |int |runops_standard
Ap |int |runops_debug
Afpd |void |sv_catpvf_mg |SV *sv|const char* pat|...
-Ap |void |sv_vcatpvf_mg |SV* sv|const char* pat|va_list* args
+Apd |void |sv_vcatpvf_mg |SV* sv|const char* pat|va_list* args
Apd |void |sv_catpv_mg |SV *sv|const char *ptr
Apd |void |sv_catpvn_mg |SV *sv|const char *ptr|STRLEN len
Apd |void |sv_catsv_mg |SV *dstr|SV *sstr
Afpd |void |sv_setpvf_mg |SV *sv|const char* pat|...
-Ap |void |sv_vsetpvf_mg |SV* sv|const char* pat|va_list* args
+Apd |void |sv_vsetpvf_mg |SV* sv|const char* pat|va_list* args
Apd |void |sv_setiv_mg |SV *sv|IV i
Apdb |void |sv_setpviv_mg |SV *sv|IV iv
Apd |void |sv_setuv_mg |SV *sv|UV u
@@ -902,12 +904,6 @@ Ap |void |do_pmop_dump |I32 level|PerlIO *file|PMOP *pm
Ap |void |do_sv_dump |I32 level|PerlIO *file|SV *sv|I32 nest \
|I32 maxnest|bool dumpops|STRLEN pvlim
Ap |void |magic_dump |MAGIC *mg
-#if defined(PERL_FLEXIBLE_EXCEPTIONS)
-Ap |void* |default_protect|volatile JMPENV *je|int *excpt \
- |protect_body_t body|...
-Ap |void* |vdefault_protect|volatile JMPENV *je|int *excpt \
- |protect_body_t body|va_list *args
-#endif
Ap |void |reginitcolors
Apd |char* |sv_2pv_nolen |SV* sv
Apd |char* |sv_2pvutf8_nolen|SV* sv
@@ -1034,7 +1030,7 @@ Ap |void |Slab_Free |void *op
#if defined(PERL_IN_PERL_C) || defined(PERL_DECL_PROT)
s |void |find_beginning
s |void |forbid_setid |char *
-s |void |incpush |char *|int|int|int
+s |void |incpush |char *|int|int|int|int
s |void |init_interp
s |void |init_ids
s |void |init_lexer
@@ -1054,12 +1050,6 @@ s |void* |parse_body |char **env|XSINIT_t xsinit
s |void* |run_body |I32 oldscope
s |void |call_body |OP *myop|int is_eval
s |void* |call_list_body |CV *cv
-#if defined(PERL_FLEXIBLE_EXCEPTIONS)
-s |void* |vparse_body |va_list args
-s |void* |vrun_body |va_list args
-s |void* |vcall_body |va_list args
-s |void* |vcall_list_body|va_list args
-#endif
#endif
#if defined(PERL_IN_PP_C) || defined(PERL_DECL_PROT)
@@ -1082,9 +1072,6 @@ s |int |div128 |SV *pnum|bool *done
#if defined(PERL_IN_PP_CTL_C) || defined(PERL_DECL_PROT)
s |OP* |docatch |OP *o
s |void* |docatch_body
-#if defined(PERL_FLEXIBLE_EXCEPTIONS)
-s |void* |vdocatch_body |va_list args
-#endif
s |OP* |dofindlabel |OP *o|char *label|OP **opstack|OP **oplimit
s |OP* |doparseform |SV *sv
sn |bool |num_overflow |NV value|I32 fldsize|I32 frcsize
@@ -1282,7 +1269,7 @@ s |HV * |find_in_my_stash|char *pkgname|I32 len
s |SV* |new_constant |char *s|STRLEN len|const char *key|SV *sv \
|SV *pv|const char *type
# if defined(DEBUGGING)
-s |void |tokereport |char *thing|char *s|I32 rv
+s |int |tokereport |char *s|I32 rv
# endif
s |int |ao |int toketype
s |void |depcom
@@ -1390,7 +1377,7 @@ sd |void |cv_dump |CV *cv|char *title
pd |CV* |find_runcv |U32 *db_seqp
p |void |free_tied_hv_pool
#if defined(DEBUGGING)
-p |int |get_debug_opts |char **s
+p |int |get_debug_opts |char **s|bool givehelp
#endif
Ap |void |save_set_svflags|SV* sv|U32 mask|U32 val
Apod |void |hv_assert |HV* tb
@@ -1484,4 +1471,10 @@ np |long |my_betohl |long n
np |void |my_swabn |void* ptr|int n
+Ap |GV* |gv_fetchpvn_flags|const char* name|STRLEN len|I32 flags|I32 sv_type
+Ap |GV* |gv_fetchsv|SV *name|I32 flags|I32 sv_type
+dp |bool |is_gv_magical_sv|SV *name|U32 flags
+
+Apd |char* |savesvpv |SV* sv
+
END_EXTERN_C
diff --git a/ext/Devel/PPPort/parts/inc/MY_CXT b/ext/Devel/PPPort/parts/inc/MY_CXT
index 5ef575f90b..5b26bafb8f 100644
--- a/ext/Devel/PPPort/parts/inc/MY_CXT
+++ b/ext/Devel/PPPort/parts/inc/MY_CXT
@@ -1,12 +1,12 @@
################################################################################
##
-## $Revision: 9 $
+## $Revision: 10 $
## $Author: mhx $
-## $Date: 2004/09/08 22:15:16 +0200 $
+## $Date: 2005/01/31 08:10:52 +0100 $
##
################################################################################
##
-## Version 3.x, Copyright (C) 2004, Marcus Holland-Moritz.
+## Version 3.x, Copyright (C) 2004-2005, Marcus Holland-Moritz.
## Version 2.x, Copyright (C) 2001, Paul Marquess.
## Version 1.x, Copyright (C) 1999, Kenneth Albanowski.
##
diff --git a/ext/Devel/PPPort/parts/inc/SvPV b/ext/Devel/PPPort/parts/inc/SvPV
index 34aa90f058..56474d276e 100644
--- a/ext/Devel/PPPort/parts/inc/SvPV
+++ b/ext/Devel/PPPort/parts/inc/SvPV
@@ -1,12 +1,12 @@
################################################################################
##
-## $Revision: 8 $
+## $Revision: 10 $
## $Author: mhx $
-## $Date: 2004/12/29 14:17:20 +0100 $
+## $Date: 2005/01/31 08:10:54 +0100 $
##
################################################################################
##
-## Version 3.x, Copyright (C) 2004, Marcus Holland-Moritz.
+## Version 3.x, Copyright (C) 2004-2005, Marcus Holland-Moritz.
## Version 2.x, Copyright (C) 2001, Paul Marquess.
## Version 1.x, Copyright (C) 1999, Kenneth Albanowski.
##
@@ -129,12 +129,12 @@ SvPV_nolen(sv)
const char *str;
CODE:
str = SvPV_nolen(sv);
- RETVAL = strEQ(str, "mhx") ? 3 : 0;
+ RETVAL = strEQ(str, "mhx") ? 42 : 0;
OUTPUT:
RETVAL
=tests plan => 2
ok(&Devel::PPPort::SvPVbyte("mhx"), 3);
-ok(&Devel::PPPort::SvPVbyte("mhx"), 3);
+ok(&Devel::PPPort::SvPV_nolen("mhx"), 42);
diff --git a/ext/Devel/PPPort/parts/inc/call b/ext/Devel/PPPort/parts/inc/call
index e01d6a30b5..bffb3132f5 100644
--- a/ext/Devel/PPPort/parts/inc/call
+++ b/ext/Devel/PPPort/parts/inc/call
@@ -1,12 +1,12 @@
################################################################################
##
-## $Revision: 7 $
+## $Revision: 8 $
## $Author: mhx $
-## $Date: 2004/08/13 12:45:53 +0200 $
+## $Date: 2005/01/31 08:10:51 +0100 $
##
################################################################################
##
-## Version 3.x, Copyright (C) 2004, Marcus Holland-Moritz.
+## Version 3.x, Copyright (C) 2004-2005, Marcus Holland-Moritz.
## Version 2.x, Copyright (C) 2001, Paul Marquess.
## Version 1.x, Copyright (C) 1999, Kenneth Albanowski.
##
diff --git a/ext/Devel/PPPort/parts/inc/cop b/ext/Devel/PPPort/parts/inc/cop
index 3599410466..b12fdfb403 100644
--- a/ext/Devel/PPPort/parts/inc/cop
+++ b/ext/Devel/PPPort/parts/inc/cop
@@ -1,12 +1,12 @@
################################################################################
##
-## $Revision: 3 $
+## $Revision: 4 $
## $Author: mhx $
-## $Date: 2004/08/13 12:45:54 +0200 $
+## $Date: 2005/01/31 08:10:51 +0100 $
##
################################################################################
##
-## Version 3.x, Copyright (C) 2004, Marcus Holland-Moritz.
+## Version 3.x, Copyright (C) 2004-2005, Marcus Holland-Moritz.
## Version 2.x, Copyright (C) 2001, Paul Marquess.
## Version 1.x, Copyright (C) 1999, Kenneth Albanowski.
##
diff --git a/ext/Devel/PPPort/parts/inc/exception b/ext/Devel/PPPort/parts/inc/exception
new file mode 100644
index 0000000000..299695820c
--- /dev/null
+++ b/ext/Devel/PPPort/parts/inc/exception
@@ -0,0 +1,102 @@
+################################################################################
+##
+## $Revision: 2 $
+## $Author: mhx $
+## $Date: 2005/01/31 08:10:51 +0100 $
+##
+################################################################################
+##
+## Version 3.x, Copyright (C) 2004-2005, 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
+
+dXCPT
+XCPT_TRY_START
+XCPT_TRY_END
+XCPT_CATCH
+XCPT_RETHROW
+
+=implementation
+
+#ifdef dJMPENV
+
+# ifndef dXCPT
+# define dXCPT dJMPENV; int rEtV = 0
+# define XCPT_TRY_START JMPENV_PUSH(rEtV); if (rEtV == 0)
+# define XCPT_TRY_END JMPENV_POP;
+# define XCPT_CATCH if (rEtV != 0)
+# define XCPT_RETHROW JMPENV_JUMP(rEtV)
+# endif
+
+#else
+
+# define dXCPT Sigjmp_buf oldTOP; int rEtV = 0
+# define XCPT_TRY_START Copy(top_env, oldTOP, 1, Sigjmp_buf); rEtV = Sigsetjmp(top_env, 1); if (rEtV == 0)
+# define XCPT_TRY_END Copy(oldTOP, top_env, 1, Sigjmp_buf);
+# define XCPT_CATCH if (rEtV != 0)
+# define XCPT_RETHROW Siglongjmp(top_env, rEtV)
+
+#endif
+
+=xsmisc
+
+static void throws_exception(int throw_e)
+{
+ if (throw_e)
+ croak("boo\n");
+}
+
+static int exception(int throw_e)
+{
+ dTHR;
+ dXCPT;
+ SV *caught = get_sv("Devel::PPPort::exception_caught", 0);
+
+ XCPT_TRY_START {
+ throws_exception(throw_e);
+ } XCPT_TRY_END
+
+ XCPT_CATCH
+ {
+ sv_setiv(caught, 1);
+ XCPT_RETHROW;
+ }
+
+ sv_setiv(caught, 0);
+
+ return 42;
+}
+
+=xsubs
+
+int
+exception(throw_e)
+ int throw_e
+ OUTPUT:
+ RETVAL
+
+=tests plan => 7
+
+my $rv;
+
+$Devel::PPPort::exception_caught = undef;
+
+$rv = eval { &Devel::PPPort::exception(0) };
+ok($@, '');
+ok(defined $rv);
+ok($rv, 42);
+ok($Devel::PPPort::exception_caught, 0);
+
+$Devel::PPPort::exception_caught = undef;
+
+$rv = eval { &Devel::PPPort::exception(1) };
+ok($@, "boo\n");
+ok(not defined $rv);
+ok($Devel::PPPort::exception_caught, 1);
diff --git a/ext/Devel/PPPort/parts/inc/format b/ext/Devel/PPPort/parts/inc/format
index 7c520428e4..78d46f92de 100644
--- a/ext/Devel/PPPort/parts/inc/format
+++ b/ext/Devel/PPPort/parts/inc/format
@@ -1,12 +1,12 @@
################################################################################
##
-## $Revision: 2 $
+## $Revision: 3 $
## $Author: mhx $
-## $Date: 2004/08/13 12:45:54 +0200 $
+## $Date: 2005/01/31 08:10:51 +0100 $
##
################################################################################
##
-## Version 3.x, Copyright (C) 2004, Marcus Holland-Moritz.
+## Version 3.x, Copyright (C) 2004-2005, Marcus Holland-Moritz.
## Version 2.x, Copyright (C) 2001, Paul Marquess.
## Version 1.x, Copyright (C) 1999, Kenneth Albanowski.
##
diff --git a/ext/Devel/PPPort/parts/inc/grok b/ext/Devel/PPPort/parts/inc/grok
index 97d4f49c2e..be7679fa95 100644
--- a/ext/Devel/PPPort/parts/inc/grok
+++ b/ext/Devel/PPPort/parts/inc/grok
@@ -1,12 +1,12 @@
################################################################################
##
-## $Revision: 6 $
+## $Revision: 7 $
## $Author: mhx $
-## $Date: 2004/08/13 12:45:54 +0200 $
+## $Date: 2005/01/31 08:10:51 +0100 $
##
################################################################################
##
-## Version 3.x, Copyright (C) 2004, Marcus Holland-Moritz.
+## Version 3.x, Copyright (C) 2004-2005, Marcus Holland-Moritz.
## Version 2.x, Copyright (C) 2001, Paul Marquess.
## Version 1.x, Copyright (C) 1999, Kenneth Albanowski.
##
diff --git a/ext/Devel/PPPort/parts/inc/limits b/ext/Devel/PPPort/parts/inc/limits
index 269b7cef55..1cec183357 100644
--- a/ext/Devel/PPPort/parts/inc/limits
+++ b/ext/Devel/PPPort/parts/inc/limits
@@ -1,12 +1,12 @@
################################################################################
##
-## $Revision: 2 $
+## $Revision: 3 $
## $Author: mhx $
-## $Date: 2004/08/13 12:45:55 +0200 $
+## $Date: 2005/01/31 08:10:51 +0100 $
##
################################################################################
##
-## Version 3.x, Copyright (C) 2004, Marcus Holland-Moritz.
+## Version 3.x, Copyright (C) 2004-2005, Marcus Holland-Moritz.
## Version 2.x, Copyright (C) 2001, Paul Marquess.
## Version 1.x, Copyright (C) 1999, Kenneth Albanowski.
##
diff --git a/ext/Devel/PPPort/parts/inc/mPUSH b/ext/Devel/PPPort/parts/inc/mPUSH
index 809d90b060..51bed81651 100644
--- a/ext/Devel/PPPort/parts/inc/mPUSH
+++ b/ext/Devel/PPPort/parts/inc/mPUSH
@@ -1,12 +1,12 @@
################################################################################
##
-## $Revision: 4 $
+## $Revision: 5 $
## $Author: mhx $
-## $Date: 2004/08/13 12:45:55 +0200 $
+## $Date: 2005/01/31 08:10:52 +0100 $
##
################################################################################
##
-## Version 3.x, Copyright (C) 2004, Marcus Holland-Moritz.
+## Version 3.x, Copyright (C) 2004-2005, Marcus Holland-Moritz.
## Version 2.x, Copyright (C) 2001, Paul Marquess.
## Version 1.x, Copyright (C) 1999, Kenneth Albanowski.
##
diff --git a/ext/Devel/PPPort/parts/inc/magic b/ext/Devel/PPPort/parts/inc/magic
index 66afaad2af..ccda7ecd5a 100644
--- a/ext/Devel/PPPort/parts/inc/magic
+++ b/ext/Devel/PPPort/parts/inc/magic
@@ -1,12 +1,12 @@
################################################################################
##
-## $Revision: 7 $
+## $Revision: 8 $
## $Author: mhx $
-## $Date: 2004/08/13 12:45:55 +0200 $
+## $Date: 2005/01/31 08:10:52 +0100 $
##
################################################################################
##
-## Version 3.x, Copyright (C) 2004, Marcus Holland-Moritz.
+## Version 3.x, Copyright (C) 2004-2005, Marcus Holland-Moritz.
## Version 2.x, Copyright (C) 2001, Paul Marquess.
## Version 1.x, Copyright (C) 1999, Kenneth Albanowski.
##
diff --git a/ext/Devel/PPPort/parts/inc/misc b/ext/Devel/PPPort/parts/inc/misc
index c8d63fdce3..f49d7bfd95 100644
--- a/ext/Devel/PPPort/parts/inc/misc
+++ b/ext/Devel/PPPort/parts/inc/misc
@@ -1,12 +1,12 @@
################################################################################
##
-## $Revision: 17 $
+## $Revision: 19 $
## $Author: mhx $
-## $Date: 2004/09/08 21:10:12 +0200 $
+## $Date: 2005/01/31 08:10:52 +0100 $
##
################################################################################
##
-## Version 3.x, Copyright (C) 2004, Marcus Holland-Moritz.
+## Version 3.x, Copyright (C) 2004-2005, Marcus Holland-Moritz.
## Version 2.x, Copyright (C) 2001, Paul Marquess.
## Version 1.x, Copyright (C) 1999, Kenneth Albanowski.
##
@@ -211,6 +211,25 @@ __UNDEFINED__ UNDERBAR DEFSV
__UNDEFINED__ dAX I32 ax = MARK - PL_stack_base + 1
__UNDEFINED__ dITEMS I32 items = SP - MARK
+__UNDEFINED__ dXSTARG SV * targ = sv_newmortal()
+
+=xsmisc
+
+XS(XS_Devel__PPPort_dXSTARG); /* prototype */
+XS(XS_Devel__PPPort_dXSTARG)
+{
+ dXSARGS;
+ dXSTARG;
+ SP -= items;
+ IV iv = SvIV(ST(0)) + 1;
+ PUSHi(iv);
+ XSRETURN(1);
+}
+
+=xsboot
+
+newXS("Devel::PPPort::dXSTARG", XS_Devel__PPPort_dXSTARG, file);
+
=xsubs
int
@@ -330,7 +349,7 @@ UNDERBAR()
OUTPUT:
RETVAL
-=tests plan => 31
+=tests plan => 32
use vars qw($my_sv @my_av %my_hv);
@@ -383,3 +402,5 @@ ok(&Devel::PPPort::get_cv('my_cv', 0));
ok(!&Devel::PPPort::get_cv('not_my_cv', 0));
ok(&Devel::PPPort::get_cv('not_my_cv', 1));
+ok(Devel::PPPort::dXSTARG(42), 43);
+
diff --git a/ext/Devel/PPPort/parts/inc/newCONSTSUB b/ext/Devel/PPPort/parts/inc/newCONSTSUB
index d24e465031..fbf752a569 100644
--- a/ext/Devel/PPPort/parts/inc/newCONSTSUB
+++ b/ext/Devel/PPPort/parts/inc/newCONSTSUB
@@ -1,12 +1,12 @@
################################################################################
##
-## $Revision: 7 $
+## $Revision: 8 $
## $Author: mhx $
-## $Date: 2004/08/13 12:45:55 +0200 $
+## $Date: 2005/01/31 08:10:52 +0100 $
##
################################################################################
##
-## Version 3.x, Copyright (C) 2004, Marcus Holland-Moritz.
+## Version 3.x, Copyright (C) 2004-2005, Marcus Holland-Moritz.
## Version 2.x, Copyright (C) 2001, Paul Marquess.
## Version 1.x, Copyright (C) 1999, Kenneth Albanowski.
##
diff --git a/ext/Devel/PPPort/parts/inc/newRV b/ext/Devel/PPPort/parts/inc/newRV
index f593769698..2a4f909446 100644
--- a/ext/Devel/PPPort/parts/inc/newRV
+++ b/ext/Devel/PPPort/parts/inc/newRV
@@ -1,12 +1,12 @@
################################################################################
##
-## $Revision: 4 $
+## $Revision: 5 $
## $Author: mhx $
-## $Date: 2004/08/13 12:45:56 +0200 $
+## $Date: 2005/01/31 08:10:52 +0100 $
##
################################################################################
##
-## Version 3.x, Copyright (C) 2004, Marcus Holland-Moritz.
+## Version 3.x, Copyright (C) 2004-2005, Marcus Holland-Moritz.
## Version 2.x, Copyright (C) 2001, Paul Marquess.
## Version 1.x, Copyright (C) 1999, Kenneth Albanowski.
##
diff --git a/ext/Devel/PPPort/parts/inc/ppphbin b/ext/Devel/PPPort/parts/inc/ppphbin
index 384f126ffe..6df23e4f6d 100644
--- a/ext/Devel/PPPort/parts/inc/ppphbin
+++ b/ext/Devel/PPPort/parts/inc/ppphbin
@@ -1,12 +1,12 @@
################################################################################
##
-## $Revision: 22 $
+## $Revision: 26 $
## $Author: mhx $
-## $Date: 2004/12/29 14:54:27 +0100 $
+## $Date: 2005/01/31 08:10:53 +0100 $
##
################################################################################
##
-## Version 3.x, Copyright (C) 2004, Marcus Holland-Moritz.
+## Version 3.x, Copyright (C) 2004-2005, Marcus Holland-Moritz.
## Version 2.x, Copyright (C) 2001, Paul Marquess.
## Version 1.x, Copyright (C) 1999, Kenneth Albanowski.
##
@@ -148,18 +148,19 @@ while (<DATA>) {
if (exists $opt{'api-info'}) {
my $f;
my $count = 0;
+ my $match = $opt{'api-info'} =~ m!^/(.*)/$! ? $1 : "^\Q$opt{'api-info'}\E\$";
for $f (sort { lc $a cmp lc $b } keys %API) {
- next unless $f =~ /$opt{'api-info'}/;
+ next unless $f =~ /$match/;
print "\n=== $f ===\n\n";
my $info = 0;
if ($API{$f}{base} || $API{$f}{todo}) {
my $base = format_version($API{$f}{base} || $API{$f}{todo});
- print "May not be supported below perl-$base.\n";
+ print "Supported at least starting from perl-$base.\n";
$info++;
}
if ($API{$f}{provided}) {
my $todo = $API{$f}{todo} ? format_version($API{$f}{todo}) : "__MIN_PERL__";
- print "Support by $ppport provided down to perl-$todo.\n";
+ print "Support by $ppport provided back to perl-$todo.\n";
print "Support needs to be explicitly requested by NEED_$f.\n" if exists $need{$f};
print "Depends on: ", join(', ', @{$depends{$f}}), ".\n" if exists $depends{$f};
print "$hints{$f}" if exists $hints{$f};
@@ -174,7 +175,7 @@ if (exists $opt{'api-info'}) {
print "\n";
}
else {
- print "Found no API matching $opt{'api-info'}.\n";
+ print "Found no API matching '$opt{'api-info'}'.\n";
}
exit 0;
}
diff --git a/ext/Devel/PPPort/parts/inc/ppphdoc b/ext/Devel/PPPort/parts/inc/ppphdoc
index bf0b18cebb..37097b7164 100644
--- a/ext/Devel/PPPort/parts/inc/ppphdoc
+++ b/ext/Devel/PPPort/parts/inc/ppphdoc
@@ -1,12 +1,12 @@
################################################################################
##
-## $Revision: 18 $
+## $Revision: 20 $
## $Author: mhx $
-## $Date: 2004/12/29 14:55:00 +0100 $
+## $Date: 2005/01/31 08:10:53 +0100 $
##
################################################################################
##
-## Version 3.x, Copyright (C) 2004, Marcus Holland-Moritz.
+## Version 3.x, Copyright (C) 2004-2005, Marcus Holland-Moritz.
## Version 2.x, Copyright (C) 2001, Paul Marquess.
## Version 1.x, Copyright (C) 1999, Kenneth Albanowski.
##
@@ -135,7 +135,8 @@ won't be available or work.
=head2 --api-info=I<name>
Show portability information for API elements matching I<name>.
-I<name> is treated as a Perl regular expression.
+If I<name> is surrounded by slashes, it is interpreted as a regular
+expression.
=head1 DESCRIPTION
@@ -235,6 +236,22 @@ the C<--diff> option:
This would output context diffs with 10 lines of context.
+To display portability information for the C<newSVpvn> function,
+use:
+
+ perl ppport.h --api-info=newSVpvn
+
+Since the argument to C<--api-info> can be a regular expression,
+you can use
+
+ perl ppport.h --api-info=/_nomg$/
+
+to display portability information for all C<_nomg> functions or
+
+ perl ppport.h --api-info=/./
+
+to display information for all known API elements.
+
=head1 BUGS
If this version of F<ppport.h> is causing failure during
@@ -277,7 +294,7 @@ module from CPAN.
=head1 COPYRIGHT
-Version 3.x, Copyright (c) 2004, Marcus Holland-Moritz.
+Version 3.x, Copyright (c) 2004-2005, Marcus Holland-Moritz.
Version 2.x, Copyright (C) 2001, Paul Marquess.
diff --git a/ext/Devel/PPPort/parts/inc/ppphtest b/ext/Devel/PPPort/parts/inc/ppphtest
index 1d8f6d31d5..43fbe9fcbf 100644
--- a/ext/Devel/PPPort/parts/inc/ppphtest
+++ b/ext/Devel/PPPort/parts/inc/ppphtest
@@ -1,12 +1,12 @@
################################################################################
##
-## $Revision: 22 $
+## $Revision: 23 $
## $Author: mhx $
-## $Date: 2004/10/14 20:16:03 +0200 $
+## $Date: 2005/01/31 08:10:53 +0100 $
##
################################################################################
##
-## Version 3.x, Copyright (C) 2004, Marcus Holland-Moritz.
+## Version 3.x, Copyright (C) 2004-2005, Marcus Holland-Moritz.
## Version 2.x, Copyright (C) 2001, Paul Marquess.
## Version 1.x, Copyright (C) 1999, Kenneth Albanowski.
##
diff --git a/ext/Devel/PPPort/parts/inc/sv_xpvf b/ext/Devel/PPPort/parts/inc/sv_xpvf
index 1083ecdf43..3276960c3e 100644
--- a/ext/Devel/PPPort/parts/inc/sv_xpvf
+++ b/ext/Devel/PPPort/parts/inc/sv_xpvf
@@ -1,12 +1,12 @@
################################################################################
##
-## $Revision: 2 $
+## $Revision: 3 $
## $Author: mhx $
-## $Date: 2004/08/17 20:02:25 +0200 $
+## $Date: 2005/01/31 08:10:54 +0100 $
##
################################################################################
##
-## Version 3.x, Copyright (C) 2004, Marcus Holland-Moritz.
+## Version 3.x, Copyright (C) 2004-2005, Marcus Holland-Moritz.
## Version 2.x, Copyright (C) 2001, Paul Marquess.
## Version 1.x, Copyright (C) 1999, Kenneth Albanowski.
##
diff --git a/ext/Devel/PPPort/parts/inc/threads b/ext/Devel/PPPort/parts/inc/threads
index fe40ed110d..e002e6c014 100644
--- a/ext/Devel/PPPort/parts/inc/threads
+++ b/ext/Devel/PPPort/parts/inc/threads
@@ -1,12 +1,12 @@
################################################################################
##
-## $Revision: 3 $
+## $Revision: 4 $
## $Author: mhx $
-## $Date: 2004/08/13 12:47:17 +0200 $
+## $Date: 2005/01/31 08:10:54 +0100 $
##
################################################################################
##
-## Version 3.x, Copyright (C) 2004, Marcus Holland-Moritz.
+## Version 3.x, Copyright (C) 2004-2005, Marcus Holland-Moritz.
## Version 2.x, Copyright (C) 2001, Paul Marquess.
## Version 1.x, Copyright (C) 1999, Kenneth Albanowski.
##
diff --git a/ext/Devel/PPPort/parts/inc/uv b/ext/Devel/PPPort/parts/inc/uv
index b9d3a49020..e3f0400230 100644
--- a/ext/Devel/PPPort/parts/inc/uv
+++ b/ext/Devel/PPPort/parts/inc/uv
@@ -1,12 +1,12 @@
################################################################################
##
-## $Revision: 9 $
+## $Revision: 10 $
## $Author: mhx $
-## $Date: 2004/08/17 23:13:18 +0200 $
+## $Date: 2005/01/31 08:10:54 +0100 $
##
################################################################################
##
-## Version 3.x, Copyright (C) 2004, Marcus Holland-Moritz.
+## Version 3.x, Copyright (C) 2004-2005, Marcus Holland-Moritz.
## Version 2.x, Copyright (C) 2001, Paul Marquess.
## Version 1.x, Copyright (C) 1999, Kenneth Albanowski.
##
diff --git a/ext/Devel/PPPort/parts/inc/version b/ext/Devel/PPPort/parts/inc/version
index 97893c17bc..1bf07baf1d 100644
--- a/ext/Devel/PPPort/parts/inc/version
+++ b/ext/Devel/PPPort/parts/inc/version
@@ -1,12 +1,12 @@
################################################################################
##
-## $Revision: 3 $
+## $Revision: 4 $
## $Author: mhx $
-## $Date: 2004/08/23 00:49:05 +0200 $
+## $Date: 2005/01/31 08:10:54 +0100 $
##
################################################################################
##
-## Version 3.x, Copyright (C) 2004, Marcus Holland-Moritz.
+## Version 3.x, Copyright (C) 2004-2005, Marcus Holland-Moritz.
## Version 2.x, Copyright (C) 2001, Paul Marquess.
## Version 1.x, Copyright (C) 1999, Kenneth Albanowski.
##
diff --git a/ext/Devel/PPPort/parts/ppptools.pl b/ext/Devel/PPPort/parts/ppptools.pl
index 2953f3b757..9e27e6250f 100644
--- a/ext/Devel/PPPort/parts/ppptools.pl
+++ b/ext/Devel/PPPort/parts/ppptools.pl
@@ -4,13 +4,13 @@
#
################################################################################
#
-# $Revision: 12 $
+# $Revision: 13 $
# $Author: mhx $
-# $Date: 2004/08/17 14:00:34 +0200 $
+# $Date: 2005/01/31 08:10:54 +0100 $
#
################################################################################
#
-# Version 3.x, Copyright (C) 2004, Marcus Holland-Moritz.
+# Version 3.x, Copyright (C) 2004-2005, Marcus Holland-Moritz.
# Version 2.x, Copyright (C) 2001, Paul Marquess.
# Version 1.x, Copyright (C) 1999, Kenneth Albanowski.
#
diff --git a/ext/Devel/PPPort/parts/todo/5008006 b/ext/Devel/PPPort/parts/todo/5008006
new file mode 100644
index 0000000000..ba5cad07ed
--- /dev/null
+++ b/ext/Devel/PPPort/parts/todo/5008006
@@ -0,0 +1 @@
+5.008006
diff --git a/ext/Devel/PPPort/parts/todo/5009002 b/ext/Devel/PPPort/parts/todo/5009002
index 90f6bbe3d0..ae91fd7959 100644
--- a/ext/Devel/PPPort/parts/todo/5009002
+++ b/ext/Devel/PPPort/parts/todo/5009002
@@ -1,4 +1,9 @@
5.009002
SvPVbyte_force # E
find_rundefsvoffset # U
+gv_fetchpvn_flags # E
+gv_fetchsv # E
+op_refcnt_lock # U
+op_refcnt_unlock # U
+savesvpv # E
vnormal # E
diff --git a/ext/Devel/PPPort/ppport_h.PL b/ext/Devel/PPPort/ppport_h.PL
index f687736877..f8ed365f22 100644
--- a/ext/Devel/PPPort/ppport_h.PL
+++ b/ext/Devel/PPPort/ppport_h.PL
@@ -4,13 +4,13 @@
#
################################################################################
#
-# $Revision: 3 $
+# $Revision: 4 $
# $Author: mhx $
-# $Date: 2004/08/13 12:49:27 +0200 $
+# $Date: 2005/01/31 08:10:54 +0100 $
#
################################################################################
#
-# Version 3.x, Copyright (C) 2004, Marcus Holland-Moritz.
+# Version 3.x, Copyright (C) 2004-2005, Marcus Holland-Moritz.
# Version 2.x, Copyright (C) 2001, Paul Marquess.
# Version 1.x, Copyright (C) 1999, Kenneth Albanowski.
#
diff --git a/ext/Devel/PPPort/soak b/ext/Devel/PPPort/soak
index 8d584ef164..65a8fbcce8 100644
--- a/ext/Devel/PPPort/soak
+++ b/ext/Devel/PPPort/soak
@@ -7,13 +7,13 @@
#
################################################################################
#
-# $Revision: 6 $
+# $Revision: 7 $
# $Author: mhx $
-# $Date: 2004/08/13 12:49:41 +0200 $
+# $Date: 2005/01/31 08:10:55 +0100 $
#
################################################################################
#
-# Version 3.x, Copyright (C) 2004, Marcus Holland-Moritz.
+# Version 3.x, Copyright (C) 2004-2005, Marcus Holland-Moritz.
# Version 2.x, Copyright (C) 2001, Paul Marquess.
# Version 1.x, Copyright (C) 1999, Kenneth Albanowski.
#
diff --git a/ext/Devel/PPPort/t/SvPV.t b/ext/Devel/PPPort/t/SvPV.t
index 5e6009c3a4..c684f943de 100644
--- a/ext/Devel/PPPort/t/SvPV.t
+++ b/ext/Devel/PPPort/t/SvPV.t
@@ -36,5 +36,5 @@ use strict;
$^W = 1;
ok(&Devel::PPPort::SvPVbyte("mhx"), 3);
-ok(&Devel::PPPort::SvPVbyte("mhx"), 3);
+ok(&Devel::PPPort::SvPV_nolen("mhx"), 42);
diff --git a/ext/Devel/PPPort/t/exception.t b/ext/Devel/PPPort/t/exception.t
new file mode 100644
index 0000000000..b66f146f82
--- /dev/null
+++ b/ext/Devel/PPPort/t/exception.t
@@ -0,0 +1,54 @@
+################################################################################
+#
+# !!!!! Do NOT edit this file directly! !!!!!
+#
+# Edit mktests.PL and/or parts/inc/exception 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 $rv;
+
+$Devel::PPPort::exception_caught = undef;
+
+$rv = eval { &Devel::PPPort::exception(0) };
+ok($@, '');
+ok(defined $rv);
+ok($rv, 42);
+ok($Devel::PPPort::exception_caught, 0);
+
+$Devel::PPPort::exception_caught = undef;
+
+$rv = eval { &Devel::PPPort::exception(1) };
+ok($@, "boo\n");
+ok(not defined $rv);
+ok($Devel::PPPort::exception_caught, 1);
+
diff --git a/ext/Devel/PPPort/t/misc.t b/ext/Devel/PPPort/t/misc.t
index 20f53a799b..cad7bf5f4d 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..31\n";
+ print "1..32\n";
}
else {
- plan(tests => 31);
+ plan(tests => 32);
}
}
@@ -86,3 +86,5 @@ ok(&Devel::PPPort::get_cv('my_cv', 0));
ok(!&Devel::PPPort::get_cv('not_my_cv', 0));
ok(&Devel::PPPort::get_cv('not_my_cv', 1));
+ok(Devel::PPPort::dXSTARG(42), 43);
+
diff --git a/ext/Devel/PPPort/typemap b/ext/Devel/PPPort/typemap
index 0ea3b8bb34..653722a0c8 100644
--- a/ext/Devel/PPPort/typemap
+++ b/ext/Devel/PPPort/typemap
@@ -4,13 +4,13 @@
#
################################################################################
#
-# $Revision: 3 $
+# $Revision: 4 $
# $Author: mhx $
-# $Date: 2004/08/13 12:49:15 +0200 $
+# $Date: 2005/01/31 08:10:55 +0100 $
#
################################################################################
#
-# Version 3.x, Copyright (C) 2004, Marcus Holland-Moritz.
+# Version 3.x, Copyright (C) 2004-2005, Marcus Holland-Moritz.
# Version 2.x, Copyright (C) 2001, Paul Marquess.
# Version 1.x, Copyright (C) 1999, Kenneth Albanowski.
#