This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
We'll ship 5.9.1 today.
[perl5.git] / perliol.h
index 250a015..47fe6fc 100644 (file)
--- a/perliol.h
+++ b/perliol.h
@@ -14,16 +14,18 @@ struct PerlIO_list_s {
 };
 
 struct _PerlIO_funcs {
+    Size_t fsize;
     char *name;
     Size_t size;
     U32 kind;
-    IV (*Pushed) (pTHX_ PerlIO *f, const char *mode, SV *arg);
+    IV (*Pushed) (pTHX_ PerlIO *f, const char *mode, SV *arg, PerlIO_funcs *tab);
     IV (*Popped) (pTHX_ PerlIO *f);
     PerlIO *(*Open) (pTHX_ PerlIO_funcs *tab,
                     PerlIO_list_t *layers, IV n,
                     const char *mode,
                     int fd, int imode, int perm,
                     PerlIO *old, int narg, SV **args);
+    IV (*Binmode)(pTHX_ PerlIO *f);
     SV *(*Getarg) (pTHX_ PerlIO *f, CLONE_PARAMS *param, int flags);
     IV (*Fileno) (pTHX_ PerlIO *f);
     PerlIO *(*Dup) (pTHX_ PerlIO *f, PerlIO *o, CLONE_PARAMS *param, int flags);
@@ -64,7 +66,7 @@ struct _PerlIO_funcs {
 struct _PerlIO {
     PerlIOl *next;             /* Lower layer */
     PerlIO_funcs *tab;         /* Functions for this layer */
-    IV flags;                  /* Various flags for state */
+    U32 flags;                 /* Various flags for state */
 };
 
 /*--------------------------------------------------------------------------------------*/
@@ -86,6 +88,7 @@ struct _PerlIO {
 #define PERLIO_F_OPEN          0x00200000
 #define PERLIO_F_FASTGETS      0x00400000
 #define PERLIO_F_TTY           0x00800000
+#define PERLIO_F_NOTREG         0x01000000   
 
 #define PerlIOBase(f)      (*(f))
 #define PerlIOSelf(f,type) ((type *)PerlIOBase(f))
@@ -123,8 +126,9 @@ extern SV *PerlIO_arg_fetch(PerlIO_list_t *av, IV n);
 
 extern IV PerlIOBase_fileno(pTHX_ PerlIO *f);
 extern PerlIO *PerlIOBase_dup(pTHX_ PerlIO *f, PerlIO *o, CLONE_PARAMS *param, int flags);
-extern IV PerlIOBase_pushed(pTHX_ PerlIO *f, const char *mode, SV *arg);
+extern IV PerlIOBase_pushed(pTHX_ PerlIO *f, const char *mode, SV *arg, PerlIO_funcs *tab);
 extern IV PerlIOBase_popped(pTHX_ PerlIO *f);
+extern IV PerlIOBase_binmode(pTHX_ PerlIO *f);
 extern SSize_t PerlIOBase_read(pTHX_ PerlIO *f, void *vbuf, Size_t count);
 extern SSize_t PerlIOBase_unread(pTHX_ PerlIO *f, const void *vbuf,
                                 Size_t count);
@@ -166,7 +170,7 @@ extern PerlIO *PerlIOBuf_open(pTHX_ PerlIO_funcs *self,
                              PerlIO_list_t *layers, IV n,
                              const char *mode, int fd, int imode,
                              int perm, PerlIO *old, int narg, SV **args);
-extern IV PerlIOBuf_pushed(pTHX_ PerlIO *f, const char *mode, SV *arg);
+extern IV PerlIOBuf_pushed(pTHX_ PerlIO *f, const char *mode, SV *arg, PerlIO_funcs *tab);
 extern IV PerlIOBuf_popped(pTHX_ PerlIO *f);
 extern PerlIO *PerlIOBuf_dup(pTHX_ PerlIO *f, PerlIO *o, CLONE_PARAMS *param, int flags);
 extern SSize_t PerlIOBuf_read(pTHX_ PerlIO *f, void *vbuf, Size_t count);