diff options
author | Leon Timmermans <fawaka@gmail.com> | 2011-01-20 21:08:34 +0100 |
---|---|---|
committer | Father Chrysostomos <sprout@cpan.org> | 2011-01-20 19:03:47 -0800 |
commit | 81fe74fb3f93457df8e864c91546ac6b860657fc (patch) | |
tree | b98f1384a2b32835a00a75866cc59b3f6628f89e /perlio.c | |
parent | 57e9ad135a0bd26cf0c27c058712ad1518a209bf (diff) | |
download | perl-81fe74fb3f93457df8e864c91546ac6b860657fc.tar.gz |
Define PerlIOBase_open
Diffstat (limited to 'perlio.c')
-rw-r--r-- | perlio.c | 18 |
1 files changed, 18 insertions, 0 deletions
@@ -1315,6 +1315,24 @@ PerlIO_push(pTHX_ PerlIO *f, PERLIO_FUNCS_DECL(*tab), const char *mode, SV *arg) return f; } +PerlIO * +PerlIOBase_open(pTHX_ PerlIO_funcs *self, PerlIO_list_t *layers, + IV n, const char *mode, int fd, int imode, int perm, + PerlIO *old, int narg, SV **args) +{ + PerlIO_funcs * const tab = PerlIO_layer_fetch(aTHX_ layers, n - 1, PerlIO_default_layer(aTHX_ 0)); + if (tab && tab->Open) { + PerlIO* ret = (*tab->Open)(aTHX_ tab, layers, n - 1, mode, fd, imode, perm, old, narg, args); + if (ret && PerlIO_push(aTHX_ ret, self, mode, PerlIOArg) == -1) { + PerlIO_close(ret); + return NULL; + } + return ret; + } + SETERRNO(EINVAL, LIB_INVARG); + return NULL; +} + IV PerlIOBase_binmode(pTHX_ PerlIO *f) { |