diff options
author | Nick Ing-Simmons <nik@tiuk.ti.com> | 2000-11-23 23:04:05 +0000 |
---|---|---|
committer | Nick Ing-Simmons <nik@tiuk.ti.com> | 2000-11-23 23:04:05 +0000 |
commit | 63dbdb066b93ac25a070d3a7942d248c23ec6088 (patch) | |
tree | 61be3e4baada73645eafd1010e5e9dd863276630 | |
parent | 60382766f71ec2a2d8e34a951c5c77b494bd86bb (diff) | |
download | perl-63dbdb066b93ac25a070d3a7942d248c23ec6088.tar.gz |
Win32 passes all but t/lib/peek.t with perlio and home-grown crlf.
peek fail is showing a real problem (multiple crlf layers
are getting pushed.)
p4raw-id: //depot/perlio@7843
-rw-r--r-- | doio.c | 2 | ||||
-rw-r--r-- | perlio.c | 30 | ||||
-rw-r--r-- | win32/makefile.mk | 2 |
3 files changed, 29 insertions, 5 deletions
@@ -528,7 +528,7 @@ Perl_do_open9(pTHX_ GV *gv, register char *name, I32 len, int as_raw, } } } - else if (O_BINARY != O_TEXT) { + else if (O_BINARY != O_TEXT && IoTYPE(io) != IoTYPE_STD) { type = ":crlf"; } } @@ -2156,12 +2156,36 @@ PerlIOCrlf_set_ptrcnt(PerlIO *f, STDCHAR *ptr, SSize_t cnt) PerlIO_get_base(f); if (!ptr) { - ptr = ((c->nl) ? (c->nl+1) : b->end) - cnt; + if (c->nl) + ptr = c->nl+1; + else + { + ptr = b->end; + if (ptr > b->buf && ptr[-1] == 0xd) + ptr--; + } + ptr -= cnt; } else { - if (ptr != (((c->nl) ? (c->nl+1) : b->end) - cnt)) - abort(); + /* Test code - delete when it works ... */ + STDCHAR *chk; + if (c->nl) + chk = c->nl+1; + else + { + chk = b->end; + if (chk > b->buf && chk[-1] == 0xd) + chk--; + } + chk -= cnt; + + if (ptr != chk) + { + dTHX; + Perl_croak(aTHX_ "ptr wrong %p != %p nl=%p e=%p for %d", + ptr, chk, c->nl, b->end, cnt); + } } if (c->nl) { diff --git a/win32/makefile.mk b/win32/makefile.mk index 5ccba23c43..ad5429dea4 100644 --- a/win32/makefile.mk +++ b/win32/makefile.mk @@ -371,7 +371,7 @@ a = .a # Options # -INCLUDES = -I$(COREDIR) -I.\include -I. -I.. +INCLUDES = -I.\include -I. -I.. -I$(COREDIR) DEFINES = -DWIN32 $(CRYPT_FLAG) LOCDEFS = -DPERLDLL -DPERL_CORE SUBSYS = console |