summaryrefslogtreecommitdiff
path: root/perlio.c
diff options
context:
space:
mode:
authorNick Ing-Simmons <nik@tiuk.ti.com>2000-11-19 20:57:17 +0000
committerNick Ing-Simmons <nik@tiuk.ti.com>2000-11-19 20:57:17 +0000
commit66ecd56be076649bc9da523c12d89e06e353e801 (patch)
treeefd4e6b4fa19dfece4f1e7ed4ce5006440d55269 /perlio.c
parent29befd70e124b0c2d1673e9ffa4f201bfa81073b (diff)
downloadperl-66ecd56be076649bc9da523c12d89e06e353e801.tar.gz
Add dummy crlf layer (just as buffer)
Correct 1st bug - one layer of indirection. p4raw-id: //depot/perlio@7755
Diffstat (limited to 'perlio.c')
-rw-r--r--perlio.c37
1 files changed, 36 insertions, 1 deletions
diff --git a/perlio.c b/perlio.c
index ca05ac5948..7f2d66f922 100644
--- a/perlio.c
+++ b/perlio.c
@@ -373,6 +373,7 @@ PerlIO_default_layer(I32 n)
PerlIO_define_layer(&PerlIO_unix);
PerlIO_define_layer(&PerlIO_perlio);
PerlIO_define_layer(&PerlIO_stdio);
+ PerlIO_define_layer(&PerlIO_crlf);
#ifdef HAS_MMAP
PerlIO_define_layer(&PerlIO_mmap);
#endif
@@ -450,7 +451,7 @@ PerlIO_apply_layers(pTHX_ PerlIO *f, const char *mode, const char *names)
SV *layer = PerlIO_find_layer(s,e-s);
if (layer)
{
- PerlIO_funcs *tab = INT2PTR(PerlIO_funcs *, SvIV(layer));
+ PerlIO_funcs *tab = INT2PTR(PerlIO_funcs *, SvIV(SvRV(layer)));
if (tab)
{
PerlIO *new = PerlIO_push(f,tab,mode);
@@ -1853,6 +1854,40 @@ PerlIO_funcs PerlIO_perlio = {
PerlIOBuf_set_ptrcnt,
};
+/*--------------------------------------------------------------------------------------*/
+/* crlf - translation currently just a copy of perlio to prove
+ that extra buffering which real one will do is not an issue.
+ */
+
+PerlIO_funcs PerlIO_crlf = {
+ "crlf",
+ sizeof(PerlIOBuf),
+ 0,
+ PerlIOBase_fileno,
+ PerlIOBuf_fdopen,
+ PerlIOBuf_open,
+ PerlIOBuf_reopen,
+ PerlIOBase_pushed,
+ PerlIOBase_noop_ok,
+ PerlIOBuf_read,
+ PerlIOBuf_unread,
+ PerlIOBuf_write,
+ PerlIOBuf_seek,
+ PerlIOBuf_tell,
+ PerlIOBuf_close,
+ PerlIOBuf_flush,
+ PerlIOBuf_fill,
+ PerlIOBase_eof,
+ PerlIOBase_error,
+ PerlIOBase_clearerr,
+ PerlIOBuf_setlinebuf,
+ PerlIOBuf_get_base,
+ PerlIOBuf_bufsiz,
+ PerlIOBuf_get_ptr,
+ PerlIOBuf_get_cnt,
+ PerlIOBuf_set_ptrcnt,
+};
+
#ifdef HAS_MMAP
/*--------------------------------------------------------------------------------------*/
/* mmap as "buffer" layer */