X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=proto.h;h=48a66bb920ee5aecdc33ee52edeb87645a8ef0af;hb=ac9dac7f0e1dffa602850506b980a255334a4f40;hp=a6e5c2fdb8c270cafc68804527134970749b77f6;hpb=df528165173896ed88fc3da7e1aa8bc3ef3b2416;p=p5sagit%2Fp5-mst-13.2.git diff --git a/proto.h b/proto.h index a6e5c2f..48a66bb 100644 --- a/proto.h +++ b/proto.h @@ -405,9 +405,7 @@ PERL_CALLCONV void Perl_do_chop(pTHX_ SV* asv, SV* sv) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); -PERL_CALLCONV bool Perl_do_close(pTHX_ GV* gv, bool not_implicit) - __attribute__nonnull__(pTHX_1); - +PERL_CALLCONV bool Perl_do_close(pTHX_ GV* gv, bool not_implicit); PERL_CALLCONV bool Perl_do_eof(pTHX_ GV* gv) __attribute__nonnull__(pTHX_1); @@ -441,6 +439,11 @@ PERL_CALLCONV bool Perl_do_exec3(pTHX_ const char* cmd, int fd, int do_report) #endif PERL_CALLCONV void Perl_do_execfree(pTHX); +#ifdef PERL_IN_DOIO_C +STATIC void S_exec_failed(pTHX_ const char *cmd, int fd, int do_report) + __attribute__nonnull__(pTHX_1); + +#endif #if defined(HAS_MSG) || defined(HAS_SEM) || defined(HAS_SHM) PERL_CALLCONV I32 Perl_do_ipcctl(pTHX_ I32 optype, SV** mark, SV** sp) __attribute__nonnull__(pTHX_2) @@ -600,7 +603,7 @@ PERL_CALLCONV GV* Perl_gv_autoload4(pTHX_ HV* stash, const char* name, STRLEN le __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_2); -PERL_CALLCONV void Perl_gv_check(pTHX_ HV* stash) +PERL_CALLCONV void Perl_gv_check(pTHX_ const HV* stash) __attribute__nonnull__(pTHX_1); PERL_CALLCONV void Perl_gv_efullname(pTHX_ SV* sv, const GV* gv) @@ -645,6 +648,9 @@ PERL_CALLCONV void Perl_gv_fullname4(pTHX_ SV* sv, const GV* gv, const char* pre __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); +PERL_CALLCONV GP * Perl_newGP(pTHX_ GV *const gv) + __attribute__nonnull__(pTHX_1); + PERL_CALLCONV void Perl_gv_init(pTHX_ GV* gv, HV* stash, const char* name, STRLEN len, int multi) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_3); @@ -728,6 +734,9 @@ PERL_CALLCONV void Perl_hv_ksplit(pTHX_ HV* hv, IV newmax) __attribute__nonnull__(pTHX_1); */ PERL_CALLCONV HV * Perl_refcounted_he_chain_2hv(pTHX_ const struct refcounted_he *c); +PERL_CALLCONV SV * Perl_refcounted_he_fetch(pTHX_ const struct refcounted_he *chain, SV *keysv, const char *key, STRLEN klen, int flags, U32 hash) + __attribute__nonnull__(pTHX_1); + PERL_CALLCONV void Perl_refcounted_he_free(pTHX_ struct refcounted_he *he); PERL_CALLCONV struct refcounted_he * Perl_refcounted_he_new(pTHX_ struct refcounted_he *const parent, SV *const key, SV *const value); PERL_CALLCONV SV** Perl_hv_store(pTHX_ HV* tb, const char* key, I32 klen, SV* val, U32 hash); @@ -1076,7 +1085,7 @@ PERL_CALLCONV int Perl_magic_clearsig(pTHX_ SV* sv, MAGIC* mg) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); -PERL_CALLCONV int Perl_magic_existspack(pTHX_ SV* sv, MAGIC* mg) +PERL_CALLCONV int Perl_magic_existspack(pTHX_ SV* sv, const MAGIC* mg) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); @@ -1478,6 +1487,10 @@ PERL_CALLCONV OP* Perl_newSTATEOP(pTHX_ I32 flags, char* label, OP* o) __attribute__warn_unused_result__; PERL_CALLCONV CV* Perl_newSUB(pTHX_ I32 floor, OP* o, OP* proto, OP* block); +PERL_CALLCONV CV * Perl_newXS_flags(pTHX_ const char *name, XSUBADDR_t subaddr, const char *const filename, const char *const proto, U32 flags) + __attribute__nonnull__(pTHX_2) + __attribute__nonnull__(pTHX_3); + PERL_CALLCONV CV* Perl_newXS(pTHX_ const char* name, XSUBADDR_t f, const char* filename) __attribute__nonnull__(pTHX_2) __attribute__nonnull__(pTHX_3); @@ -1688,7 +1701,7 @@ PERL_CALLCONV void Perl_package(pTHX_ OP* o) #endif PERL_CALLCONV PADOFFSET Perl_pad_alloc(pTHX_ I32 optype, U32 tmptype); -PERL_CALLCONV PADOFFSET Perl_allocmy(pTHX_ char* name) +PERL_CALLCONV PADOFFSET Perl_allocmy(pTHX_ const char *const name) __attribute__nonnull__(pTHX_1); PERL_CALLCONV PADOFFSET Perl_pad_findmy(pTHX_ const char* name) @@ -2069,8 +2082,7 @@ STATIC bool S_glob_2number(pTHX_ GV* const gv) __attribute__nonnull__(pTHX_1); STATIC char* S_glob_2pv(pTHX_ GV* const gv, STRLEN * const len) - __attribute__nonnull__(pTHX_1) - __attribute__nonnull__(pTHX_2); + __attribute__nonnull__(pTHX_1); #endif /* PERL_CALLCONV IV sv_2iv(pTHX_ SV* sv) @@ -2198,6 +2210,11 @@ PERL_CALLCONV bool Perl_sv_derived_from(pTHX_ SV* sv, const char* name) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); +PERL_CALLCONV bool Perl_sv_does(pTHX_ SV* sv, const char* name) + __attribute__warn_unused_result__ + __attribute__nonnull__(pTHX_1) + __attribute__nonnull__(pTHX_2); + PERL_CALLCONV I32 Perl_sv_eq(pTHX_ SV* sv1, SV* sv2); PERL_CALLCONV void Perl_sv_free(pTHX_ SV* sv); PERL_CALLCONV void Perl_sv_free2(pTHX_ SV* sv) @@ -2342,7 +2359,7 @@ PERL_CALLCONV void Perl_sv_unref_flags(pTHX_ SV* sv, U32 flags) PERL_CALLCONV void Perl_sv_untaint(pTHX_ SV* sv) __attribute__nonnull__(pTHX_1); -PERL_CALLCONV void Perl_sv_upgrade(pTHX_ SV* sv, U32 mt) +PERL_CALLCONV void Perl_sv_upgrade(pTHX_ SV* sv, svtype new_type) __attribute__nonnull__(pTHX_1); /* PERL_CALLCONV void Perl_sv_usepvn(pTHX_ SV* sv, char* ptr, STRLEN len) @@ -2655,6 +2672,14 @@ PERL_CALLCONV char* Perl_pv_display(pTHX_ SV *dsv, const char *pv, STRLEN cur, S __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); +PERL_CALLCONV char* Perl_pv_escape(pTHX_ SV *dsv, char const * const str, const STRLEN count, const STRLEN max, STRLEN * const escaped, const U32 flags) + __attribute__nonnull__(pTHX_1) + __attribute__nonnull__(pTHX_2); + +PERL_CALLCONV char* Perl_pv_pretty(pTHX_ SV *dsv, char const * const str, const STRLEN count, const STRLEN max, char const * const start_color, char const * const end_color, const U32 flags) + __attribute__nonnull__(pTHX_1) + __attribute__nonnull__(pTHX_2); + PERL_CALLCONV void Perl_dump_indent(pTHX_ I32 level, PerlIO *file, const char* pat, ...) __attribute__format__(__printf__,pTHX_3,pTHX_4) __attribute__nonnull__(pTHX_2) @@ -2936,6 +2961,11 @@ STATIC HEK* S_share_hek_flags(pTHX_ const char* sv, I32 len, U32 hash, int flags __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); +STATIC SV* S_hv_magic_uvar_xkey(pTHX_ HV* hv, SV* keysv, int action) + __attribute__warn_unused_result__ + __attribute__nonnull__(pTHX_1) + __attribute__nonnull__(pTHX_2); + STATIC void S_hv_notallowed(pTHX_ int flags, const char *key, I32 klen, const char *msg) __attribute__noreturn__ __attribute__nonnull__(pTHX_2) @@ -2949,6 +2979,9 @@ STATIC HE* S_hv_fetch_common(pTHX_ HV* tb, SV* keysv, const char* key, STRLEN kl STATIC void S_clear_placeholders(pTHX_ HV* hb, U32 items) __attribute__nonnull__(pTHX_1); +STATIC SV * S_refcounted_he_value(pTHX_ const struct refcounted_he *he) + __attribute__nonnull__(pTHX_1); + #endif #if defined(PERL_IN_MG_C) || defined(PERL_DECL_PROT) @@ -3329,6 +3362,11 @@ STATIC char * S_sv_exp_grow(pTHX_ SV *sv, STRLEN needed) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); +STATIC char * S_bytes_to_uni(const U8 *start, STRLEN len, char *dest) + __attribute__warn_unused_result__ + __attribute__nonnull__(1) + __attribute__nonnull__(3); + #endif #if defined(PERL_IN_PP_CTL_C) || defined(PERL_DECL_PROT) @@ -3379,10 +3417,10 @@ STATIC void S_save_lines(pTHX_ AV *array, SV *sv) STATIC OP* S_doeval(pTHX_ int gimme, OP** startop, CV* outside, U32 seq) __attribute__warn_unused_result__; -STATIC PerlIO * S_check_type_and_open(const char *name, const char *mode) +STATIC PerlIO * S_check_type_and_open(pTHX_ const char *name, const char *mode) __attribute__warn_unused_result__ - __attribute__nonnull__(1) - __attribute__nonnull__(2); + __attribute__nonnull__(pTHX_1) + __attribute__nonnull__(pTHX_2); STATIC PerlIO * S_doopen_pm(pTHX_ const char *name, const char *mode) __attribute__warn_unused_result__ @@ -3466,6 +3504,10 @@ STATIC I32 S_sortcv_stacked(pTHX_ SV *a, SV *b) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); +STATIC void S_qsortsvu(pTHX_ SV** array, size_t num_elts, SVCOMPARE_t compare) + __attribute__nonnull__(pTHX_1) + __attribute__nonnull__(pTHX_3); + #endif #if defined(PERL_IN_PP_SYS_C) || defined(PERL_DECL_PROT) @@ -3490,27 +3532,26 @@ STATIC SV * S_space_join_names_mortal(pTHX_ char *const *array) #endif #if defined(PERL_IN_REGCOMP_C) || defined(PERL_DECL_PROT) -STATIC regnode* S_reg(pTHX_ struct RExC_state_t *state, I32 paren, I32 *flagp) +STATIC regnode* S_reg(pTHX_ struct RExC_state_t *state, I32 paren, I32 *flagp, U32 depth) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_3); STATIC regnode* S_reganode(pTHX_ struct RExC_state_t *state, U8 op, U32 arg) __attribute__nonnull__(pTHX_1); -STATIC regnode* S_regatom(pTHX_ struct RExC_state_t *state, I32 *flagp) +STATIC regnode* S_regatom(pTHX_ struct RExC_state_t *state, I32 *flagp, U32 depth) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); -STATIC regnode* S_regbranch(pTHX_ struct RExC_state_t *state, I32 *flagp, I32 first) +STATIC regnode* S_regbranch(pTHX_ struct RExC_state_t *state, I32 *flagp, I32 first, U32 depth) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); -STATIC void S_reguni(pTHX_ const struct RExC_state_t *state, UV uv, char *s, STRLEN *lenp) +STATIC STRLEN S_reguni(pTHX_ const struct RExC_state_t *state, UV uv, char *s) __attribute__nonnull__(pTHX_1) - __attribute__nonnull__(pTHX_3) - __attribute__nonnull__(pTHX_4); + __attribute__nonnull__(pTHX_3); -STATIC regnode* S_regclass(pTHX_ struct RExC_state_t *state) +STATIC regnode* S_regclass(pTHX_ struct RExC_state_t *state, U32 depth) __attribute__nonnull__(pTHX_1); STATIC I32 S_regcurly(const char *) @@ -3520,7 +3561,7 @@ STATIC I32 S_regcurly(const char *) STATIC regnode* S_reg_node(pTHX_ struct RExC_state_t *state, U8 op) __attribute__nonnull__(pTHX_1); -STATIC regnode* S_regpiece(pTHX_ struct RExC_state_t *state, I32 *flagp) +STATIC regnode* S_regpiece(pTHX_ struct RExC_state_t *state, I32 *flagp, U32 depth) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); @@ -3528,12 +3569,12 @@ STATIC void S_reginsert(pTHX_ struct RExC_state_t *state, U8 op, regnode *opnd) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_3); -STATIC void S_regoptail(pTHX_ const struct RExC_state_t *state, regnode *p, const regnode *val) +STATIC void S_regtail(pTHX_ struct RExC_state_t *state, regnode *p, const regnode *val, U32 depth) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2) __attribute__nonnull__(pTHX_3); -STATIC void S_regtail(pTHX_ const struct RExC_state_t *state, regnode *p, const regnode *val) +STATIC U32 S_join_exact(pTHX_ struct RExC_state_t *state, regnode *scan, I32 *min, U32 flags, regnode *val, U32 depth) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2) __attribute__nonnull__(pTHX_3); @@ -3546,20 +3587,10 @@ STATIC char* S_regwhite(char *p, const char *e) STATIC char* S_nextchar(pTHX_ struct RExC_state_t *state) __attribute__nonnull__(pTHX_1); -# ifdef DEBUGGING -STATIC const regnode* S_dumpuntil(pTHX_ const regexp *r, const regnode *start, const regnode *node, const regnode *last, SV* sv, I32 l) +STATIC void S_scan_commit(pTHX_ const struct RExC_state_t* state, struct scan_data_t *data, I32 *minlenp) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2) - __attribute__nonnull__(pTHX_3) - __attribute__nonnull__(pTHX_5); - -STATIC void S_put_byte(pTHX_ SV* sv, int c) - __attribute__nonnull__(pTHX_1); - -# endif -STATIC void S_scan_commit(pTHX_ const struct RExC_state_t* state, struct scan_data_t *data) - __attribute__nonnull__(pTHX_1) - __attribute__nonnull__(pTHX_2); + __attribute__nonnull__(pTHX_3); STATIC void S_cl_anything(const struct RExC_state_t* state, struct regnode_charclass_class *cl) __attribute__nonnull__(1) @@ -3586,11 +3617,12 @@ STATIC void S_cl_or(const struct RExC_state_t* state, struct regnode_charclass_c __attribute__nonnull__(2) __attribute__nonnull__(3); -STATIC I32 S_study_chunk(pTHX_ struct RExC_state_t* state, regnode **scanp, I32 *deltap, regnode *last, struct scan_data_t *data, U32 flags, U32 depth) +STATIC I32 S_study_chunk(pTHX_ struct RExC_state_t* state, regnode **scanp, I32 *minlenp, I32 *deltap, regnode *last, struct scan_data_t *data, U32 flags, U32 depth) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2) __attribute__nonnull__(pTHX_3) - __attribute__nonnull__(pTHX_4); + __attribute__nonnull__(pTHX_4) + __attribute__nonnull__(pTHX_5); STATIC I32 S_add_data(struct RExC_state_t* state, I32 n, const char *s) __attribute__warn_unused_result__ @@ -3608,14 +3640,43 @@ STATIC I32 S_regpposixcc(pTHX_ struct RExC_state_t* state, I32 value) STATIC void S_checkposixcc(pTHX_ struct RExC_state_t* state) __attribute__nonnull__(pTHX_1); - -STATIC I32 S_make_trie(pTHX_ struct RExC_state_t* state, regnode *startbranch, regnode *first, regnode *last, regnode *tail, U32 flags) +STATIC I32 S_make_trie(pTHX_ struct RExC_state_t* state, regnode *startbranch, regnode *first, regnode *last, regnode *tail, U32 word_count, U32 flags, U32 depth) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2) __attribute__nonnull__(pTHX_3) __attribute__nonnull__(pTHX_4) __attribute__nonnull__(pTHX_5); +STATIC void S_make_trie_failtable(pTHX_ struct RExC_state_t* state, regnode *source, regnode *node, U32 depth) + __attribute__nonnull__(pTHX_1) + __attribute__nonnull__(pTHX_2) + __attribute__nonnull__(pTHX_3); + +# ifdef DEBUGGING +STATIC const regnode* S_dumpuntil(pTHX_ const regexp *r, const regnode *start, const regnode *node, const regnode *last, const regnode *plast, SV* sv, I32 indent, U32 depth) + __attribute__nonnull__(pTHX_1) + __attribute__nonnull__(pTHX_2) + __attribute__nonnull__(pTHX_3) + __attribute__nonnull__(pTHX_6); + +STATIC void S_put_byte(pTHX_ SV* sv, int c) + __attribute__nonnull__(pTHX_1); + +STATIC void S_dump_trie(pTHX_ const struct _reg_trie_data *trie, U32 depth) + __attribute__nonnull__(pTHX_1); + +STATIC void S_dump_trie_interim_list(pTHX_ const struct _reg_trie_data *trie, U32 next_alloc, U32 depth) + __attribute__nonnull__(pTHX_1); + +STATIC void S_dump_trie_interim_table(pTHX_ const struct _reg_trie_data *trie, U32 next_alloc, U32 depth) + __attribute__nonnull__(pTHX_1); + +STATIC U8 S_regtail_study(pTHX_ struct RExC_state_t *state, regnode *p, const regnode *val, U32 depth) + __attribute__nonnull__(pTHX_1) + __attribute__nonnull__(pTHX_2) + __attribute__nonnull__(pTHX_3); + +# endif #endif #if defined(PERL_IN_REGEXEC_C) || defined(PERL_DECL_PROT) @@ -3643,12 +3704,18 @@ STATIC CHECKPOINT S_regcppush(pTHX_ I32 parenfloor); STATIC char* S_regcppop(pTHX_ const regexp *rex) __attribute__nonnull__(pTHX_1); -STATIC U8* S_reghop3(U8 *pos, I32 off, U8 *lim) +STATIC U8* S_reghop3(U8 *pos, I32 off, const U8 *lim) __attribute__warn_unused_result__ __attribute__nonnull__(1) __attribute__nonnull__(3); -STATIC U8* S_reghopmaybe3(U8 *pos, I32 off, U8 *lim) +STATIC U8* S_reghop4(U8 *pos, I32 off, const U8 *llim, const U8 *rlim) + __attribute__warn_unused_result__ + __attribute__nonnull__(1) + __attribute__nonnull__(3) + __attribute__nonnull__(4); + +STATIC U8* S_reghopmaybe3(U8 *pos, I32 off, const U8 *lim) __attribute__warn_unused_result__ __attribute__nonnull__(1) __attribute__nonnull__(3); @@ -3666,6 +3733,21 @@ STATIC void S_to_utf8_substr(pTHX_ regexp * prog) STATIC void S_to_byte_substr(pTHX_ regexp * prog) __attribute__nonnull__(pTHX_1); +# ifdef DEBUGGING +STATIC void S_dump_exec_pos(pTHX_ const char *locinput, const regnode *scan, const char *loc_regeol, const char *loc_bostr, const char *loc_reg_starttry, const bool do_utf8) + __attribute__nonnull__(pTHX_1) + __attribute__nonnull__(pTHX_2) + __attribute__nonnull__(pTHX_3) + __attribute__nonnull__(pTHX_4) + __attribute__nonnull__(pTHX_5); + +STATIC void S_debug_start_match(pTHX_ const regexp *prog, const bool do_utf8, const char *start, const char *end, const char *blurb) + __attribute__nonnull__(pTHX_1) + __attribute__nonnull__(pTHX_3) + __attribute__nonnull__(pTHX_4) + __attribute__nonnull__(pTHX_5); + +# endif #endif #if defined(PERL_IN_DUMP_C) || defined(PERL_DECL_PROT) @@ -3674,6 +3756,7 @@ STATIC void S_debprof(pTHX_ const OP *o) __attribute__nonnull__(pTHX_1); STATIC void S_sequence(pTHX_ const OP *o); +STATIC void S_sequence_tail(pTHX_ const OP *o); STATIC UV S_sequence_num(pTHX_ const OP *o); STATIC SV* S_pm_description(pTHX_ const PMOP *pm) __attribute__nonnull__(pTHX_1); @@ -3799,13 +3882,6 @@ STATIC PTR_TBL_ENT_t * S_ptr_table_find(PTR_TBL_t *tbl, const void *sv) __attribute__nonnull__(2); # endif -STATIC SV * S_find_hash_subscript(pTHX_ HV *hv, SV *val) - __attribute__nonnull__(pTHX_2); - -STATIC I32 S_find_array_subscript(pTHX_ AV *av, SV *val) - __attribute__nonnull__(pTHX_2); - -STATIC SV * S_find_uninit_var(pTHX_ OP *obase, SV *uninit_sv, bool match); #endif #if defined(PERL_IN_TOKE_C) || defined(PERL_DECL_PROT) @@ -3937,11 +4013,15 @@ STATIC void S_strip_return(pTHX_ SV *sv) # endif # if defined(DEBUGGING) STATIC int S_tokereport(pTHX_ I32 rv); +STATIC void S_printbuf(pTHX_ const char* fmt, const char* s) + __attribute__nonnull__(pTHX_1) + __attribute__nonnull__(pTHX_2); + # endif #endif #if defined(PERL_IN_UNIVERSAL_C) || defined(PERL_DECL_PROT) -STATIC bool S_isa_lookup(pTHX_ HV *stash, const char *name, HV *name_stash, int len, int level) +STATIC bool S_isa_lookup(pTHX_ HV *stash, const char *name, const HV * const name_stash, int len, int level) __attribute__nonnull__(pTHX_2); #endif @@ -4021,6 +4101,8 @@ PERL_CALLCONV SV* Perl_sv_setsv_cow(pTHX_ SV* dsv, SV* ssv) #endif +PERL_CALLCONV const char * Perl_PerlIO_context_layers(pTHX_ const char *mode); + #if defined(USE_PERLIO) && !defined(USE_SFIO) PERL_CALLCONV int Perl_PerlIO_close(pTHX_ PerlIO *f); PERL_CALLCONV int Perl_PerlIO_fill(pTHX_ PerlIO *f); @@ -4080,7 +4162,7 @@ PERL_CALLCONV PADLIST* Perl_pad_new(pTHX_ int flags) PERL_CALLCONV void Perl_pad_undef(pTHX_ CV* cv) __attribute__nonnull__(pTHX_1); -PERL_CALLCONV PADOFFSET Perl_pad_add_name(pTHX_ const char *name, HV* typestash, HV* ourstash, bool clone) +PERL_CALLCONV PADOFFSET Perl_pad_add_name(pTHX_ const char *name, HV* typestash, HV* ourstash, bool clone, bool state) __attribute__nonnull__(pTHX_1); PERL_CALLCONV PADOFFSET Perl_pad_add_anon(pTHX_ SV* sv, OPCODE op_type) @@ -4190,7 +4272,14 @@ PERL_CALLCONV SV* Perl_magic_scalarpack(pTHX_ HV* hv, MAGIC* mg) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); -#ifdef PERL_IN_SV_C + +#if defined(PERL_IN_SV_C) || defined(PERL_DECL_PROT) +STATIC SV * S_find_hash_subscript(pTHX_ HV *hv, SV *val) + __attribute__nonnull__(pTHX_2); + +STATIC I32 S_find_array_subscript(pTHX_ AV *av, SV *val) + __attribute__nonnull__(pTHX_2); + STATIC SV* S_find_uninit_var(pTHX_ OP* obase, SV* uninit_sv, bool top); #endif @@ -4319,6 +4408,16 @@ PERL_CALLCONV int Perl_my_sprintf(char *buffer, const char *pat, ...) #endif +PERL_CALLCONV int Perl_my_snprintf(char *buffer, const Size_t len, const char *format, ...) + __attribute__format__(__printf__,3,4) + __attribute__nonnull__(1) + __attribute__nonnull__(3); + +PERL_CALLCONV int Perl_my_vsnprintf(char *buffer, const Size_t len, const char *format, va_list ap) + __attribute__nonnull__(1) + __attribute__nonnull__(3); + + PERL_CALLCONV void Perl_my_clearenv(pTHX); #ifdef PERL_IMPLICIT_CONTEXT @@ -4327,6 +4426,14 @@ PERL_CALLCONV void* Perl_my_cxt_init(pTHX_ int *index, size_t size) #endif +#ifndef HAS_STRLCAT +PERL_CALLCONV Size_t Perl_my_strlcat(char *dst, const char *src, Size_t size); +#endif + +#ifndef HAS_STRLCPY +PERL_CALLCONV Size_t Perl_my_strlcpy(char *dst, const char *src, Size_t size); +#endif + #ifdef PERL_MAD PERL_CALLCONV void Perl_pad_peg(const char* s) __attribute__nonnull__(1);