extra code in pp_concat, Take 2
[p5sagit/p5-mst-13.2.git] / proto.h
diff --git a/proto.h b/proto.h
index a40c23e..0866d7d 100644 (file)
--- a/proto.h
+++ b/proto.h
@@ -2,7 +2,7 @@
  *    proto.h
  *
  *    Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999,
- *    2000, 2001, 2002, 2003, 2004, by Larry Wall and others
+ *    2000, 2001, 2002, 2003, 2004, 2005, by Larry Wall and others
  *
  *    You may distribute under the terms of either the GNU General Public
  *    License or the Artistic License, as specified in the README file.
@@ -56,7 +56,7 @@ PERL_CALLCONV CV*     Perl_gv_handler(pTHX_ HV* stash, I32 id);
 PERL_CALLCONV OP*      Perl_append_elem(pTHX_ I32 optype, OP* head, OP* tail);
 PERL_CALLCONV OP*      Perl_append_list(pTHX_ I32 optype, LISTOP* first, LISTOP* last);
 PERL_CALLCONV I32      Perl_apply(pTHX_ I32 type, SV** mark, SV** sp);
-PERL_CALLCONV void     Perl_apply_attrs_string(pTHX_ char *stashpv, CV *cv, char *attrstr, STRLEN len);
+PERL_CALLCONV void     Perl_apply_attrs_string(pTHX_ const char *stashpv, CV *cv, const char *attrstr, STRLEN len);
 PERL_CALLCONV void     Perl_av_clear(pTHX_ AV* ar);
 PERL_CALLCONV SV*      Perl_av_delete(pTHX_ AV* ar, I32 key, I32 flags);
 PERL_CALLCONV bool     Perl_av_exists(pTHX_ AV* ar, I32 key);
@@ -126,14 +126,14 @@ PERL_CALLCONV int Perl_printf_nocontext(const char* fmt, ...)
 PERL_CALLCONV void     Perl_cv_ckproto(pTHX_ const CV* cv, const GV* gv, const char* p);
 PERL_CALLCONV CV*      Perl_cv_clone(pTHX_ CV* proto);
 PERL_CALLCONV SV*      Perl_cv_const_sv(pTHX_ CV* cv);
-PERL_CALLCONV SV*      Perl_op_const_sv(pTHX_ OP* o, CV* cv);
+PERL_CALLCONV SV*      Perl_op_const_sv(pTHX_ const OP* o, CV* cv);
 PERL_CALLCONV void     Perl_cv_undef(pTHX_ CV* cv);
 PERL_CALLCONV void     Perl_cx_dump(pTHX_ PERL_CONTEXT* cs);
 PERL_CALLCONV SV*      Perl_filter_add(pTHX_ filter_t funcp, SV* datasv);
 PERL_CALLCONV void     Perl_filter_del(pTHX_ filter_t funcp);
 PERL_CALLCONV I32      Perl_filter_read(pTHX_ int idx, SV* buffer, int maxlen);
-PERL_CALLCONV const char**     Perl_get_op_descs(pTHX);
-PERL_CALLCONV const char**     Perl_get_op_names(pTHX);
+PERL_CALLCONV char**   Perl_get_op_descs(pTHX);
+PERL_CALLCONV char**   Perl_get_op_names(pTHX);
 PERL_CALLCONV const char*      Perl_get_no_modify(pTHX);
 PERL_CALLCONV U32*     Perl_get_opargs(pTHX);
 PERL_CALLCONV PPADDR_t*        Perl_get_ppaddr(pTHX);
@@ -142,7 +142,7 @@ PERL_CALLCONV void  Perl_deb(pTHX_ const char* pat, ...)
        __attribute__format__(__printf__,pTHX_1,pTHX_2);
 PERL_CALLCONV void     Perl_vdeb(pTHX_ const char* pat, va_list* args);
 PERL_CALLCONV void     Perl_debprofdump(pTHX);
-PERL_CALLCONV I32      Perl_debop(pTHX_ OP* o);
+PERL_CALLCONV I32      Perl_debop(pTHX_ const OP* o);
 PERL_CALLCONV I32      Perl_debstack(pTHX);
 PERL_CALLCONV I32      Perl_debstackptrs(pTHX);
 PERL_CALLCONV char*    Perl_delimcpy(pTHX_ char* to, const char* toend, const char* from, const char* fromend, int delim, I32* retlen);
@@ -203,7 +203,7 @@ PERL_CALLCONV void  Perl_dump_fds(pTHX_ char* s);
 #endif
 PERL_CALLCONV void     Perl_dump_form(pTHX_ const GV* gv);
 PERL_CALLCONV void     Perl_gv_dump(pTHX_ GV* gv);
-PERL_CALLCONV void     Perl_op_dump(pTHX_ OP* arg);
+PERL_CALLCONV void     Perl_op_dump(pTHX_ const OP* arg);
 PERL_CALLCONV void     Perl_pmop_dump(pTHX_ PMOP* pm);
 PERL_CALLCONV void     Perl_dump_packsubs(pTHX_ const HV* stash);
 PERL_CALLCONV void     Perl_dump_sub(pTHX_ const GV* gv);
@@ -377,7 +377,7 @@ PERL_CALLCONV U32   Perl_magic_len(pTHX_ SV* sv, MAGIC* mg);
 PERL_CALLCONV int      Perl_magic_nextpack(pTHX_ SV* sv, MAGIC* mg, SV* key);
 PERL_CALLCONV U32      Perl_magic_regdata_cnt(pTHX_ SV* sv, MAGIC* mg);
 PERL_CALLCONV int      Perl_magic_regdatum_get(pTHX_ SV* sv, MAGIC* mg);
-PERL_CALLCONV int      Perl_magic_regdatum_set(pTHX_ SV* sv, MAGIC* mg);
+PERL_CALLCONV int      Perl_magic_regdatum_set(pTHX_ SV* sv, MAGIC* mg) __attribute__((noreturn));
 PERL_CALLCONV int      Perl_magic_set(pTHX_ SV* sv, MAGIC* mg);
 PERL_CALLCONV int      Perl_magic_setamagic(pTHX_ SV* sv, MAGIC* mg);
 PERL_CALLCONV int      Perl_magic_setarylen(pTHX_ SV* sv, MAGIC* mg);
@@ -525,7 +525,7 @@ PERL_CALLCONV SV*   Perl_vstringify(pTHX_ SV *vs);
 PERL_CALLCONV int      Perl_vcmp(pTHX_ SV *lvs, SV *rvs);
 PERL_CALLCONV PerlIO*  Perl_nextargv(pTHX_ GV* gv);
 PERL_CALLCONV char*    Perl_ninstr(pTHX_ const char* big, const char* bigend, const char* little, const char* lend);
-PERL_CALLCONV OP*      Perl_oopsCV(pTHX_ OP* o);
+PERL_CALLCONV OP*      Perl_oopsCV(pTHX_ OP* o) __attribute__((noreturn));
 PERL_CALLCONV void     Perl_op_free(pTHX_ OP* arg);
 PERL_CALLCONV void     Perl_package(pTHX_ OP* o);
 PERL_CALLCONV PADOFFSET        Perl_pad_alloc(pTHX_ I32 optype, U32 tmptype);
@@ -624,7 +624,7 @@ PERL_CALLCONV void  Perl_save_shared_pvref(pTHX_ char** str);
 PERL_CALLCONV void     Perl_save_gp(pTHX_ GV* gv, I32 empty);
 PERL_CALLCONV HV*      Perl_save_hash(pTHX_ GV* gv);
 PERL_CALLCONV void     Perl_save_helem(pTHX_ HV* hv, SV *key, SV **sptr);
-PERL_CALLCONV void     Perl_save_hints(pTHX);
+PERL_CALLCONV void     Perl_save_hints(pTHX) __attribute__((noreturn));
 PERL_CALLCONV void     Perl_save_hptr(pTHX_ HV** hptr);
 PERL_CALLCONV void     Perl_save_I16(pTHX_ I16* intp);
 PERL_CALLCONV void     Perl_save_I32(pTHX_ I32* intp);
@@ -644,16 +644,16 @@ PERL_CALLCONV void        Perl_save_re_context(pTHX);
 PERL_CALLCONV void     Perl_save_padsv(pTHX_ PADOFFSET off);
 PERL_CALLCONV void     Perl_save_sptr(pTHX_ SV** sptr);
 PERL_CALLCONV SV*      Perl_save_svref(pTHX_ SV** sptr);
-PERL_CALLCONV SV**     Perl_save_threadsv(pTHX_ PADOFFSET i);
+PERL_CALLCONV SV**     Perl_save_threadsv(pTHX_ PADOFFSET i) __attribute__((noreturn));
 PERL_CALLCONV OP*      Perl_sawparens(pTHX_ OP* o);
 PERL_CALLCONV OP*      Perl_scalar(pTHX_ OP* o);
 PERL_CALLCONV OP*      Perl_scalarkids(pTHX_ OP* o);
 PERL_CALLCONV OP*      Perl_scalarseq(pTHX_ OP* o);
 PERL_CALLCONV OP*      Perl_scalarvoid(pTHX_ OP* o);
-PERL_CALLCONV NV       Perl_scan_bin(pTHX_ char* start, STRLEN len, STRLEN* retlen);
-PERL_CALLCONV NV       Perl_scan_hex(pTHX_ char* start, STRLEN len, STRLEN* retlen);
+PERL_CALLCONV NV       Perl_scan_bin(pTHX_ const char* start, STRLEN len, STRLEN* retlen);
+PERL_CALLCONV NV       Perl_scan_hex(pTHX_ const char* start, STRLEN len, STRLEN* retlen);
 PERL_CALLCONV char*    Perl_scan_num(pTHX_ const char* s, YYSTYPE *lvalp);
-PERL_CALLCONV NV       Perl_scan_oct(pTHX_ char* start, STRLEN len, STRLEN* retlen);
+PERL_CALLCONV NV       Perl_scan_oct(pTHX_ const char* start, STRLEN len, STRLEN* retlen);
 PERL_CALLCONV OP*      Perl_scope(pTHX_ OP* o);
 PERL_CALLCONV char*    Perl_screaminstr(pTHX_ SV* bigsv, SV* littlesv, I32 start_shift, I32 end_shift, I32 *state, I32 last);
 #if !defined(VMS)
@@ -734,7 +734,7 @@ PERL_CALLCONV char* Perl_sv_pvutf8n_force(pTHX_ SV* sv, STRLEN* lp);
 PERL_CALLCONV char*    Perl_sv_pvbyten_force(pTHX_ SV* sv, STRLEN* lp);
 PERL_CALLCONV char*    Perl_sv_recode_to_utf8(pTHX_ SV* sv, SV *encoding);
 PERL_CALLCONV bool     Perl_sv_cat_decode(pTHX_ SV* dsv, SV *encoding, SV *ssv, int *offset, char* tstr, int tlen);
-PERL_CALLCONV const char*      Perl_sv_reftype(pTHX_ const SV* sv, int ob);
+PERL_CALLCONV char*    Perl_sv_reftype(pTHX_ const SV* sv, int ob);
 PERL_CALLCONV void     Perl_sv_replace(pTHX_ SV* sv, SV* nsv);
 PERL_CALLCONV void     Perl_sv_report_used(pTHX);
 PERL_CALLCONV void     Perl_sv_reset(pTHX_ const char* s, HV* stash);
@@ -858,11 +858,11 @@ PERL_CALLCONV void        Perl_dump_vindent(pTHX_ I32 level, PerlIO *file, const char*
 PERL_CALLCONV void     Perl_do_gv_dump(pTHX_ I32 level, PerlIO *file, const char *name, GV *sv);
 PERL_CALLCONV void     Perl_do_gvgv_dump(pTHX_ I32 level, PerlIO *file, const char *name, GV *sv);
 PERL_CALLCONV void     Perl_do_hv_dump(pTHX_ I32 level, PerlIO *file, const char *name, HV *sv);
-PERL_CALLCONV void     Perl_do_magic_dump(pTHX_ I32 level, PerlIO *file, MAGIC *mg, I32 nest, I32 maxnest, bool dumpops, STRLEN pvlim);
-PERL_CALLCONV void     Perl_do_op_dump(pTHX_ I32 level, PerlIO *file, OP *o);
-PERL_CALLCONV void     Perl_do_pmop_dump(pTHX_ I32 level, PerlIO *file, PMOP *pm);
+PERL_CALLCONV void     Perl_do_magic_dump(pTHX_ I32 level, PerlIO *file, const MAGIC *mg, I32 nest, I32 maxnest, bool dumpops, STRLEN pvlim);
+PERL_CALLCONV void     Perl_do_op_dump(pTHX_ I32 level, PerlIO *file, const OP *o);
+PERL_CALLCONV void     Perl_do_pmop_dump(pTHX_ I32 level, PerlIO *file, const PMOP *pm);
 PERL_CALLCONV void     Perl_do_sv_dump(pTHX_ I32 level, PerlIO *file, SV *sv, I32 nest, I32 maxnest, bool dumpops, STRLEN pvlim);
-PERL_CALLCONV void     Perl_magic_dump(pTHX_ MAGIC *mg);
+PERL_CALLCONV void     Perl_magic_dump(pTHX_ const MAGIC *mg);
 PERL_CALLCONV void     Perl_reginitcolors(pTHX);
 PERL_CALLCONV char*    Perl_sv_2pv_nolen(pTHX_ SV* sv);
 PERL_CALLCONV char*    Perl_sv_2pvutf8_nolen(pTHX_ SV* sv);
@@ -881,7 +881,7 @@ PERL_CALLCONV SV*   Perl_sv_rvweaken(pTHX_ SV *sv);
 PERL_CALLCONV int      Perl_magic_killbackrefs(pTHX_ SV *sv, MAGIC *mg);
 PERL_CALLCONV OP*      Perl_newANONATTRSUB(pTHX_ I32 floor, OP *proto, OP *attrs, OP *block);
 PERL_CALLCONV CV*      Perl_newATTRSUB(pTHX_ I32 floor, OP *o, OP *proto, OP *attrs, OP *block);
-PERL_CALLCONV void     Perl_newMYSUB(pTHX_ I32 floor, OP *o, OP *proto, OP *attrs, OP *block);
+PERL_CALLCONV void     Perl_newMYSUB(pTHX_ I32 floor, OP *o, OP *proto, OP *attrs, OP *block) __attribute__((noreturn));
 PERL_CALLCONV OP *     Perl_my_attrs(pTHX_ OP *o, OP *attrs);
 PERL_CALLCONV void     Perl_boot_core_xsutils(pTHX);
 #if defined(USE_ITHREADS)
@@ -896,6 +896,7 @@ PERL_CALLCONV DIR*  Perl_dirp_dup(pTHX_ DIR* dp);
 PERL_CALLCONV GP*      Perl_gp_dup(pTHX_ GP* gp, CLONE_PARAMS* param);
 PERL_CALLCONV MAGIC*   Perl_mg_dup(pTHX_ MAGIC* mg, CLONE_PARAMS* param);
 PERL_CALLCONV SV*      Perl_sv_dup(pTHX_ SV* sstr, CLONE_PARAMS* param);
+PERL_CALLCONV void     Perl_rvpv_dup(pTHX_ SV* dstr, SV *sstr, CLONE_PARAMS* param);
 #if defined(HAVE_INTERP_INTERN)
 PERL_CALLCONV void     Perl_sys_intern_dup(pTHX_ struct interp_intern* src, struct interp_intern* dst);
 #endif
@@ -911,8 +912,8 @@ PERL_CALLCONV void  Perl_sys_intern_clear(pTHX);
 PERL_CALLCONV void     Perl_sys_intern_init(pTHX);
 #endif
 
-PERL_CALLCONV const char *     Perl_custom_op_name(pTHX_ const OP* op);
-PERL_CALLCONV const char *     Perl_custom_op_desc(pTHX_ const OP* op);
+PERL_CALLCONV char *   Perl_custom_op_name(pTHX_ const OP* op);
+PERL_CALLCONV char *   Perl_custom_op_desc(pTHX_ const OP* op);
 
 #if defined(PERL_COPY_ON_WRITE)
 PERL_CALLCONV int      Perl_sv_release_IVX(pTHX_ SV *sv);
@@ -949,7 +950,7 @@ STATIC HEK* S_save_hek_flags(pTHX_ const char *str, I32 len, U32 hash, int flags
 STATIC void    S_hv_magic_check(pTHX_ HV *hv, bool *needs_copy, bool *needs_store);
 STATIC void    S_unshare_hek_or_pvn(pTHX_ HEK* hek, const char* sv, I32 len, U32 hash);
 STATIC HEK*    S_share_hek_flags(pTHX_ const char* sv, I32 len, U32 hash, int flags);
-STATIC void    S_hv_notallowed(pTHX_ int flags, const char *key, I32 klen, const char *msg);
+STATIC void    S_hv_notallowed(pTHX_ int flags, const char *key, I32 klen, const char *msg) __attribute__((noreturn));
 #endif
 
 #if defined(PERL_IN_MG_C) || defined(PERL_DECL_PROT)
@@ -959,11 +960,11 @@ STATIC int        S_magic_methcall(pTHX_ SV *sv, const MAGIC *mg, const char *meth, I32
 #endif
 
 #if defined(PERL_IN_OP_C) || defined(PERL_DECL_PROT)
-STATIC I32     S_list_assignment(pTHX_ OP *o);
-STATIC void    S_bad_type(pTHX_ I32 n, const char *t, const char *name, OP *kid);
+STATIC I32     S_list_assignment(pTHX_ const OP *o);
+STATIC void    S_bad_type(pTHX_ I32 n, const char *t, const char *name, const OP *kid);
 STATIC void    S_cop_free(pTHX_ COP *cop);
 STATIC OP*     S_modkids(pTHX_ OP *o, I32 type);
-STATIC void    S_no_bareword_allowed(pTHX_ OP *o);
+STATIC void    S_no_bareword_allowed(pTHX_ const OP *o);
 STATIC OP*     S_no_fh_allowed(pTHX_ OP *o);
 STATIC OP*     S_scalarboolean(pTHX_ OP *o);
 STATIC OP*     S_too_few_arguments(pTHX_ OP *o, const char* name);
@@ -971,9 +972,9 @@ STATIC OP*  S_too_many_arguments(pTHX_ OP *o, const char* name);
 STATIC OP*     S_newDEFSVOP(pTHX);
 STATIC OP*     S_new_logop(pTHX_ I32 type, I32 flags, OP **firstp, OP **otherp);
 STATIC void    S_simplify_sort(pTHX_ OP *o);
-STATIC bool    S_is_handle_constructor(pTHX_ OP *o, I32 argnum);
+STATIC bool    S_is_handle_constructor(pTHX_ const OP *o, I32 argnum);
 STATIC char*   S_gv_ename(pTHX_ GV *gv);
-STATIC bool    S_scalar_mod_type(pTHX_ OP *o, I32 type);
+STATIC bool    S_scalar_mod_type(pTHX_ const OP *o, I32 type);
 STATIC OP *    S_my_kid(pTHX_ OP *o, OP *attrs, OP **imopsp);
 STATIC OP *    S_dup_attrlist(pTHX_ OP *o);
 STATIC void    S_apply_attrs(pTHX_ HV *stash, SV *target, OP *attrs, bool for_my);
@@ -987,7 +988,7 @@ PERL_CALLCONV void  Perl_Slab_Free(pTHX_ void *op);
 #if defined(PERL_IN_PERL_C) || defined(PERL_DECL_PROT)
 STATIC void    S_find_beginning(pTHX);
 STATIC void    S_forbid_setid(pTHX_ const char * s);
-STATIC void    S_incpush(pTHX_ const char *, int, int, int, int);
+STATIC void    S_incpush(pTHX_ const char *dir, bool addsubdirs, bool addoldvers, bool usesep, bool canrelocate);
 STATIC void    S_init_interp(pTHX);
 STATIC void    S_init_ids(pTHX);
 STATIC void    S_init_lexer(pTHX);
@@ -997,15 +998,15 @@ STATIC void       S_init_postdump_symbols(pTHX_ int, char **, char **);
 STATIC void    S_init_predump_symbols(pTHX);
 STATIC void    S_my_exit_jump(pTHX) __attribute__((noreturn));
 STATIC void    S_nuke_stacks(pTHX);
-STATIC void    S_open_script(pTHX_ char *, bool, SV *);
-STATIC void    S_usage(pTHX_ const char *);
+STATIC void    S_open_script(pTHX_ const char *scriptname, bool dosearch, SV *sv);
+STATIC void    S_usage(pTHX_ const char *name);
 STATIC void    S_validate_suid(pTHX_ const char *validarg, const char *scriptname);
 #  if defined(IAMSUID)
 STATIC int     S_fd_on_nosuid_fs(pTHX_ int fd);
 #  endif
 STATIC void*   S_parse_body(pTHX_ char **env, XSINIT_t xsinit);
-STATIC void*   S_run_body(pTHX_ I32 oldscope);
-STATIC void    S_call_body(pTHX_ const OP *myop, int is_eval);
+STATIC void    S_run_body(pTHX_ I32 oldscope) __attribute__((noreturn));
+STATIC void    S_call_body(pTHX_ const OP *myop, bool is_eval);
 STATIC void*   S_call_list_body(pTHX_ CV *cv);
 #endif
 
@@ -1032,14 +1033,14 @@ STATIC OP*      S_dofindlabel(pTHX_ OP *o, const char *label, OP **opstack, OP **opli
 STATIC OP*     S_doparseform(pTHX_ SV *sv);
 STATIC bool    S_num_overflow(NV value, I32 fldsize, I32 frcsize);
 STATIC I32     S_dopoptoeval(pTHX_ I32 startingblock);
-STATIC I32     S_dopoptolabel(pTHX_ char *label);
+STATIC I32     S_dopoptolabel(pTHX_ const char *label);
 STATIC I32     S_dopoptoloop(pTHX_ I32 startingblock);
 STATIC I32     S_dopoptosub(pTHX_ I32 startingblock);
 STATIC I32     S_dopoptosub_at(pTHX_ PERL_CONTEXT* cxstk, I32 startingblock);
 STATIC void    S_save_lines(pTHX_ AV *array, SV *sv);
 STATIC OP*     S_doeval(pTHX_ int gimme, OP** startop, CV* outside, U32 seq);
 STATIC PerlIO *        S_doopen_pm(pTHX_ const char *name, const char *mode);
-STATIC bool    S_path_is_absolute(pTHX_ char *name);
+STATIC bool    S_path_is_absolute(pTHX_ const char *name);
 #endif
 
 #if defined(PERL_IN_PP_HOT_C) || defined(PERL_DECL_PROT)
@@ -1105,7 +1106,7 @@ STATIC U8*        S_reghop(pTHX_ U8 *pos, I32 off);
 STATIC U8*     S_reghop3(pTHX_ U8 *pos, I32 off, U8 *lim);
 STATIC U8*     S_reghopmaybe(pTHX_ U8 *pos, I32 off);
 STATIC U8*     S_reghopmaybe3(pTHX_ U8 *pos, I32 off, U8 *lim);
-STATIC char*   S_find_byclass(pTHX_ regexp * prog, regnode *c, char *s, char *strend, char *startpos, I32 norun);
+STATIC char*   S_find_byclass(pTHX_ regexp * prog, regnode *c, char *s, char *strend, I32 norun);
 STATIC void    S_to_utf8_substr(pTHX_ regexp * prog);
 STATIC void    S_to_byte_substr(pTHX_ regexp * prog);
 #endif
@@ -1207,7 +1208,7 @@ STATIC void       S_incline(pTHX_ char *s);
 STATIC int     S_intuit_method(pTHX_ char *s, GV *gv);
 STATIC int     S_intuit_more(pTHX_ char *s);
 STATIC I32     S_lop(pTHX_ I32 f, int x, char *s);
-STATIC void    S_missingterm(pTHX_ char *s);
+STATIC void    S_missingterm(pTHX_ char *s) __attribute__((noreturn));
 STATIC void    S_no_op(pTHX_ const char *what, char *s);
 STATIC void    S_set_csh(pTHX);
 STATIC I32     S_sublex_done(pTHX);
@@ -1309,6 +1310,7 @@ PERL_CALLCONV void        Perl_do_dump_pad(pTHX_ I32 level, PerlIO *file, PADLIST *padl
 PERL_CALLCONV void     Perl_pad_fixup_inner_anons(pTHX_ PADLIST *padlist, CV *old_cv, CV *new_cv);
 
 PERL_CALLCONV void     Perl_pad_push(pTHX_ PADLIST *padlist, int depth);
+PERL_CALLCONV HV*      Perl_pad_compname_type(pTHX_ PADOFFSET po);
 
 #if defined(PERL_IN_PAD_C) || defined(PERL_DECL_PROT)
 STATIC PADOFFSET       S_pad_findlex(pTHX_ const char *name, const CV* cv, U32 seq, int warn, SV** out_capture, SV** out_name_sv, int *out_flags);