Lines Matching refs:f
67 #define Perl_PerlIO_or_Base(f, callback, base, failure, args) \ argument
68 if (PerlIOValid(f)) { \
69 const PerlIO_funcs * const tab = PerlIOBase(f)->tab;\
80 #define Perl_PerlIO_or_fail(f, callback, failure, args) \ argument
81 if (PerlIOValid(f)) { \
82 const PerlIO_funcs * const tab = PerlIOBase(f)->tab;\
92 #define Perl_PerlIO_or_Base_void(f, callback, base, args) \ argument
93 if (PerlIOValid(f)) { \
94 const PerlIO_funcs * const tab = PerlIOBase(f)->tab;\
104 #define Perl_PerlIO_or_fail_void(f, callback, args) \ argument
105 if (PerlIOValid(f)) { \
106 const PerlIO_funcs * const tab = PerlIOBase(f)->tab;\
226 PerlIO_apply_layers(pTHX_ PerlIO *f, const char *mode, const char *names) argument
261 PerlIO_fdupopen(pTHX_ PerlIO *f, CLONE_PARAMS *param, int flags) argument
267 return PerlSIO_fdupopen(f);
270 return win32_fdupopen(f);
272 if (f) {
273 const int fd = PerlLIO_dup(PerlIO_fileno(f));
278 omode = djgpp_get_stream_mode(f);
425 FILE * const f = fdopen(fd, "r+"); local
427 if (!f && errno == EINVAL)
428 f = fdopen(fd, "w");
429 if (!f && errno == EINVAL)
430 f = fdopen(fd, "r");
431 return f;
514 PerlIO *f; local
516 while ((f = *last)) {
518 last = (PerlIO **) (f);
520 if (!*++f) {
521 return f;
525 Newxz(f,PERLIO_TABLE_SIZE,PerlIO);
526 if (!f) {
529 *last = f;
530 return f + 1;
535 PerlIO_fdupopen(pTHX_ PerlIO *f, CLONE_PARAMS *param, int flags) argument
537 if (PerlIOValid(f)) {
538 const PerlIO_funcs * const tab = PerlIOBase(f)->tab;
539 PerlIO_debug("fdupopen f=%p param=%p\n",(void*)f,(void*)param);
541 return (*tab->Dup)(aTHX_ PerlIO_allocate(aTHX), f, param, flags);
543 return PerlIOBase_dup(aTHX_ PerlIO_allocate(aTHX), f, param, flags);
560 PerlIO *f = table + i; local
561 if (*f) {
562 PerlIO_close(f);
638 PerlIO *f; local
644 while ((f = *table)) {
646 table = (PerlIO **) (f++);
648 if (*f) {
649 (void) fp_dup(f, 0, param);
651 f++;
664 PerlIO *f; local
668 while ((f = *table)) {
670 table = (PerlIO **) (f++);
672 PerlIO *x = f;
684 f++;
690 PerlIO_pop(pTHX_ PerlIO *f) argument
692 PerlIOl *l = *f;
694 PerlIO_debug("PerlIO_pop f=%p %s\n", (void*)f, l->tab->name);
701 if ((*l->tab->Popped) (aTHX_ f) != 0)
704 *f = l->next;
716 PerlIO_get_layers(pTHX_ PerlIO *f) argument
720 if (PerlIOValid(f)) {
721 PerlIOl *l = PerlIOBase(f);
750 PerlIO_funcs * const f = PL_known_layers->array[i].funcs; local
751 if (memEQ(f->name, name, len) && f->name[len] == 0) {
752 PerlIO_debug("%.*s => %p\n", (int) len, name, (void*)f);
753 return f;
1039 PerlIOPop_pushed(pTHX_ PerlIO *f, const char *mode, SV *arg, PerlIO_funcs *tab) argument
1044 if (PerlIOValid(f)) {
1045 PerlIO_flush(f);
1046 PerlIO_pop(aTHX_ f);
1158 PerlIO_push(pTHX_ PerlIO *f, PERLIO_FUNCS_DECL(*tab), const char *mode, SV *arg) argument
1171 if (l && f) {
1173 l->next = *f;
1175 *f = l;
1176 PerlIO_debug("PerlIO_push f=%p %s %s %p\n", (void*)f, tab->name,
1179 (*l->tab->Pushed) (aTHX_ f, mode, arg, (PerlIO_funcs*) tab) != 0) {
1180 PerlIO_pop(aTHX_ f);
1185 else if (f) {
1187 PerlIO_debug("PerlIO_push f=%p %s %s %p\n", (void*)f, tab->name,
1190 (*tab->Pushed) (aTHX_ f, mode, arg, (PerlIO_funcs*) tab) != 0) {
1194 return f;
1198 PerlIOBase_binmode(pTHX_ PerlIO *f) argument
1200 if (PerlIOValid(f)) {
1202 if (PerlIOBase(f)->tab->kind & PERLIO_K_RAW) {
1204 PerlIOBase(f)->flags &= ~PERLIO_F_UTF8;
1208 PerlIO_pop(aTHX_ f);
1216 PerlIORaw_pushed(pTHX_ PerlIO *f, const char *mode, SV *arg, PerlIO_funcs *tab) argument
1222 if (PerlIOValid(f)) {
1225 PerlIO_flush(f);
1229 t = f;
1233 if ((*l->tab->Binmode)(aTHX_ f) == 0) {
1248 if (PerlIOValid(f)) {
1249 PerlIO_debug(":raw f=%p :%s\n", (void*)f, PerlIOBase(f)->tab->name);
1257 PerlIO_apply_layera(pTHX_ PerlIO *f, const char *mode, argument
1264 if (!PerlIO_push(aTHX_ f, tab, mode, PerlIOArg)) {
1275 PerlIO_apply_layers(pTHX_ PerlIO *f, const char *mode, const char *names) argument
1278 if (f && names) {
1282 code = PerlIO_apply_layera(aTHX_ f, mode, layers, 0, layers->cur);
1296 PerlIO_binmode(pTHX_ PerlIO *f, int iotype, int mode, const char *names) argument
1298 PerlIO_debug("PerlIO_binmode f=%p %s %c %x %s\n", (void*)f,
1299 (PerlIOBase(f)) ? PerlIOBase(f)->tab->name : "(Null)",
1308 return PerlIO_apply_layers(aTHX_ f, NULL, names) == 0 ? TRUE : FALSE;
1322 while (*f) {
1326 if (PerlIOBase(f)->tab->kind & PERLIO_K_CANCRLF) {
1327 if (!(PerlIOBase(f)->flags & PERLIO_F_CRLF)) {
1329 PerlIO_flush(f);
1330 PerlIOBase(f)->flags |= PERLIO_F_CRLF;
1335 f = PerlIONext(f);
1347 return PerlIO_push(aTHX_ f, PERLIO_FUNCS_CAST(&PerlIO_raw), Nullch, Nullsv) ? TRUE : FALSE;
1352 PerlIO__close(pTHX_ PerlIO *f) argument
1354 if (PerlIOValid(f)) {
1355 PerlIO_funcs * const tab = PerlIOBase(f)->tab;
1357 return (*tab->Close)(aTHX_ f);
1359 return PerlIOBase_close(aTHX_ f);
1368 Perl_PerlIO_close(pTHX_ PerlIO *f) argument
1370 const int code = PerlIO__close(aTHX_ f);
1371 while (PerlIOValid(f)) {
1372 PerlIO_pop(aTHX_ f);
1378 Perl_PerlIO_fileno(pTHX_ PerlIO *f) argument
1380 Perl_PerlIO_or_Base(f, Fileno, fileno, -1, (aTHX_ f));
1494 int imode, int perm, PerlIO *f, int narg, SV **args) argument
1496 if (!f && narg == 1 && *args == &PL_sv_undef) {
1497 if ((f = PerlIO_tmpfile())) {
1501 PerlIO_apply_layers(aTHX_ f, mode, layers);
1508 if (PerlIOValid(f)) {
1513 PerlIOl *l = *f;
1550 imode, perm, (void*)f, narg, (void*)args);
1552 f = (*tab->Open) (aTHX_ tab, layera, n, mode, fd, imode, perm,
1553 f, narg, args);
1556 f = NULL;
1558 if (f) {
1564 if (PerlIO_apply_layera(aTHX_ f, mode, layera, n + 1, layera->cur) != 0) {
1566 PerlIO_close(f);
1567 f = NULL;
1574 return f;
1579 Perl_PerlIO_read(pTHX_ PerlIO *f, void *vbuf, Size_t count) argument
1581 Perl_PerlIO_or_Base(f, Read, read, -1, (aTHX_ f, vbuf, count));
1585 Perl_PerlIO_unread(pTHX_ PerlIO *f, const void *vbuf, Size_t count) argument
1587 Perl_PerlIO_or_Base(f, Unread, unread, -1, (aTHX_ f, vbuf, count));
1591 Perl_PerlIO_write(pTHX_ PerlIO *f, const void *vbuf, Size_t count) argument
1593 Perl_PerlIO_or_fail(f, Write, -1, (aTHX_ f, vbuf, count));
1597 Perl_PerlIO_seek(pTHX_ PerlIO *f, Off_t offset, int whence) argument
1599 Perl_PerlIO_or_fail(f, Seek, -1, (aTHX_ f, offset, whence));
1603 Perl_PerlIO_tell(pTHX_ PerlIO *f) argument
1605 Perl_PerlIO_or_fail(f, Tell, -1, (aTHX_ f));
1609 Perl_PerlIO_flush(pTHX_ PerlIO *f) argument
1611 if (f) {
1612 if (*f) {
1613 const PerlIO_funcs *tab = PerlIOBase(f)->tab;
1616 return (*tab->Flush) (aTHX_ f);
1621 PerlIO_debug("Cannot flush f=%p\n", (void*)f);
1636 while ((f = *table)) {
1638 table = (PerlIO **) (f++);
1640 if (*f && PerlIO_flush(f) != 0)
1642 f++;
1653 PerlIO *f; local
1654 while ((f = *table)) {
1656 table = (PerlIO **) (f++);
1658 if (*f
1659 && (PerlIOBase(f)->
1662 PerlIO_flush(f);
1663 f++;
1669 Perl_PerlIO_fill(pTHX_ PerlIO *f) argument
1671 Perl_PerlIO_or_fail(f, Fill, -1, (aTHX_ f));
1675 PerlIO_isutf8(PerlIO *f) argument
1677 if (PerlIOValid(f))
1678 return (PerlIOBase(f)->flags & PERLIO_F_UTF8) != 0;
1686 Perl_PerlIO_eof(pTHX_ PerlIO *f) argument
1688 Perl_PerlIO_or_Base(f, Eof, eof, -1, (aTHX_ f));
1692 Perl_PerlIO_error(pTHX_ PerlIO *f) argument
1694 Perl_PerlIO_or_Base(f, Error, error, -1, (aTHX_ f));
1698 Perl_PerlIO_clearerr(pTHX_ PerlIO *f) argument
1700 Perl_PerlIO_or_Base_void(f, Clearerr, clearerr, (aTHX_ f));
1704 Perl_PerlIO_setlinebuf(pTHX_ PerlIO *f) argument
1706 Perl_PerlIO_or_Base_void(f, Setlinebuf, setlinebuf, (aTHX_ f));
1710 PerlIO_has_base(PerlIO *f) argument
1712 if (PerlIOValid(f)) {
1713 const PerlIO_funcs * const tab = PerlIOBase(f)->tab;
1726 PerlIO_fast_gets(PerlIO *f) argument
1728 if (PerlIOValid(f) && (PerlIOBase(f)->flags & PERLIO_F_FASTGETS)) {
1729 const PerlIO_funcs * const tab = PerlIOBase(f)->tab;
1742 PerlIO_has_cntptr(PerlIO *f) argument
1744 if (PerlIOValid(f)) {
1745 const PerlIO_funcs * const tab = PerlIOBase(f)->tab;
1758 PerlIO_canset_cnt(PerlIO *f) argument
1760 if (PerlIOValid(f)) {
1761 const PerlIO_funcs * const tab = PerlIOBase(f)->tab;
1774 Perl_PerlIO_get_base(pTHX_ PerlIO *f) argument
1776 Perl_PerlIO_or_fail(f, Get_base, NULL, (aTHX_ f));
1780 Perl_PerlIO_get_bufsiz(pTHX_ PerlIO *f) argument
1782 Perl_PerlIO_or_fail(f, Get_bufsiz, -1, (aTHX_ f));
1786 Perl_PerlIO_get_ptr(pTHX_ PerlIO *f) argument
1788 Perl_PerlIO_or_fail(f, Get_ptr, NULL, (aTHX_ f));
1792 Perl_PerlIO_get_cnt(pTHX_ PerlIO *f) argument
1794 Perl_PerlIO_or_fail(f, Get_cnt, -1, (aTHX_ f));
1798 Perl_PerlIO_set_cnt(pTHX_ PerlIO *f, int cnt) argument
1800 Perl_PerlIO_or_fail_void(f, Set_ptrcnt, (aTHX_ f, NULL, cnt));
1804 Perl_PerlIO_set_ptrcnt(pTHX_ PerlIO *f, STDCHAR * ptr, int cnt) argument
1806 Perl_PerlIO_or_fail_void(f, Set_ptrcnt, (aTHX_ f, ptr, cnt));
1816 PerlIOUtf8_pushed(pTHX_ PerlIO *f, const char *mode, SV *arg, PerlIO_funcs *tab) argument
1820 if (PerlIOValid(f)) {
1822 PerlIOBase(f)->flags |= PERLIO_F_UTF8;
1824 PerlIOBase(f)->flags &= ~PERLIO_F_UTF8;
1943 PerlIOBase_fileno(pTHX_ PerlIO *f) argument
1945 return PerlIOValid(f) ? PerlIO_fileno(PerlIONext(f)) : -1;
1949 PerlIO_modestr(PerlIO * f, char *buf) argument
1952 if (PerlIOValid(f)) {
1953 const IV flags = PerlIOBase(f)->flags;
1982 PerlIOBase_pushed(pTHX_ PerlIO *f, const char *mode, SV *arg, PerlIO_funcs *tab) argument
1984 PerlIOl * const l = PerlIOBase(f);
2034 f, PerlIOBase(f)->tab->name, (omode) ? omode : "(Null)",
2035 l->flags, PerlIO_modestr(f, temp));
2041 PerlIOBase_popped(pTHX_ PerlIO *f) argument
2043 PERL_UNUSED_ARG(f);
2048 PerlIOBase_unread(pTHX_ PerlIO *f, const void *vbuf, Size_t count) argument
2053 const Off_t old = PerlIO_tell(f);
2054 PerlIO_push(aTHX_ f, PERLIO_FUNCS_CAST(&PerlIO_pending), "r", Nullsv);
2055 PerlIOSelf(f, PerlIOBuf)->posn = old;
2056 return PerlIOBuf_unread(aTHX_ f, vbuf, count);
2060 PerlIOBase_read(pTHX_ PerlIO *f, void *vbuf, Size_t count) argument
2063 if (f) {
2064 if (!(PerlIOBase(f)->flags & PERLIO_F_CANREAD)) {
2065 PerlIOBase(f)->flags |= PERLIO_F_ERROR;
2072 SSize_t avail = PerlIO_get_cnt(f);
2077 STDCHAR *ptr = PerlIO_get_ptr(f);
2079 PerlIO_set_ptrcnt(f, ptr + take, (avail -= take));
2086 if (PerlIO_fill(f) != 0)
2097 PerlIOBase_noop_ok(pTHX_ PerlIO *f) argument
2099 PERL_UNUSED_ARG(f);
2104 PerlIOBase_noop_fail(pTHX_ PerlIO *f) argument
2106 PERL_UNUSED_ARG(f);
2111 PerlIOBase_close(pTHX_ PerlIO *f) argument
2114 if (PerlIOValid(f)) {
2115 PerlIO *n = PerlIONext(f);
2116 code = PerlIO_flush(f);
2117 PerlIOBase(f)->flags &=
2140 PerlIOBase_eof(pTHX_ PerlIO *f) argument
2142 if (PerlIOValid(f)) {
2143 return (PerlIOBase(f)->flags & PERLIO_F_EOF) != 0;
2149 PerlIOBase_error(pTHX_ PerlIO *f) argument
2151 if (PerlIOValid(f)) {
2152 return (PerlIOBase(f)->flags & PERLIO_F_ERROR) != 0;
2158 PerlIOBase_clearerr(pTHX_ PerlIO *f) argument
2160 if (PerlIOValid(f)) {
2161 PerlIO *n = PerlIONext(f);
2162 PerlIOBase(f)->flags &= ~(PERLIO_F_ERROR | PERLIO_F_EOF);
2169 PerlIOBase_setlinebuf(pTHX_ PerlIO *f) argument
2171 if (PerlIOValid(f)) {
2172 PerlIOBase(f)->flags |= PERLIO_F_LINEBUF;
2195 PerlIOBase_dup(pTHX_ PerlIO *f, PerlIO *o, CLONE_PARAMS *param, int flags) argument
2201 f = (*tab->Dup)(aTHX_ f, nexto, param, flags);
2203 f = PerlIOBase_dup(aTHX_ f, nexto, param, flags);
2205 if (f) {
2210 self->name, (void*)f, (void*)o, (void*)param);
2216 f = PerlIO_push(aTHX_ f, self, PerlIO_modestr(o,buf), arg);
2221 return f;
2367 PerlIOUnix_fileno(pTHX_ PerlIO *f) argument
2369 return PerlIOSelf(f, PerlIOUnix)->fd;
2373 PerlIOUnix_setfd(pTHX_ PerlIO *f, int fd, int imode) argument
2375 PerlIOUnix * const s = PerlIOSelf(f, PerlIOUnix);
2381 PerlIOBase(f)->flags |= PERLIO_F_NOTREG;
2394 PerlIOUnix_pushed(pTHX_ PerlIO *f, const char *mode, SV *arg, PerlIO_funcs *tab) argument
2396 IV code = PerlIOBase_pushed(aTHX_ f, mode, arg, tab);
2397 if (*PerlIONext(f)) {
2399 PerlIO_flush(PerlIONext(f));
2405 PerlIOUnix_setfd(aTHX_ f, PerlIO_fileno(PerlIONext(f)),
2408 PerlIOBase(f)->flags |= PERLIO_F_OPEN;
2414 PerlIOUnix_seek(pTHX_ PerlIO *f, Off_t offset, int whence) argument
2416 const int fd = PerlIOSelf(f, PerlIOUnix)->fd;
2418 if (PerlIOBase(f)->flags & PERLIO_F_NOTREG) {
2431 PerlIOBase(f)->flags &= ~PERLIO_F_EOF;
2438 int perm, PerlIO *f, int narg, SV **args) argument
2440 if (PerlIOValid(f)) {
2441 if (PerlIOBase(f)->flags & PERLIO_F_OPEN)
2442 (*PerlIOBase(f)->tab->Close)(aTHX_ f);
2459 if (!f) {
2460 f = PerlIO_allocate(aTHX);
2462 if (!PerlIOValid(f)) {
2463 if (!(f = PerlIO_push(aTHX_ f, self, mode, PerlIOArg))) {
2467 PerlIOUnix_setfd(aTHX_ f, fd, imode);
2468 PerlIOBase(f)->flags |= PERLIO_F_OPEN;
2470 PerlIOUnix_seek(aTHX_ f, 0, SEEK_END);
2471 return f;
2474 if (f) {
2484 PerlIOUnix_dup(pTHX_ PerlIO *f, PerlIO *o, CLONE_PARAMS *param, int flags) argument
2492 f = PerlIOBase_dup(aTHX_ f, o, param, flags);
2493 if (f) {
2495 PerlIOUnix_setfd(aTHX_ f, fd, os->oflags);
2496 return f;
2504 PerlIOUnix_read(pTHX_ PerlIO *f, void *vbuf, Size_t count) argument
2506 const int fd = PerlIOSelf(f, PerlIOUnix)->fd;
2511 if (!(PerlIOBase(f)->flags & PERLIO_F_CANREAD) ||
2512 PerlIOBase(f)->flags & (PERLIO_F_EOF|PERLIO_F_ERROR)) {
2520 PerlIOBase(f)->flags |= PERLIO_F_ERROR;
2524 PerlIOBase(f)->flags |= PERLIO_F_EOF;
2535 PerlIOUnix_write(pTHX_ PerlIO *f, const void *vbuf, Size_t count) argument
2537 const int fd = PerlIOSelf(f, PerlIOUnix)->fd;
2547 PerlIOBase(f)->flags |= PERLIO_F_ERROR;
2558 PerlIOUnix_tell(pTHX_ PerlIO *f) argument
2560 return PerlLIO_lseek(PerlIOSelf(f, PerlIOUnix)->fd, 0, SEEK_CUR);
2565 PerlIOUnix_close(pTHX_ PerlIO *f) argument
2567 const int fd = PerlIOSelf(f, PerlIOUnix)->fd;
2569 if (PerlIOBase(f)->flags & PERLIO_F_OPEN) {
2571 PerlIOBase(f)->flags &= ~PERLIO_F_OPEN;
2587 PerlIOBase(f)->flags &= ~PERLIO_F_OPEN;
2642 PerlIOStdio_fileno(pTHX_ PerlIO *f) argument
2645 if (PerlIOValid(f) && (s = PerlIOSelf(f, PerlIOStdio)->stdio)) {
2669 PerlIOStdio_pushed(pTHX_ PerlIO *f, const char *mode, SV *arg, PerlIO_funcs *tab) argument
2672 if (PerlIOValid(f) && PerlIOValid(n = PerlIONext(f))) {
2676 PerlIO_pop(aTHX_ f);
2684 PerlIOSelf(f, PerlIOStdio)->stdio = stdio;
2686 PerlIO_flush(PerlIONext(f));
2693 return PerlIOBase_pushed(aTHX_ f, mode, arg, tab);
2701 PerlIO *f = NULL; local
2723 return f;
2727 …if ((f = PerlIO_push(aTHX_(f = PerlIO_allocate(aTHX)), PERLIO_FUNCS_CAST(&PerlIO_stdio), mode, Nul…
2728 s = PerlIOSelf(f, PerlIOStdio);
2732 return f;
2738 int perm, PerlIO *f, int narg, SV **args) argument
2741 if (PerlIOValid(f)) {
2743 PerlIOStdio *s = PerlIOSelf(f, PerlIOStdio);
2752 return f;
2772 if (!f) {
2773 f = PerlIO_allocate(aTHX);
2777 f = PerlIO_push(aTHX_ f, self, mode, PerlIOArg);
2778 if (f) {
2779 s = PerlIOSelf(f, PerlIOStdio);
2783 return f;
2815 if (!f) {
2816 f = PerlIO_allocate(aTHX);
2818 if ((f = PerlIO_push(aTHX_ f, self, mode, PerlIOArg))) {
2819 PerlIOStdio *s = PerlIOSelf(f, PerlIOStdio);
2823 return f;
2831 PerlIOStdio_dup(pTHX_ PerlIO *f, PerlIO *o, CLONE_PARAMS *param, int flags) argument
2836 if ((f = PerlIOBase_dup(aTHX_ f, o, param, flags))) {
2854 PerlIOSelf(f, PerlIOStdio)->stdio = stdio;
2857 return f;
2861 PerlIOStdio_invalidate_fileno(pTHX_ FILE *f) argument
2868 f->__filedes = -1;
2874 f->_fileno = -1;
2891 f->__pad[4] |= 0xffffffff00000000L;
2892 assert(fileno(f) == 0xffffffff);
2899 f->_file = PerlLIO_dup(fileno(f));
2903 f->__fileH = 0xff;
2904 f->__fileL = 0xff;
2912 f->_file = -1;
2919 f->_file = -1;
2926 f->_file = -1;
2930 f->_handle = -1;
2937 f->_file = -1;
2941 f->fd = PerlLIO_dup(fileno(f));
2947 f->_file = -1;
2957 PERL_UNUSED_ARG(f);
2963 PerlIOStdio_close(pTHX_ PerlIO *f) argument
2965 FILE *stdio = PerlIOSelf(f, PerlIOStdio)->stdio;
3003 return PerlIO_flush(f);
3009 result = PerlIO_flush(f);
3036 PerlIOStdio_read(pTHX_ PerlIO *f, void *vbuf, Size_t count) argument
3038 FILE *s = PerlIOSelf(f, PerlIOStdio)->stdio;
3066 PerlIOStdio_unread(pTHX_ PerlIO *f, const void *vbuf, Size_t count) argument
3069 FILE *s = PerlIOSelf(f, PerlIOStdio)->stdio;
3072 if (PerlIO_fast_gets(f) && PerlIO_has_base(f)) {
3074 STDCHAR *base = PerlIO_get_base(f);
3075 SSize_t cnt = PerlIO_get_cnt(f);
3076 STDCHAR *ptr = PerlIO_get_ptr(f);
3086 PerlIO_set_ptrcnt(f,ptr,cnt+avail);
3093 if (PerlIO_has_cntptr(f)) {
3118 unread += PerlIOBase_unread(aTHX_ f, vbuf, count);
3124 PerlIOStdio_write(pTHX_ PerlIO *f, const void *vbuf, Size_t count) argument
3129 PerlIOSelf(f, PerlIOStdio)->stdio);
3139 PerlIOStdio_seek(pTHX_ PerlIO *f, Off_t offset, int whence) argument
3141 FILE *stdio = PerlIOSelf(f, PerlIOStdio)->stdio;
3146 PerlIOStdio_tell(pTHX_ PerlIO *f) argument
3148 FILE *stdio = PerlIOSelf(f, PerlIOStdio)->stdio;
3153 PerlIOStdio_flush(pTHX_ PerlIO *f) argument
3155 FILE *stdio = PerlIOSelf(f, PerlIOStdio)->stdio;
3156 if (PerlIOBase(f)->flags & PERLIO_F_CANWRITE) {
3179 PerlIOStdio_eof(pTHX_ PerlIO *f) argument
3181 return PerlSIO_feof(PerlIOSelf(f, PerlIOStdio)->stdio);
3185 PerlIOStdio_error(pTHX_ PerlIO *f) argument
3187 return PerlSIO_ferror(PerlIOSelf(f, PerlIOStdio)->stdio);
3191 PerlIOStdio_clearerr(pTHX_ PerlIO *f) argument
3193 PerlSIO_clearerr(PerlIOSelf(f, PerlIOStdio)->stdio);
3197 PerlIOStdio_setlinebuf(pTHX_ PerlIO *f) argument
3200 PerlSIO_setlinebuf(PerlIOSelf(f, PerlIOStdio)->stdio);
3202 PerlSIO_setvbuf(PerlIOSelf(f, PerlIOStdio)->stdio, Nullch, _IOLBF, 0);
3208 PerlIOStdio_get_base(pTHX_ PerlIO *f) argument
3210 FILE *stdio = PerlIOSelf(f, PerlIOStdio)->stdio;
3215 PerlIOStdio_get_bufsiz(pTHX_ PerlIO *f) argument
3217 FILE *stdio = PerlIOSelf(f, PerlIOStdio)->stdio;
3224 PerlIOStdio_get_ptr(pTHX_ PerlIO *f) argument
3226 FILE *stdio = PerlIOSelf(f, PerlIOStdio)->stdio;
3231 PerlIOStdio_get_cnt(pTHX_ PerlIO *f) argument
3233 FILE *stdio = PerlIOSelf(f, PerlIOStdio)->stdio;
3238 PerlIOStdio_set_ptrcnt(pTHX_ PerlIO *f, STDCHAR * ptr, SSize_t cnt) argument
3240 FILE *stdio = PerlIOSelf(f, PerlIOStdio)->stdio;
3279 PerlIOStdio_fill(pTHX_ PerlIO *f) argument
3281 FILE *stdio = PerlIOSelf(f, PerlIOStdio)->stdio;
3286 if ((PerlIOBase(f)->flags & PERLIO_F_CANWRITE)) {
3297 if (PerlIO_fast_gets(f) && PerlIO_has_base(f)) {
3306 PerlIOStdio_set_ptrcnt(aTHX_ f,ptr,cnt+1);
3314 if (PerlIO_has_cntptr(f)) {
3316 if (PerlIOStdio_unread(aTHX_ f,&ch,1) == 1) {
3390 PerlIO_exportFILE(PerlIO * f, const char *mode) argument
3394 if (PerlIOValid(f)) {
3396 PerlIO_flush(f);
3398 mode = PerlIO_modestr(f, buf);
3400 stdio = PerlSIO_fdopen(PerlIO_fileno(f), mode);
3402 PerlIOl *l = *f;
3405 *f = NULL;
3406 if ((f2 = PerlIO_push(aTHX_ f, PERLIO_FUNCS_CAST(&PerlIO_stdio), buf, Nullsv))) {
3407 PerlIOStdio *s = PerlIOSelf((f = f2), PerlIOStdio);
3410 *PerlIONext(f) = l;
3414 *f = l;
3423 PerlIO_findFILE(PerlIO *f) argument
3425 PerlIOl *l = *f;
3434 return PerlIO_exportFILE(f, Nullch);
3439 PerlIO_releaseFILE(PerlIO *p, FILE *f) argument
3445 if (s->stdio == f) {
3462 PerlIOBuf_pushed(pTHX_ PerlIO *f, const char *mode, SV *arg, PerlIO_funcs *tab) argument
3464 PerlIOBuf *b = PerlIOSelf(f, PerlIOBuf);
3465 const int fd = PerlIO_fileno(f);
3467 PerlIOBase(f)->flags |= PERLIO_F_LINEBUF | PERLIO_F_TTY;
3469 if (*PerlIONext(f)) {
3470 const Off_t posn = PerlIO_tell(PerlIONext(f));
3475 return PerlIOBase_pushed(aTHX_ f, mode, arg, tab);
3481 PerlIO *f, int narg, SV **args) argument
3483 if (PerlIOValid(f)) {
3484 PerlIO *next = PerlIONext(f);
3491 if (!next || (*PerlIOBase(f)->tab->Pushed) (aTHX_ f, mode, PerlIOArg, self) != 0) {
3505 f = (*tab->Open)(aTHX_ tab, layers, n - 1, mode, fd, imode, perm,
3506 f, narg, args);
3509 if (f) {
3510 if (PerlIO_push(aTHX_ f, self, mode, PerlIOArg) == 0) {
3514 PerlIO_close (f);
3517 fd = PerlIO_fileno(f);
3522 PerlIOBase(f)->flags |= PERLIO_F_UNBUF;
3527 PerlIO_binmode(aTHX_ f, '<'/*not used*/, O_BINARY, Nullch);
3538 return f;
3550 PerlIOBuf_flush(pTHX_ PerlIO *f) argument
3552 PerlIOBuf *b = PerlIOSelf(f, PerlIOBuf);
3554 PerlIO *n = PerlIONext(f);
3555 if (PerlIOBase(f)->flags & PERLIO_F_WRBUF) {
3567 PerlIOBase(f)->flags |= PERLIO_F_ERROR;
3574 else if (PerlIOBase(f)->flags & PERLIO_F_RDBUF) {
3575 STDCHAR *buf = PerlIO_get_base(f);
3586 b->posn = PerlIO_tell(n = PerlIONext(f));
3599 PerlIOBase(f)->flags &= ~(PERLIO_F_RDBUF | PERLIO_F_WRBUF);
3611 PerlIOBuf_fill(pTHX_ PerlIO *f) argument
3613 PerlIOBuf *b = PerlIOSelf(f, PerlIOBuf);
3614 PerlIO *n = PerlIONext(f);
3620 if (PerlIO_flush(f) != 0) /* XXXX Check that its seek() succeeded?! */
3622 if (PerlIOBase(f)->flags & PERLIO_F_TTY)
3626 PerlIO_get_base(f); /* allocate via vtable */
3631 PerlIOBase(f)->flags |= PERLIO_F_EOF;
3666 PerlIOBase(f)->flags |= PERLIO_F_EOF;
3668 PerlIOBase(f)->flags |= PERLIO_F_ERROR;
3672 PerlIOBase(f)->flags |= PERLIO_F_RDBUF;
3677 PerlIOBuf_read(pTHX_ PerlIO *f, void *vbuf, Size_t count) argument
3679 if (PerlIOValid(f)) {
3680 const PerlIOBuf *b = PerlIOSelf(f, PerlIOBuf);
3682 PerlIO_get_base(f);
3683 return PerlIOBase_read(aTHX_ f, vbuf, count);
3689 PerlIOBuf_unread(pTHX_ PerlIO *f, const void *vbuf, Size_t count) argument
3692 PerlIOBuf *b = PerlIOSelf(f, PerlIOBuf);
3695 if (PerlIOBase(f)->flags & PERLIO_F_WRBUF)
3696 PerlIO_flush(f);
3698 PerlIO_get_base(f);
3700 if (PerlIOBase(f)->flags & PERLIO_F_RDBUF) {
3715 PerlIOBase(f)->flags |= PERLIO_F_RDBUF;
3739 PerlIOBase(f)->flags &= ~PERLIO_F_EOF;
3743 unread += PerlIOBase_unread(aTHX_ f, vbuf, count);
3749 PerlIOBuf_write(pTHX_ PerlIO *f, const void *vbuf, Size_t count) argument
3751 PerlIOBuf * const b = PerlIOSelf(f, PerlIOBuf);
3756 PerlIO_get_base(f);
3757 if (!(PerlIOBase(f)->flags & PERLIO_F_CANWRITE))
3759 if (PerlIOBase(f)->flags & PERLIO_F_RDBUF) {
3760 if (PerlIO_flush(f) != 0) {
3764 if (PerlIOBase(f)->flags & PERLIO_F_LINEBUF) {
3775 PerlIOBase(f)->flags |= PERLIO_F_WRBUF;
3783 PerlIO_flush(f);
3786 PerlIO_flush(f);
3788 if (PerlIOBase(f)->flags & PERLIO_F_UNBUF)
3789 PerlIO_flush(f);
3794 PerlIOBuf_seek(pTHX_ PerlIO *f, Off_t offset, int whence) argument
3797 if ((code = PerlIO_flush(f)) == 0) {
3798 PerlIOBase(f)->flags &= ~PERLIO_F_EOF;
3799 code = PerlIO_seek(PerlIONext(f), offset, whence);
3801 PerlIOBuf *b = PerlIOSelf(f, PerlIOBuf);
3802 b->posn = PerlIO_tell(PerlIONext(f));
3809 PerlIOBuf_tell(pTHX_ PerlIO *f) argument
3811 PerlIOBuf *b = PerlIOSelf(f, PerlIOBuf);
3816 if ((PerlIOBase(f)->flags & PERLIO_F_APPEND) &&
3817 (PerlIOBase(f)->flags & PERLIO_F_WRBUF)) {
3822 PerlIO_flush(f);
3825 PerlIO_seek(PerlIONext(f),0, SEEK_END);
3827 posn = b->posn = PerlIO_tell(PerlIONext(f));
3839 PerlIOBuf_popped(pTHX_ PerlIO *f) argument
3841 const IV code = PerlIOBase_popped(aTHX_ f);
3842 PerlIOBuf * const b = PerlIOSelf(f, PerlIOBuf);
3848 PerlIOBase(f)->flags &= ~(PERLIO_F_RDBUF | PERLIO_F_WRBUF);
3853 PerlIOBuf_close(pTHX_ PerlIO *f) argument
3855 const IV code = PerlIOBase_close(aTHX_ f);
3856 PerlIOBuf * const b = PerlIOSelf(f, PerlIOBuf);
3862 PerlIOBase(f)->flags &= ~(PERLIO_F_RDBUF | PERLIO_F_WRBUF);
3867 PerlIOBuf_get_ptr(pTHX_ PerlIO *f) argument
3869 PerlIOBuf *b = PerlIOSelf(f, PerlIOBuf);
3871 PerlIO_get_base(f);
3876 PerlIOBuf_get_cnt(pTHX_ PerlIO *f) argument
3878 PerlIOBuf *b = PerlIOSelf(f, PerlIOBuf);
3880 PerlIO_get_base(f);
3881 if (PerlIOBase(f)->flags & PERLIO_F_RDBUF)
3887 PerlIOBuf_get_base(pTHX_ PerlIO *f) argument
3889 PerlIOBuf *b = PerlIOSelf(f, PerlIOBuf);
3905 PerlIOBuf_bufsiz(pTHX_ PerlIO *f) argument
3907 PerlIOBuf *b = PerlIOSelf(f, PerlIOBuf);
3909 PerlIO_get_base(f);
3914 PerlIOBuf_set_ptrcnt(pTHX_ PerlIO *f, STDCHAR * ptr, SSize_t cnt) argument
3916 PerlIOBuf *b = PerlIOSelf(f, PerlIOBuf);
3918 PerlIO_get_base(f);
3920 if (PerlIO_get_cnt(f) != cnt || b->ptr < b->buf) {
3921 assert(PerlIO_get_cnt(f) == cnt);
3924 PerlIOBase(f)->flags |= PERLIO_F_RDBUF;
3928 PerlIOBuf_dup(pTHX_ PerlIO *f, PerlIO *o, CLONE_PARAMS *param, int flags) argument
3930 return PerlIOBase_dup(aTHX_ f, o, param, flags);
3972 PerlIOPending_fill(pTHX_ PerlIO *f) argument
3977 PerlIO_flush(f);
3982 PerlIOPending_close(pTHX_ PerlIO *f) argument
3987 PerlIO_flush(f);
3988 return PerlIO_close(f);
3992 PerlIOPending_seek(pTHX_ PerlIO *f, Off_t offset, int whence) argument
3997 PerlIO_flush(f);
3998 return PerlIO_seek(f, offset, whence);
4003 PerlIOPending_flush(pTHX_ PerlIO *f) argument
4005 PerlIOBuf *b = PerlIOSelf(f, PerlIOBuf);
4010 PerlIO_pop(aTHX_ f);
4015 PerlIOPending_set_ptrcnt(pTHX_ PerlIO *f, STDCHAR * ptr, SSize_t cnt) argument
4018 PerlIO_flush(f);
4021 PerlIOBuf_set_ptrcnt(aTHX_ f, ptr, cnt);
4026 PerlIOPending_pushed(pTHX_ PerlIO *f, const char *mode, SV *arg, PerlIO_funcs *tab) argument
4028 const IV code = PerlIOBase_pushed(aTHX_ f, mode, arg, tab);
4029 PerlIOl *l = PerlIOBase(f);
4035 (PerlIOBase(PerlIONext(f))->
4041 PerlIOPending_read(pTHX_ PerlIO *f, void *vbuf, Size_t count) argument
4043 SSize_t avail = PerlIO_get_cnt(f);
4048 got = PerlIOBuf_read(aTHX_ f, vbuf, avail);
4051 PerlIO_read(f, ((STDCHAR *) vbuf) + got, count - got);
4113 PerlIOCrlf_pushed(pTHX_ PerlIO *f, const char *mode, SV *arg, PerlIO_funcs *tab) argument
4116 PerlIOBase(f)->flags |= PERLIO_F_CRLF;
4117 code = PerlIOBuf_pushed(aTHX_ f, mode, arg, tab);
4120 f, PerlIOBase(f)->tab->name, (mode) ? mode : "(Null)",
4121 PerlIOBase(f)->flags);
4128 PerlIO *g = PerlIONext(f);
4134 PerlIO_pop(aTHX_ f);
4145 PerlIOCrlf_unread(pTHX_ PerlIO *f, const void *vbuf, Size_t count) argument
4147 PerlIOCrlf *c = PerlIOSelf(f, PerlIOCrlf);
4152 if (!(PerlIOBase(f)->flags & PERLIO_F_CRLF))
4153 return PerlIOBuf_unread(aTHX_ f, vbuf, count);
4156 PerlIOBuf *b = PerlIOSelf(f, PerlIOBuf);
4158 if (PerlIOBase(f)->flags & PERLIO_F_WRBUF)
4159 PerlIO_flush(f);
4161 PerlIO_get_base(f);
4163 if (!(PerlIOBase(f)->flags & PERLIO_F_RDBUF)) {
4165 PerlIOBase(f)->flags |= PERLIO_F_RDBUF;
4197 PerlIOCrlf_get_cnt(pTHX_ PerlIO *f) argument
4199 PerlIOBuf *b = PerlIOSelf(f, PerlIOBuf);
4201 PerlIO_get_base(f);
4202 if (PerlIOBase(f)->flags & PERLIO_F_RDBUF) {
4203 PerlIOCrlf *c = PerlIOSelf(f, PerlIOCrlf);
4204 if ((PerlIOBase(f)->flags & PERLIO_F_CRLF) && (!c->nl || *c->nl == 0xd)) {
4247 code = PerlIO_fill(f); /* Fetch some more */
4269 PerlIOCrlf_set_ptrcnt(pTHX_ PerlIO *f, STDCHAR * ptr, SSize_t cnt) argument
4271 PerlIOBuf *b = PerlIOSelf(f, PerlIOBuf);
4272 PerlIOCrlf *c = PerlIOSelf(f, PerlIOCrlf);
4274 PerlIO_get_base(f);
4293 IV flags = PerlIOBase(f)->flags;
4319 PerlIOBase(f)->flags |= PERLIO_F_RDBUF;
4323 PerlIOCrlf_write(pTHX_ PerlIO *f, const void *vbuf, Size_t count) argument
4325 if (!(PerlIOBase(f)->flags & PERLIO_F_CRLF))
4326 return PerlIOBuf_write(aTHX_ f, vbuf, count);
4328 PerlIOBuf *b = PerlIOSelf(f, PerlIOBuf);
4332 PerlIO_get_base(f);
4333 if (!(PerlIOBase(f)->flags & PERLIO_F_CANWRITE))
4337 PerlIOBase(f)->flags |= PERLIO_F_WRBUF;
4344 PerlIO_flush(f);
4351 if (PerlIOBase(f)->flags & PERLIO_F_LINEBUF) {
4352 PerlIO_flush(f);
4362 PerlIO_flush(f);
4367 if (PerlIOBase(f)->flags & PERLIO_F_UNBUF)
4368 PerlIO_flush(f);
4374 PerlIOCrlf_flush(pTHX_ PerlIO *f) argument
4376 PerlIOCrlf *c = PerlIOSelf(f, PerlIOCrlf);
4381 return PerlIOBuf_flush(aTHX_ f);
4385 PerlIOCrlf_binmode(pTHX_ PerlIO *f) argument
4387 if ((PerlIOBase(f)->flags & PERLIO_F_CRLF)) {
4389 PerlIOBase(f)->flags &= ~PERLIO_F_CRLF;
4392 if (PerlIOBase(f)->tab == &PerlIO_crlf) {
4393 PerlIO_pop(aTHX_ f);
4447 PerlIOMmap_map(pTHX_ PerlIO *f) argument
4449 PerlIOMmap * const m = PerlIOSelf(f, PerlIOMmap);
4450 const IV flags = PerlIOBase(f)->flags;
4455 PerlIOBuf *b = PerlIOSelf(f, PerlIOBuf);
4456 const int fd = PerlIO_fileno(f);
4505 b->posn = PerlIO_tell(PerlIONext(f));
4517 PerlIOBase(f)->flags =
4529 PerlIOBase(f)->flags =
4541 PerlIOMmap_unmap(pTHX_ PerlIO *f) argument
4543 PerlIOMmap *m = PerlIOSelf(f, PerlIOMmap);
4552 if (PerlIO_seek(PerlIONext(f), b->posn, SEEK_SET) != 0)
4556 PerlIOBase(f)->flags &= ~(PERLIO_F_RDBUF | PERLIO_F_WRBUF);
4562 PerlIOMmap_get_base(pTHX_ PerlIO *f) argument
4564 PerlIOMmap *m = PerlIOSelf(f, PerlIOMmap);
4566 if (b->buf && (PerlIOBase(f)->flags & PERLIO_F_RDBUF)) {
4580 PerlIOMmap_map(aTHX_ f); /* Try and map it */
4591 return PerlIOBuf_get_base(aTHX_ f);
4595 PerlIOMmap_unread(pTHX_ PerlIO *f, const void *vbuf, Size_t count) argument
4597 PerlIOMmap *m = PerlIOSelf(f, PerlIOMmap);
4599 if (PerlIOBase(f)->flags & PERLIO_F_WRBUF)
4600 PerlIO_flush(f);
4604 PerlIOBase(f)->flags &= ~PERLIO_F_EOF;
4611 PerlIO_flush(f);
4618 PerlIOBuf_get_base(aTHX_ f);
4622 return PerlIOBuf_unread(aTHX_ f, vbuf, count);
4626 PerlIOMmap_write(pTHX_ PerlIO *f, const void *vbuf, Size_t count) argument
4628 PerlIOMmap * const m = PerlIOSelf(f, PerlIOMmap);
4631 if (!b->buf || !(PerlIOBase(f)->flags & PERLIO_F_WRBUF)) {
4636 if (PerlIOMmap_unmap(aTHX_ f) != 0)
4645 PerlIOBuf_get_base(aTHX_ f);
4649 return PerlIOBuf_write(aTHX_ f, vbuf, count);
4653 PerlIOMmap_flush(pTHX_ PerlIO *f) argument
4655 PerlIOMmap *m = PerlIOSelf(f, PerlIOMmap);
4657 IV code = PerlIOBuf_flush(aTHX_ f);
4666 if (PerlIOMmap_unmap(aTHX_ f) != 0)
4681 PerlIOMmap_fill(pTHX_ PerlIO *f) argument
4683 PerlIOBuf *b = PerlIOSelf(f, PerlIOBuf);
4684 IV code = PerlIO_flush(f);
4686 code = PerlIOMmap_map(aTHX_ f);
4688 if (code == 0 && !(PerlIOBase(f)->flags & PERLIO_F_RDBUF)) {
4689 code = PerlIOBuf_fill(aTHX_ f);
4695 PerlIOMmap_close(pTHX_ PerlIO *f) argument
4697 PerlIOMmap *m = PerlIOSelf(f, PerlIOMmap);
4699 IV code = PerlIO_flush(f);
4705 if (PerlIOBuf_close(aTHX_ f) != 0)
4711 PerlIOMmap_dup(pTHX_ PerlIO *f, PerlIO *o, CLONE_PARAMS *param, int flags) argument
4713 return PerlIOBase_dup(aTHX_ f, o, param, flags);
4780 PerlIO_getname(PerlIO *f, char *buf) argument
4786 FILE *stdio = PerlIOSelf(f, PerlIOStdio)->stdio;
4788 stdio = PerlIO_exportFILE(f,0);
4793 if (exported) PerlIO_releaseFILE(f,stdio);
4797 PERL_UNUSED_ARG(f);
4830 PerlIO_reopen(const char *path, const char *mode, PerlIO *f) argument
4834 return PerlIO_openn(aTHX_ Nullch, mode, -1, 0, 0, f, 1, &name);
4839 PerlIO_getc(PerlIO *f) argument
4843 if ( 1 == PerlIO_read(f, buf, 1) ) {
4851 PerlIO_ungetc(PerlIO *f, int ch) argument
4856 if (PerlIO_unread(f, &buf, 1) == 1)
4864 PerlIO_putc(PerlIO *f, int ch) argument
4868 return PerlIO_write(f, &buf, 1);
4873 PerlIO_puts(PerlIO *f, const char *s) argument
4877 return PerlIO_write(f, s, len);
4882 PerlIO_rewind(PerlIO *f) argument
4885 PerlIO_seek(f, (Off_t) 0, SEEK_SET);
4886 PerlIO_clearerr(f);
4891 PerlIO_vprintf(PerlIO *f, const char *fmt, va_list ap) argument
4906 wrote = PerlIO_write(f, s, len);
4913 PerlIO_printf(PerlIO *f, const char *fmt, ...) argument
4918 result = PerlIO_vprintf(f, fmt, ap);
4941 PerlIO *f = NULL; local
4945 f = PerlIO_fdopen(fd, "w+b");
4954 f = PerlIO_fdopen(fd, "w+");
4955 if (f)
4956 PerlIOBase(f)->flags |= PERLIO_F_TEMP;
4964 if ((f = PerlIO_push(aTHX_(PerlIO_allocate(aTHX)),
4967 PerlIOStdio *s = PerlIOSelf(f, PerlIOStdio);
4975 return f;
4993 PerlIO_setpos(PerlIO *f, SV *pos) argument
4999 if (f && len == sizeof(Off_t))
5000 return PerlIO_seek(f, *posn, SEEK_SET);
5008 PerlIO_setpos(PerlIO *f, SV *pos) argument
5014 if (f && len == sizeof(Fpos_t)) {
5016 return fsetpos64(f, fpos);
5018 return fsetpos(f, fpos);
5030 PerlIO_getpos(PerlIO *f, SV *pos) argument
5033 Off_t posn = PerlIO_tell(f);
5040 PerlIO_getpos(PerlIO *f, SV *pos) argument
5046 code = fgetpos64(f, &fpos);
5048 code = fgetpos(f, &fpos);