This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Upgrade to Devel::PPPort 3.05.
authorMarcus Holland-Moritz <mhx-perl@gmx.net>
Mon, 31 Jan 2005 18:07:29 +0000 (18:07 +0000)
committerMarcus Holland-Moritz <mhx-perl@gmx.net>
Mon, 31 Jan 2005 18:07:29 +0000 (18:07 +0000)
p4raw-id: //depot/perl@23912

60 files changed:
MANIFEST
ext/Devel/PPPort/Changes
ext/Devel/PPPort/HACKERS
ext/Devel/PPPort/MANIFEST
ext/Devel/PPPort/MANIFEST.SKIP
ext/Devel/PPPort/META.yml
ext/Devel/PPPort/Makefile.PL
ext/Devel/PPPort/PPPort.pm
ext/Devel/PPPort/PPPort.xs
ext/Devel/PPPort/PPPort_pm.PL
ext/Devel/PPPort/PPPort_xs.PL
ext/Devel/PPPort/README
ext/Devel/PPPort/TODO
ext/Devel/PPPort/apicheck_c.PL
ext/Devel/PPPort/devel/buildperl.pl
ext/Devel/PPPort/devel/mkapidoc.sh
ext/Devel/PPPort/devel/mktodo
ext/Devel/PPPort/devel/mktodo.pl
ext/Devel/PPPort/devel/scanprov
ext/Devel/PPPort/mktests.PL
ext/Devel/PPPort/module2.c
ext/Devel/PPPort/module3.c
ext/Devel/PPPort/parts/apicheck.pl
ext/Devel/PPPort/parts/base/5004000
ext/Devel/PPPort/parts/base/5004050
ext/Devel/PPPort/parts/base/5005000
ext/Devel/PPPort/parts/base/5006000
ext/Devel/PPPort/parts/base/5008001
ext/Devel/PPPort/parts/base/5008006 [new file with mode: 0644]
ext/Devel/PPPort/parts/base/5009002
ext/Devel/PPPort/parts/embed.fnc
ext/Devel/PPPort/parts/inc/MY_CXT
ext/Devel/PPPort/parts/inc/SvPV
ext/Devel/PPPort/parts/inc/call
ext/Devel/PPPort/parts/inc/cop
ext/Devel/PPPort/parts/inc/exception [new file with mode: 0644]
ext/Devel/PPPort/parts/inc/format
ext/Devel/PPPort/parts/inc/grok
ext/Devel/PPPort/parts/inc/limits
ext/Devel/PPPort/parts/inc/mPUSH
ext/Devel/PPPort/parts/inc/magic
ext/Devel/PPPort/parts/inc/misc
ext/Devel/PPPort/parts/inc/newCONSTSUB
ext/Devel/PPPort/parts/inc/newRV
ext/Devel/PPPort/parts/inc/ppphbin
ext/Devel/PPPort/parts/inc/ppphdoc
ext/Devel/PPPort/parts/inc/ppphtest
ext/Devel/PPPort/parts/inc/sv_xpvf
ext/Devel/PPPort/parts/inc/threads
ext/Devel/PPPort/parts/inc/uv
ext/Devel/PPPort/parts/inc/version
ext/Devel/PPPort/parts/ppptools.pl
ext/Devel/PPPort/parts/todo/5008006 [new file with mode: 0644]
ext/Devel/PPPort/parts/todo/5009002
ext/Devel/PPPort/ppport_h.PL
ext/Devel/PPPort/soak
ext/Devel/PPPort/t/SvPV.t
ext/Devel/PPPort/t/exception.t [new file with mode: 0644]
ext/Devel/PPPort/t/misc.t
ext/Devel/PPPort/typemap

index 7d33530..68d255b 100644 (file)
--- 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
index a21b120..9e728ee 100755 (executable)
@@ -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
index 1eaa1ab..8aa9c57 100644 (file)
@@ -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.
 
index d05e8ae..44cb9f0 100644 (file)
@@ -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
index a6d2883..e0a5ec7 100644 (file)
@@ -11,6 +11,7 @@
 ^pm_to_blib
 ^backup
 ^parts/todo-
+^parts/base-
 ^ppport\.h$
 ^PPPort\.c$
 Devel-PPPort.*\.tar\.gz$
index c18fa4f..ec326e2 100644 (file)
@@ -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:
index e9b672a..446fbb1 100644 (file)
@@ -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.
 #
index 514cbf5..907cbf5 100644 (file)
@@ -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 */
index 2056271..ed3c379 100644 (file)
@@ -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.
 *
 
 /* ========== 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
 
index 8733c44..2f3a19d 100644 (file)
@@ -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 */
index e4867da..6488e04 100644 (file)
@@ -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.
 *
index 738b6ed..2656419 100644 (file)
@@ -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.
 
index bd09e7c..9f4feb6 100644 (file)
@@ -1,7 +1,7 @@
 TODO:
 
 * improve apicheck (things like utf8_mg_pos_init() are
-  not currently checks)
+  not currently checked)
 
 * more documentation, more tests
 
index fb9436b..8976faa 100644 (file)
@@ -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.
 #
index a1d94b8..b26a3e9 100644 (file)
@@ -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.
 #
index 61b4ccc..74da36f 100644 (file)
@@ -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
index 319f611..3c6cd7d 100644 (file)
@@ -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.
 #
index 6df1eb9..05d921b 100644 (file)
@@ -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.
 #
index 934e816..9d1a8d4 100644 (file)
@@ -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.
 #
index cbe9a98..684a5ca 100644 (file)
@@ -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.
 #
index 5e59ae3..0687c13 100644 (file)
@@ -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.
 *
index 4df598a..4c230fa 100644 (file)
@@ -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.
 *
index b49c53a..b4b668f 100644 (file)
@@ -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.
 #
index 795d0cb..f5f031f 100644 (file)
@@ -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
index 4b43177..d1ca35e 100644 (file)
@@ -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
index f0bfeed..553a4be 100644 (file)
@@ -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
index 6705683..f26d172 100644 (file)
@@ -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
index cc274f4..0804976 100644 (file)
@@ -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 (file)
index 0000000..ba5cad0
--- /dev/null
@@ -0,0 +1 @@
+5.008006
index 2b66b27..69a4526 100644 (file)
@@ -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
index 8ca6b0e..795f3fe 100644 (file)
@@ -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
-A    |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
-A    |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
index 5ef575f..5b26baf 100644 (file)
@@ -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.
 ##
index 34aa90f..56474d2 100644 (file)
@@ -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);
 
index e01d6a3..bffb313 100644 (file)
@@ -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.
 ##
index 3599410..b12fdfb 100644 (file)
@@ -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 (file)
index 0000000..2996958
--- /dev/null
@@ -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);
index 7c52042..78d46f9 100644 (file)
@@ -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.
 ##
index 97d4f49..be7679f 100644 (file)
@@ -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.
 ##
index 269b7ce..1cec183 100644 (file)
@@ -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.
 ##
index 809d90b..51bed81 100644 (file)
@@ -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.
 ##
index 66afaad..ccda7ec 100644 (file)
@@ -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.
 ##
index c8d63fd..f49d7bf 100644 (file)
@@ -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);
+
index d24e465..fbf752a 100644 (file)
@@ -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.
 ##
index f593769..2a4f909 100644 (file)
@@ -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.
 ##
index 384f126..6df23e4 100644 (file)
@@ -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;
 }
index bf0b18c..37097b7 100644 (file)
@@ -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.
 
index 1d8f6d3..43fbe9f 100644 (file)
@@ -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.
 ##
index 1083ecd..3276960 100644 (file)
@@ -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.
 ##
index fe40ed1..e002e6c 100644 (file)
@@ -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.
 ##
index b9d3a49..e3f0400 100644 (file)
@@ -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.
 ##
index 97893c1..1bf07ba 100644 (file)
@@ -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.
 ##
index 2953f3b..9e27e62 100644 (file)
@@ -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 (file)
index 0000000..ba5cad0
--- /dev/null
@@ -0,0 +1 @@
+5.008006
index 90f6bbe..ae91fd7 100644 (file)
@@ -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
index f687736..f8ed365 100644 (file)
@@ -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.
 #
index 8d584ef..65a8fbc 100644 (file)
@@ -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.
 #
index 5e6009c..c684f94 100644 (file)
@@ -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 (file)
index 0000000..b66f146
--- /dev/null
@@ -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);
+
index 20f53a7..cad7bf5 100644 (file)
@@ -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);
+
index 0ea3b8b..653722a 100644 (file)
@@ -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.
 #