X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=universal.c;h=868fe5514000c79ced23ce46d6121a0c1ad793f5;hb=52a55424e4624fc79eb8894fb91c5e2f4a9018ab;hp=8b2044393b82bf202b0582cf4b3e300c7d25c070;hpb=0562c0e3630958db13a0e70db1b90c05d3fee158;p=p5sagit%2Fp5-mst-13.2.git diff --git a/universal.c b/universal.c index 8b20443..868fe55 100644 --- a/universal.c +++ b/universal.c @@ -132,9 +132,9 @@ Perl_sv_derived_from(pTHX_ SV *sv, const char *name) #include "XSUB.h" -void XS_UNIVERSAL_isa(pTHXo_ CV *cv); -void XS_UNIVERSAL_can(pTHXo_ CV *cv); -void XS_UNIVERSAL_VERSION(pTHXo_ CV *cv); +void XS_UNIVERSAL_isa(pTHX_ CV *cv); +void XS_UNIVERSAL_can(pTHX_ CV *cv); +void XS_UNIVERSAL_VERSION(pTHX_ CV *cv); XS(XS_utf8_valid); XS(XS_utf8_encode); XS(XS_utf8_decode); @@ -142,6 +142,7 @@ XS(XS_utf8_upgrade); XS(XS_utf8_downgrade); XS(XS_utf8_unicode_to_native); XS(XS_utf8_native_to_unicode); +XS(XS_access_readonly); void Perl_boot_core_UNIVERSAL(pTHX) @@ -158,6 +159,7 @@ Perl_boot_core_UNIVERSAL(pTHX) newXS("utf8::downgrade", XS_utf8_downgrade, file); newXS("utf8::native_to_unicode", XS_utf8_native_to_unicode, file); newXS("utf8::unicode_to_native", XS_utf8_unicode_to_native, file); + newXSproto("access::readonly",XS_access_readonly, file, "\\[$%@];$"); } @@ -303,10 +305,9 @@ XS(XS_UNIVERSAL_VERSION) sv_setnv(req, n); } - if (SvNV(req) > SvNV(sv)) { + if (SvNV(req) > SvNV(sv)) Perl_croak(aTHX_ "%s version %s required--this is only version %s", - HvNAME(pkg), SvPV_nolen(req), SvPV_nolen(sv,len)); - } + HvNAME(pkg), SvPV_nolen(req), SvPV_nolen(sv)); } finish: @@ -426,4 +427,22 @@ XS(XS_utf8_unicode_to_native) XSRETURN(1); } +XS(XS_access_readonly) +{ + dXSARGS; + SV *sv = SvRV(ST(0)); + IV old = SvREADONLY(sv); + if (items == 2) { + if (SvTRUE(ST(1))) { + SvREADONLY_on(sv); + } + else { + SvREADONLY_off(sv); + } + } + if (old) + XSRETURN_YES; + else + XSRETURN_NO; +}