Change 20954 by [EMAIL PROTECTED] on 2003/08/30 17:14:19

        A new try at
        
        Subject: [PATCH] maint / blead tweaks in perlio.c for Cygwin
        From: "Gerrit P. Haase" <[EMAIL PROTECTED]>
        Date: Thu, 28 Aug 2003 08:18:51 +0200
        Message-ID: <[EMAIL PROTECTED]>
        
        (this time Cygwin only)

Affected files ...

... //depot/perl/perlio.c#237 edit

Differences ...

==== //depot/perl/perlio.c#237 (text) ====
Index: perl/perlio.c
--- perl/perlio.c#236~20950~    Fri Aug 29 23:49:31 2003
+++ perl/perlio.c       Sat Aug 30 10:14:19 2003
@@ -2609,7 +2609,7 @@
     while (*mode) {
        *tmode++ = *mode++;
     }
-#ifdef PERLIO_USING_CRLF
+#if defined(PERLIO_USING_CRLF) || defined(__CYGWIN__)
     *tmode++ = 'b';
 #endif
     *tmode = '\0';
@@ -2710,15 +2710,23 @@
                fd = PerlLIO_open3(path, imode, perm);
            }
            else {
-               FILE *stdio = PerlSIO_fopen(path, mode);
+               FILE *stdio;
+               bool appended = FALSE;
+#ifdef __CYGWIN__
+               /* Cygwin wants its 'b' early. */
+               appended = TRUE;
+               mode = PerlIOStdio_mode(mode, tmode);
+#endif
+               stdio = PerlSIO_fopen(path, mode);
                if (stdio) {
                    PerlIOStdio *s;
                    if (!f) {
                        f = PerlIO_allocate(aTHX);
                    }
-                   if ((f = PerlIO_push(aTHX_ f, self,
-                                   (mode = PerlIOStdio_mode(mode, tmode)),
-                                   PerlIOArg))) {
+                   if (!appended)
+                       mode = PerlIOStdio_mode(mode, tmode);
+                   f = PerlIO_push(aTHX_ f, self, mode, PerlIOArg);
+                   if (f) {
                        s = PerlIOSelf(f, PerlIOStdio);
                        s->stdio = stdio;
                        PerlIOUnix_refcnt_inc(fileno(s->stdio));
End of Patch.

Reply via email to