+/* perlio.h
+ *
+ * Copyright (C) 1996, 1997, 1999, 2000, 2001, 2002, 2003,
+ * by Larry Wall and others
+ *
+ * You may distribute under the terms of either the GNU General Public
+ * License or the Artistic License, as specified in the README file.
+ *
+ */
+
#ifndef _PERLIO_H
#define _PERLIO_H
/*
#if defined(PERL_IMPLICIT_SYS)
#ifndef USE_PERLIO
#ifndef NETWARE
-# define USE_PERLIO
+/* # define USE_PERLIO */
#endif
#endif
#endif
*/
#include <stdio.h>
+#ifdef __BEOS__
+int fseeko(FILE *stream, off_t offset, int whence);
+off_t ftello(FILE *stream);
+#endif
+
#if defined(USE_64_BIT_STDIO) && defined(HAS_FTELLO) && !defined(USE_FTELL64)
#define ftell ftello
#endif
extern PerlIO *PerlIO_push(pTHX_ PerlIO *f, PerlIO_funcs *tab,
const char *mode, SV *arg);
extern void PerlIO_pop(pTHX_ PerlIO *f);
+extern AV* PerlIO_get_layers(pTHX_ PerlIO *f);
extern void PerlIO_clone(pTHX_ PerlInterpreter *proto, CLONE_PARAMS *param);
#endif /* PerlIO */
#endif /* ifndef PERLIO_NOT_STDIO */
#endif /* PERLIO_IS_STDIO */
-#define specialCopIO(sv) ((sv) != Nullsv)
+#define specialCopIO(sv) ((sv) == Nullsv)
/* ----------- fill in things that have not got #define'd ---------- */
#define SEEK_END 2
#endif
+#define PERLIO_DUP_CLONE 1
+#define PERLIO_DUP_FD 2
+
/* --------------------- Now prototypes for functions --------------- */
START_EXTERN_C
+#ifndef __attribute__format__
+#ifdef CHECK_FORMAT
+#define __attribute__format__(x,y,z) __attribute__((__format__(x,y,z)))
+#else
+#define __attribute__format__(x,y,z)
+#endif
+#endif
#ifndef NEXT30_NO_ATTRIBUTE
#ifndef HASATTRIBUTE /* disable GNU-cc attribute checking? */
#ifdef __attribute__ /* Avoid possible redefinition errors */
#endif
#ifndef PerlIO_stdoutf
extern int PerlIO_stdoutf(const char *, ...)
- __attribute__ ((__format__(__printf__, 1, 2)));
+ __attribute__format__(__printf__, 1, 2);
#endif
#ifndef PerlIO_puts
extern int PerlIO_puts(PerlIO *, const char *);
int fd, int imode, int perm, PerlIO *old,
int narg, SV **arg);
#endif
-#ifndef PerlIO_close
-extern int PerlIO_close(PerlIO *);
-#endif
#ifndef PerlIO_eof
extern int PerlIO_eof(PerlIO *);
#endif
#ifndef PerlIO_putc
extern int PerlIO_putc(PerlIO *, int);
#endif
-#ifndef PerlIO_flush
-extern int PerlIO_flush(PerlIO *);
-#endif
#ifndef PerlIO_ungetc
extern int PerlIO_ungetc(PerlIO *, int);
#endif
-#ifndef PerlIO_fileno
-extern int PerlIO_fileno(PerlIO *);
-#endif
#ifndef PerlIO_fdopen
extern PerlIO *PerlIO_fdopen(int, const char *);
#endif
#ifndef PerlIO_importFILE
-extern PerlIO *PerlIO_importFILE(FILE *, int);
+extern PerlIO *PerlIO_importFILE(FILE *, const char *);
#endif
#ifndef PerlIO_exportFILE
-extern FILE *PerlIO_exportFILE(PerlIO *, int);
+extern FILE *PerlIO_exportFILE(PerlIO *, const char *);
#endif
#ifndef PerlIO_findFILE
extern FILE *PerlIO_findFILE(PerlIO *);
#endif
#ifndef PerlIO_printf
extern int PerlIO_printf(PerlIO *, const char *, ...)
- __attribute__ ((__format__(__printf__, 2, 3)));
+ __attribute__format__(__printf__, 2, 3);
#endif
#ifndef PerlIO_sprintf
extern int PerlIO_sprintf(char *, int, const char *, ...)
- __attribute__ ((__format__(__printf__, 3, 4)));
+ __attribute__format__(__printf__, 3, 4);
#endif
#ifndef PerlIO_vprintf
extern int PerlIO_vprintf(PerlIO *, const char *, va_list);
extern int PerlIO_setpos(PerlIO *, SV *);
#endif
#ifndef PerlIO_fdupopen
-extern PerlIO *PerlIO_fdupopen(pTHX_ PerlIO *, CLONE_PARAMS *);
+extern PerlIO *PerlIO_fdupopen(pTHX_ PerlIO *, CLONE_PARAMS *, int);
#endif
#if !defined(PerlIO_modestr) && !defined(PERLIO_IS_STDIO)
extern char *PerlIO_modestr(PerlIO *, char *buf);