You are viewing a plain text version of this content. The canonical link for it is here.
Posted to apreq-cvs@httpd.apache.org by jo...@apache.org on 2001/06/09 00:20:41 UTC
cvs commit: httpd-apreq/c apache_request.c
joes 01/06/08 15:20:40
Modified: Request Request.xs
c apache_request.c
Log:
Submitted by: Randy Kobes
More Win32 binmode fixes. Also testing new PerlIO_importFILE defines for
PERL_IMPICIT_SYS builds.
Revision Changes Path
1.17 +29 -12 httpd-apreq/Request/Request.xs
Index: Request.xs
===================================================================
RCS file: /home/cvs/httpd-apreq/Request/Request.xs,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -r1.16 -r1.17
--- Request.xs 2001/06/04 17:16:42 1.16
+++ Request.xs 2001/06/08 22:20:38 1.17
@@ -93,21 +93,38 @@
#define ApacheUpload_next(upload) upload->next
#define ApacheUpload_tempname(upload) upload->tempname
-#ifndef PerlLIO_dup
-#define PerlLIO_dup(fd) dup((fd))
-#endif
-#ifndef PerlLIO_close
-#define PerlLIO_close(fd) close((fd))
-#endif
#ifdef PerlIO
typedef PerlIO * InputStream;
-#else
-typedef FILE * InputStream;
-#define PerlIO_importFILE(fp,flags) fp
-#define PerlIO_write(a,b,c) fwrite((b),1,(c),(a))
+
+#ifndef PerlIO_importFILE
+#define PerlIO_importFILE(fp,flags) (PerlIO*)fp
#endif
+#ifdef SFIO
+#undef PerlIO_importFILE
+#define PerlIO_importFILE(fp,flags) (PerlIO*)fp
+#endif /*SFIO*/
+
+#else /*PerlIO not defined*/
+
+typedef FILE * InputStream;
+#define PerlIO_importFILE(fp,flags) fp
+#define PerlIO_write(a,b,c) fwrite((b),1,(c),(a))
+
+#endif /*PerlIO*/
+
+/* PerlLIO stuff that does not belong, but might be needed anyway
+ *
+ *#define PerlLIO_dup(f) dup((f))
+ *#define PerlLIO_close(f) close((f))
+ *#define PerlLIO_fileno(f) fileno((f))
+ *#define PerlLIO_fdopen(f) fdopen((f))
+ *#define PerlLIO_seek(f) seek((f))
+ *
+ */
+
+
static char *r_keys[] = { "_r", "r", NULL };
static SV *r_key_sv(SV *in)
@@ -192,7 +209,7 @@
LEAVE;
}
- return SvTRUE(ERRSV) ? -1 : PerlIO_write(upload->fp, buf, len);
+ return SvTRUE(ERRSV) ? -1 : PerlIO_write(PerlIO_importFILE(upload->fp,0), buf, len);
}
static void clear_hook(void *ptr) {
@@ -474,7 +491,7 @@
Apache::Upload upload
CODE:
- if ( ( RETVAL = ApacheUpload_fh(upload) ) == NULL )
+ if ( ( RETVAL = PerlIO_importFILE(ApacheUpload_fh(upload),0) ) == NULL )
XSRETURN_UNDEF;
OUTPUT:
1.12 +5 -4 httpd-apreq/c/apache_request.c
Index: apache_request.c
===================================================================
RCS file: /home/cvs/httpd-apreq/c/apache_request.c,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -r1.11 -r1.12
--- apache_request.c 2001/06/02 13:41:23 1.11
+++ apache_request.c 2001/06/08 22:20:40 1.12
@@ -328,9 +328,11 @@
if( ap_pfclose(req->r->pool, upload->fp) )
ap_log_rerror(REQ_ERROR,
"[libapreq] close error on '%s'", upload->tempname);
+#ifndef DEBUG
if( remove(upload->tempname) )
ap_log_rerror(REQ_ERROR,
"[libapreq] remove error on '%s'", upload->tempname);
+#endif
free(upload->tempname);
}
@@ -346,16 +348,15 @@
while (--tries > 0) {
if ( (name = tempnam(req->temp_dir, prefix)) == NULL )
continue;
- fd = ap_popenf(r->pool, name, O_CREAT|O_EXCL|O_RDWR, 0600);
+ fd = ap_popenf(r->pool, name, O_CREAT|O_EXCL|O_RDWR|O_BINARY, 0600);
if ( fd >= 0 )
break; /* success */
else
free(name);
}
- if ( tries == 0 || (fp = ap_pfdopen(r->pool, fd, "wb+") ) == NULL ) {
- ap_log_rerror(REQ_ERROR,
- "[libapreq] could not open temp file '%s'", name);
+ if ( tries == 0 || (fp = ap_pfdopen(r->pool, fd, "w+" "b") ) == NULL ) {
+ ap_log_rerror(REQ_ERROR, "[libapreq] could not create/open temp file");
if ( fd >= 0 ) { remove(name); free(name); }
return NULL;
}