This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Clear up a documentation confusion noticed by Xiaoyun Wu
[perl5.git] / perlio.h
index f277dde..e510929 100644 (file)
--- a/perlio.h
+++ b/perlio.h
 
 #if defined(PERL_IMPLICIT_SYS)
 #ifndef USE_PERLIO
+#ifndef NETWARE
 # define USE_PERLIO
 #endif
 #endif
+#endif
 
 #ifndef USE_PERLIO
 # define USE_STDIO
 #define fseek fseeko
 #endif
 
+/* BS2000 includes are sometimes a bit non standard :-( */
+#if defined(POSIX_BC) && defined(O_BINARY) && !defined(O_TEXT)
+#undef O_BINARY
+#endif
+
 #ifdef PERLIO_IS_STDIO
 /* #define PerlIO_xxxx() as equivalent stdio function */
 #include "perlsdio.h"
@@ -80,10 +87,10 @@ typedef PerlIOl *PerlIO;
 #define PerlIO PerlIO
 #define PERLIO_LAYERS 1
 
-extern void    PerlIO_define_layer     (PerlIO_funcs *tab);
-extern SV *    PerlIO_find_layer       (const char *name, STRLEN len);
-extern PerlIO *        PerlIO_push             (PerlIO *f,PerlIO_funcs *tab,const char *mode);
-extern void    PerlIO_pop              (PerlIO *f);
+extern void    PerlIO_define_layer     (pTHX_ PerlIO_funcs *tab);
+extern PerlIO_funcs *PerlIO_find_layer (pTHX_ const char *name, STRLEN len, int load);
+extern PerlIO *        PerlIO_push             (pTHX_ PerlIO *f,PerlIO_funcs *tab,const char *mode,SV *arg);
+extern void    PerlIO_pop              (pTHX_ PerlIO *f);
 
 #endif /* PerlIO */
 
@@ -106,6 +113,10 @@ extern void        PerlIO_pop              (PerlIO *f);
 #ifndef PERLIO_NOT_STDIO
 #define PERLIO_NOT_STDIO 1
 #endif
+#else
+#ifndef PERLIO_NOT_STDIO
+#define PERLIO_NOT_STDIO 0
+#endif
 #endif
 
 #ifdef PERLIO_NOT_STDIO
@@ -161,6 +172,8 @@ extern void PerlIO_pop              (PerlIO *f);
 
 /* --------------------- Now prototypes for functions --------------- */
 
+START_EXTERN_C
+
 #ifndef NEXT30_NO_ATTRIBUTE
 #ifndef HASATTRIBUTE       /* disable GNU-cc attribute checking? */
 #ifdef  __attribute__      /* Avoid possible redefinition errors */
@@ -183,6 +196,9 @@ extern int  PerlIO_puts             (PerlIO *,const char *);
 #ifndef PerlIO_open
 extern PerlIO *        PerlIO_open             (const char *,const char *);
 #endif
+#ifndef PerlIO_openn
+extern PerlIO *        PerlIO_openn            (pTHX_ const char *layers, const char *mode,int fd,int imode,int perm,PerlIO *old,int narg,SV **arg);
+#endif
 #ifndef PerlIO_close
 extern int     PerlIO_close            (PerlIO *);
 #endif
@@ -228,6 +244,9 @@ extern void PerlIO_releaseFILE      (PerlIO *,FILE *);
 #ifndef PerlIO_read
 extern SSize_t PerlIO_read             (PerlIO *,void *,Size_t);
 #endif
+#ifndef PerlIO_unread
+extern SSize_t PerlIO_unread           (PerlIO *,const void *,Size_t);
+#endif
 #ifndef PerlIO_write
 extern SSize_t PerlIO_write            (PerlIO *,const void *,Size_t);
 #endif
@@ -297,14 +316,16 @@ extern PerlIO *   PerlIO_stdout           (void);
 extern PerlIO *        PerlIO_stderr           (void);
 #endif
 #ifndef PerlIO_getpos
-extern int     PerlIO_getpos           (PerlIO *,Fpos_t *);
+extern int     PerlIO_getpos           (PerlIO *,SV *);
 #endif
 #ifndef PerlIO_setpos
-extern int     PerlIO_setpos           (PerlIO *,const Fpos_t *);
+extern int     PerlIO_setpos           (PerlIO *,SV *);
 #endif
 #ifndef PerlIO_fdupopen
-#define PerlIO_fdupopen(f)             (f)
-/* extern PerlIO *     PerlIO_fdupopen         (PerlIO *); */
+extern PerlIO *        PerlIO_fdupopen         (pTHX_ PerlIO *);
+#endif
+#if !defined(PerlIO_modestr) && !defined(PERLIO_IS_STDIO)
+extern char *PerlIO_modestr            (PerlIO *,char *buf);
 #endif
 #ifndef PerlIO_isutf8
 extern int     PerlIO_isutf8           (PerlIO *);
@@ -315,7 +336,20 @@ extern int PerlIO_apply_layers     (pTHX_ PerlIO *f, const char *mode, const char *n
 #ifndef PerlIO_binmode
 extern int     PerlIO_binmode          (pTHX_ PerlIO *f, int iotype, int omode, const char *names);
 #endif
+#ifndef PerlIO_getname
+extern char *  PerlIO_getname          (PerlIO *, char *);
+#endif
+
+extern void PerlIO_destruct(pTHX);
+
+#ifndef PERLIO_IS_STDIO
+
+extern void PerlIO_cleanup(void);
 
 extern void PerlIO_debug(const char *fmt,...);
 
+#endif
+
+END_EXTERN_C
+
 #endif /* _PERLIO_H */