buncha MacPerl patches for bleadperl
[p5sagit/p5-mst-13.2.git] / lib / ExtUtils / typemap
index a5d06ca..c59c3dc 100644 (file)
@@ -40,7 +40,8 @@ Boolean                       T_IV
 double                 T_DOUBLE
 SysRet                 T_SYSRET
 SysRetLong             T_SYSRET
-FILE *                 T_IN
+FILE *                 T_STDIO
+PerlIO *               T_INOUT
 FileHandle             T_PTROBJ
 InputStream            T_IN
 InOutStream            T_INOUT
@@ -138,7 +139,7 @@ T_PTROBJ
 T_PTRDESC
        if (sv_isa($arg, \"${ntype}\")) {
            IV tmp = SvIV((SV*)SvRV($arg));
-           ${type}_desc = (\U${type}_DESC\E*) tmp; 
+           ${type}_desc = (\U${type}_DESC\E*) tmp;
            $var = ${type}_desc->ptr;
        }
        else
@@ -173,6 +174,8 @@ T_ARRAY
        while (items--) {
            DO_ARRAY_ELEM;
        }
+T_STDIO
+       $var = PerlIO_findFILE(IoIFP(sv_2io($arg)))
 T_IN
        $var = IoIFP(sv_2io($arg))
 T_INOUT
@@ -267,6 +270,15 @@ T_ARRAY
        DO_ARRAY_ELEM
        }
        SP += $var.size - 1;
+T_STDIO
+       {
+           GV *gv = newGVgen("$Package");
+           PerlIO *fp = PerlIO_importFILE($var,0);
+           if ( fp && do_open(gv, "+<&", 3, FALSE, 0, 0, fp) )
+               sv_setsv($arg, sv_bless(newRV((SV*)gv), gv_stashpv("$Package",1)));
+           else
+               $arg = &PL_sv_undef;
+       }
 T_IN
        {
            GV *gv = newGVgen("$Package");