/*
Interface for perl to IO functions.
There is a hierarchy of Configure determined #define controls:
- USE_STDIO - forces PerlIO_xxx() to be #define-d onto stdio functions.
- This is used for conservative
- builds - "just like perl5.00X used to be".
- This dominates over the others.
+ USE_STDIO - No longer available via Configure. Formerly forced
+ PerlIO_xxx() to be #define-d onto stdio functions.
+ Now generates compile-time error.
USE_PERLIO - The primary Configure variable that enables PerlIO.
- If USE_PERLIO is _NOT_ set
- then USE_STDIO above will be set to be conservative.
PerlIO_xxx() are real functions
defined in perlio.c which implement extra functionality
required for utf8 support.
- One further note - the table-of-functions scheme controlled
- by PERL_IMPLICIT_SYS turns on USE_PERLIO so that iperlsys.h can
- #define PerlIO_xxx() to go via the function table, without having
- to #undef them from (say) stdio forms.
-
*/
-#if defined(PERL_IMPLICIT_SYS)
-#ifndef USE_PERLIO
-#ifndef NETWARE
-/* # define USE_PERLIO */
-#endif
-#endif
-#endif
-
#ifndef USE_PERLIO
# define USE_STDIO
#endif
#ifdef USE_STDIO
-# ifndef PERLIO_IS_STDIO
-# define PERLIO_IS_STDIO
-# endif
+# error "stdio is no longer supported as the default base layer -- use perlio."
#endif
/* -------------------- End of Configure controls ---------------------------- */
#undef O_BINARY
#endif
-#ifdef PERLIO_IS_STDIO
-/* #define PerlIO_xxxx() as equivalent stdio function */
-#include "perlsdio.h"
-#endif /* PERLIO_IS_STDIO */
-
#ifndef PerlIO
/* ----------- PerlIO implementation ---------- */
/* PerlIO not #define-d to something else - define the implementation */
/* ----------- End of implementation choices ---------- */
-#ifndef PERLIO_IS_STDIO
-/* Not using stdio _directly_ as PerlIO */
-
/* We now need to determine what happens if source trys to use stdio.
* There are three cases based on PERLIO_NOT_STDIO which XS code
* can set how it wants.
*/
-# ifdef PERL_CORE
+#ifdef PERL_CORE
/* Make a choice for perl core code
- currently this is set to try and catch lingering raw stdio calls.
This is a known issue with some non UNIX ports which still use
"native" stdio features.
*/
-# ifndef PERLIO_NOT_STDIO
-# define PERLIO_NOT_STDIO 1
-# endif
- #else
-# ifndef PERLIO_NOT_STDIO
-# define PERLIO_NOT_STDIO 0
-# endif
+# 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
*/
#include "fakesdio.h"
#endif /* ifndef PERLIO_NOT_STDIO */
-#endif /* PERLIO_IS_STDIO */
/* ----------- fill in things that have not got #define'd ---------- */
#ifndef PerlIO_fdupopen
PERL_CALLCONV PerlIO *PerlIO_fdupopen(pTHX_ PerlIO *, CLONE_PARAMS *, int);
#endif
-#if !defined(PerlIO_modestr) && !defined(PERLIO_IS_STDIO)
+#if !defined(PerlIO_modestr)
PERL_CALLCONV char *PerlIO_modestr(PerlIO *, char *buf);
#endif
#ifndef PerlIO_isutf8
__attribute__format__(__printf__, 1, 2);
typedef struct PerlIO_list_s PerlIO_list_t;
-
#endif
END_EXTERN_C
*
*/
-#ifdef PERLIO_IS_STDIO
-
-#ifdef NETWARE
- #include "nwstdio.h"
-#else
-
-/*
- * This file #define-s the PerlIO_xxx abstraction onto stdio functions.
- * Make this as close to original stdio as possible.
- */
-#define PerlIO FILE
-#define PerlIO_stderr() PerlSIO_stderr
-#define PerlIO_stdout() PerlSIO_stdout
-#define PerlIO_stdin() PerlSIO_stdin
-
-#define PerlIO_isutf8(f) 0
-
-#define PerlIO_printf PerlSIO_printf
-#define PerlIO_stdoutf PerlSIO_stdoutf
-#define PerlIO_vprintf(f,fmt,a) PerlSIO_vprintf(f,fmt,a)
-#define PerlIO_write(f,buf,count) PerlSIO_fwrite(buf,1,count,f)
-#define PerlIO_unread(f,buf,count) (-1)
-#define PerlIO_open PerlSIO_fopen
-#define PerlIO_fdopen PerlSIO_fdopen
-#define PerlIO_reopen PerlSIO_freopen
-#define PerlIO_close(f) PerlSIO_fclose(f)
-#define PerlIO_puts(f,s) PerlSIO_fputs(s,f)
-#define PerlIO_putc(f,c) PerlSIO_fputc(c,f)
-#if defined(__VMS)
- /* Unusual definition of ungetc() here to accommodate fast_sv_gets()'
- * belief that it can mix getc/ungetc with reads from stdio buffer */
-START_EXTERN_C
- int decc$ungetc(int __c, FILE *__stream);
-END_EXTERN_C
-# define PerlIO_ungetc(f,c) ((c) == EOF ? EOF : \
- ((*(f) && !((*(f))->_flag & _IONBF) && \
- ((*(f))->_ptr > (*(f))->_base)) ? \
- ((*(f))->_cnt++, *(--(*(f))->_ptr) = (c)) : decc$ungetc(c,f)))
-#else
-# define PerlIO_ungetc(f,c) PerlSIO_ungetc(c,f)
-#endif
-#define PerlIO_getc(f) PerlSIO_fgetc(f)
-#define PerlIO_read(f,buf,count) (SSize_t)PerlSIO_fread(buf,1,count,f)
-#define PerlIO_tell(f) PerlSIO_ftell(f)
-#define PerlIO_eof(f) PerlSIO_feof(f)
-#define PerlIO_getname(f,b) fgetname(f,b)
-#define PerlIO_error(f) PerlSIO_ferror(f)
-#define PerlIO_fileno(f) PerlSIO_fileno(f)
-#define PerlIO_clearerr(f) PerlSIO_clearerr(f)
-#define PerlIO_flush(f) PerlSIO_fflush(f)
-#define PerlIO_seek(f,o,w) PerlSIO_fseek(f,o,w)
-
-#define PerlIO_rewind(f) PerlSIO_rewind(f)
-#define PerlIO_tmpfile() PerlSIO_tmpfile()
-
-#define PerlIO_importFILE(f,fl) (f)
-#define PerlIO_exportFILE(f,fl) (f)
-#define PerlIO_findFILE(f) (f)
-#define PerlIO_releaseFILE(p,f) ((void) 0)
-
-#ifdef HAS_SETLINEBUF
-#define PerlIO_setlinebuf(f) PerlSIO_setlinebuf(f);
-#else
-#define PerlIO_setlinebuf(f) PerlSIO_setvbuf(f, NULL, _IOLBF, 0);
-#endif
-
-/* Now our interface to Configure's FILE_xxx macros */
-
-#ifdef USE_STDIO_PTR
-#define PerlIO_has_cntptr(f) 1
-#define PerlIO_get_ptr(f) PerlSIO_get_ptr(f)
-#define PerlIO_get_cnt(f) PerlSIO_get_cnt(f)
-
-#ifdef STDIO_CNT_LVALUE
-#define PerlIO_canset_cnt(f) 1
-#define PerlIO_set_cnt(f,c) PerlSIO_set_cnt(f,c)
-#ifdef STDIO_PTR_LVALUE
-#ifdef STDIO_PTR_LVAL_NOCHANGE_CNT
-#define PerlIO_fast_gets(f) 1
-#endif
-#endif /* STDIO_PTR_LVALUE */
-#else /* STDIO_CNT_LVALUE */
-#define PerlIO_canset_cnt(f) 0
-#define PerlIO_set_cnt(f,c) abort()
-#endif
-
-#ifdef STDIO_PTR_LVALUE
-#ifdef STDIO_PTR_LVAL_NOCHANGE_CNT
-#define PerlIO_set_ptrcnt(f,p,c) STMT_START {PerlSIO_set_ptr(f,p), PerlIO_set_cnt(f,c);} STMT_END
-#else
-#ifdef STDIO_PTR_LVAL_SETS_CNT
-/* assert() may pre-process to ""; potential syntax error (FILE_ptr(), ) */
-#define PerlIO_set_ptrcnt(f,p,c) STMT_START {PerlSIO_set_ptr(f,p); assert(PerlSIO_get_cnt(f) == (c));} STMT_END
-#define PerlIO_fast_gets(f) 1
-#else
-#define PerlIO_set_ptrcnt(f,p,c) abort()
-#endif
-#endif
-#endif
-
-#else /* USE_STDIO_PTR */
-
-#define PerlIO_has_cntptr(f) 0
-#define PerlIO_canset_cnt(f) 0
-#define PerlIO_get_cnt(f) (abort(),0)
-#define PerlIO_get_ptr(f) (abort(),(void *)0)
-#define PerlIO_set_cnt(f,c) abort()
-#define PerlIO_set_ptrcnt(f,p,c) abort()
-
-#endif /* USE_STDIO_PTR */
-
-#ifndef PerlIO_fast_gets
-#define PerlIO_fast_gets(f) 0
-#endif
+/* Shouldn't be possible to get here, but if we did ... */
+#ifdef PERLIO_IS_STDIO
-#ifdef FILE_base
-#define PerlIO_has_base(f) 1
-#define PerlIO_get_base(f) PerlSIO_get_base(f)
-#define PerlIO_get_bufsiz(f) PerlSIO_get_bufsiz(f)
-#else
-#define PerlIO_has_base(f) 0
-#define PerlIO_get_base(f) (abort(),(void *)0)
-#define PerlIO_get_bufsiz(f) (abort(),0)
-#endif
+# error "stdio is no longer supported as the default base layer -- use perlio."
-#endif /* NETWARE */
#endif /* PERLIO_IS_STDIO */
/*