[Patch] Re: ./perl harness on Cygwin today failures
Lupe Christoph [Sat, 25 May 2002 15:45:34 +0000 (17:45 +0200)]
Message-ID: <20020525134534.GT6638@lupe-christoph.de>

p4raw-id: //depot/perl@16778

perlio.c
pod/perlapio.pod

index 23864b5..b41b6d2 100644 (file)
--- a/perlio.c
+++ b/perlio.c
@@ -2446,21 +2446,25 @@ PerlIO_importFILE(FILE *stdio, int fl)
        /* We need to probe to see how we can open the stream
           so start with read/write and then try write and read
           we dup() so that we can fclose without loosing the fd.
+
+          Note that the errno value set by a failing fdopen
+          varies between stdio implementations.
         */
        int fd = PerlLIO_dup(fileno(stdio));
        char *mode = "r+";
        FILE *f2 = fdopen(fd, mode);
        PerlIOStdio *s;
-       if (!f2 && errno == EINVAL) {
+       if (!f2) {
            mode = "w";
            f2 = fdopen(fd, mode);
        }
-       if (!f2 && errno == EINVAL) {
+       if (!f2) {
            mode = "r";
            f2 = fdopen(fd, mode);
        }
        if (!f2) {
            /* Don't seem to be able to open */
+           PerlLIO_close(fd);
            return f;
        }
        fclose(f2);
index 0597687..981ee20 100644 (file)
@@ -315,6 +315,9 @@ code attempts to empirically determine the mode in which I<f> is open.
 Once called the FILE * should I<ONLY> be closed by calling
 C<PerlIO_close()> on the returned PerlIO *.
 
+The PerlIO is set to textmode. Use PerlIO_binmode if this is
+not the desired mode.
+
 =item B<PerlIO_exportFILE(f,flags)>
 
 Given a PerlIO * create a 'native' FILE * suitable for passing to code