summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJarkko Hietaniemi <jhi@iki.fi>2000-11-26 00:01:26 +0000
committerJarkko Hietaniemi <jhi@iki.fi>2000-11-26 00:01:26 +0000
commit9d4164a33f49129f962ea484086b4b733e987ba7 (patch)
tree8807ca6f69e3edd267cb582ce7e53f4677a5eaa3
parentc3564e5c35b594706ecb001261b86a47fb837059 (diff)
parent0727cc217546946a8c8db12875c3cacb5833e494 (diff)
downloadperl-9d4164a33f49129f962ea484086b4b733e987ba7.tar.gz
Integrate perlio:
[ 7860] Correct relative path from new ext\Filter\Util\Call location back to miniperl. [ 7857] All tests pass on Win32/gcc/USE_PERLIO. - when crlf layer is pushed make unix-level binary. - remove :crlf injection in pp_backtick in pp_sys.c - (Change dependacy of extension .dll's to perldll.def rather than perl.exe) [ 7853] Re-arrange crlf vs binary for platforms that care. crlf layer is now "the" buffer layer and can turn its behaviour on/off. Lip-service to making stdio layer work on such platforms (untested). Now fails 3 tests rather than one, checkin to see if I can debug the issue under linux. (Do not merge.) p4raw-link: @7860 on //depot/perlio: 0727cc217546946a8c8db12875c3cacb5833e494 p4raw-link: @7857 on //depot/perlio: a77df51f3c9319336e0ec43ad003b02a0111d2af p4raw-link: @7853 on //depot/perlio: f5b9d040829bb5deb93173e35ee6c82ce0a01c37 p4raw-id: //depot/perl@7861
-rw-r--r--doio.c12
-rw-r--r--perlio.c347
-rw-r--r--perliol.h22
-rw-r--r--pp_sys.c6
-rw-r--r--win32/makefile.mk95
5 files changed, 308 insertions, 174 deletions
diff --git a/doio.c b/doio.c
index c325e78f3d..094bf84afd 100644
--- a/doio.c
+++ b/doio.c
@@ -463,13 +463,17 @@ Perl_do_open9(pTHX_ GV *gv, register char *name, I32 len, int as_raw,
#endif
}
if (saveifp) { /* must use old fp? */
+ /* If fd is less that PL_maxsysfd i.e. STDIN..STDERR
+ then dup the new fileno down
+ */
fd = PerlIO_fileno(saveifp);
if (saveofp) {
- PerlIO_flush(saveofp); /* emulate PerlIO_close() */
+ PerlIO_flush(saveofp); /* emulate PerlIO_close() */
if (saveofp != saveifp) { /* was a socket? */
PerlIO_close(saveofp);
+ /* This looks very suspect - NI-S 24 Nov 2000 */
if (fd > 2)
- Safefree(saveofp);
+ Safefree(saveofp); /* ??? */
}
}
if (fd != PerlIO_fileno(fp)) {
@@ -517,9 +521,6 @@ Perl_do_open9(pTHX_ GV *gv, register char *name, I32 len, int as_raw,
}
}
}
- else if (O_BINARY != O_TEXT && IoTYPE(io) != IoTYPE_STD && !saveifp) {
- type = ":crlf";
- }
}
if (type) {
while (isSPACE(*type)) type++;
@@ -2039,3 +2040,4 @@ Perl_do_shmio(pTHX_ I32 optype, SV **mark, SV **sp)
#endif /* SYSV IPC */
+
diff --git a/perlio.c b/perlio.c
index 3c8c339776..65b2358382 100644
--- a/perlio.c
+++ b/perlio.c
@@ -42,12 +42,12 @@ PerlIO_apply_layers(pTHX_ PerlIO *f, const char *mode, const char *names)
}
int
-PerlIO_binmode(pTHX_ PerlIO *fp, int iotype, int mode, const char *names)
+perlsio_binmode(FILE *fp, int iotype, int mode)
{
/* This used to be contents of do_binmode in doio.c */
#ifdef DOSISH
# if defined(atarist) || defined(__MINT__)
- if (!PerlIO_flush(fp)) {
+ if (!fflush(fp)) {
if (mode & O_BINARY)
((FILE*)fp)->_flag |= _IOBIN;
else
@@ -56,7 +56,7 @@ PerlIO_binmode(pTHX_ PerlIO *fp, int iotype, int mode, const char *names)
}
return 0;
# else
- if (PerlLIO_setmode(PerlIO_fileno(fp), mode) != -1) {
+ if (PerlLIO_setmode(fileno(fp), mode) != -1) {
# if defined(WIN32) && defined(__BORLANDC__)
/* The translation mode of the stream is maintained independent
* of the translation mode of the fd in the Borland RTL (heavy
@@ -64,11 +64,11 @@ PerlIO_binmode(pTHX_ PerlIO *fp, int iotype, int mode, const char *names)
* set the mode explicitly for the stream (though they don't
* document this anywhere). GSAR 97-5-24
*/
- PerlIO_seek(fp,0L,0);
+ fseek(fp,0L,0);
if (mode & O_BINARY)
- ((FILE*)fp)->flags |= _F_BIN;
+ fp->flags |= _F_BIN;
else
- ((FILE*)fp)->flags &= ~ _F_BIN;
+ fp->flags &= ~ _F_BIN;
# endif
return 1;
}
@@ -87,8 +87,11 @@ PerlIO_binmode(pTHX_ PerlIO *fp, int iotype, int mode, const char *names)
#endif
}
-
-
+int
+PerlIO_binmode(pTHX_ PerlIO *fp, int iotype, int mode, const char *names)
+{
+ return perlsio_binmode(fp,iotype,mode);
+}
#endif
@@ -268,6 +271,7 @@ PerlIO_pop(PerlIO *f)
PerlIOl *l = *f;
if (l)
{
+ PerlIO_debug(__FUNCTION__ " f=%p %s\n",f,l->tab->name);
(*l->tab->Popped)(f);
*f = l->next;
Safefree(l);
@@ -460,14 +464,21 @@ PerlIO_default_layer(I32 n)
len = av_len(PerlIO_layer_av);
if (len < 1)
{
- if (PerlIO_stdio.Set_ptrcnt)
+ if (O_BINARY != O_TEXT)
{
- av_push(PerlIO_layer_av,SvREFCNT_inc(PerlIO_find_layer(PerlIO_stdio.name,0)));
+ av_push(PerlIO_layer_av,SvREFCNT_inc(PerlIO_find_layer(PerlIO_crlf.name,0)));
}
else
- {
- av_push(PerlIO_layer_av,SvREFCNT_inc(PerlIO_find_layer(PerlIO_perlio.name,0)));
- }
+ {
+ if (PerlIO_stdio.Set_ptrcnt)
+ {
+ av_push(PerlIO_layer_av,SvREFCNT_inc(PerlIO_find_layer(PerlIO_stdio.name,0)));
+ }
+ else
+ {
+ av_push(PerlIO_layer_av,SvREFCNT_inc(PerlIO_find_layer(PerlIO_perlio.name,0)));
+ }
+ }
len = av_len(PerlIO_layer_av);
}
if (n < 0)
@@ -490,9 +501,9 @@ PerlIO_stdstreams()
if (!_perlio)
{
PerlIO_allocate();
- PerlIO_fdopen(0,"Ir");
- PerlIO_fdopen(1,"Iw");
- PerlIO_fdopen(2,"Iw");
+ PerlIO_fdopen(0,"Ir" PERLIO_STDTEXT);
+ PerlIO_fdopen(1,"Iw" PERLIO_STDTEXT);
+ PerlIO_fdopen(2,"Iw" PERLIO_STDTEXT);
}
}
@@ -507,6 +518,7 @@ PerlIO_push(PerlIO *f,PerlIO_funcs *tab,const char *mode)
l->next = *f;
l->tab = tab;
*f = l;
+ PerlIO_debug(__FUNCTION__ " f=%p %s %s\n",f,tab->name,(mode) ? mode : "(Null)");
if ((*l->tab->Pushed)(f,mode) != 0)
{
PerlIO_pop(f);
@@ -577,26 +589,36 @@ PerlIO_apply_layers(pTHX_ PerlIO *f, const char *mode, const char *names)
/* Given the abstraction above the public API functions */
int
-PerlIO_binmode(pTHX_ PerlIO *fp, int iotype, int mode, const char *names)
+PerlIO_binmode(pTHX_ PerlIO *f, int iotype, int mode, const char *names)
{
+ PerlIO_debug(__FUNCTION__ " f=%p %s %c %x %s\n",
+ f,PerlIOBase(f)->tab->name,iotype,mode, (names) ? names : "(Null)");
if (!names || (O_TEXT != O_BINARY && mode & O_BINARY))
{
- PerlIO *top = fp;
+ PerlIO *top = f;
PerlIOl *l;
while (l = *top)
{
if (PerlIOBase(top)->tab == &PerlIO_crlf)
{
PerlIO_flush(top);
- PerlIO_pop(top);
+ PerlIOBase(top)->flags &= ~PERLIO_F_CRLF;
break;
}
top = PerlIONext(top);
}
}
- return PerlIO_apply_layers(aTHX_ fp, NULL, names) == 0 ? TRUE : FALSE;
+ return PerlIO_apply_layers(aTHX_ f, NULL, names) == 0 ? TRUE : FALSE;
+}
+
+#undef PerlIO__close
+int
+PerlIO__close(PerlIO *f)
+{
+ return (*PerlIOBase(f)->tab->Close)(f);
}
+
#undef PerlIO_close
int
PerlIO_close(PerlIO *f)
@@ -750,7 +772,8 @@ PerlIO_error(PerlIO *f)
void
PerlIO_clearerr(PerlIO *f)
{
- (*PerlIOBase(f)->tab->Clearerr)(f);
+ if (f && *f)
+ (*PerlIOBase(f)->tab->Clearerr)(f);
}
#undef PerlIO_setlinebuf
@@ -858,24 +881,43 @@ PerlIOBase_fileno(PerlIO *f)
return PerlIO_fileno(PerlIONext(f));
}
+char *
+PerlIO_modestr(PerlIO *f,char *buf)
+{
+ char *s = buf;
+ IV flags = PerlIOBase(f)->flags;
+ if (flags & PERLIO_F_CANREAD)
+ *s++ = 'r';
+ if (flags & PERLIO_F_CANWRITE)
+ *s++ = 'w';
+ if (flags & PERLIO_F_CRLF)
+ *s++ = 't';
+ else
+ *s++ = 'b';
+ *s = '\0';
+ return buf;
+}
+
IV
PerlIOBase_pushed(PerlIO *f, const char *mode)
{
PerlIOl *l = PerlIOBase(f);
+ const char *omode = mode;
+ char temp[8];
l->flags &= ~(PERLIO_F_CANREAD|PERLIO_F_CANWRITE|
- PERLIO_F_TRUNCATE|PERLIO_F_APPEND|PERLIO_F_BINARY);
+ PERLIO_F_TRUNCATE|PERLIO_F_APPEND);
if (mode)
{
switch (*mode++)
{
case 'r':
- l->flags = PERLIO_F_CANREAD;
+ l->flags |= PERLIO_F_CANREAD;
break;
case 'a':
- l->flags = PERLIO_F_APPEND|PERLIO_F_CANWRITE;
+ l->flags |= PERLIO_F_APPEND|PERLIO_F_CANWRITE;
break;
case 'w':
- l->flags = PERLIO_F_TRUNCATE|PERLIO_F_CANWRITE;
+ l->flags |= PERLIO_F_TRUNCATE|PERLIO_F_CANWRITE;
break;
default:
errno = EINVAL;
@@ -889,7 +931,10 @@ PerlIOBase_pushed(PerlIO *f, const char *mode)
l->flags |= PERLIO_F_CANREAD|PERLIO_F_CANWRITE;
break;
case 'b':
- l->flags |= PERLIO_F_BINARY;
+ l->flags &= ~PERLIO_F_CRLF;
+ break;
+ case 't':
+ l->flags |= PERLIO_F_CRLF;
break;
default:
errno = EINVAL;
@@ -902,10 +947,12 @@ PerlIOBase_pushed(PerlIO *f, const char *mode)
if (l->next)
{
l->flags |= l->next->flags &
- (PERLIO_F_CANREAD|PERLIO_F_CANWRITE|
- PERLIO_F_TRUNCATE|PERLIO_F_APPEND|PERLIO_F_BINARY);
+ (PERLIO_F_CANREAD|PERLIO_F_CANWRITE|PERLIO_F_TRUNCATE|PERLIO_F_APPEND);
}
}
+ PerlIO_debug(__FUNCTION__ " f=%p %s %s fl=%08x (%s)\n",
+ f,PerlIOBase(f)->tab->name,(omode) ? omode : "(Null)",
+ l->flags,PerlIO_modestr(f,temp));
return 0;
}
@@ -943,9 +990,10 @@ IV
PerlIOBase_close(PerlIO *f)
{
IV code = 0;
+ PerlIO *n = PerlIONext(f);
if (PerlIO_flush(f) != 0)
code = -1;
- if (PerlIO_close(PerlIONext(f)) != 0)
+ if (n && (*PerlIOBase(n)->tab->Close)(n) != 0)
code = -1;
PerlIOBase(f)->flags &= ~(PERLIO_F_CANREAD|PERLIO_F_CANWRITE|PERLIO_F_OPEN);
return code;
@@ -976,7 +1024,10 @@ PerlIOBase_clearerr(PerlIO *f)
{
if (f && *f)
{
- PerlIOBase(f)->flags &= ~PERLIO_F_ERROR;
+ PerlIO *n = PerlIONext(f);
+ PerlIOBase(f)->flags &= ~(PERLIO_F_ERROR|PERLIO_F_EOF);
+ if (n)
+ PerlIO_clearerr(n);
}
}
@@ -1035,7 +1086,14 @@ PerlIOUnix_oflags(const char *mode)
}
if (*mode == 'b')
{
- oflags |= O_BINARY;
+ oflags |= O_BINARY;
+ oflags &= ~O_TEXT;
+ mode++;
+ }
+ else if (*mode == 't')
+ {
+ oflags |= O_TEXT;
+ oflags &= ~O_BINARY;
mode++;
}
/* Always open in binary mode */
@@ -1187,7 +1245,7 @@ PerlIOUnix_close(PerlIO *f)
PerlIO_funcs PerlIO_unix = {
"unix",
sizeof(PerlIOUnix),
- 0,
+ PERLIO_K_RAW,
PerlIOUnix_fileno,
PerlIOUnix_fdopen,
PerlIOUnix_open,
@@ -1228,12 +1286,29 @@ PerlIOStdio_fileno(PerlIO *f)
return fileno(PerlIOSelf(f,PerlIOStdio)->stdio);
}
+const char *
+PerlIOStdio_mode(const char *mode,char *tmode)
+{
+ const char *ret = mode;
+ if (O_BINARY != O_TEXT)
+ {
+ ret = (const char *) tmode;
+ while (*mode)
+ {
+ *tmode++ = *mode++;
+ }
+ *tmode++ = 'b';
+ *tmode = '\0';
+ }
+ return ret;
+}
PerlIO *
PerlIOStdio_fdopen(PerlIO_funcs *self, int fd,const char *mode)
{
PerlIO *f = NULL;
int init = 0;
+ char tmode[8];
if (*mode == 'I')
{
init = 1;
@@ -1258,7 +1333,9 @@ PerlIOStdio_fdopen(PerlIO_funcs *self, int fd,const char *mode)
}
}
else
- stdio = fdopen(fd,mode);
+ {
+ stdio = fdopen(fd,mode = PerlIOStdio_mode(mode,tmode));
+ }
if (stdio)
{
PerlIOStdio *s = PerlIOSelf(PerlIO_push(f = PerlIO_allocate(),self,mode),PerlIOStdio);
@@ -1288,7 +1365,10 @@ PerlIOStdio_open(PerlIO_funcs *self, const char *path,const char *mode)
FILE *stdio = fopen(path,mode);
if (stdio)
{
- PerlIOStdio *s = PerlIOSelf(PerlIO_push(f = PerlIO_allocate(),self,mode),PerlIOStdio);
+ char tmode[8];
+ PerlIOStdio *s = PerlIOSelf(PerlIO_push(f = PerlIO_allocate(), self,
+ (mode = PerlIOStdio_mode(mode,tmode))),
+ PerlIOStdio);
s->stdio = stdio;
}
return f;
@@ -1298,7 +1378,8 @@ int
PerlIOStdio_reopen(const char *path, const char *mode, PerlIO *f)
{
PerlIOStdio *s = PerlIOSelf(f,PerlIOStdio);
- FILE *stdio = freopen(path,mode,s->stdio);
+ char tmode[8];
+ FILE *stdio = freopen(path,(mode = PerlIOStdio_mode(mode,tmode)),s->stdio);
if (!s->stdio)
return -1;
s->stdio = stdio;
@@ -1517,7 +1598,7 @@ PerlIOStdio_set_ptrcnt(PerlIO *f,STDCHAR *ptr,SSize_t cnt)
PerlIO_funcs PerlIO_stdio = {
"stdio",
sizeof(PerlIOStdio),
- 0,
+ PERLIO_K_BUFFERED,
PerlIOStdio_fileno,
PerlIOStdio_fdopen,
PerlIOStdio_open,
@@ -1594,15 +1675,23 @@ PerlIOBuf_fdopen(PerlIO_funcs *self, int fd, const char *mode)
init = 1;
mode++;
}
+ if (O_BINARY != O_TEXT)
+ {
+ int code = PerlLIO_setmode(fd, O_BINARY);
+ PerlIO_debug(__FUNCTION__ " %s fd=%d m=%s c=%d\n",tab->name,fd,mode,code);
+ }
f = (*tab->Fdopen)(tab,fd,mode);
if (f)
{
- /* Initial stderr is unbuffered */
- if (!init || fd != 2)
+ PerlIOBuf *b = PerlIOSelf(PerlIO_push(f,self,mode),PerlIOBuf);
+ b->posn = PerlIO_tell(PerlIONext(f));
+ if (init && fd == 2)
{
- PerlIOBuf *b = PerlIOSelf(PerlIO_push(f,self,NULL),PerlIOBuf);
- b->posn = PerlIO_tell(PerlIONext(f));
- }
+ /* Initial stderr is unbuffered */
+ PerlIOBase(f)->flags |= PERLIO_F_UNBUF;
+ }
+ PerlIO_debug(__FUNCTION__ " %s f=%p fd=%d m=%s fl=%08x\n",
+ self->name,f,fd,mode,PerlIOBase(f)->flags);
}
return f;
}
@@ -1614,7 +1703,7 @@ PerlIOBuf_open(PerlIO_funcs *self, const char *path, const char *mode)
PerlIO *f = (*tab->Open)(tab,path,mode);
if (f)
{
- PerlIOBuf *b = PerlIOSelf(PerlIO_push(f,self,NULL),PerlIOBuf);
+ PerlIOBuf *b = PerlIOSelf(PerlIO_push(f,self,mode),PerlIOBuf);
b->posn = PerlIO_tell(PerlIONext(f));
}
return f;
@@ -1872,6 +1961,8 @@ PerlIOBuf_write(PerlIO *f, const void *vbuf, Size_t count)
if (b->ptr >= (b->buf + b->bufsiz))
PerlIO_flush(f);
}
+ if (PerlIOBase(f)->flags & PERLIO_F_UNBUF)
+ PerlIO_flush(f);
return written;
}
@@ -1994,7 +2085,7 @@ PerlIOBuf_set_ptrcnt(PerlIO *f, STDCHAR *ptr, SSize_t cnt)
PerlIO_funcs PerlIO_perlio = {
"perlio",
sizeof(PerlIOBuf),
- 0,
+ PERLIO_K_BUFFERED,
PerlIOBase_fileno,
PerlIOBuf_fdopen,
PerlIOBuf_open,
@@ -2033,56 +2124,74 @@ typedef struct
STDCHAR *nl; /* Position of crlf we "lied" about in the buffer */
} PerlIOCrlf;
+IV
+PerlIOCrlf_pushed(PerlIO *f, const char *mode)
+{
+ IV code;
+ PerlIOBase(f)->flags |= PERLIO_F_CRLF;
+ code = PerlIOBase_pushed(f,mode);
+ PerlIO_debug(__FUNCTION__ " f=%p %s %s fl=%08x\n",
+ f,PerlIOBase(f)->tab->name,(mode) ? mode : "(Null)",
+ PerlIOBase(f)->flags);
+ return code;
+}
+
+
SSize_t
PerlIOCrlf_unread(PerlIO *f, const void *vbuf, Size_t count)
{
- const STDCHAR *buf = (const STDCHAR *) vbuf+count;
- PerlIOBuf *b = PerlIOSelf(f,PerlIOBuf);
PerlIOCrlf *c = PerlIOSelf(f,PerlIOCrlf);
- SSize_t unread = 0;
- if (PerlIOBase(f)->flags & PERLIO_F_WRBUF)
- PerlIO_flush(f);
if (c->nl)
{
*(c->nl) = 0xd;
c->nl = NULL;
}
- if (!b->buf)
- PerlIO_get_base(f);
- if (b->buf)
+ if (!(PerlIOBase(f)->flags & PERLIO_F_CRLF))
+ return PerlIOBuf_unread(f,vbuf,count);
+ else
{
- if (!(PerlIOBase(f)->flags & PERLIO_F_RDBUF))
- {
- b->end = b->ptr = b->buf + b->bufsiz;
- PerlIOBase(f)->flags |= PERLIO_F_RDBUF;
- }
- while (count > 0 && b->ptr > b->buf)
+ const STDCHAR *buf = (const STDCHAR *) vbuf+count;
+ PerlIOBuf *b = PerlIOSelf(f,PerlIOBuf);
+ SSize_t unread = 0;
+ if (PerlIOBase(f)->flags & PERLIO_F_WRBUF)
+ PerlIO_flush(f);
+ if (!b->buf)
+ PerlIO_get_base(f);
+ if (b->buf)
{
- int ch = *--buf;
- if (ch == '\n')
+ if (!(PerlIOBase(f)->flags & PERLIO_F_RDBUF))
+ {
+ b->end = b->ptr = b->buf + b->bufsiz;
+ PerlIOBase(f)->flags |= PERLIO_F_RDBUF;
+ }
+ while (count > 0 && b->ptr > b->buf)
{
- if (b->ptr - 2 >= b->buf)
+ int ch = *--buf;
+ if (ch == '\n')
{
- *--(b->ptr) = 0xa;
- *--(b->ptr) = 0xd;
- unread++;
- count--;
+ if (b->ptr - 2 >= b->buf)
+ {
+ *--(b->ptr) = 0xa;
+ *--(b->ptr) = 0xd;
+ unread++;
+ count--;
+ }
+ else
+ {
+ buf++;
+ break;
+ }
}
else
{
- buf++;
- break;
+ *--(b->ptr) = ch;
+ unread++;
+ count--;
}
}
- else
- {
- *--(b->ptr) = ch;
- unread++;
- count--;
- }
}
+ return unread;
}
- return unread;
}
SSize_t
@@ -2094,7 +2203,7 @@ PerlIOCrlf_get_cnt(PerlIO *f)
if (PerlIOBase(f)->flags & PERLIO_F_RDBUF)
{
PerlIOCrlf *c = PerlIOSelf(f,PerlIOCrlf);
- if (!c->nl)
+ if ((PerlIOBase(f)->flags & PERLIO_F_CRLF) && !c->nl)
{
STDCHAR *nl = b->ptr;
scan:
@@ -2155,6 +2264,7 @@ PerlIOCrlf_set_ptrcnt(PerlIO *f, STDCHAR *ptr, SSize_t cnt)
{
PerlIOBuf *b = PerlIOSelf(f,PerlIOBuf);
PerlIOCrlf *c = PerlIOSelf(f,PerlIOCrlf);
+ IV flags = PerlIOBase(f)->flags;
if (!b->buf)
PerlIO_get_base(f);
if (!ptr)
@@ -2164,7 +2274,7 @@ PerlIOCrlf_set_ptrcnt(PerlIO *f, STDCHAR *ptr, SSize_t cnt)
else
{
ptr = b->end;
- if (ptr > b->buf && ptr[-1] == 0xd)
+ if ((flags & PERLIO_F_CRLF) && ptr > b->buf && ptr[-1] == 0xd)
ptr--;
}
ptr -= cnt;
@@ -2178,7 +2288,7 @@ PerlIOCrlf_set_ptrcnt(PerlIO *f, STDCHAR *ptr, SSize_t cnt)
else
{
chk = b->end;
- if (chk > b->buf && chk[-1] == 0xd)
+ if ((flags & PERLIO_F_CRLF) && chk > b->buf && chk[-1] == 0xd)
chk--;
}
chk -= cnt;
@@ -2186,8 +2296,8 @@ PerlIOCrlf_set_ptrcnt(PerlIO *f, STDCHAR *ptr, SSize_t 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);
+ Perl_croak(aTHX_ "ptr wrong %p != %p fl=%08x nl=%p e=%p for %d",
+ ptr, chk, flags, c->nl, b->end, cnt);
}
}
if (c->nl)
@@ -2207,52 +2317,59 @@ PerlIOCrlf_set_ptrcnt(PerlIO *f, STDCHAR *ptr, SSize_t cnt)
SSize_t
PerlIOCrlf_write(PerlIO *f, const void *vbuf, Size_t count)
{
- PerlIOBuf *b = PerlIOSelf(f,PerlIOBuf);
- const STDCHAR *buf = (const STDCHAR *) vbuf;
- const STDCHAR *ebuf = buf+count;
- if (!b->buf)
- PerlIO_get_base(f);
- if (!(PerlIOBase(f)->flags & PERLIO_F_CANWRITE))
- return 0;
- while (buf < ebuf)
+ if (!(PerlIOBase(f)->flags & PERLIO_F_CRLF))
+ return PerlIOBuf_write(f,vbuf,count);
+ else
{
- STDCHAR *eptr = b->buf+b->bufsiz;
- PerlIOBase(f)->flags |= PERLIO_F_WRBUF;
- while (buf < ebuf && b->ptr < eptr)
+ PerlIOBuf *b = PerlIOSelf(f,PerlIOBuf);
+ const STDCHAR *buf = (const STDCHAR *) vbuf;
+ const STDCHAR *ebuf = buf+count;
+ if (!b->buf)
+ PerlIO_get_base(f);
+ if (!(PerlIOBase(f)->flags & PERLIO_F_CANWRITE))
+ return 0;
+ while (buf < ebuf)
{
- if (*buf == '\n')
+ STDCHAR *eptr = b->buf+b->bufsiz;
+ PerlIOBase(f)->flags |= PERLIO_F_WRBUF;
+ while (buf < ebuf && b->ptr < eptr)
{
- if ((b->ptr + 2) > eptr)
- {
- /* Not room for both */
- PerlIO_flush(f);
- break;
- }
- else
+ if (*buf == '\n')
{
- *(b->ptr)++ = 0xd; /* CR */
- *(b->ptr)++ = 0xa; /* LF */
- buf++;
- if (PerlIOBase(f)->flags & PERLIO_F_LINEBUF)
+ if ((b->ptr + 2) > eptr)
{
+ /* Not room for both */
PerlIO_flush(f);
break;
}
+ else
+ {
+ *(b->ptr)++ = 0xd; /* CR */
+ *(b->ptr)++ = 0xa; /* LF */
+ buf++;
+ if (PerlIOBase(f)->flags & PERLIO_F_LINEBUF)
+ {
+ PerlIO_flush(f);
+ break;
+ }
+ }
+ }
+ else
+ {
+ int ch = *buf++;
+ *(b->ptr)++ = ch;
+ }
+ if (b->ptr >= eptr)
+ {
+ PerlIO_flush(f);
+ break;
}
- }
- else
- {
- int ch = *buf++;
- *(b->ptr)++ = ch;
- }
- if (b->ptr >= eptr)
- {
- PerlIO_flush(f);
- break;
}
}
+ if (PerlIOBase(f)->flags & PERLIO_F_UNBUF)
+ PerlIO_flush(f);
+ return (buf - (STDCHAR *) vbuf);
}
- return (buf - (STDCHAR *) vbuf);
}
IV
@@ -2270,12 +2387,12 @@ PerlIOCrlf_flush(PerlIO *f)
PerlIO_funcs PerlIO_crlf = {
"crlf",
sizeof(PerlIOCrlf),
- 0,
+ PERLIO_K_BUFFERED|PERLIO_K_CANCRLF,
PerlIOBase_fileno,
PerlIOBuf_fdopen,
PerlIOBuf_open,
PerlIOBuf_reopen,
- PerlIOBase_pushed,
+ PerlIOCrlf_pushed,
PerlIOBase_noop_ok, /* popped */
PerlIOBuf_read, /* generic read works with ptr/cnt lies ... */
PerlIOCrlf_unread, /* Put CR,LF in buffer for each '\n' */
@@ -2573,7 +2690,7 @@ PerlIOMmap_close(PerlIO *f)
PerlIO_funcs PerlIO_mmap = {
"mmap",
sizeof(PerlIOMmap),
- 0,
+ PERLIO_K_BUFFERED,
PerlIOBase_fileno,
PerlIOBuf_fdopen,
PerlIOBuf_open,
diff --git a/perliol.h b/perliol.h
index 1b7c1724e1..3d9c0e6f00 100644
--- a/perliol.h
+++ b/perliol.h
@@ -34,6 +34,13 @@ struct _PerlIO_funcs
void (*Set_ptrcnt)(PerlIO *f,STDCHAR *ptr,SSize_t cnt);
};
+/*--------------------------------------------------------------------------------------*/
+/* Kind values */
+#define PERLIO_K_RAW 0x00000001
+#define PERLIO_K_BUFFERED 0x00000002
+#define PERLIO_K_CANCRLF 0x00000004
+
+/*--------------------------------------------------------------------------------------*/
struct _PerlIO
{
PerlIOl * next; /* Lower layer */
@@ -50,13 +57,14 @@ struct _PerlIO
#define PERLIO_F_ERROR 0x00080000
#define PERLIO_F_TRUNCATE 0x00100000
#define PERLIO_F_APPEND 0x00200000
-#define PERLIO_F_BINARY 0x00400000
+#define PERLIO_F_CRLF 0x00400000
#define PERLIO_F_UTF8 0x00800000
-#define PERLIO_F_LINEBUF 0x01000000
+#define PERLIO_F_UNBUF 0x01000000
#define PERLIO_F_WRBUF 0x02000000
#define PERLIO_F_RDBUF 0x04000000
-#define PERLIO_F_TEMP 0x08000000
-#define PERLIO_F_OPEN 0x10000000
+#define PERLIO_F_LINEBUF 0x08000000
+#define PERLIO_F_TEMP 0x10000000
+#define PERLIO_F_OPEN 0x20000000
#define PerlIOBase(f) (*(f))
#define PerlIOSelf(f,type) ((type *)PerlIOBase(f))
@@ -74,6 +82,12 @@ extern PerlIO_funcs PerlIO_mmap;
extern PerlIO *PerlIO_allocate(void);
+#if O_BINARY != O_TEXT
+#define PERLIO_STDTEXT "t"
+#else
+#define PERLIO_STDTEXT ""
+#endif
+
/*--------------------------------------------------------------------------------------*/
/* Generic, or stub layer functions */
diff --git a/pp_sys.c b/pp_sys.c
index 88ce86c1c0..37b8d14cfd 100644
--- a/pp_sys.c
+++ b/pp_sys.c
@@ -301,9 +301,6 @@ PP(pp_backtick)
if (PL_curcop->cop_io) {
type = SvPV_nolen(PL_curcop->cop_io);
}
- else if (O_BINARY != O_TEXT) {
- type = ":crlf";
- }
if (type && *type)
PerlIO_apply_layers(aTHX_ fp,mode,type);
@@ -3732,9 +3729,6 @@ PP(pp_fork)
if (childpid < 0)
RETSETUNDEF;
if (!childpid) {
-#ifdef SOCKS_64BIT_BUG
- Perl_do_s64_init_buffer();
-#endif
/*SUPPRESS 560*/
if ((tmpgv = gv_fetchpv("$", TRUE, SVt_PV)))
sv_setiv(GvSV(tmpgv), (IV)PerlProc_getpid());
diff --git a/win32/makefile.mk b/win32/makefile.mk
index 681e28f401..fd9cdfa464 100644
--- a/win32/makefile.mk
+++ b/win32/makefile.mk
@@ -89,7 +89,7 @@ INST_ARCH *= \$(ARCHNAME)
#
# uncomment exactly one of the following
-#
+#
# Visual C++ 2.x
#CCTYPE *= MSVC20
# Visual C++ > 2.x and < 6.x
@@ -290,7 +290,7 @@ ARCHNAME !:= $(ARCHNAME)-thread
# VC 6.0 can load the socket dll on demand. Makes the test suite
# run in about 10% less time.
-DELAYLOAD *= -DELAYLOAD:wsock32.dll -DELAYLOAD:shell32.dll delayimp.lib
+DELAYLOAD *= -DELAYLOAD:wsock32.dll -DELAYLOAD:shell32.dll delayimp.lib
# VC 6.0 seems capable of compiling perl correctly with optimizations
# enabled. Anything earlier fails tests.
@@ -332,7 +332,7 @@ RSC = rc
# Options
#
INCLUDES = -I$(COREDIR) -I.\include -I. -I.. -I"$(CCINCDIR)"
-#PCHFLAGS = -H -Hc -H=c:\temp\bcmoduls.pch
+#PCHFLAGS = -H -Hc -H=c:\temp\bcmoduls.pch
DEFINES = -DWIN32 $(CRYPT_FLAG)
LOCDEFS = -DPERLDLL -DPERL_CORE
SUBSYS = console
@@ -346,7 +346,7 @@ OPTIMIZE = -v -D_RTLDLL -DDEBUGGING
LINK_DBG = -v
.ELSE
OPTIMIZE = -O2 -D_RTLDLL
-LINK_DBG =
+LINK_DBG =
.ENDIF
CFLAGS = -w -g0 -tWM -tWD $(INCLUDES) $(DEFINES) $(LOCDEFS) \
@@ -354,7 +354,7 @@ CFLAGS = -w -g0 -tWM -tWD $(INCLUDES) $(DEFINES) $(LOCDEFS) \
LINK_FLAGS = $(LINK_DBG) -L"$(INST_COREDIR)" -L"$(CCLIBDIR)"
OBJOUT_FLAG = -o
EXEOUT_FLAG = -e
-LIBOUT_FLAG =
+LIBOUT_FLAG =
.ELIF "$(CCTYPE)" == "GCC"
@@ -371,7 +371,7 @@ a = .a
# Options
#
-INCLUDES = -I.\include -I. -I.. -I$(COREDIR)
+INCLUDES = -I.\include -I. -I.. -I$(COREDIR)
DEFINES = -DWIN32 $(CRYPT_FLAG)
LOCDEFS = -DPERLDLL -DPERL_CORE
SUBSYS = console
@@ -391,14 +391,14 @@ OPTIMIZE = -g -O2 -DDEBUGGING
LINK_DBG = -g
.ELSE
OPTIMIZE = -g -O2
-LINK_DBG = -g
+LINK_DBG = -g
.ENDIF
CFLAGS = $(INCLUDES) $(DEFINES) $(LOCDEFS) $(OPTIMIZE)
LINK_FLAGS = $(LINK_DBG) -L"$(INST_COREDIR)" -L"$(CCLIBDIR)"
OBJOUT_FLAG = -o
EXEOUT_FLAG = -o
-LIBOUT_FLAG =
+LIBOUT_FLAG =
# NOTE: we assume that GCC uses MSVCRT.DLL
BUILDOPT += -fno-strict-aliasing -DPERL_MSVCRT_READFIX
@@ -415,7 +415,7 @@ RSC = rc
#
INCLUDES = -I$(COREDIR) -I.\include -I. -I..
-#PCHFLAGS = -Fpc:\temp\vcmoduls.pch -YX
+#PCHFLAGS = -Fpc:\temp\vcmoduls.pch -YX
DEFINES = -DWIN32 -D_CONSOLE -DNO_STRICT $(CRYPT_FLAG)
LOCDEFS = -DPERLDLL -DPERL_CORE
SUBSYS = console
@@ -496,7 +496,7 @@ LKPOST = )
#
# Rules
-#
+#
.SUFFIXES : .c $(o) .dll $(a) .exe .rc .res
@@ -515,7 +515,7 @@ $(o).dll:
$(IMPLIB) --input-def $(*B).def --output-lib $(*B).a $@
.ELSE
$(LINK32) -dll -subsystem:windows -implib:$(*B).lib -def:$(*B).def \
- -out:$@ $(BLINK_FLAGS) $(LIBFILES) $< $(LIBPERL)
+ -out:$@ $(BLINK_FLAGS) $(LIBFILES) $< $(LIBPERL)
.ENDIF
.rc.res:
@@ -532,6 +532,13 @@ CONFIGPM = ..\lib\Config.pm
MINIMOD = ..\lib\ExtUtils\Miniperl.pm
X2P = ..\x2p\a2p.exe
+# Nominate a target which causes extensions to be re-built
+# This used to be $(PERLEXE), but at worst it is the .dll that they depend
+# on and really only the interface - i.e. the .def file used to export symbols
+# from the .dll
+PERLDEP = perldll.def
+
+
PL2BAT = bin\pl2bat.pl
GLOBBAT = bin\perlglob.bat
@@ -638,7 +645,7 @@ EXTRACORE_SRC += ..\perlio.c
WIN32_SRC = \
.\win32.c \
.\win32sck.c \
- .\win32thread.c
+ .\win32thread.c
.IF "$(CRYPT_SRC)" != ""
WIN32_SRC += .\$(CRYPT_SRC)
@@ -739,7 +746,7 @@ GLOB = $(EXTDIR)\File\Glob\Glob
HOSTNAME = $(EXTDIR)\Sys\Hostname\Hostname
STORABLE = $(EXTDIR)\Storable\Storable
FILTER = $(EXTDIR)\Filter\Util\Call\Call
-ENCODE = $(EXTDIR)\Encode\Encode
+ENCODE = $(EXTDIR)\Encode\Encode
SOCKET_DLL = $(AUTODIR)\Socket\Socket.dll
FCNTL_DLL = $(AUTODIR)\Fcntl\Fcntl.dll
@@ -857,7 +864,7 @@ RIGHTMAKE = __switch_makefiles
NOOP = @rem
.ELSE
MK2 = __not_needed
-RIGHTMAKE =
+RIGHTMAKE =
.ENDIF
#
@@ -913,7 +920,7 @@ __no_such_target:
#--------------------- END Win95 SPECIFIC ---------------------
# a blank target for when builds don't need to do certain things
-# this target added for Win95 port but used to keep the WinNT port able to
+# this target added for Win95 port but used to keep the WinNT port able to
# use this file
__not_needed:
$(NOOP)
@@ -927,7 +934,7 @@ $(GLOBEXE) : perlglob$(o)
$(LINK32) $(BLINK_FLAGS) -mconsole -o $@ perlglob$(o) $(LIBFILES)
.ELSE
$(LINK32) $(BLINK_FLAGS) $(LIBFILES) -out:$@ -subsystem:$(SUBSYS) \
- perlglob$(o) setargv$(o)
+ perlglob$(o) setargv$(o)
.ENDIF
perlglob$(o) : perlglob.c
@@ -972,7 +979,7 @@ $(MINIPERL) : $(MINIDIR) $(MINI_OBJ) $(CRTIPMLIBS)
@$(mktmp c0x32$(o) $(MINI_OBJ:s,\,\\),$(@:s,\,\\),,$(LIBFILES),)
.ELIF "$(CCTYPE)" == "GCC"
$(LINK32) -v -mconsole -o $@ $(BLINK_FLAGS) \
- $(mktmp $(LKPRE) $(MINI_OBJ:s,\,\\) $(LIBFILES) $(LKPOST))
+ $(mktmp $(LKPRE) $(MINI_OBJ:s,\,\\) $(LIBFILES) $(LKPOST))
.ELSE
$(LINK32) -subsystem:console -out:$@ \
@$(mktmp $(BLINK_FLAGS) $(LIBFILES) $(MINI_OBJ:s,\,\\))
@@ -1070,7 +1077,7 @@ $(X2P) : $(MINIPERL) $(X2P_OBJ)
@$(mktmp $(BLINK_FLAGS) $(LIBFILES) $(X2P_OBJ:s,\,\\))
.ENDIF
-perlmain.c : runperl.c
+perlmain.c : runperl.c
copy runperl.c perlmain.c
perlmain$(o) : perlmain.c
@@ -1091,7 +1098,7 @@ $(PERLEXE): $(PERLDLL) $(CONFIGPM) $(PERLEXE_OBJ) $(PERLEXE_RES)
.ENDIF
copy $(PERLEXE) $(WPERLEXE)
$(MINIPERL) -I..\lib bin\exetype.pl $(WPERLEXE) WINDOWS
- copy splittree.pl ..
+ copy splittree.pl ..
$(MINIPERL) -I..\lib ..\splittree.pl "../LIB" $(AUTODIR)
$(DYNALOADER).c: $(MINIPERL) $(EXTDIR)\DynaLoader\dl_win32.xs $(CONFIGPM)
@@ -1106,102 +1113,102 @@ $(DYNALOADER).c: $(MINIPERL) $(EXTDIR)\DynaLoader\dl_win32.xs $(CONFIGPM)
$(EXTDIR)\DynaLoader\dl_win32.xs: dl_win32.xs
copy dl_win32.xs $(EXTDIR)\DynaLoader\dl_win32.xs
-$(DUMPER_DLL): $(PERLEXE) $(DUMPER).xs
+$(DUMPER_DLL): $(PERLDEP) $(DUMPER).xs
cd $(EXTDIR)\Data\$(*B) && \
..\..\..\miniperl -I..\..\..\lib Makefile.PL INSTALLDIRS=perl
cd $(EXTDIR)\Data\$(*B) && $(MAKE)
-$(DPROF_DLL): $(PERLEXE) $(DPROF).xs
+$(DPROF_DLL): $(PERLDEP) $(DPROF).xs
cd $(EXTDIR)\Devel\$(*B) && \
..\..\..\miniperl -I..\..\..\lib Makefile.PL INSTALLDIRS=perl
cd $(EXTDIR)\Devel\$(*B) && $(MAKE)
-$(GLOB_DLL): $(PERLEXE) $(GLOB).xs
+$(GLOB_DLL): $(PERLDEP) $(GLOB).xs
cd $(EXTDIR)\File\$(*B) && \
..\..\..\miniperl -I..\..\..\lib Makefile.PL INSTALLDIRS=perl
cd $(EXTDIR)\File\$(*B) && $(MAKE)
-$(PEEK_DLL): $(PERLEXE) $(PEEK).xs
+$(PEEK_DLL): $(PERLDEP) $(PEEK).xs
cd $(EXTDIR)\Devel\$(*B) && \
..\..\..\miniperl -I..\..\..\lib Makefile.PL INSTALLDIRS=perl
cd $(EXTDIR)\Devel\$(*B) && $(MAKE)
-$(RE_DLL): $(PERLEXE) $(RE).xs
+$(RE_DLL): $(PERLDEP) $(RE).xs
cd $(EXTDIR)\$(*B) && \
..\..\miniperl -I..\..\lib Makefile.PL INSTALLDIRS=perl
cd $(EXTDIR)\$(*B) && $(MAKE)
-$(B_DLL): $(PERLEXE) $(B).xs
+$(B_DLL): $(PERLDEP) $(B).xs
cd $(EXTDIR)\$(*B) && \
..\..\miniperl -I..\..\lib Makefile.PL INSTALLDIRS=perl
cd $(EXTDIR)\$(*B) && $(MAKE)
-$(THREAD_DLL): $(PERLEXE) $(THREAD).xs
+$(THREAD_DLL): $(PERLDEP) $(THREAD).xs
cd $(EXTDIR)\$(*B) && \
..\..\miniperl -I..\..\lib Makefile.PL INSTALLDIRS=perl
cd $(EXTDIR)\$(*B) && $(MAKE)
-$(ATTRS_DLL): $(PERLEXE) $(ATTRS).xs
+$(ATTRS_DLL): $(PERLDEP) $(ATTRS).xs
cd $(EXTDIR)\$(*B) && \
..\..\miniperl -I..\..\lib Makefile.PL INSTALLDIRS=perl
cd $(EXTDIR)\$(*B) && $(MAKE)
-$(POSIX_DLL): $(PERLEXE) $(POSIX).xs
+$(POSIX_DLL): $(PERLDEP) $(POSIX).xs
cd $(EXTDIR)\$(*B) && \
..\..\miniperl -I..\..\lib Makefile.PL INSTALLDIRS=perl
cd $(EXTDIR)\$(*B) && $(MAKE)
-$(IO_DLL): $(PERLEXE) $(IO).xs
+$(IO_DLL): $(PERLDEP) $(IO).xs
cd $(EXTDIR)\$(*B) && \
..\..\miniperl -I..\..\lib Makefile.PL INSTALLDIRS=perl
cd $(EXTDIR)\$(*B) && $(MAKE)
-$(SDBM_FILE_DLL) : $(PERLEXE) $(SDBM_FILE).xs
+$(SDBM_FILE_DLL) : $(PERLDEP) $(SDBM_FILE).xs
cd $(EXTDIR)\$(*B) && \
..\..\miniperl -I..\..\lib Makefile.PL INSTALLDIRS=perl
cd $(EXTDIR)\$(*B) && $(MAKE)
-$(FCNTL_DLL): $(PERLEXE) $(FCNTL).xs
+$(FCNTL_DLL): $(PERLDEP) $(FCNTL).xs
cd $(EXTDIR)\$(*B) && \
..\..\miniperl -I..\..\lib Makefile.PL INSTALLDIRS=perl
cd $(EXTDIR)\$(*B) && $(MAKE)
-$(OPCODE_DLL): $(PERLEXE) $(OPCODE).xs
+$(OPCODE_DLL): $(PERLDEP) $(OPCODE).xs
cd $(EXTDIR)\$(*B) && \
..\..\miniperl -I..\..\lib Makefile.PL INSTALLDIRS=perl
cd $(EXTDIR)\$(*B) && $(MAKE)
-$(SOCKET_DLL): $(PERLEXE) $(SOCKET).xs
+$(SOCKET_DLL): $(PERLDEP) $(SOCKET).xs
cd $(EXTDIR)\$(*B) && \
..\..\miniperl -I..\..\lib Makefile.PL INSTALLDIRS=perl
cd $(EXTDIR)\$(*B) && $(MAKE)
-$(HOSTNAME_DLL): $(PERLEXE) $(HOSTNAME).xs
+$(HOSTNAME_DLL): $(PERLDEP) $(HOSTNAME).xs
cd $(EXTDIR)\Sys\$(*B) && \
..\..\..\miniperl -I..\..\..\lib Makefile.PL INSTALLDIRS=perl
cd $(EXTDIR)\Sys\$(*B) && $(MAKE)
-$(BYTELOADER_DLL): $(PERLEXE) $(BYTELOADER).xs
+$(BYTELOADER_DLL): $(PERLDEP) $(BYTELOADER).xs
cd $(EXTDIR)\$(*B) && \
..\..\miniperl -I..\..\lib Makefile.PL INSTALLDIRS=perl
cd $(EXTDIR)\$(*B) && $(MAKE)
-$(ENCODE_DLL): $(PERLEXE) $(ENCODE).xs
+$(ENCODE_DLL): $(PERLDEP) $(ENCODE).xs
cd $(EXTDIR)\$(*B) && \
..\..\miniperl -I..\..\lib Makefile.PL INSTALLDIRS=perl
cd $(EXTDIR)\$(*B) && $(MAKE)
-$(STORABLE_DLL): $(PERLEXE) $(STORABLE).xs
+$(STORABLE_DLL): $(PERLDEP) $(STORABLE).xs
cd $(EXTDIR)\$(*B) && \
..\..\miniperl -I..\..\lib Makefile.PL INSTALLDIRS=perl
cd $(EXTDIR)\$(*B) && $(MAKE)
-$(FILTER_DLL): $(PERLEXE) $(FILTER).xs
+$(FILTER_DLL): $(PERLDEP) $(FILTER).xs
cd $(EXTDIR)\Filter\Util\Call && \
- ..\..\..\miniperl -I..\..\..\lib Makefile.PL INSTALLDIRS=perl
+ ..\..\..\..\miniperl -I..\..\..\..\lib Makefile.PL INSTALLDIRS=perl
cd $(EXTDIR)\Filter\Util\Call && $(MAKE)
-$(ERRNO_PM): $(PERLEXE) $(ERRNO)_pm.PL
+$(ERRNO_PM): $(PERLDEP) $(ERRNO)_pm.PL
cd $(EXTDIR)\$(*B) && \
..\..\miniperl -I..\..\lib Makefile.PL INSTALLDIRS=perl
cd $(EXTDIR)\$(*B) && $(MAKE)
@@ -1274,7 +1281,7 @@ installhtml : doc
$(RCOPY) html\*.* $(INST_HTML)\*.*
inst_lib : $(CONFIGPM)
- copy splittree.pl ..
+ copy splittree.pl ..
$(MINIPERL) -I..\lib ..\splittree.pl "../LIB" $(AUTODIR)
$(RCOPY) ..\lib $(INST_LIB)\*.*
@@ -1315,7 +1322,7 @@ test-wide-notty : test-prep
set HARNESS_PERL_SWITCHES=-C && \
cd ..\t && $(PERLEXE) -I..\lib harness
-clean :
+clean :
-@erase miniperlmain$(o)
-@erase $(MINIPERL)
-@erase perlglob$(o)
@@ -1346,9 +1353,9 @@ ok: utils
okfile: utils
$(PERLEXE) -I..\lib ..\utils\perlbug -ok -s "(UNINSTALLED)" -F perl.ok
-
+
nok: utils
$(PERLEXE) -I..\lib ..\utils\perlbug -nok -s "(UNINSTALLED)"
-
+
nokfile: utils
$(PERLEXE) -I..\lib ..\utils\perlbug -nok -s "(UNINSTALLED)" -F perl.nok