You are viewing a plain text version of this content. The canonical link for it is here.
Posted to embperl-cvs@perl.apache.org by ri...@apache.org on 2002/10/11 21:40:55 UTC

cvs commit: embperl Changes.pod epio.c test.pl

richter     2002/10/11 12:40:55

  Modified:    .        Tag: Embperl2c Changes.pod epio.c test.pl
  Log:
  fix tied stdout for perl 5.8.0
  
  Revision  Changes    Path
  No                   revision
  
  
  No                   revision
  
  
  1.129.4.97 +1 -0      embperl/Changes.pod
  
  Index: Changes.pod
  ===================================================================
  RCS file: /home/cvs/embperl/Changes.pod,v
  retrieving revision 1.129.4.96
  retrieving revision 1.129.4.97
  diff -u -r1.129.4.96 -r1.129.4.97
  --- Changes.pod	11 Oct 2002 15:45:22 -0000	1.129.4.96
  +++ Changes.pod	11 Oct 2002 19:40:55 -0000	1.129.4.97
  @@ -31,6 +31,7 @@
        because storing PL_sv_undef in a Perl 5.8.0 hash is treated as a placeholder
        and doesn't work as before.
      - Fixed problem with [$ sub $] when running under Perl 5.8.0.  
  +   - Fixed problem when STDOUT is tied, because storege has changed in Perl 5.8.0.  
   
   =head1 2.0b8  (BETA)  25. Juni 2002
   
  
  
  
  1.16.4.16 +47 -22    embperl/epio.c
  
  Index: epio.c
  ===================================================================
  RCS file: /home/cvs/embperl/epio.c,v
  retrieving revision 1.16.4.15
  retrieving revision 1.16.4.16
  diff -u -r1.16.4.15 -r1.16.4.16
  --- epio.c	23 May 2002 22:24:45 -0000	1.16.4.15
  +++ epio.c	11 Oct 2002 19:40:55 -0000	1.16.4.16
  @@ -55,6 +55,21 @@
   #endif
   
   
  +/* Some helper macros for tied handles, taken from mod_perl 2.0 :-) */
  +/*
  + * bleedperl change #11639 switch tied handle magic
  + * from living in the gv to the GvIOp(gv), so we have to deal
  + * with both to support 5.6.x
  + */
  +#if ((PERL_REVISION == 5) && (PERL_VERSION >= 7))
  +#   define TIEHANDLE_SV(handle) (SV*)GvIOp((SV*)handle)
  +#else
  +#   define TIEHANDLE_SV(handle) (SV*)handle
  +#endif
  +
  +#define HANDLE_GV(name) gv_fetchpv(name, TRUE, SVt_PVIO)
  +
  +
   
   #ifdef APACHE
   #define DefaultLog "/tmp/embperl.log"
  @@ -346,17 +361,22 @@
           return ok ;
   #endif
       
  -    handle = gv_fetchpv("STDIN", TRUE, SVt_PVIO) ;
  -    if (handle && SvMAGICAL(handle) && (mg = mg_find((SV*)handle, 'q')) && mg->mg_obj) 
  -	{
  -	r -> Component.ifdobj = mg->mg_obj ;
  -	if (r -> Component.Config.bDebug)
  +    handle = HANDLE_GV("STDIN") ;
  +    if (handle)
  +        {
  +        SV *iohandle = TIEHANDLE_SV(handle) ;
  +
  +        if (iohandle && SvMAGICAL(iohandle) && (mg = mg_find((SV*)iohandle, 'q')) && mg->mg_obj) 
   	    {
  -	    char *package = HvNAME(SvSTASH((SV*)SvRV(mg->mg_obj)));
  -	    lprintf (r -> pApp,  "[%d]Open TIED STDIN %s...\n", r -> pThread -> nPid, package) ;
  +	    r -> Component.ifdobj = mg->mg_obj ;
  +	    if (r -> Component.Config.bDebug)
  +	        {
  +	        char *package = HvNAME(SvSTASH((SV*)SvRV(mg->mg_obj)));
  +	        lprintf (r -> pApp,  "[%d]Open TIED STDIN %s...\n", r -> pThread -> nPid, package) ;
  +	        }
  +	    return ok ;
   	    }
  -	return ok ;
  -	}
  +        }
   
       if (r -> Component.ifd && r -> Component.ifd != PerlIO_stdinF)
           PerlIO_close (r -> Component.ifd) ;
  @@ -678,18 +698,23 @@
   	    }
   #endif
   
  -	handle = gv_fetchpv("STDOUT", TRUE, SVt_PVIO) ;
  -	if (handle && SvMAGICAL(handle) && (mg = mg_find((SV*)handle, 'q')) && mg->mg_obj) 
  -	    {
  -	    r -> Component.pOutput -> ofdobj = mg->mg_obj ;
  -	    if (r -> Component.Config.bDebug)
  -		{
  -		char *package = HvNAME(SvSTASH((SV*)SvRV(mg->mg_obj)));
  -		lprintf (r -> pApp,  "[%d]Open TIED STDOUT %s for output...\n", r -> pThread -> nPid, package) ;
  -		}
  -	    return ok ;
  -	    }
  -	
  +        handle = HANDLE_GV("STDOUT") ;
  +        if (handle)
  +            {
  +            SV *iohandle = TIEHANDLE_SV(handle) ;
  +
  +	    if (iohandle && SvMAGICAL(iohandle) && (mg = mg_find((SV*)iohandle, 'q')) && mg->mg_obj) 
  +	        {
  +	        r -> Component.pOutput -> ofdobj = mg->mg_obj ;
  +	        if (r -> Component.Config.bDebug)
  +		    {
  +		    char *package = HvNAME(SvSTASH((SV*)SvRV(mg->mg_obj)));
  +		    lprintf (r -> pApp,  "[%d]Open TIED STDOUT %s for output...\n", r -> pThread -> nPid, package) ;
  +		    }
  +	        return ok ;
  +	        }
  +            }
  +        
   	r -> Component.pOutput -> ofd = PerlIO_stdoutF ;
           
           if (r -> Component.Config.bDebug)
  
  
  
  1.70.4.142 +2 -2      embperl/test.pl
  
  Index: test.pl
  ===================================================================
  RCS file: /home/cvs/embperl/test.pl,v
  retrieving revision 1.70.4.141
  retrieving revision 1.70.4.142
  diff -u -r1.70.4.141 -r1.70.4.142
  --- test.pl	25 Jun 2002 06:09:59 -0000	1.70.4.141
  +++ test.pl	11 Oct 2002 19:40:55 -0000	1.70.4.142
  @@ -2000,7 +2000,7 @@
   		$Embperl::Test::STDOUT::output = '' ;
                   tie *STDOUT, 'Embperl::Test::STDOUT' ;
                   $t1 = 0 ; # Embperl::Clock () ;
  -		$err = Embperl::Execute ({'inputfile'  => $src,
  +                $err = Embperl::Execute ({'inputfile'  => $src,
   						'mtime'      => 1,
   						'debug'      => $defaultdebug,
                                                   input_escmode => 7, 
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: embperl-cvs-unsubscribe@perl.apache.org
For additional commands, e-mail: embperl-cvs-help@perl.apache.org