randyk 2003/07/04 19:35:21
Modified: Request Request.xs
Log:
Reviewed by: joes
Open uploaded files with binary mode, so as to properly get sizes
on platforms like Win32 where it makes a difference.
Revision Changes Path
1.37 +16 -16 httpd-apreq/Request/Request.xs
Index: Request.xs
===================================================================
RCS file: /home/cvs/httpd-apreq/Request/Request.xs,v
retrieving revision 1.36
retrieving revision 1.37
diff -u -r1.36 -r1.37
--- Request.xs 25 Jun 2003 07:59:37 -0000 1.36
+++ Request.xs 5 Jul 2003 02:35:20 -0000 1.37
@@ -533,7 +533,7 @@
if (fd < 0)
XSRETURN_UNDEF;
- if ( !(RETVAL = PerlIO_fdopen(fd, "r")) )
+ if ( !(RETVAL = PerlIO_fdopen(fd, "rb")) )
XSRETURN_UNDEF;
#else
if ( ( RETVAL = PerlIO_importFILE(fp,0) ) == NULL )
@@ -547,25 +547,25 @@
/* XXX: there may be a leak/segfault in here somewhere */
#if PERL_REVISION == 5 && PERL_VERSION > 7
if (ST(0) != &PL_sv_undef) {
- IO *io = GvIOn((GV*)SvRV(ST(0)));
- if (upload->req->parsed)
- PerlIO_seek(IoIFP(io), 0, 0);
+ 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;
+ 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);
+ fd = PerlLIO_dup(fd);
+ if (!(fp = PerlIO_fdopen(fd, "rb"))) {
+ PerlLIO_close(fd);
+ croak("fdopen failed!");
+ }
+ if (upload->req->parsed)
+ PerlIO_seek(fp, 0, 0);
- IoIFP(io) = fp;
+ IoIFP(io) = fp;
}
#endif