joes        2003/04/12 14:49:49

  Modified:    Request  Request.xs
  Log:
  Revert to original ->fh for pre-5.8 perl.
  
  Revision  Changes    Path
  1.34      +23 -2     httpd-apreq/Request/Request.xs
  
  Index: Request.xs
  ===================================================================
  RCS file: /home/cvs/httpd-apreq/Request/Request.xs,v
  retrieving revision 1.33
  retrieving revision 1.34
  diff -u -r1.33 -r1.34
  --- Request.xs        27 Feb 2003 20:03:58 -0000      1.33
  +++ Request.xs        12 Apr 2003 21:49:49 -0000      1.34
  @@ -525,9 +525,8 @@
       fp = ApacheUpload_fh(upload);
       if (fp == NULL)
           XSRETURN_UNDEF;
  -
  +#if PERL_VERSION > 500703
       fd = PerlLIO_dup(fileno(fp));
  -
       /* XXX: user should check errno on undef returns */
   
       if (fd < 0) 
  @@ -535,17 +534,39 @@
   
       if ( !(RETVAL = PerlIO_fdopen(fd, "r")) )
        XSRETURN_UNDEF;
  +#else
  +    if (  ( RETVAL = PerlIO_importFILE(fp,0) ) == NULL  )
  +         XSRETURN_UNDEF;
  +#endif
   
       OUTPUT:
       RETVAL
   
       CLEANUP:
       /* XXX: there may be a leak/segfault in here somewhere */
  +#if PERL_VERSION > 500703
       if (ST(0) != &PL_sv_undef) {
        IO *io = GvIOn((GV*)SvRV(ST(0)));
        if (upload->req->parsed)
            PerlIO_seek(IoIFP(io), 0, 0);
       }
  +#else
  +   if (ST(0) != &PL_sv_undef) {
  +     IO *io = GvIOn((GV*)SvRV(ST(0)));
  +     int fd = PerlIO_fileno(IoIFP(io));
  +     PerlIO *fp;
  +
  +     fd = PerlLIO_dup(fd);
  +     if (!(fp = PerlIO_fdopen(fd, "r"))) { 
  +         PerlLIO_close(fd);
  +         croak("fdopen failed!");
  +     }
  +     if (upload->req->parsed)
  +         PerlIO_seek(fp, 0, 0);
  +
  +     IoIFP(io) = fp;         
  +    }
  +#endif
   
   long
   ApacheUpload_size(upload)
  
  
  

Reply via email to