diff options
-rw-r--r-- | perlio.c | 24 | ||||
-rw-r--r-- | perlio.h | 54 | ||||
-rw-r--r-- | perlsdio.h | 127 | ||||
-rw-r--r-- | pp_ctl.c | 4 | ||||
-rw-r--r-- | sv.c | 10 |
5 files changed, 16 insertions, 203 deletions
@@ -338,29 +338,6 @@ Perl_boot_core_PerlIO(pTHX) #endif -#ifdef PERLIO_IS_STDIO - -void -PerlIO_init(pTHX) -{ - PERL_UNUSED_CONTEXT; - /* - * Does nothing (yet) except force this file to be included in perl - * binary. That allows this file to force inclusion of other functions - * that may be required by loadable extensions e.g. for - * FileHandle::tmpfile - */ -} - -#undef PerlIO_tmpfile -PerlIO * -PerlIO_tmpfile(void) -{ - return tmpfile(); -} - -#else /* PERLIO_IS_STDIO */ - /*======================================================================================*/ /* * Implement all the PerlIO interface ourselves. @@ -5093,7 +5070,6 @@ Perl_PerlIO_restore_errno(pTHX_ PerlIO *f) #undef HAS_FSETPOS #undef HAS_FGETPOS -#endif /* PERLIO_IS_STDIO */ /*======================================================================================*/ /* @@ -13,41 +13,23 @@ /* 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 ---------------------------- */ @@ -71,11 +53,6 @@ #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 */ @@ -111,27 +88,24 @@ PERL_CALLCONV void PerlIO_clone(pTHX_ PerlInterpreter *proto, /* ----------- 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 @@ -154,7 +128,6 @@ PERL_CALLCONV void PerlIO_clone(pTHX_ PerlInterpreter *proto, */ #include "fakesdio.h" #endif /* ifndef PERLIO_NOT_STDIO */ -#endif /* PERLIO_IS_STDIO */ /* ----------- fill in things that have not got #define'd ---------- */ @@ -331,7 +304,7 @@ PERL_CALLCONV int PerlIO_setpos(PerlIO *, SV *); #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 @@ -360,7 +333,6 @@ PERL_CALLCONV void PerlIO_debug(const char *fmt, ...) __attribute__format__(__printf__, 1, 2); typedef struct PerlIO_list_s PerlIO_list_t; - #endif END_EXTERN_C diff --git a/perlsdio.h b/perlsdio.h index 351836128c..2d6b22ebbf 100644 --- a/perlsdio.h +++ b/perlsdio.h @@ -8,133 +8,12 @@ * */ -#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 */ /* @@ -3517,11 +3517,7 @@ S_check_type_and_open(pTHX_ SV *name) } #endif -#if !defined(PERLIO_IS_STDIO) retio = PerlIO_openn(aTHX_ ":", PERL_SCRIPT_MODE, -1, 0, 0, NULL, 1, &name); -#else - retio = PerlIO_open(p, PERL_SCRIPT_MODE); -#endif #ifdef WIN32 /* EACCES stops the INC search early in pp_require to implement feature RT #113422 */ @@ -8245,16 +8245,6 @@ Perl_sv_gets(pTHX_ SV *const sv, PerlIO *const fp, I32 append) amount left, otherwise this is the amount it can hold. */ -#if defined(__VMS) && defined(PERLIO_IS_STDIO) - /* An ungetc()d char is handled separately from the regular - * buffer, so we getc() it back out and stuff it in the buffer. - */ - i = PerlIO_getc(fp); - if (i == EOF) return 0; - *(--((*fp)->_ptr)) = (unsigned char) i; - (*fp)->_cnt++; -#endif - /* Here is some breathtakingly efficient cheating */ /* When you read the following logic resist the urge to think |