Quoted-printable is evil.
[p5sagit/p5-mst-13.2.git] / universal.c
index dc9e253..9a8ec1b 100644 (file)
@@ -187,7 +187,8 @@ XS(XS_Internals_SvREFCNT);
 XS(XS_Internals_hv_clear_placehold);
 XS(XS_PerlIO_get_layers);
 XS(XS_Regexp_DESTROY);
-XS(XS_Internals_hashes_random);
+XS(XS_Internals_hash_seed);
+XS(XS_Internals_HvREHASH);
 
 void
 Perl_boot_core_UNIVERSAL(pTHX)
@@ -231,7 +232,8 @@ Perl_boot_core_UNIVERSAL(pTHX)
     newXSproto("PerlIO::get_layers",
                XS_PerlIO_get_layers, file, "*;@");
     newXS("Regexp::DESTROY", XS_Regexp_DESTROY, file);
-    newXSproto("Internals::hashes_random",XS_Internals_hashes_random, file, "");
+    newXSproto("Internals::hash_seed",XS_Internals_hash_seed, file, "");
+    newXSproto("Internals::HvREHASH", XS_Internals_HvREHASH, file, "\\%");
 }
 
 
@@ -908,9 +910,25 @@ XS(XS_PerlIO_get_layers)
     XSRETURN(0);
 }
 
-XS(XS_Internals_hashes_random)
+XS(XS_Internals_hash_seed)
 {
-    dXSARGS;
-    XSRETURN_IV(PL_hash_seed ? 1 : 0);
+    /* Using dXSARGS would also have dITEM and dSP,
+     * which define 2 unused local variables.  */
+    dMARK; dAX;
+    XSRETURN_UV(PERL_HASH_SEED);
 }
 
+XS(XS_Internals_HvREHASH)      /* Subject to change  */
+{
+    dXSARGS;
+    if (SvROK(ST(0))) {
+       HV *hv = (HV *) SvRV(ST(0));
+       if (items == 1 && SvTYPE(hv) == SVt_PVHV) {
+           if (HvREHASH(hv))
+               XSRETURN_YES;
+           else
+               XSRETURN_NO;
+       }
+    }
+    Perl_croak(aTHX_ "Internals::HvREHASH $hashref");
+}