PerlIO-Util
view release on metacpan or search on metacpan
PerlIO-Util.xs view on Meta::CPAN
PerlIO_define_layer(aTHX_ PERLIO_FUNCS_CAST(&PerlIO_excl));
PerlIO_define_layer(aTHX_ PERLIO_FUNCS_CAST(&PerlIO_tee));
PerlIO_define_layer(aTHX_ PERLIO_FUNCS_CAST(&PerlIO_dir));
PerlIO_define_layer(aTHX_ PERLIO_FUNCS_CAST(&PerlIO_reverse));
void
known_layers(...)
PREINIT:
const PerlIO_list_t* const layers = PL_known_layers;
int i;
PPCODE:
EXTEND(SP, layers->cur);
for(i = 0; i < layers->cur; i++){
SV* const name = newSVpv( LayerFetch(layers, i)->name, 0);
PUSHs( sv_2mortal(name) );
}
XSRETURN(layers->cur);
SV*
_gensym_ref(SV* pkg, SV* name)
PREINIT:
PerlIO-Util.xs view on Meta::CPAN
void
push_layer(filehandle, layer, arg = undef)
PerlIO* filehandle
SV* layer
SV* arg
PREINIT:
PerlIO_funcs* tab;
const char* laypv;
STRLEN laylen;
PPCODE:
laypv = SvPV_const(layer, laylen);
if(laypv[0] == ':'){ /* ignore a layer prefix */
laypv++;
laylen--;
}
tab = PerlIO_find_layer(aTHX_ laypv, laylen, TRUE);
if(tab){
if(!PerlIO_push(aTHX_ filehandle, tab, NULL, arg)){
Perl_croak(aTHX_ "push_layer() failed: %s",
PerlIOValid(filehandle)
PerlIO-Util.xs view on Meta::CPAN
Perl_croak(aTHX_ "Unknown PerlIO layer \"%.*s\"",
(int)laylen, laypv);
}
XSRETURN(1); /* returns self */
void
pop_layer(filehandle)
PerlIO* filehandle
PREINIT:
const char* popped_layer;
PPCODE:
if(!PerlIOValid(filehandle)) XSRETURN_EMPTY;
popped_layer = PerlIOBase(filehandle)->tab->name;
PerlIO_flush(filehandle);
PerlIO_pop(aTHX_ filehandle);
if(GIMME_V != G_VOID){
XSRETURN_PV(popped_layer);
}
( run in 0.495 second using v1.01-cache-2.11-cpan-5511b514fd6 )