X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=universal.c;h=ae12e27984e80eeaa60b8e591af2052fad2cf6bd;hb=2659725b692c235823f5ea11c58cf1b2adff0f86;hp=b2313f5cd0e54bc4b4a2a46087af40f2317eabb8;hpb=eb1102fcca2230364ceadea29bd8e87ee51b15fa;p=p5sagit%2Fp5-mst-13.2.git diff --git a/universal.c b/universal.c index b2313f5..ae12e27 100644 --- a/universal.c +++ b/universal.c @@ -7,6 +7,12 @@ * */ +/* + * "The roots of those mountains must be roots indeed; there must be + * great secrets buried there which have not been discovered since the + * beginning." --Gandalf, relating Gollum's story + */ + #include "EXTERN.h" #define PERL_IN_UNIVERSAL_C #include "perl.h" @@ -87,7 +93,7 @@ S_isa_lookup(pTHX_ HV *stash, const char *name, HV* name_stash, HV* basestash = gv_stashsv(sv, FALSE); if (!basestash) { if (ckWARN(WARN_MISC)) - Perl_warner(aTHX_ WARN_SYNTAX, + Perl_warner(aTHX_ packWARN(WARN_SYNTAX), "Can't locate package %s for @%s::ISA", SvPVX(sv), HvNAME(stash)); continue; @@ -161,7 +167,6 @@ 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) @@ -178,7 +183,6 @@ 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, "\\[$%@];$"); } @@ -284,10 +288,18 @@ XS(XS_UNIVERSAL_VERSION) STRLEN len; SV *req = ST(1); - if (undef) - Perl_croak(aTHX_ "%s does not define $%s::VERSION--version check failed", - HvNAME(pkg), HvNAME(pkg)); - + if (undef) { + if (pkg) + Perl_croak(aTHX_ + "%s does not define $%s::VERSION--version check failed", + HvNAME(pkg), HvNAME(pkg)); + else { + char *str = SvPVx(ST(0), len); + + Perl_croak(aTHX_ + "%s defines neither package nor VERSION--version check failed", str); + } + } if (!SvNIOK(sv) && SvPOK(sv)) { char *str = SvPVx(sv,len); while (len) { @@ -446,22 +458,3 @@ 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; -} -