From: Gerrit P. Haase Date: Thu, 28 Aug 2003 08:18:51 +0000 (+0200) Subject: maint / blead tweaks in perlio.c for Cygwin X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=1403d6bf1ee303dd613942fa2f6df0519a053ba6;p=p5sagit%2Fp5-mst-13.2.git maint / blead tweaks in perlio.c for Cygwin From: "Gerrit P. Haase" Message-ID: <4157199551.20030828081851@familiehaase.de> (changed so that the 'b' is always appended) p4raw-id: //depot/perl@20929 --- diff --git a/perlio.c b/perlio.c index a508b64..7ee1eda 100644 --- a/perlio.c +++ b/perlio.c @@ -2609,7 +2609,7 @@ PerlIOStdio_mode(const char *mode, char *tmode) while (*mode) { *tmode++ = *mode++; } -#ifdef PERLIO_USING_CRLF +#if defined(PERLIO_USING_CRLF) || defined(__CYGWIN__) *tmode++ = 'b'; #endif *tmode = '\0'; @@ -2710,25 +2710,28 @@ PerlIOStdio_open(pTHX_ PerlIO_funcs *self, PerlIO_list_t *layers, fd = PerlLIO_open3(path, imode, perm); } else { - FILE *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))) { - s = PerlIOSelf(f, PerlIOStdio); - s->stdio = stdio; - PerlIOUnix_refcnt_inc(fileno(s->stdio)); - } - return f; - } - else { - return NULL; - } + /* Append the 'b' - more correct for CRLF platforms + * and Cygwin and should be harmless (since it's a + * no-op) elsewhere. */ + mode = PerlIOStdio_mode(mode, tmode); + { + FILE *stdio = PerlSIO_fopen(path, mode); + if (stdio) { + PerlIOStdio *s; + if (!f) { + f = PerlIO_allocate(aTHX); + } + if ((f = PerlIO_push(aTHX_ f, self, + mode, PerlIOArg))) { + s = PerlIOSelf(f, PerlIOStdio); + s->stdio = stdio; + PerlIOUnix_refcnt_inc(fileno(s->stdio)); + } + return f; + } + } } + return NULL; } if (fd >= 0) { FILE *stdio = NULL;