X-Git-Url: https://perl5.git.perl.org/perl5.git/blobdiff_plain/abec5bedacd77b2152e61ec3216ab47bd7272fc9..5fb16bc2f629b3605aa692906fc9f1f897b97acc:/mathoms.c diff --git a/mathoms.c b/mathoms.c index bcce2ca..295d8c4 100644 --- a/mathoms.c +++ b/mathoms.c @@ -19,19 +19,39 @@ -/* +/* * This file contains mathoms, various binary artifacts from previous - * versions of Perl. For binary or source compatibility reasons, though, - * we cannot completely remove them from the core code. + * versions of Perl which we cannot completely remove from the core + * code. There are two reasons functions should be here: + * + * 1) A function has been been replaced by a macro within a minor release, + * so XS modules compiled against an older release will expect to + * still be able to link against the function + * 2) A function Perl_foo(...) with #define foo Perl_foo(aTHX_ ...) + * has been replaced by a macro, e.g. #define foo(...) foo_flags(...,0) + * but XS code may still explicitly use the long form, i.e. + * Perl_foo(aTHX_ ...) + * + * NOTE: ALL FUNCTIONS IN THIS FILE should have an entry with the 'b' flag in + * embed.fnc. * - * REMEMBER to update makedef.pl when adding a function to mathoms.c whose - * name doesn't begin with "Perl_". + * To move a function to this file, simply cut and paste it here, and change + * its embed.fnc entry to additionally have the 'b' flag. If, for some reason + * a function you'd like to be treated as mathoms can't be moved from its + * current place, simply enclose it between * - * SMP - Oct. 24, 2005 + * #ifndef NO_MATHOMS + * ... + * #endif + * + * and add the 'b' flag in embed.fnc. * * The compilation of this file can be suppressed; see INSTALL * + * Some blurb for perlapi.pod: + =head1 Obsolete backwards compatibility functions + Some of these are also deprecated. You can exclude these from your compiled Perl by adding this option to Configure: C<-Accflags='-DNO_MATHOMS'> @@ -51,63 +71,6 @@ C<-Accflags='-DNO_MATHOMS'> */ #else -/* Not all of these have prototypes elsewhere, so do this to get - * non-mangled names. - */ -START_EXTERN_C - -PERL_CALLCONV OP * Perl_ref(pTHX_ OP *o, I32 type); -PERL_CALLCONV void Perl_sv_unref(pTHX_ SV *sv); -PERL_CALLCONV void Perl_sv_taint(pTHX_ SV *sv); -PERL_CALLCONV IV Perl_sv_2iv(pTHX_ SV *sv); -PERL_CALLCONV UV Perl_sv_2uv(pTHX_ SV *sv); -PERL_CALLCONV NV Perl_sv_2nv(pTHX_ SV *sv); -PERL_CALLCONV char * Perl_sv_2pv(pTHX_ SV *sv, STRLEN *lp); -PERL_CALLCONV char * Perl_sv_2pv_nolen(pTHX_ SV *sv); -PERL_CALLCONV char * Perl_sv_2pvbyte_nolen(pTHX_ SV *sv); -PERL_CALLCONV char * Perl_sv_2pvutf8_nolen(pTHX_ SV *sv); -PERL_CALLCONV void Perl_sv_force_normal(pTHX_ SV *sv); -PERL_CALLCONV void Perl_sv_setsv(pTHX_ SV *dstr, SV *sstr); -PERL_CALLCONV void Perl_sv_catpvn(pTHX_ SV *dsv, const char* sstr, STRLEN slen); -PERL_CALLCONV void Perl_sv_catpvn_mg(pTHX_ SV *sv, const char *ptr, STRLEN len); -PERL_CALLCONV void Perl_sv_catsv(pTHX_ SV *dstr, SV *sstr); -PERL_CALLCONV void Perl_sv_catsv_mg(pTHX_ SV *dsv, SV *ssv); -PERL_CALLCONV char * Perl_sv_pv(pTHX_ SV *sv); -PERL_CALLCONV char * Perl_sv_pvn_force(pTHX_ SV *sv, STRLEN *lp); -PERL_CALLCONV char * Perl_sv_pvbyte(pTHX_ SV *sv); -PERL_CALLCONV char * Perl_sv_pvutf8(pTHX_ SV *sv); -PERL_CALLCONV STRLEN Perl_sv_utf8_upgrade(pTHX_ SV *sv); -PERL_CALLCONV NV Perl_huge(void); -PERL_CALLCONV void Perl_gv_fullname3(pTHX_ SV *sv, const GV *gv, const char *prefix); -PERL_CALLCONV void Perl_gv_efullname3(pTHX_ SV *sv, const GV *gv, const char *prefix); -PERL_CALLCONV GV * Perl_gv_fetchmethod(pTHX_ HV *stash, const char *name); -PERL_CALLCONV HE * Perl_hv_iternext(pTHX_ HV *hv); -PERL_CALLCONV void Perl_hv_magic(pTHX_ HV *hv, GV *gv, int how); -PERL_CALLCONV bool Perl_do_open(pTHX_ GV *gv, const char *name, I32 len, int as_raw, int rawmode, int rawperm, PerlIO *supplied_fp); -PERL_CALLCONV bool Perl_do_aexec(pTHX_ SV *really, SV **mark, SV **sp); -PERL_CALLCONV U8 * Perl_uvuni_to_utf8(pTHX_ U8 *d, UV uv); -PERL_CALLCONV bool Perl_is_utf8_string_loc(pTHX_ const U8 *s, STRLEN len, const U8 **ep); -PERL_CALLCONV void Perl_sv_nolocking(pTHX_ SV *sv); -PERL_CALLCONV void Perl_sv_usepvn_mg(pTHX_ SV *sv, char *ptr, STRLEN len); -PERL_CALLCONV void Perl_sv_usepvn(pTHX_ SV *sv, char *ptr, STRLEN len); -PERL_CALLCONV int Perl_fprintf_nocontext(PerlIO *stream, const char *format, ...); -PERL_CALLCONV int Perl_printf_nocontext(const char *format, ...); -PERL_CALLCONV int Perl_magic_setglob(pTHX_ SV* sv, MAGIC* mg); -PERL_CALLCONV AV * Perl_newAV(pTHX); -PERL_CALLCONV HV * Perl_newHV(pTHX); -PERL_CALLCONV IO * Perl_newIO(pTHX); -PERL_CALLCONV I32 Perl_my_stat(pTHX); -PERL_CALLCONV I32 Perl_my_lstat(pTHX); -PERL_CALLCONV I32 Perl_sv_eq(pTHX_ SV *sv1, SV *sv2); -PERL_CALLCONV char * Perl_sv_collxfrm(pTHX_ SV *const sv, STRLEN *const nxp); -PERL_CALLCONV bool Perl_sv_2bool(pTHX_ SV *const sv); -PERL_CALLCONV CV * Perl_newSUB(pTHX_ I32 floor, OP* o, OP* proto, OP* block); -PERL_CALLCONV UV Perl_to_utf8_lower(pTHX_ const U8 *p, U8* ustrp, STRLEN *lenp); -PERL_CALLCONV UV Perl_to_utf8_title(pTHX_ const U8 *p, U8* ustrp, STRLEN *lenp); -PERL_CALLCONV UV Perl_to_utf8_upper(pTHX_ const U8 *p, U8* ustrp, STRLEN *lenp); -PERL_CALLCONV UV Perl_to_utf8_fold(pTHX_ const U8 *p, U8* ustrp, STRLEN *lenp); -PERL_CALLCONV SV *Perl_sv_mortalcopy(pTHX_ SV *const oldstr); - /* ref() is now a macro using Perl_doref; * this version provided for binary compatibility only. */ @@ -123,7 +86,7 @@ Perl_ref(pTHX_ OP *o, I32 type) Unsets the RV status of the SV, and decrements the reference count of whatever was being referenced by the RV. This can almost be thought of as a reversal of C. This is C with the C -being zero. See C. +being zero. See C>. =cut */ @@ -258,7 +221,7 @@ Perl_sv_2pvutf8_nolen(pTHX_ SV *sv) Undo various types of fakery on an SV: if the PV is a shared string, make a private copy; if we're a ref, stop refing; if we're a glob, downgrade to -an xpvmg. See also C. +an C. See also C>. =cut */ @@ -727,10 +690,9 @@ Perl_init_i18nl14n(pTHX_ int printwarn) } bool -Perl_is_utf8_string_loc(pTHX_ const U8 *s, STRLEN len, const U8 **ep) +Perl_is_utf8_string_loc(const U8 *s, const STRLEN len, const U8 **ep) { PERL_ARGS_ASSERT_IS_UTF8_STRING_LOC; - PERL_UNUSED_CONTEXT; return is_utf8_string_loclen(s, len, ep, 0); } @@ -739,10 +701,10 @@ Perl_is_utf8_string_loc(pTHX_ const U8 *s, STRLEN len, const U8 **ep) =for apidoc sv_nolocking Dummy routine which "locks" an SV when there is no locking module present. -Exists to avoid test for a NULL function pointer and because it could +Exists to avoid test for a C function pointer and because it could potentially warn under some level of strict-ness. -"Superseded" by sv_nosharing(). +"Superseded" by C. =cut */ @@ -759,10 +721,10 @@ Perl_sv_nolocking(pTHX_ SV *sv) =for apidoc sv_nounlocking Dummy routine which "unlocks" an SV when there is no locking module present. -Exists to avoid test for a NULL function pointer and because it could +Exists to avoid test for a C function pointer and because it could potentially warn under some level of strict-ness. -"Superseded" by sv_nosharing(). +"Superseded" by C. =cut */ @@ -786,17 +748,6 @@ Perl_save_long(pTHX_ long int *longp) } void -Perl_save_iv(pTHX_ IV *ivp) -{ - PERL_ARGS_ASSERT_SAVE_IV; - - SSCHECK(3); - SSPUSHIV(*ivp); - SSPUSHPTR(ivp); - SSPUSHUV(SAVEt_IV); -} - -void Perl_save_nogv(pTHX_ GV *gv) { PERL_ARGS_ASSERT_SAVE_NOGV; @@ -846,7 +797,7 @@ Perl_sv_usepvn_mg(pTHX_ SV *sv, char *ptr, STRLEN len) Tells an SV to use C to find its string value. Implemented by calling C with C of 0, hence does not handle 'set' -magic. See C. +magic. See C>. =cut */ @@ -862,13 +813,13 @@ Perl_sv_usepvn(pTHX_ SV *sv, char *ptr, STRLEN len) /* =for apidoc unpack_str -The engine implementing unpack() Perl function. Note: parameters strbeg, -new_s and ocnt are not used. This call should not be used, use -unpackstring instead. +The engine implementing C Perl function. Note: parameters C, +C and C are not used. This call should not be used, use +C instead. =cut */ -I32 +SSize_t Perl_unpack_str(pTHX_ const char *pat, const char *patend, const char *s, const char *strbeg, const char *strend, char **new_s, I32 ocnt, U32 flags) @@ -885,9 +836,9 @@ Perl_unpack_str(pTHX_ const char *pat, const char *patend, const char *s, /* =for apidoc pack_cat -The engine implementing pack() Perl function. Note: parameters -next_in_list and flags are not used. This call should not be used; use -packlist instead. +The engine implementing C Perl function. Note: parameters +C and C are not used. This call should not be used; use +C instead. =cut */ @@ -914,8 +865,7 @@ Perl_hv_exists_ent(pTHX_ HV *hv, SV *keysv, U32 hash) { PERL_ARGS_ASSERT_HV_EXISTS_ENT; - return hv_common(hv, keysv, NULL, 0, 0, HV_FETCH_ISEXISTS, 0, hash) - ? TRUE : FALSE; + return cBOOL(hv_common(hv, keysv, NULL, 0, 0, HV_FETCH_ISEXISTS, 0, hash)); } HE * @@ -976,8 +926,7 @@ Perl_hv_exists(pTHX_ HV *hv, const char *key, I32 klen_i32) klen = klen_i32; flags = 0; } - return hv_common(hv, NULL, key, klen, flags, HV_FETCH_ISEXISTS, 0, 0) - ? TRUE : FALSE; + return cBOOL(hv_common(hv, NULL, key, klen, flags, HV_FETCH_ISEXISTS, 0, 0)); } SV** @@ -1134,6 +1083,18 @@ Perl_sv_collxfrm(pTHX_ SV *const sv, STRLEN *const nxp) { return sv_collxfrm_flags(sv, nxp, SV_GMAGIC); } + +char * +Perl_mem_collxfrm(pTHX_ const char *input_string, STRLEN len, STRLEN *xlen) +{ + /* This function is retained for compatibility in case someone outside core + * is using this (but it is undocumented) */ + + PERL_ARGS_ASSERT_MEM_COLLXFRM; + + return _mem_collxfrm(input_string, len, xlen, FALSE); +} + #endif bool @@ -1145,13 +1106,13 @@ Perl_sv_2bool(pTHX_ SV *const sv) /* =for apidoc custom_op_name -Return the name for a given custom op. This was once used by the OP_NAME +Return the name for a given custom op. This was once used by the C macro, but is no longer: it has only been kept for compatibility, and should not be used. =for apidoc custom_op_desc Return the description of a given custom op. This was once used by the -OP_DESC macro, but is no longer: it has only been kept for +C macro, but is no longer: it has only been kept for compatibility, and should not be used. =cut @@ -1182,7 +1143,7 @@ Perl_to_utf8_fold(pTHX_ const U8 *p, U8* ustrp, STRLEN *lenp) { PERL_ARGS_ASSERT_TO_UTF8_FOLD; - return _to_utf8_fold_flags(p, ustrp, lenp, FOLD_FLAGS_FULL); + return toFOLD_utf8(p, ustrp, lenp); } UV @@ -1190,7 +1151,7 @@ Perl_to_utf8_lower(pTHX_ const U8 *p, U8* ustrp, STRLEN *lenp) { PERL_ARGS_ASSERT_TO_UTF8_LOWER; - return _to_utf8_lower_flags(p, ustrp, lenp, FALSE); + return toLOWER_utf8(p, ustrp, lenp); } UV @@ -1198,7 +1159,7 @@ Perl_to_utf8_title(pTHX_ const U8 *p, U8* ustrp, STRLEN *lenp) { PERL_ARGS_ASSERT_TO_UTF8_TITLE; - return _to_utf8_title_flags(p, ustrp, lenp, FALSE); + return toTITLE_utf8(p, ustrp, lenp); } UV @@ -1206,7 +1167,7 @@ Perl_to_utf8_upper(pTHX_ const U8 *p, U8* ustrp, STRLEN *lenp) { PERL_ARGS_ASSERT_TO_UTF8_UPPER; - return _to_utf8_upper_flags(p, ustrp, lenp, FALSE); + return toUPPER_utf8(p, ustrp, lenp); } SV * @@ -1220,7 +1181,7 @@ Perl_sv_copypv(pTHX_ SV *const dsv, SV *const ssv) { PERL_ARGS_ASSERT_SV_COPYPV; - sv_copypv_flags(dsv, ssv, 0); + sv_copypv_flags(dsv, ssv, SV_GMAGIC); } UV /* Made into a function, so can be deprecated */ @@ -1725,6 +1686,7 @@ Perl_is_utf8_char_buf(const U8 *buf, const U8* buf_end) UV Perl_valid_utf8_to_uvuni(pTHX_ const U8 *s, STRLEN *retlen) { + PERL_UNUSED_CONTEXT; PERL_ARGS_ASSERT_VALID_UTF8_TO_UVUNI; return NATIVE_TO_UNI(valid_utf8_to_uvchr(s, retlen)); @@ -1743,7 +1705,7 @@ is why this function is deprecated. Use L instead. If C points to one of the detected malformations, and UTF8 warnings are enabled, zero is returned and C<*retlen> is set (if C isn't -NULL) to -1. If those warnings are off, the computed value if well-defined (or +C) to -1. If those warnings are off, the computed value if well-defined (or the Unicode REPLACEMENT CHARACTER, if not) is silently returned, and C<*retlen> is set (if C isn't NULL) so that (S + C<*retlen>>) is the next possible position in C that could begin a non-malformed character. @@ -1787,21 +1749,16 @@ See L for details on when the REPLACEMENT CHARACTER is returned UV Perl_utf8_to_uvuni(pTHX_ const U8 *s, STRLEN *retlen) { + PERL_UNUSED_CONTEXT; PERL_ARGS_ASSERT_UTF8_TO_UVUNI; return NATIVE_TO_UNI(valid_utf8_to_uvchr(s, retlen)); } -void -Perl_save_re_context(pTHX) -{ - PERL_UNUSED_CONTEXT; -} - /* =for apidoc Am|HV *|pad_compname_type|PADOFFSET po -Looks up the type of the lexical variable at position I in the +Looks up the type of the lexical variable at position C in the currently-compiling pad. If the variable is typed, the stash of the class to which it is typed is returned. If not, C is returned. @@ -1814,8 +1771,16 @@ Perl_pad_compname_type(pTHX_ const PADOFFSET po) return PAD_COMPNAME_TYPE(po); } +/* return ptr to little string in big string, NULL if not found */ +/* The original version of this routine was donated by Corey Satten. */ -END_EXTERN_C +char * +Perl_instr(const char *big, const char *little) +{ + PERL_ARGS_ASSERT_INSTR; + + return instr((char *) big, (char *) little); +} #endif /* NO_MATHOMS */