# define EXTCONST globalref
# define dEXTCONST globaldef {"$GLOBAL_RO_VARS"} readonly
#else
- # if defined(WIN32) && !defined(__GNUC__) && !defined(PERL_OBJECT)
-# if defined(WIN32) && !defined(PERL_STATIC_SYMS) && !defined(__GNUC__)
++# if defined(WIN32) && !defined(PERL_STATIC_SYMS) && !defined(__GNUC__) && !defined(PERL_OBJECT)
# ifdef PERLDLL
# define EXT extern __declspec(dllexport)
# define dEXT
--- /dev/null
+#ifndef __ObjXSub_h__
+#define __ObjXSub_h__
+
+
+/* Varibles */
+#undef Argv
+#define Argv pPerl->Perl_Argv
+#undef Cmd
+#define Cmd pPerl->Perl_Cmd
+#undef DBcv
+#define DBcv pPerl->Perl_DBcv
+#undef DBgv
+#define DBgv pPerl->Perl_DBgv
+#undef DBline
+#define DBline pPerl->Perl_DBline
+#undef DBsignal
+#define DBsignal pPerl->Perl_DBsignal
+#undef DBsingle
+#define DBsingle pPerl->Perl_DBsingle
+#undef DBsub
+#define DBsub pPerl->Perl_DBsub
+#undef DBtrace
+#define DBtrace pPerl->Perl_DBtrace
+#undef No
+#define No pPerl->Perl_No
+#undef Sv
+#define Sv pPerl->Perl_Sv
+#undef Xpv
+#define Xpv pPerl->Perl_Xpv
+#undef Yes
+#define Yes pPerl->Perl_Yes
+#undef amagic_generation
+#define amagic_generation pPerl->Perl_amagic_generation
+#undef ampergv
+#define ampergv pPerl->Perl_ampergv
+#undef an
+#define an pPerl->Perl_an
+#undef archpat_auto
+#define archpat_auto pPerl->Perl_archpat_auto
+#undef argvgv
+#define argvgv pPerl->Perl_argvgv
+#undef argvoutgv
+#define argvoutgv pPerl->Perl_argvoutgv
+#undef basetime
+#define basetime pPerl->Perl_basetime
+#undef beginav
+#define beginav pPerl->Perl_beginav
+#undef bodytarget
+#define bodytarget pPerl->Perl_bodytarget
+#undef bostr
+#define bostr pPerl->Perl_bostr
+#undef bufend
+#define bufend pPerl->Perl_bufend
+#undef bufptr
+#define bufptr pPerl->Perl_bufptr
+#undef cddir
+#define cddir pPerl->Perl_cddir
+#undef chopset
+#define chopset pPerl->Perl_chopset
+#undef collation_ix
+#define collation_ix pPerl->Perl_collation_ix
+#undef collation_name
+#define collation_name pPerl->Perl_collation_name
+#undef collation_standard
+#define collation_standard pPerl->Perl_collation_standard
+#undef collxfrm_base
+#define collxfrm_base pPerl->Perl_collxfrm_base
+#undef collxfrm_mult
+#define collxfrm_mult pPerl->Perl_collxfrm_mult
+#undef colors
+#define colors pPerl->Perl_colors
+#undef colorset
+#define colorset pPerl->Perl_colorset
+#undef compcv
+#define compcv pPerl->Perl_compcv
+#undef compiling
+#define compiling pPerl->Perl_compiling
+#undef comppad
+#define comppad pPerl->Perl_comppad
+#undef comppad_name
+#define comppad_name pPerl->Perl_comppad_name
+#undef comppad_name_fill
+#define comppad_name_fill pPerl->Perl_comppad_name_fill
+#undef comppad_name_floor
+#define comppad_name_floor pPerl->Perl_comppad_name_floor
+#undef cop_seqmax
+#define cop_seqmax pPerl->Perl_cop_seqmax
+#undef copline
+#define copline pPerl->Perl_copline
+#undef cryptseen
+#define cryptseen pPerl->Perl_cryptseen
+#undef cshlen
+#define cshlen pPerl->Perl_cshlen
+#undef cshname
+#define cshname pPerl->Perl_cshname
+#undef curcop
+#define curcop pPerl->Perl_curcop
+#undef curcopdb
+#define curcopdb pPerl->Perl_curcopdb
+#undef curinterp
+#define curinterp pPerl->Perl_curinterp
+#undef curpad
+#define curpad pPerl->Perl_curpad
+#undef curpm
+#define curpm pPerl->Perl_curpm
+#undef curstack
+#define curstack pPerl->Perl_curstack
++#undef curstackinfo
++#define curstackinfo pPerl->Perl_curstackinfo
+#undef curstash
+#define curstash pPerl->Perl_curstash
+#undef curstname
+#define curstname pPerl->Perl_curstname
+#undef curthr
+#define curthr pPerl->Perl_curthr
- #undef cxstack
- #define cxstack pPerl->Perl_cxstack
- #undef cxstack_ix
- #define cxstack_ix pPerl->Perl_cxstack_ix
- #undef cxstack_max
- #define cxstack_max pPerl->Perl_cxstack_max
+#undef dbargs
+#define dbargs pPerl->Perl_dbargs
+#undef debdelim
+#define debdelim pPerl->Perl_debdelim
+#undef debname
+#define debname pPerl->Perl_debname
+#undef debstash
+#define debstash pPerl->Perl_debstash
+#undef debug
+#define debug pPerl->Perl_debug
+#undef defgv
+#define defgv pPerl->Perl_defgv
+#undef defoutgv
+#define defoutgv pPerl->Perl_defoutgv
+#undef defstash
+#define defstash pPerl->Perl_defstash
+#undef delaymagic
+#define delaymagic pPerl->Perl_delaymagic
+#undef diehook
+#define diehook pPerl->Perl_diehook
+#undef dirty
+#define dirty pPerl->Perl_dirty
+#undef dlevel
+#define dlevel pPerl->Perl_dlevel
+#undef dlmax
+#define dlmax pPerl->Perl_dlmax
+#undef do_undump
+#define do_undump pPerl->Perl_do_undump
+#undef doextract
+#define doextract pPerl->Perl_doextract
+#undef doswitches
+#define doswitches pPerl->Perl_doswitches
+#undef dowarn
+#define dowarn pPerl->Perl_dowarn
+#undef dumplvl
+#define dumplvl pPerl->Perl_dumplvl
+#undef e_fp
+#define e_fp pPerl->Perl_e_fp
+#undef e_tmpname
+#define e_tmpname pPerl->Perl_e_tmpname
+#undef egid
+#define egid pPerl->Perl_egid
+#undef endav
+#define endav pPerl->Perl_endav
+#undef envgv
+#define envgv pPerl->Perl_envgv
+#undef errgv
+#define errgv pPerl->Perl_errgv
+#undef error_count
+#define error_count pPerl->Perl_error_count
+#undef euid
+#define euid pPerl->Perl_euid
+#undef eval_cond
+#define eval_cond pPerl->Perl_eval_cond
+#undef eval_mutex
+#define eval_mutex pPerl->Perl_eval_mutex
+#undef eval_owner
+#define eval_owner pPerl->Perl_eval_owner
+#undef eval_root
+#define eval_root pPerl->Perl_eval_root
+#undef eval_start
+#define eval_start pPerl->Perl_eval_start
+#undef evalseq
+#define evalseq pPerl->Perl_evalseq
+#undef expect
+#define expect pPerl->Perl_expect
+#undef extralen
+#define extralen pPerl->Perl_extralen
+#undef fdpid
+#define fdpid pPerl->Perl_fdpid
+#undef filemode
+#define filemode pPerl->Perl_filemode
+#undef firstgv
+#define firstgv pPerl->Perl_firstgv
+#undef forkprocess
+#define forkprocess pPerl->Perl_forkprocess
+#undef formfeed
+#define formfeed pPerl->Perl_formfeed
+#undef formtarget
+#define formtarget pPerl->Perl_formtarget
+#undef generation
+#define generation pPerl->Perl_generation
+#undef gensym
+#define gensym pPerl->Perl_gensym
+#undef gid
+#define gid pPerl->Perl_gid
+#undef globalstash
+#define globalstash pPerl->Perl_globalstash
+#undef he_root
+#define he_root pPerl->Perl_he_root
+#undef hexdigit
+#define hexdigit pPerl->Perl_hexdigit
+#undef hints
+#define hints pPerl->Perl_hints
+#undef in_clean_all
+#define in_clean_all pPerl->Perl_in_clean_all
+#undef in_clean_objs
+#define in_clean_objs pPerl->Perl_in_clean_objs
+#undef in_eval
+#define in_eval pPerl->Perl_in_eval
+#undef in_my
+#define in_my pPerl->Perl_in_my
+#undef in_my_stash
+#define in_my_stash pPerl->Perl_in_my_stash
+#undef incgv
+#define incgv pPerl->Perl_incgv
+#undef initav
+#define initav pPerl->Perl_initav
+#undef inplace
+#define inplace pPerl->Perl_inplace
+#undef last_in_gv
+#define last_in_gv pPerl->Perl_last_in_gv
+#undef last_lop
+#define last_lop pPerl->Perl_last_lop
+#undef last_lop_op
+#define last_lop_op pPerl->Perl_last_lop_op
+#undef last_uni
+#define last_uni pPerl->Perl_last_uni
+#undef lastfd
+#define lastfd pPerl->Perl_lastfd
+#undef lastgotoprobe
+#define lastgotoprobe pPerl->Perl_lastgotoprobe
+#undef lastscream
+#define lastscream pPerl->Perl_lastscream
+#undef lastsize
+#define lastsize pPerl->Perl_lastsize
+#undef lastspbase
+#define lastspbase pPerl->Perl_lastspbase
+#undef laststatval
+#define laststatval pPerl->Perl_laststatval
+#undef laststype
+#define laststype pPerl->Perl_laststype
+#undef leftgv
+#define leftgv pPerl->Perl_leftgv
+#undef lex_brackets
+#define lex_brackets pPerl->Perl_lex_brackets
+#undef lex_brackstack
+#define lex_brackstack pPerl->Perl_lex_brackstack
+#undef lex_casemods
+#define lex_casemods pPerl->Perl_lex_casemods
+#undef lex_casestack
+#define lex_casestack pPerl->Perl_lex_casestack
+#undef lex_defer
+#define lex_defer pPerl->Perl_lex_defer
+#undef lex_dojoin
+#define lex_dojoin pPerl->Perl_lex_dojoin
+#undef lex_expect
+#define lex_expect pPerl->Perl_lex_expect
+#undef lex_fakebrack
+#define lex_fakebrack pPerl->Perl_lex_fakebrack
+#undef lex_formbrack
+#define lex_formbrack pPerl->Perl_lex_formbrack
+#undef lex_inpat
+#define lex_inpat pPerl->Perl_lex_inpat
+#undef lex_inwhat
+#define lex_inwhat pPerl->Perl_lex_inwhat
+#undef lex_op
+#define lex_op pPerl->Perl_lex_op
+#undef lex_repl
+#define lex_repl pPerl->Perl_lex_repl
+#undef lex_starts
+#define lex_starts pPerl->Perl_lex_starts
+#undef lex_state
+#define lex_state pPerl->Perl_lex_state
+#undef lex_stuff
+#define lex_stuff pPerl->Perl_lex_stuff
+#undef lineary
+#define lineary pPerl->Perl_lineary
+#undef linestart
+#define linestart pPerl->Perl_linestart
+#undef linestr
+#define linestr pPerl->Perl_linestr
+#undef localizing
+#define localizing pPerl->Perl_localizing
+#undef localpatches
+#define localpatches pPerl->Perl_localpatches
+#undef main_cv
+#define main_cv pPerl->Perl_main_cv
+#undef main_root
+#define main_root pPerl->Perl_main_root
+#undef main_start
+#define main_start pPerl->Perl_main_start
+#undef mainstack
+#define mainstack pPerl->Perl_mainstack
+#undef malloc_mutex
+#define malloc_mutex pPerl->Perl_malloc_mutex
+#undef markstack
+#define markstack pPerl->Perl_markstack
+#undef markstack_max
+#define markstack_max pPerl->Perl_markstack_max
+#undef markstack_ptr
+#define markstack_ptr pPerl->Perl_markstack_ptr
+#undef max_intro_pending
+#define max_intro_pending pPerl->Perl_max_intro_pending
+#undef maxo
+#define maxo pPerl->Perl_maxo
+#undef maxscream
+#define maxscream pPerl->Perl_maxscream
+#undef maxsysfd
+#define maxsysfd pPerl->Perl_maxsysfd
+#undef mess_sv
+#define mess_sv pPerl->Perl_mess_sv
+#undef mh
+#define mh pPerl->Perl_mh
+#undef min_intro_pending
+#define min_intro_pending pPerl->Perl_min_intro_pending
+#undef minus_F
+#define minus_F pPerl->Perl_minus_F
+#undef minus_a
+#define minus_a pPerl->Perl_minus_a
+#undef minus_c
+#define minus_c pPerl->Perl_minus_c
+#undef minus_l
+#define minus_l pPerl->Perl_minus_l
+#undef minus_n
+#define minus_n pPerl->Perl_minus_n
+#undef minus_p
+#define minus_p pPerl->Perl_minus_p
+#undef modcount
+#define modcount pPerl->Perl_modcount
+#undef multi_close
+#define multi_close pPerl->Perl_multi_close
+#undef multi_end
+#define multi_end pPerl->Perl_multi_end
+#undef multi_open
+#define multi_open pPerl->Perl_multi_open
+#undef multi_start
+#define multi_start pPerl->Perl_multi_start
+#undef multiline
+#define multiline pPerl->Perl_multiline
+#undef mystrk
+#define mystrk pPerl->Perl_mystrk
+#undef na
+#define na pPerl->Perl_na
+#undef nexttoke
+#define nexttoke pPerl->Perl_nexttoke
+#undef nexttype
+#define nexttype pPerl->Perl_nexttype
+#undef nextval
+#define nextval pPerl->Perl_nextval
+#undef nice_chunk
+#define nice_chunk pPerl->Perl_nice_chunk
+#undef nice_chunk_size
+#define nice_chunk_size pPerl->Perl_nice_chunk_size
+#undef nomemok
+#define nomemok pPerl->Perl_nomemok
+#undef nrs
+#define nrs pPerl->Perl_nrs
+#undef nthreads
+#define nthreads pPerl->Perl_nthreads
+#undef nthreads_cond
+#define nthreads_cond pPerl->Perl_nthreads_cond
+#undef numeric_local
+#define numeric_local pPerl->Perl_numeric_local
+#undef numeric_name
+#define numeric_name pPerl->Perl_numeric_name
+#undef numeric_standard
+#define numeric_standard pPerl->Perl_numeric_standard
+#undef ofmt
+#define ofmt pPerl->Perl_ofmt
+#undef ofs
+#define ofs pPerl->Perl_ofs
+#undef ofslen
+#define ofslen pPerl->Perl_ofslen
+#undef oldbufptr
+#define oldbufptr pPerl->Perl_oldbufptr
+#undef oldlastpm
+#define oldlastpm pPerl->Perl_oldlastpm
+#undef oldname
+#define oldname pPerl->Perl_oldname
+#undef oldoldbufptr
+#define oldoldbufptr pPerl->Perl_oldoldbufptr
+#undef op
+#define op pPerl->Perl_op
+#undef op_mask
+#define op_mask pPerl->Perl_op_mask
+#undef op_seqmax
+#define op_seqmax pPerl->Perl_op_seqmax
+#undef opsave
+#define opsave pPerl->Perl_opsave
+#undef origalen
+#define origalen pPerl->Perl_origalen
+#undef origargc
+#define origargc pPerl->Perl_origargc
+#undef origargv
+#define origargv pPerl->Perl_origargv
+#undef origenviron
+#define origenviron pPerl->Perl_origenviron
+#undef origfilename
+#define origfilename pPerl->Perl_origfilename
+#undef ors
+#define ors pPerl->Perl_ors
+#undef orslen
+#define orslen pPerl->Perl_orslen
+#undef osname
+#define osname pPerl->Perl_osname
+#undef pad_reset_pending
+#define pad_reset_pending pPerl->Perl_pad_reset_pending
+#undef padix
+#define padix pPerl->Perl_padix
+#undef padix_floor
+#define padix_floor pPerl->Perl_padix_floor
+#undef parsehook
+#define parsehook pPerl->Perl_parsehook
+#undef patchlevel
+#define patchlevel pPerl->Perl_patchlevel
+#undef patleave
+#define patleave pPerl->Perl_patleave
+#undef pending_ident
+#define pending_ident pPerl->Perl_pending_ident
+#undef perl_destruct_level
+#define perl_destruct_level pPerl->Perl_perl_destruct_level
+#undef perldb
+#define perldb pPerl->Perl_perldb
+#undef pidstatus
+#define pidstatus pPerl->Perl_pidstatus
+#undef preambleav
+#define preambleav pPerl->Perl_preambleav
+#undef preambled
+#define preambled pPerl->Perl_preambled
+#undef preprocess
+#define preprocess pPerl->Perl_preprocess
+#undef profiledata
+#define profiledata pPerl->Perl_profiledata
+#undef reg_eval_set
+#define reg_eval_set pPerl->Perl_reg_eval_set
+#undef reg_flags
+#define reg_flags pPerl->Perl_reg_flags
+#undef reg_start_tmp
+#define reg_start_tmp pPerl->Perl_reg_start_tmp
+#undef reg_start_tmpl
+#define reg_start_tmpl pPerl->Perl_reg_start_tmpl
+#undef regbol
+#define regbol pPerl->Perl_regbol
+#undef regcc
+#define regcc pPerl->Perl_regcc
+#undef regcode
+#define regcode pPerl->Perl_regcode
+#undef regdata
+#define regdata pPerl->Perl_regdata
+#undef regdummy
+#define regdummy pPerl->Perl_regdummy
+#undef regendp
+#define regendp pPerl->Perl_regendp
+#undef regeol
+#define regeol pPerl->Perl_regeol
+#undef regflags
+#define regflags pPerl->Perl_regflags
+#undef regindent
+#define regindent pPerl->Perl_regindent
+#undef reginput
+#define reginput pPerl->Perl_reginput
+#undef reglastparen
+#define reglastparen pPerl->Perl_reglastparen
+#undef regnarrate
+#define regnarrate pPerl->Perl_regnarrate
+#undef regnaughty
+#define regnaughty pPerl->Perl_regnaughty
+#undef regnpar
+#define regnpar pPerl->Perl_regnpar
+#undef regparse
+#define regparse pPerl->Perl_regparse
+#undef regprecomp
+#define regprecomp pPerl->Perl_regprecomp
+#undef regprev
+#define regprev pPerl->Perl_regprev
+#undef regprogram
+#define regprogram pPerl->Perl_regprogram
+#undef regsawback
+#define regsawback pPerl->Perl_regsawback
+#undef regseen
+#define regseen pPerl->Perl_regseen
+#undef regsize
+#define regsize pPerl->Perl_regsize
+#undef regstartp
+#define regstartp pPerl->Perl_regstartp
+#undef regtill
+#define regtill pPerl->Perl_regtill
+#undef regxend
+#define regxend pPerl->Perl_regxend
+#undef restartop
+#define restartop pPerl->Perl_restartop
+#undef retstack
+#define retstack pPerl->Perl_retstack
+#undef retstack_ix
+#define retstack_ix pPerl->Perl_retstack_ix
+#undef retstack_max
+#define retstack_max pPerl->Perl_retstack_max
+#undef rightgv
+#define rightgv pPerl->Perl_rightgv
+#undef rs
+#define rs pPerl->Perl_rs
+#undef rsfp
+#define rsfp pPerl->Perl_rsfp
+#undef rsfp_filters
+#define rsfp_filters pPerl->Perl_rsfp_filters
+#undef runops
+#define runops pPerl->Perl_runops
+#undef rx
+#define rx pPerl->Perl_rx
+#undef savestack
+#define savestack pPerl->Perl_savestack
+#undef savestack_ix
+#define savestack_ix pPerl->Perl_savestack_ix
+#undef savestack_max
+#define savestack_max pPerl->Perl_savestack_max
+#undef sawampersand
+#define sawampersand pPerl->Perl_sawampersand
+#undef sawstudy
+#define sawstudy pPerl->Perl_sawstudy
+#undef sawvec
+#define sawvec pPerl->Perl_sawvec
+#undef scopestack
+#define scopestack pPerl->Perl_scopestack
+#undef scopestack_ix
+#define scopestack_ix pPerl->Perl_scopestack_ix
+#undef scopestack_max
+#define scopestack_max pPerl->Perl_scopestack_max
+#undef screamfirst
+#define screamfirst pPerl->Perl_screamfirst
+#undef screamnext
+#define screamnext pPerl->Perl_screamnext
+#undef scrgv
+#define scrgv pPerl->Perl_scrgv
+#undef secondgv
+#define secondgv pPerl->Perl_secondgv
+#undef seen_zerolen
+#define seen_zerolen pPerl->Perl_seen_zerolen
+#undef sh_path
+#define sh_path pPerl->Perl_sh_path
+#undef siggv
+#define siggv pPerl->Perl_siggv
+#undef sighandlerp
+#define sighandlerp pPerl->Perl_sighandlerp
- #undef signalstack
- #define signalstack pPerl->Perl_signalstack
+#undef sortcop
+#define sortcop pPerl->Perl_sortcop
+#undef sortcxix
+#define sortcxix pPerl->Perl_sortcxix
- #undef sortstack
- #define sortstack pPerl->Perl_sortstack
+#undef sortstash
+#define sortstash pPerl->Perl_sortstash
+#undef splitstr
+#define splitstr pPerl->Perl_splitstr
+#undef stack_base
+#define stack_base pPerl->Perl_stack_base
+#undef stack_max
+#define stack_max pPerl->Perl_stack_max
+#undef stack_sp
+#define stack_sp pPerl->Perl_stack_sp
+#undef start_env
+#define start_env pPerl->Perl_start_env
+#undef statbuf
+#define statbuf pPerl->Perl_statbuf
+#undef statcache
+#define statcache pPerl->Perl_statcache
+#undef statgv
+#define statgv pPerl->Perl_statgv
+#undef statname
+#define statname pPerl->Perl_statname
+#undef statusvalue
+#define statusvalue pPerl->Perl_statusvalue
+#undef statusvalue_vms
+#define statusvalue_vms pPerl->Perl_statusvalue_vms
+#undef stdingv
+#define stdingv pPerl->Perl_stdingv
+#undef strchop
+#define strchop pPerl->Perl_strchop
+#undef strtab
+#define strtab pPerl->Perl_strtab
+#undef sub_generation
+#define sub_generation pPerl->Perl_sub_generation
+#undef sublex_info
+#define sublex_info pPerl->Perl_sublex_info
+#undef subline
+#define subline pPerl->Perl_subline
+#undef subname
+#define subname pPerl->Perl_subname
+#undef sv_arenaroot
+#define sv_arenaroot pPerl->Perl_sv_arenaroot
+#undef sv_count
+#define sv_count pPerl->Perl_sv_count
+#undef sv_mutex
+#define sv_mutex pPerl->Perl_sv_mutex
+#undef sv_no
+#define sv_no pPerl->Perl_sv_no
+#undef sv_objcount
+#define sv_objcount pPerl->Perl_sv_objcount
+#undef sv_root
+#define sv_root pPerl->Perl_sv_root
+#undef sv_undef
+#define sv_undef pPerl->Perl_sv_undef
+#undef sv_yes
+#define sv_yes pPerl->Perl_sv_yes
+#undef tainted
+#define tainted pPerl->Perl_tainted
+#undef tainting
+#define tainting pPerl->Perl_tainting
+#undef thisexpr
+#define thisexpr pPerl->Perl_thisexpr
+#undef thr_key
+#define thr_key pPerl->Perl_thr_key
+#undef threadnum
+#define threadnum pPerl->Perl_threadnum
+#undef threads_mutex
+#define threads_mutex pPerl->Perl_threads_mutex
+#undef threadsv_names
+#define threadsv_names pPerl->Perl_threadsv_names
+#undef thrsv
+#define thrsv pPerl->Perl_thrsv
+#undef timesbuf
+#define timesbuf pPerl->Perl_timesbuf
+#undef tmps_floor
+#define tmps_floor pPerl->Perl_tmps_floor
+#undef tmps_ix
+#define tmps_ix pPerl->Perl_tmps_ix
+#undef tmps_max
+#define tmps_max pPerl->Perl_tmps_max
+#undef tmps_stack
+#define tmps_stack pPerl->Perl_tmps_stack
+#undef tokenbuf
+#define tokenbuf pPerl->Perl_tokenbuf
+#undef top_env
+#define top_env pPerl->Perl_top_env
+#undef toptarget
+#define toptarget pPerl->Perl_toptarget
+#undef uid
+#define uid pPerl->Perl_uid
+#undef unsafe
+#define unsafe pPerl->Perl_unsafe
+#undef warnhook
+#define warnhook pPerl->Perl_warnhook
+#undef xiv_arenaroot
+#define xiv_arenaroot pPerl->Perl_xiv_arenaroot
+#undef xiv_root
+#define xiv_root pPerl->Perl_xiv_root
+#undef xnv_root
+#define xnv_root pPerl->Perl_xnv_root
+#undef xpv_root
+#define xpv_root pPerl->Perl_xpv_root
+#undef xrv_root
+#define xrv_root pPerl->Perl_xrv_root
+
+/* Functions */
+
+#undef amagic_call
+#define amagic_call pPerl->Perl_amagic_call
+#undef Perl_GetVars
+#define Perl_GetVars pPerl->Perl_GetVars
+#undef Gv_AMupdate
+#define Gv_AMupdate pPerl->Perl_Gv_AMupdate
+#undef append_elem
+#define append_elem pPerl->Perl_append_elem
+#undef append_list
+#define append_list pPerl->Perl_append_list
+#undef apply
+#define apply pPerl->Perl_apply
+#undef assertref
+#define assertref pPerl->Perl_assertref
+#undef av_clear
+#define av_clear pPerl->Perl_av_clear
+#undef av_extend
+#define av_extend pPerl->Perl_av_extend
+#undef av_fake
+#define av_fake pPerl->Perl_av_fake
+#undef av_fetch
+#define av_fetch pPerl->Perl_av_fetch
+#undef av_fill
+#define av_fill pPerl->Perl_av_fill
+#undef av_len
+#define av_len pPerl->Perl_av_len
+#undef av_make
+#define av_make pPerl->Perl_av_make
+#undef av_pop
+#define av_pop pPerl->Perl_av_pop
+#undef av_push
+#define av_push pPerl->Perl_av_push
+#undef av_reify
+#define av_reify pPerl->Perl_av_reify
+#undef av_shift
+#define av_shift pPerl->Perl_av_shift
+#undef av_store
+#define av_store pPerl->Perl_av_store
+#undef av_undef
+#define av_undef pPerl->Perl_av_undef
+#undef av_unshift
+#define av_unshift pPerl->Perl_av_unshift
+#undef avhv_delete
+#define avhv_delete pPerl->Perl_avhv_delete
+#undef avhv_delete_ent
+#define avhv_delete_ent pPerl->Perl_avhv_delete_ent
+#undef avhv_exists
+#define avhv_exists pPerl->Perl_avhv_exists
+#undef avhv_exists_ent
+#define avhv_exists_ent pPerl->Perl_avhv_exists_ent
+#undef avhv_fetch
+#define avhv_fetch pPerl->Perl_avhv_fetch
+#undef avhv_fetch_ent
+#define avhv_fetch_ent pPerl->Perl_avhv_fetch_ent
+#undef avhv_iterinit
+#define avhv_iterinit pPerl->Perl_avhv_iterinit
+#undef avhv_iternext
+#define avhv_iternext pPerl->Perl_avhv_iternext
+#undef avhv_iternextsv
+#define avhv_iternextsv pPerl->Perl_avhv_iternextsv
+#undef avhv_iterval
+#define avhv_iterval pPerl->Perl_avhv_iterval
+#undef avhv_keys
+#define avhv_keys pPerl->Perl_avhv_keys
+#undef avhv_store
+#define avhv_store pPerl->Perl_avhv_store
+#undef avhv_store_ent
+#define avhv_store_ent pPerl->Perl_avhv_store_ent
+#undef bind_match
+#define bind_match pPerl->Perl_bind_match
+#undef block_end
+#define block_end pPerl->Perl_block_end
+#undef block_gimme
+#define block_gimme pPerl->Perl_block_gimme
+#undef block_start
+#define block_start pPerl->Perl_block_start
+#undef call_list
+#define call_list pPerl->Perl_call_list
+#undef cando
+#define cando pPerl->Perl_cando
+#undef cast_ulong
+#define cast_ulong pPerl->Perl_cast_ulong
+#undef checkcomma
+#define checkcomma pPerl->Perl_checkcomma
+#undef check_uni
+#define check_uni pPerl->Perl_check_uni
+#undef ck_concat
+#define ck_concat pPerl->Perl_ck_concat
+#undef ck_delete
+#define ck_delete pPerl->Perl_ck_delete
+#undef ck_eof
+#define ck_eof pPerl->Perl_ck_eof
+#undef ck_eval
+#define ck_eval pPerl->Perl_ck_eval
+#undef ck_exec
+#define ck_exec pPerl->Perl_ck_exec
+#undef ck_formline
+#define ck_formline pPerl->Perl_ck_formline
+#undef ck_ftst
+#define ck_ftst pPerl->Perl_ck_ftst
+#undef ck_fun
+#define ck_fun pPerl->Perl_ck_fun
+#undef ck_glob
+#define ck_glob pPerl->Perl_ck_glob
+#undef ck_grep
+#define ck_grep pPerl->Perl_ck_grep
+#undef ck_gvconst
+#define ck_gvconst pPerl->Perl_ck_gvconst
+#undef ck_index
+#define ck_index pPerl->Perl_ck_index
+#undef ck_lengthconst
+#define ck_lengthconst pPerl->Perl_ck_lengthconst
+#undef ck_lfun
+#define ck_lfun pPerl->Perl_ck_lfun
+#undef ck_listiob
+#define ck_listiob pPerl->Perl_ck_listiob
+#undef ck_match
+#define ck_match pPerl->Perl_ck_match
+#undef ck_null
+#define ck_null pPerl->Perl_ck_null
+#undef ck_repeat
+#define ck_repeat pPerl->Perl_ck_repeat
+#undef ck_require
+#define ck_require pPerl->Perl_ck_require
+#undef ck_retarget
+#define ck_retarget pPerl->Perl_ck_retarget
+#undef ck_rfun
+#define ck_rfun pPerl->Perl_ck_rfun
+#undef ck_rvconst
+#define ck_rvconst pPerl->Perl_ck_rvconst
+#undef ck_select
+#define ck_select pPerl->Perl_ck_select
+#undef ck_shift
+#define ck_shift pPerl->Perl_ck_shift
+#undef ck_sort
+#define ck_sort pPerl->Perl_ck_sort
+#undef ck_spair
+#define ck_spair pPerl->Perl_ck_spair
+#undef ck_split
+#define ck_split pPerl->Perl_ck_split
+#undef ck_subr
+#define ck_subr pPerl->Perl_ck_subr
+#undef ck_svconst
+#define ck_svconst pPerl->Perl_ck_svconst
+#undef ck_trunc
+#define ck_trunc pPerl->Perl_ck_trunc
+#undef condpair_magic
+#define condpair_magic pPerl->Perl_condpair_magic
+#undef convert
+#define convert pPerl->Perl_convert
+#undef cpytill
+#define cpytill pPerl->Perl_cpytill
+#undef croak
+#define croak pPerl->Perl_croak
+#undef cv_ckproto
+#define cv_ckproto pPerl->Perl_cv_ckproto
+#undef cv_clone
+#define cv_clone pPerl->Perl_cv_clone
+#undef cv_const_sv
+#define cv_const_sv pPerl->Perl_cv_const_sv
+#undef cv_undef
+#define cv_undef pPerl->Perl_cv_undef
+#undef cxinc
+#define cxinc pPerl->Perl_cxinc
+#undef deb
+#define deb pPerl->Perl_deb
+#undef delimcpy
+#define delimcpy pPerl->Perl_delimcpy
+#undef deprecate
+#define deprecate pPerl->Perl_deprecate
+#undef die
+#define die pPerl->Perl_die
+#undef die_where
+#define die_where pPerl->Perl_die_where
+#undef dopoptoeval
+#define dopoptoeval pPerl->Perl_dopoptoeval
+#undef dounwind
+#define dounwind pPerl->Perl_dounwind
+#undef do_aexec
+#define do_aexec pPerl->Perl_do_aexec
+#undef do_chomp
+#define do_chomp pPerl->Perl_do_chomp
+#undef do_chop
+#define do_chop pPerl->Perl_do_chop
+#undef do_close
+#define do_close pPerl->Perl_do_close
+#undef do_eof
+#define do_eof pPerl->Perl_do_eof
+#undef do_exec
+#define do_exec pPerl->Perl_do_exec
+#undef do_execfree
+#define do_execfree pPerl->Perl_do_execfree
+#undef do_join
+#define do_join pPerl->Perl_do_join
+#undef do_kv
+#define do_kv pPerl->Perl_do_kv
+#undef do_open
+#define do_open pPerl->Perl_do_open
+#undef do_pipe
+#define do_pipe pPerl->Perl_do_pipe
+#undef do_print
+#define do_print pPerl->Perl_do_print
+#undef do_readline
+#define do_readline pPerl->Perl_do_readline
+#undef do_seek
+#define do_seek pPerl->Perl_do_seek
+#undef do_sprintf
+#define do_sprintf pPerl->Perl_do_sprintf
+#undef do_sysseek
+#define do_sysseek pPerl->Perl_do_sysseek
+#undef do_tell
+#define do_tell pPerl->Perl_do_tell
+#undef do_trans
+#define do_trans pPerl->Perl_do_trans
+#undef do_vecset
+#define do_vecset pPerl->Perl_do_vecset
+#undef do_vop
+#define do_vop pPerl->Perl_do_vop
+#undef dowantarray
+#define dowantarray pPerl->Perl_dowantarray
+#undef dump_all
+#define dump_all pPerl->Perl_dump_all
+#undef fbm_compile
+#define fbm_compile pPerl->Perl_fbm_compile
+#undef fbm_instr
+#define fbm_instr pPerl->Perl_fbm_instr
+#undef filter_add
+#define filter_add pPerl->Perl_filter_add
+#undef filter_del
+#define filter_del pPerl->Perl_filter_del
+#undef filter_read
+#define filter_read pPerl->Perl_filter_read
+#undef find_threadsv
+#define find_threadsv pPerl->Perl_find_threadsv
+#undef force_ident
+#define force_ident pPerl->Perl_force_ident
+#undef force_list
+#define force_list pPerl->Perl_force_list
+#undef force_next
+#define force_next pPerl->Perl_force_next
+#undef force_word
+#define force_word pPerl->Perl_force_word
+#undef form
+#define form pPerl->Perl_form
+#undef fold_constants
+#define fold_constants pPerl->Perl_fold_constants
+#undef fprintf
+#define fprintf pPerl->fprintf
+#undef free_tmps
+#define free_tmps pPerl->Perl_free_tmps
+#undef gen_constant_list
+#define gen_constant_list pPerl->Perl_gen_constant_list
+#undef get_op_descs
+#define get_op_descs pPerl->Perl_get_op_descs
+#undef get_op_names
+#define get_op_names pPerl->Perl_get_op_names
+#undef gp_free
+#define gp_free pPerl->Perl_gp_free
+#undef gp_ref
+#define gp_ref pPerl->Perl_gp_ref
+#undef gv_AVadd
+#define gv_AVadd pPerl->Perl_gv_AVadd
+#undef gv_HVadd
+#define gv_HVadd pPerl->Perl_gv_HVadd
+#undef gv_IOadd
+#define gv_IOadd pPerl->Perl_gv_IOadd
+#undef gv_autoload4
+#define gv_autoload4 pPerl->Perl_gv_autoload4
+#undef gv_check
+#define gv_check pPerl->Perl_gv_check
+#undef gv_efullname
+#define gv_efullname pPerl->Perl_gv_efullname
+#undef gv_efullname3
+#define gv_efullname3 pPerl->Perl_gv_efullname3
+#undef gv_fetchfile
+#define gv_fetchfile pPerl->Perl_gv_fetchfile
+#undef gv_fetchmeth
+#define gv_fetchmeth pPerl->Perl_gv_fetchmeth
+#undef gv_fetchmethod
+#define gv_fetchmethod pPerl->Perl_gv_fetchmethod
+#undef gv_fetchmethod_autoload
+#define gv_fetchmethod_autoload pPerl->Perl_gv_fetchmethod_autoload
+#undef gv_fetchpv
+#define gv_fetchpv pPerl->Perl_gv_fetchpv
+#undef gv_fullname
+#define gv_fullname pPerl->Perl_gv_fullname
+#undef gv_fullname3
+#define gv_fullname3 pPerl->Perl_gv_fullname3
+#undef gv_init
+#define gv_init pPerl->Perl_gv_init
+#undef gv_stashpv
+#define gv_stashpv pPerl->Perl_gv_stashpv
+#undef gv_stashpvn
+#define gv_stashpvn pPerl->Perl_gv_stashpvn
+#undef gv_stashsv
+#define gv_stashsv pPerl->Perl_gv_stashsv
+#undef he_delayfree
+#define he_delayfree pPerl->Perl_he_delayfree
+#undef he_free
+#define he_free pPerl->Perl_he_free
+#undef hoistmust
+#define hoistmust pPerl->Perl_hoistmust
+#undef hv_clear
+#define hv_clear pPerl->Perl_hv_clear
+#undef hv_delayfree_ent
+#define hv_delayfree_ent pPerl->Perl_hv_delayfree_ent
+#undef hv_delete
+#define hv_delete pPerl->Perl_hv_delete
+#undef hv_delete_ent
+#define hv_delete_ent pPerl->Perl_hv_delete_ent
+#undef hv_exists
+#define hv_exists pPerl->Perl_hv_exists
+#undef hv_exists_ent
+#define hv_exists_ent pPerl->Perl_hv_exists_ent
+#undef hv_fetch
+#define hv_fetch pPerl->Perl_hv_fetch
+#undef hv_fetch_ent
+#define hv_fetch_ent pPerl->Perl_hv_fetch_ent
+#undef hv_free_ent
+#define hv_free_ent pPerl->Perl_hv_free_ent
+#undef hv_iterinit
+#define hv_iterinit pPerl->Perl_hv_iterinit
+#undef hv_iterkey
+#define hv_iterkey pPerl->Perl_hv_iterkey
+#undef hv_iterkeysv
+#define hv_iterkeysv pPerl->Perl_hv_iterkeysv
+#undef hv_iternext
+#define hv_iternext pPerl->Perl_hv_iternext
+#undef hv_iternextsv
+#define hv_iternextsv pPerl->Perl_hv_iternextsv
+#undef hv_iterval
+#define hv_iterval pPerl->Perl_hv_iterval
+#undef hv_ksplit
+#define hv_ksplit pPerl->Perl_hv_ksplit
+#undef hv_magic
+#define hv_magic pPerl->Perl_hv_magic
+#undef hv_store
+#define hv_store pPerl->Perl_hv_store
+#undef hv_store_ent
+#define hv_store_ent pPerl->Perl_hv_store_ent
+#undef hv_undef
+#define hv_undef pPerl->Perl_hv_undef
+#undef ibcmp
+#define ibcmp pPerl->Perl_ibcmp
+#undef ibcmp_locale
+#define ibcmp_locale pPerl->Perl_ibcmp_locale
+#undef incpush
+#define incpush pPerl->incpush
+#undef incline
+#define incline pPerl->incline
+#undef incl_perldb
+#define incl_perldb pPerl->incl_perldb
+#undef ingroup
+#define ingroup pPerl->Perl_ingroup
+#undef init_stacks
+#define init_stacks pPerl->Perl_init_stacks
+#undef instr
+#define instr pPerl->Perl_instr
+#undef intro_my
+#define intro_my pPerl->Perl_intro_my
+#undef intuit_method
+#define intuit_method pPerl->intuit_method
+#undef intuit_more
+#define intuit_more pPerl->Perl_intuit_more
+#undef invert
+#define invert pPerl->Perl_invert
+#undef io_close
+#define io_close pPerl->Perl_io_close
+#undef ioctl
+#define ioctl pPerl->ioctl
+#undef jmaybe
+#define jmaybe pPerl->Perl_jmaybe
+#undef keyword
+#define keyword pPerl->Perl_keyword
+#undef leave_scope
+#define leave_scope pPerl->Perl_leave_scope
+#undef lex_end
+#define lex_end pPerl->Perl_lex_end
+#undef lex_start
+#define lex_start pPerl->Perl_lex_start
+#undef linklist
+#define linklist pPerl->Perl_linklist
+#undef list
+#define list pPerl->Perl_list
+#undef listkids
+#define listkids pPerl->Perl_listkids
+#undef lop
+#define lop pPerl->lop
+#undef localize
+#define localize pPerl->Perl_localize
+#undef looks_like_number
+#define looks_like_number pPerl->Perl_looks_like_number
+#undef magic_clear_all_env
+#define magic_clear_all_env pPerl->Perl_magic_clear_all_env
+#undef magic_clearenv
+#define magic_clearenv pPerl->Perl_magic_clearenv
+#undef magic_clearpack
+#define magic_clearpack pPerl->Perl_magic_clearpack
+#undef magic_clearsig
+#define magic_clearsig pPerl->Perl_magic_clearsig
+#undef magic_existspack
+#define magic_existspack pPerl->Perl_magic_existspack
+#undef magic_freedefelem
+#define magic_freedefelem pPerl->Perl_magic_freedefelem
+#undef magic_freeregexp
+#define magic_freeregexp pPerl->Perl_magic_freeregexp
+#undef magic_get
+#define magic_get pPerl->Perl_magic_get
+#undef magic_getarylen
+#define magic_getarylen pPerl->Perl_magic_getarylen
+#undef magic_getdefelem
+#define magic_getdefelem pPerl->Perl_magic_getdefelem
+#undef magic_getpack
+#define magic_getpack pPerl->Perl_magic_getpack
+#undef magic_getglob
+#define magic_getglob pPerl->Perl_magic_getglob
+#undef magic_getpos
+#define magic_getpos pPerl->Perl_magic_getpos
+#undef magic_getsig
+#define magic_getsig pPerl->Perl_magic_getsig
+#undef magic_gettaint
+#define magic_gettaint pPerl->Perl_magic_gettaint
+#undef magic_getuvar
+#define magic_getuvar pPerl->Perl_magic_getuvar
+#undef magic_len
+#define magic_len pPerl->Perl_magic_len
+#undef magic_methpack
+#define magic_methpack pPerl->magic_methpack
+#undef magic_mutexfree
+#define magic_mutexfree pPerl->Perl_magic_mutexfree
+#undef magic_nextpack
+#define magic_nextpack pPerl->Perl_magic_nextpack
+#undef magic_set
+#define magic_set pPerl->Perl_magic_set
+#undef magic_set_all_env
+#define magic_set_all_env pPerl->Perl_magic_set_all_env
+#undef magic_setamagic
+#define magic_setamagic pPerl->Perl_magic_setamagic
+#undef magic_setarylen
+#define magic_setarylen pPerl->Perl_magic_setarylen
+#undef magic_setbm
+#define magic_setbm pPerl->Perl_magic_setbm
+#undef magic_setcollxfrm
+#define magic_setcollxfrm pPerl->Perl_magic_setcollxfrm
+#undef magic_setdbline
+#define magic_setdbline pPerl->Perl_magic_setdbline
+#undef magic_setdefelem
+#define magic_setdefelem pPerl->Perl_magic_setdefelem
+#undef magic_setenv
+#define magic_setenv pPerl->Perl_magic_setenv
+#undef magic_setfm
+#define magic_setfm pPerl->Perl_magic_setfm
+#undef magic_setisa
+#define magic_setisa pPerl->Perl_magic_setisa
+#undef magic_setglob
+#define magic_setglob pPerl->Perl_magic_setglob
+#undef magic_setmglob
+#define magic_setmglob pPerl->Perl_magic_setmglob
+#undef magic_setnkeys
+#define magic_setnkeys pPerl->Perl_magic_setnkeys
+#undef magic_setpack
+#define magic_setpack pPerl->Perl_magic_setpack
+#undef magic_setpos
+#define magic_setpos pPerl->Perl_magic_setpos
+#undef magic_setsig
+#define magic_setsig pPerl->Perl_magic_setsig
+#undef magic_setsubstr
+#define magic_setsubstr pPerl->Perl_magic_setsubstr
+#undef magic_settaint
+#define magic_settaint pPerl->Perl_magic_settaint
+#undef magic_setuvar
+#define magic_setuvar pPerl->Perl_magic_setuvar
+#undef magic_setvec
+#define magic_setvec pPerl->Perl_magic_setvec
+#undef magic_sizepack
+#define magic_sizepack pPerl->Perl_magic_sizepack
+#undef magic_wipepack
+#define magic_wipepack pPerl->Perl_magic_wipepack
+#undef magicname
+#define magicname pPerl->Perl_magicname
+#undef markstack_grow
+#define markstack_grow pPerl->Perl_markstack_grow
+#undef mem_collxfrm
+#define mem_collxfrm pPerl->Perl_mem_collxfrm
+#undef mess
+#define mess pPerl->Perl_mess
+#undef mg_clear
+#define mg_clear pPerl->Perl_mg_clear
+#undef mg_copy
+#define mg_copy pPerl->Perl_mg_copy
+#undef mg_find
+#define mg_find pPerl->Perl_mg_find
+#undef mg_free
+#define mg_free pPerl->Perl_mg_free
+#undef mg_get
+#define mg_get pPerl->Perl_mg_get
+#undef mg_magical
+#define mg_magical pPerl->Perl_mg_magical
+#undef mg_length
+#define mg_length pPerl->Perl_mg_length
+#undef mg_set
+#define mg_set pPerl->Perl_mg_set
+#undef mg_size
+#define mg_size pPerl->Perl_mg_size
+#undef missingterm
+#define missingterm pPerl->missingterm
+#undef mod
+#define mod pPerl->Perl_mod
+#undef modkids
+#define modkids pPerl->Perl_modkids
+#undef moreswitches
+#define moreswitches pPerl->Perl_moreswitches
+#undef more_sv
+#define more_sv pPerl->more_sv
+#undef more_xiv
+#define more_xiv pPerl->more_xiv
+#undef more_xnv
+#define more_xnv pPerl->more_xnv
+#undef more_xpv
+#define more_xpv pPerl->more_xpv
+#undef more_xrv
+#define more_xrv pPerl->more_xrv
+#undef my
+#define my pPerl->Perl_my
+#undef my_bcopy
+#define my_bcopy pPerl->Perl_my_bcopy
+#undef my_bzero
+#define my_bzero pPerl->Perl_my_bzero
+#undef my_chsize
+#define my_chsize pPerl->Perl_my_chsize
+#undef my_exit
+#define my_exit pPerl->Perl_my_exit
+#undef my_failure_exit
+#define my_failure_exit pPerl->Perl_my_failure_exit
+#undef my_htonl
+#define my_htonl pPerl->Perl_my_htonl
+#undef my_lstat
+#define my_lstat pPerl->Perl_my_lstat
+#undef my_memcmp
+#define my_memcmp pPerl->my_memcmp
+#undef my_ntohl
+#define my_ntohl pPerl->Perl_my_ntohl
+#undef my_pclose
+#define my_pclose pPerl->Perl_my_pclose
+#undef my_popen
+#define my_popen pPerl->Perl_my_popen
+#undef my_setenv
+#define my_setenv pPerl->Perl_my_setenv
+#undef my_stat
+#define my_stat pPerl->Perl_my_stat
+#undef my_swap
+#define my_swap pPerl->Perl_my_swap
+#undef my_unexec
+#define my_unexec pPerl->Perl_my_unexec
+#undef newANONLIST
+#define newANONLIST pPerl->Perl_newANONLIST
+#undef newANONHASH
+#define newANONHASH pPerl->Perl_newANONHASH
+#undef newANONSUB
+#define newANONSUB pPerl->Perl_newANONSUB
+#undef newASSIGNOP
+#define newASSIGNOP pPerl->Perl_newASSIGNOP
+#undef newCONDOP
+#define newCONDOP pPerl->Perl_newCONDOP
++#undef newCONSTSUB
++#define newCONSTSUB pPerl->Perl_newCONSTSUB
+#undef newFORM
+#define newFORM pPerl->Perl_newFORM
+#undef newFOROP
+#define newFOROP pPerl->Perl_newFOROP
+#undef newLOGOP
+#define newLOGOP pPerl->Perl_newLOGOP
+#undef newLOOPEX
+#define newLOOPEX pPerl->Perl_newLOOPEX
+#undef newLOOPOP
+#define newLOOPOP pPerl->Perl_newLOOPOP
+#undef newMETHOD
+#define newMETHOD pPerl->Perl_newMETHOD
+#undef newNULLLIST
+#define newNULLLIST pPerl->Perl_newNULLLIST
+#undef newOP
+#define newOP pPerl->Perl_newOP
+#undef newPROG
+#define newPROG pPerl->Perl_newPROG
+#undef newRANGE
+#define newRANGE pPerl->Perl_newRANGE
+#undef newSLICEOP
+#define newSLICEOP pPerl->Perl_newSLICEOP
+#undef newSTATEOP
+#define newSTATEOP pPerl->Perl_newSTATEOP
+#undef newSUB
+#define newSUB pPerl->Perl_newSUB
+#undef newXS
+#define newXS pPerl->Perl_newXS
+#undef newAV
+#define newAV pPerl->Perl_newAV
+#undef newAVREF
+#define newAVREF pPerl->Perl_newAVREF
+#undef newBINOP
+#define newBINOP pPerl->Perl_newBINOP
+#undef newCVREF
+#define newCVREF pPerl->Perl_newCVREF
+#undef newCVOP
+#define newCVOP pPerl->Perl_newCVOP
+#undef newGVOP
+#define newGVOP pPerl->Perl_newGVOP
+#undef newGVgen
+#define newGVgen pPerl->Perl_newGVgen
+#undef newGVREF
+#define newGVREF pPerl->Perl_newGVREF
+#undef newHVREF
+#define newHVREF pPerl->Perl_newHVREF
+#undef newHV
+#define newHV pPerl->Perl_newHV
+#undef newIO
+#define newIO pPerl->Perl_newIO
+#undef newLISTOP
+#define newLISTOP pPerl->Perl_newLISTOP
+#undef newPMOP
+#define newPMOP pPerl->Perl_newPMOP
+#undef newPVOP
+#define newPVOP pPerl->Perl_newPVOP
+#undef newRV
+#define newRV pPerl->Perl_newRV
+#undef newRV_noinc
+#undef Perl_newRV_noinc
+#define newRV_noinc pPerl->Perl_newRV_noinc
+#undef newSV
+#define newSV pPerl->Perl_newSV
+#undef newSVREF
+#define newSVREF pPerl->Perl_newSVREF
+#undef newSVOP
+#define newSVOP pPerl->Perl_newSVOP
+#undef newSViv
+#define newSViv pPerl->Perl_newSViv
+#undef newSVnv
+#define newSVnv pPerl->Perl_newSVnv
+#undef newSVpv
+#define newSVpv pPerl->Perl_newSVpv
+#undef newSVpvf
+#define newSVpvf pPerl->Perl_newSVpvf
+#undef newSVpvn
+#define newSVpvn pPerl->Perl_newSVpvn
+#undef newSVrv
+#define newSVrv pPerl->Perl_newSVrv
+#undef newSVsv
+#define newSVsv pPerl->Perl_newSVsv
+#undef newUNOP
+#define newUNOP pPerl->Perl_newUNOP
+#undef newWHILEOP
+#define newWHILEOP pPerl->Perl_newWHILEOP
+#undef new_struct_thread
+#define new_struct_thread pPerl->Perl_new_struct_thread
++#undef new_stackinfo
++#define new_stackinfo pPerl->Perl_new_stackinfo
+#undef new_sv
+#define new_sv pPerl->new_sv
+#undef new_xnv
+#define new_xnv pPerl->new_xnv
+#undef new_xpv
+#define new_xpv pPerl->new_xpv
+#undef nextargv
+#define nextargv pPerl->Perl_nextargv
+#undef nextchar
+#define nextchar pPerl->nextchar
+#undef ninstr
+#define ninstr pPerl->Perl_ninstr
+#undef no_fh_allowed
+#define no_fh_allowed pPerl->Perl_no_fh_allowed
+#undef no_op
+#define no_op pPerl->Perl_no_op
+#undef package
+#define package pPerl->Perl_package
+#undef pad_alloc
+#define pad_alloc pPerl->Perl_pad_alloc
+#undef pad_allocmy
+#define pad_allocmy pPerl->Perl_pad_allocmy
+#undef pad_findmy
+#define pad_findmy pPerl->Perl_pad_findmy
+#undef op_free
+#define op_free pPerl->Perl_op_free
+#undef oopsCV
+#define oopsCV pPerl->Perl_oopsCV
+#undef oopsAV
+#define oopsAV pPerl->Perl_oopsAV
+#undef oopsHV
+#define oopsHV pPerl->Perl_oopsHV
+#undef opendir
+#define opendir pPerl->opendir
+#undef pad_leavemy
+#define pad_leavemy pPerl->Perl_pad_leavemy
+#undef pad_sv
+#define pad_sv pPerl->Perl_pad_sv
+#undef pad_findlex
+#define pad_findlex pPerl->pad_findlex
+#undef pad_free
+#define pad_free pPerl->Perl_pad_free
+#undef pad_reset
+#define pad_reset pPerl->Perl_pad_reset
+#undef pad_swipe
+#define pad_swipe pPerl->Perl_pad_swipe
+#undef peep
+#define peep pPerl->Perl_peep
+#undef perl_call_argv
+#define perl_call_argv pPerl->perl_call_argv
+#undef perl_call_method
+#define perl_call_method pPerl->perl_call_method
+#undef perl_call_pv
+#define perl_call_pv pPerl->perl_call_pv
+#undef perl_call_sv
+#define perl_call_sv pPerl->perl_call_sv
+#undef perl_callargv
+#define perl_callargv pPerl->perl_callargv
+#undef perl_callpv
+#define perl_callpv pPerl->perl_callpv
+#undef perl_callsv
+#define perl_callsv pPerl->perl_callsv
+#undef perl_eval_pv
+#define perl_eval_pv pPerl->perl_eval_pv
+#undef perl_eval_sv
+#define perl_eval_sv pPerl->perl_eval_sv
+#undef perl_get_sv
+#define perl_get_sv pPerl->perl_get_sv
+#undef perl_get_av
+#define perl_get_av pPerl->perl_get_av
+#undef perl_get_hv
+#define perl_get_hv pPerl->perl_get_hv
+#undef perl_get_cv
+#define perl_get_cv pPerl->perl_get_cv
+#undef perl_init_i18nl10n
+#define perl_init_i18nl10n pPerl->perl_init_i18nl10n
+#undef perl_init_i18nl14n
+#define perl_init_i18nl14n pPerl->perl_init_i18nl14n
+#undef perl_new_collate
+#define perl_new_collate pPerl->perl_new_collate
+#undef perl_new_ctype
+#define perl_new_ctype pPerl->perl_new_ctype
+#undef perl_new_numeric
+#define perl_new_numeric pPerl->perl_new_numeric
+#undef perl_set_numeric_local
+#define perl_set_numeric_local pPerl->perl_set_numeric_local
+#undef perl_set_numeric_standard
+#define perl_set_numeric_standard pPerl->perl_set_numeric_standard
+#undef perl_require_pv
+#define perl_require_pv pPerl->perl_require_pv
+#undef pidgone
+#define pidgone pPerl->Perl_pidgone
+#undef pmflag
+#define pmflag pPerl->Perl_pmflag
+#undef pmruntime
+#define pmruntime pPerl->Perl_pmruntime
+#undef pmtrans
+#define pmtrans pPerl->Perl_pmtrans
+#undef pop_return
+#define pop_return pPerl->Perl_pop_return
+#undef pop_scope
+#define pop_scope pPerl->Perl_pop_scope
+#undef prepend_elem
+#define prepend_elem pPerl->Perl_prepend_elem
+#undef push_return
+#define push_return pPerl->Perl_push_return
+#undef push_scope
+#define push_scope pPerl->Perl_push_scope
+#undef pregcomp
+#define pregcomp pPerl->Perl_pregcomp
+#undef ref
+#define ref pPerl->Perl_ref
+#undef refkids
+#define refkids pPerl->Perl_refkids
+#undef regexec_flags
+#define regexec_flags pPerl->Perl_regexec_flags
+#undef pregexec
+#define pregexec pPerl->Perl_pregexec
+#undef pregfree
+#define pregfree pPerl->Perl_pregfree
+#undef regnext
+#define regnext pPerl->Perl_regnext
+#undef regnoderegnext
+#define regnoderegnext pPerl->regnoderegnext
+#undef repeatcpy
+#define repeatcpy pPerl->Perl_repeatcpy
+#undef rninstr
+#define rninstr pPerl->Perl_rninstr
+#undef rsignal
+#define rsignal pPerl->Perl_rsignal
+#undef rsignal_restore
+#define rsignal_restore pPerl->Perl_rsignal_restore
+#undef rsignal_save
+#define rsignal_save pPerl->Perl_rsignal_save
+#undef rsignal_state
+#define rsignal_state pPerl->Perl_rsignal_state
+#undef run
+#define run pPerl->Perl_run
+#undef rxres_free
+#define rxres_free pPerl->Perl_rxres_free
+#undef rxres_restore
+#define rxres_restore pPerl->Perl_rxres_restore
+#undef rxres_save
+#define rxres_save pPerl->Perl_rxres_save
+#undef safefree
+#define safefree pPerl->Perl_safefree
+#undef safecalloc
+#define safecalloc pPerl->Perl_safecalloc
+#undef safemalloc
+#define safemalloc pPerl->Perl_safemalloc
+#undef saferealloc
+#define saferealloc pPerl->Perl_saferealloc
+#undef safexcalloc
+#define safexcalloc pPerl->Perl_safexcalloc
+#undef safexfree
+#define safexfree pPerl->Perl_safexfree
+#undef safexmalloc
+#define safexmalloc pPerl->Perl_safexmalloc
+#undef safexrealloc
+#define safexrealloc pPerl->Perl_safexrealloc
+#undef same_dirent
+#define same_dirent pPerl->Perl_same_dirent
+#undef savepv
+#define savepv pPerl->Perl_savepv
+#undef savepvn
+#define savepvn pPerl->Perl_savepvn
+#undef savestack_grow
+#define savestack_grow pPerl->Perl_savestack_grow
+#undef save_aelem
+#define save_aelem pPerl->Perl_save_aelem
+#undef save_aptr
+#define save_aptr pPerl->Perl_save_aptr
+#undef save_ary
+#define save_ary pPerl->Perl_save_ary
+#undef save_clearsv
+#define save_clearsv pPerl->Perl_save_clearsv
+#undef save_delete
+#define save_delete pPerl->Perl_save_delete
+#undef save_destructor
+#define save_destructor pPerl->Perl_save_destructor
+#undef save_freesv
+#define save_freesv pPerl->Perl_save_freesv
+#undef save_freeop
+#define save_freeop pPerl->Perl_save_freeop
+#undef save_freepv
+#define save_freepv pPerl->Perl_save_freepv
+#undef save_gp
+#define save_gp pPerl->Perl_save_gp
+#undef save_hash
+#define save_hash pPerl->Perl_save_hash
+#undef save_helem
+#define save_helem pPerl->Perl_save_helem
+#undef save_hptr
+#define save_hptr pPerl->Perl_save_hptr
+#undef save_I16
+#define save_I16 pPerl->Perl_save_I16
+#undef save_I32
+#define save_I32 pPerl->Perl_save_I32
+#undef save_int
+#define save_int pPerl->Perl_save_int
+#undef save_item
+#define save_item pPerl->Perl_save_item
+#undef save_iv
+#define save_iv pPerl->Perl_save_iv
+#undef save_list
+#define save_list pPerl->Perl_save_list
+#undef save_long
+#define save_long pPerl->Perl_save_long
+#undef save_nogv
+#define save_nogv pPerl->Perl_save_nogv
+#undef save_op
+#define save_op pPerl->Perl_save_op
+#undef save_scalar
+#define save_scalar pPerl->Perl_save_scalar
+#undef save_pptr
+#define save_pptr pPerl->Perl_save_pptr
+#undef save_sptr
+#define save_sptr pPerl->Perl_save_sptr
+#undef save_svref
+#define save_svref pPerl->Perl_save_svref
+#undef save_threadsv
+#define save_threadsv pPerl->Perl_save_threadsv
+#undef sawparens
+#define sawparens pPerl->Perl_sawparens
+#undef scalar
+#define scalar pPerl->Perl_scalar
+#undef scalarkids
+#define scalarkids pPerl->Perl_scalarkids
+#undef scalarseq
+#define scalarseq pPerl->Perl_scalarseq
+#undef scalarvoid
+#define scalarvoid pPerl->Perl_scalarvoid
+#undef scan_const
+#define scan_const pPerl->Perl_scan_const
+#undef scan_formline
+#define scan_formline pPerl->Perl_scan_formline
+#undef scan_ident
+#define scan_ident pPerl->Perl_scan_ident
+#undef scan_inputsymbol
+#define scan_inputsymbol pPerl->Perl_scan_inputsymbol
+#undef scan_heredoc
+#define scan_heredoc pPerl->Perl_scan_heredoc
+#undef scan_hex
+#define scan_hex pPerl->Perl_scan_hex
+#undef scan_num
+#define scan_num pPerl->Perl_scan_num
+#undef scan_oct
+#define scan_oct pPerl->Perl_scan_oct
+#undef scan_pat
+#define scan_pat pPerl->Perl_scan_pat
+#undef scan_str
+#define scan_str pPerl->Perl_scan_str
+#undef scan_subst
+#define scan_subst pPerl->Perl_scan_subst
+#undef scan_trans
+#define scan_trans pPerl->Perl_scan_trans
+#undef scope
+#define scope pPerl->Perl_scope
+#undef screaminstr
+#define screaminstr pPerl->Perl_screaminstr
+#undef setdefout
+#define setdefout pPerl->Perl_setdefout
+#undef setenv_getix
+#define setenv_getix pPerl->Perl_setenv_getix
+#undef share_hek
+#define share_hek pPerl->Perl_share_hek
+#undef sharepvn
+#define sharepvn pPerl->Perl_sharepvn
+#undef sighandler
+#define sighandler pPerl->Perl_sighandler
+#undef skipspace
+#define skipspace pPerl->Perl_skipspace
+#undef stack_grow
+#define stack_grow pPerl->Perl_stack_grow
+#undef start_subparse
+#define start_subparse pPerl->Perl_start_subparse
+#undef sub_crush_depth
+#define sub_crush_depth pPerl->Perl_sub_crush_depth
+#undef sublex_done
+#define sublex_done pPerl->Perl_sublex_done
+#undef sublex_start
+#define sublex_start pPerl->Perl_sublex_start
+#undef sv_2bool
+#define sv_2bool pPerl->Perl_sv_2bool
+#undef sv_2cv
+#define sv_2cv pPerl->Perl_sv_2cv
+#undef sv_2io
+#define sv_2io pPerl->Perl_sv_2io
+#undef sv_2iv
+#define sv_2iv pPerl->Perl_sv_2iv
+#undef sv_2mortal
+#define sv_2mortal pPerl->Perl_sv_2mortal
+#undef sv_2nv
+#define sv_2nv pPerl->Perl_sv_2nv
+#undef sv_2pv
+#define sv_2pv pPerl->Perl_sv_2pv
+#undef sv_2uv
+#define sv_2uv pPerl->Perl_sv_2uv
+#undef sv_add_arena
+#define sv_add_arena pPerl->Perl_sv_add_arena
+#undef sv_backoff
+#define sv_backoff pPerl->Perl_sv_backoff
+#undef sv_bless
+#define sv_bless pPerl->Perl_sv_bless
+#undef sv_catpv
+#define sv_catpv pPerl->Perl_sv_catpv
+#undef sv_catpvf
+#define sv_catpvf pPerl->Perl_sv_catpvf
+#undef sv_catpvn
+#define sv_catpvn pPerl->Perl_sv_catpvn
+#undef sv_catsv
+#define sv_catsv pPerl->Perl_sv_catsv
+#undef sv_chop
+#define sv_chop pPerl->Perl_sv_chop
+#undef sv_clean_all
+#define sv_clean_all pPerl->Perl_sv_clean_all
+#undef sv_clean_objs
+#define sv_clean_objs pPerl->Perl_sv_clean_objs
+#undef sv_clear
+#define sv_clear pPerl->Perl_sv_clear
+#undef sv_cmp
+#define sv_cmp pPerl->Perl_sv_cmp
+#undef sv_cmp_locale
+#define sv_cmp_locale pPerl->Perl_sv_cmp_locale
+#undef sv_collxfrm
+#define sv_collxfrm pPerl->Perl_sv_collxfrm
+#undef sv_compile_2op
+#define sv_compile_2op pPerl->Perl_sv_compile_2op
+#undef sv_dec
+#define sv_dec pPerl->Perl_sv_dec
+#undef sv_derived_from
+#define sv_derived_from pPerl->Perl_sv_derived_from
+#undef sv_dump
+#define sv_dump pPerl->Perl_sv_dump
+#undef sv_eq
+#define sv_eq pPerl->Perl_sv_eq
+#undef sv_free
+#define sv_free pPerl->Perl_sv_free
+#undef sv_free_arenas
+#define sv_free_arenas pPerl->Perl_sv_free_arenas
+#undef sv_gets
+#define sv_gets pPerl->Perl_sv_gets
+#undef sv_grow
+#define sv_grow pPerl->Perl_sv_grow
+#undef sv_inc
+#define sv_inc pPerl->Perl_sv_inc
+#undef sv_insert
+#define sv_insert pPerl->Perl_sv_insert
+#undef sv_isa
+#define sv_isa pPerl->Perl_sv_isa
+#undef sv_isobject
+#define sv_isobject pPerl->Perl_sv_isobject
+#undef sv_iv
+#define sv_iv pPerl->Perl_sv_iv
+#undef sv_len
+#define sv_len pPerl->Perl_sv_len
+#undef sv_magic
+#define sv_magic pPerl->Perl_sv_magic
+#undef sv_mortalcopy
+#define sv_mortalcopy pPerl->Perl_sv_mortalcopy
+#undef sv_newmortal
+#define sv_newmortal pPerl->Perl_sv_newmortal
+#undef sv_newref
+#define sv_newref pPerl->Perl_sv_newref
+#undef sv_nv
+#define sv_nv pPerl->Perl_sv_nv
+#undef sv_pvn
+#define sv_pvn pPerl->Perl_sv_pvn
+#undef sv_pvn_force
+#define sv_pvn_force pPerl->Perl_sv_pvn_force
+#undef sv_reftype
+#define sv_reftype pPerl->Perl_sv_reftype
+#undef sv_replace
+#define sv_replace pPerl->Perl_sv_replace
+#undef sv_report_used
+#define sv_report_used pPerl->Perl_sv_report_used
+#undef sv_reset
+#define sv_reset pPerl->Perl_sv_reset
+#undef sv_setiv
+#define sv_setiv pPerl->Perl_sv_setiv
+#undef sv_setnv
+#define sv_setnv pPerl->Perl_sv_setnv
+#undef sv_setpv
+#define sv_setpv pPerl->Perl_sv_setpv
+#undef sv_setpvf
+#define sv_setpvf pPerl->Perl_sv_setpvf
+#undef sv_setpviv
+#define sv_setpviv pPerl->Perl_sv_setpviv
+#undef sv_setpvn
+#define sv_setpvn pPerl->Perl_sv_setpvn
+#undef sv_setref_iv
+#define sv_setref_iv pPerl->Perl_sv_setref_iv
+#undef sv_setref_nv
+#define sv_setref_nv pPerl->Perl_sv_setref_nv
+#undef sv_setref_pv
+#define sv_setref_pv pPerl->Perl_sv_setref_pv
+#undef sv_setref_pvn
+#define sv_setref_pvn pPerl->Perl_sv_setref_pvn
+#undef sv_setsv
+#define sv_setsv pPerl->Perl_sv_setsv
+#undef sv_setuv
+#define sv_setuv pPerl->Perl_sv_setuv
+#undef sv_taint
+#define sv_taint pPerl->Perl_sv_taint
+#undef sv_tainted
+#define sv_tainted pPerl->Perl_sv_tainted
+#undef sv_true
+#define sv_true pPerl->Perl_sv_true
+#undef sv_unmagic
+#define sv_unmagic pPerl->Perl_sv_unmagic
+#undef sv_unref
+#define sv_unref pPerl->Perl_sv_unref
+#undef sv_untaint
+#define sv_untaint pPerl->Perl_sv_untaint
+#undef sv_upgrade
+#define sv_upgrade pPerl->Perl_sv_upgrade
+#undef sv_usepvn
+#define sv_usepvn pPerl->Perl_sv_usepvn
+#undef sv_uv
+#define sv_uv pPerl->Perl_sv_uv
+#undef sv_vcatpvfn
+#define sv_vcatpvfn pPerl->Perl_sv_vcatpvfn
+#undef sv_vsetpvfn
+#define sv_vsetpvfn pPerl->Perl_sv_vsetpvfn
+#undef taint_env
+#define taint_env pPerl->Perl_taint_env
+#undef taint_not
+#define taint_not pPerl->Perl_taint_not
+#undef taint_proper
+#define taint_proper pPerl->Perl_taint_proper
+#undef too_few_arguments
+#define too_few_arguments pPerl->Perl_too_few_arguments
+#undef too_many_arguments
+#define too_many_arguments pPerl->Perl_too_many_arguments
+#undef unlnk
+#define unlnk pPerl->Perl_unlnk
+#undef unlock_condpair
+#define unlock_condpair pPerl->Perl_unlock_condpair
+#undef unshare_hek
+#define unshare_hek pPerl->Perl_unshare_hek
+#undef unsharepvn
+#define unsharepvn pPerl->Perl_unsharepvn
+#undef utilize
+#define utilize pPerl->Perl_utilize
+#undef vivify_defelem
+#define vivify_defelem pPerl->Perl_vivify_defelem
+#undef vivify_ref
+#define vivify_ref pPerl->Perl_vivify_ref
+#undef wait4pid
+#define wait4pid pPerl->Perl_wait4pid
+#undef warn
+#define warn pPerl->Perl_warn
+#undef whichsig
+#define whichsig pPerl->Perl_whichsig
+#undef yyerror
+#define yyerror pPerl->Perl_yyerror
+#undef yylex
+#define yylex pPerl->Perl_yylex
+#undef yyparse
+#define yyparse pPerl->Perl_yyparse
+#undef yywarn
+#define yywarn pPerl->Perl_yywarn
+
+
+#undef piMem
+#define piMem (pPerl->piMem)
+#undef piENV
+#define piENV (pPerl->piENV)
+#undef piStdIO
+#define piStdIO (pPerl->piStdIO)
+#undef piLIO
+#define piLIO (pPerl->piLIO)
+#undef piDir
+#define piDir (pPerl->piDir)
+#undef piSock
+#define piSock (pPerl->piSock)
+#undef piProc
+#define piProc (pPerl->piProc)
+
+#ifndef NO_XSLOCKS
+#undef closedir
+#undef opendir
+#undef stdin
+#undef stdout
+#undef stderr
+#undef feof
+#undef ferror
+#undef fgetpos
+#undef ioctl
+#undef getlogin
+#undef setjmp
+#undef getc
+#undef ungetc
+#undef fileno
+
+#define mkdir PerlDir_mkdir
+#define chdir PerlDir_chdir
+#define rmdir PerlDir_rmdir
+#define closedir PerlDir_close
+#define opendir PerlDir_open
+#define readdir PerlDir_read
+#define rewinddir PerlDir_rewind
+#define seekdir PerlDir_seek
+#define telldir PerlDir_tell
+#define putenv PerlEnv_putenv
+#define getenv PerlEnv_getenv
+#define stdin PerlIO_stdin()
+#define stdout PerlIO_stdout()
+#define stderr PerlIO_stderr()
+#define fopen PerlIO_open
+#define fclose PerlIO_close
+#define feof PerlIO_eof
+#define ferror PerlIO_error
+#define fclearerr PerlIO_clearerr
+#define getc PerlIO_getc
+#define fputc(c, f) PerlIO_putc(f,c)
+#define fputs(s, f) PerlIO_puts(f,s)
+#define fflush PerlIO_flush
+#define ungetc(c, f) PerlIO_ungetc((f),(c))
+#define fileno PerlIO_fileno
+#define fdopen PerlIO_fdopen
+#define freopen PerlIO_reopen
+#define fread(b,s,c,f) PerlIO_read((f),(b),(s*c))
+#define fwrite(b,s,c,f) PerlIO_write((f),(b),(s*c))
+#define setbuf PerlIO_setbuf
+#define setvbuf PerlIO_setvbuf
+#define setlinebuf PerlIO_setlinebuf
+#define stdoutf PerlIO_stdoutf
+#define vfprintf PerlIO_vprintf
+#define ftell PerlIO_tell
+#define fseek PerlIO_seek
+#define fgetpos PerlIO_getpos
+#define fsetpos PerlIO_setpos
+#define frewind PerlIO_rewind
+#define tmpfile PerlIO_tmpfile
+#define access PerlLIO_access
+#define chmod PerlLIO_chmod
+#define chsize PerlLIO_chsize
+#define close PerlLIO_close
+#define dup PerlLIO_dup
+#define dup2 PerlLIO_dup2
+#define flock PerlLIO_flock
+#define fstat PerlLIO_fstat
+#define ioctl PerlLIO_ioctl
+#define isatty PerlLIO_isatty
+#define lseek PerlLIO_lseek
+#define lstat PerlLIO_lstat
+#define mktemp PerlLIO_mktemp
+#define open PerlLIO_open
+#define read PerlLIO_read
+#define rename PerlLIO_rename
+#define setmode PerlLIO_setmode
+#define stat PerlLIO_stat
+#define tmpnam PerlLIO_tmpnam
+#define umask PerlLIO_umask
+#define unlink PerlLIO_unlink
+#define utime PerlLIO_utime
+#define write PerlLIO_write
+#define malloc PerlMem_malloc
+#define realloc PerlMem_realloc
+#define free PerlMem_free
+#define abort PerlProc_abort
+#define exit PerlProc_exit
+#define _exit PerlProc__exit
+#define execl PerlProc_execl
+#define execv PerlProc_execv
+#define execvp PerlProc_execvp
+#define getuid PerlProc_getuid
+#define geteuid PerlProc_geteuid
+#define getgid PerlProc_getgid
+#define getegid PerlProc_getegid
+#define getlogin PerlProc_getlogin
+#define kill PerlProc_kill
+#define killpg PerlProc_killpg
+#define pause PerlProc_pause
+#define popen PerlProc_popen
+#define pclose PerlProc_pclose
+#define pipe PerlProc_pipe
+#define setuid PerlProc_setuid
+#define setgid PerlProc_setgid
+#define sleep PerlProc_sleep
+#define times PerlProc_times
+#define wait PerlProc_wait
+#define setjmp PerlProc_setjmp
+#define longjmp PerlProc_longjmp
+#define signal PerlProc_signal
+#define htonl PerlSock_htonl
+#define htons PerlSock_htons
+#define ntohs PerlSock_ntohl
+#define ntohl PerlSock_ntohs
+#define accept PerlSock_accept
+#define bind PerlSock_bind
+#define connect PerlSock_connect
+#define endhostent PerlSock_endhostent
+#define endnetent PerlSock_endnetent
+#define endprotoent PerlSock_endprotoent
+#define endservent PerlSock_endservent
+#define gethostbyaddr PerlSock_gethostbyaddr
+#define gethostbyname PerlSock_gethostbyname
+#define gethostent PerlSock_gethostent
+#define gethostname PerlSock_gethostname
+#define getnetbyaddr PerlSock_getnetbyaddr
+#define getnetbyname PerlSock_getnetbyname
+#define getnetent PerlSock_getnetent
+#define getpeername PerlSock_getpeername
+#define getprotobyname PerlSock_getprotobyname
+#define getprotobynumber PerlSock_getprotobynumber
+#define getprotoent PerlSock_getprotoent
+#define getservbyname PerlSock_getservbyname
+#define getservbyport PerlSock_getservbyport
+#define getservent PerlSock_getservent
+#define getsockname PerlSock_getsockname
+#define getsockopt PerlSock_getsockopt
+#define inet_addr PerlSock_inet_addr
+#define inet_ntoa PerlSock_inet_ntoa
+#define listen PerlSock_listen
+#define recvfrom PerlSock_recvfrom
+#define select PerlSock_select
+#define send PerlSock_send
+#define sendto PerlSock_sendto
+#define sethostent PerlSock_sethostent
+#define setnetent PerlSock_setnetent
+#define setprotoent PerlSock_setprotoent
+#define setservent PerlSock_setservent
+#define setsockopt PerlSock_setsockopt
+#define shutdown PerlSock_shutdown
+#define socket PerlSock_socket
+#define socketpair PerlSock_socketpair
+#endif /* NO_XSLOCKS */
+
+#undef THIS
+#define THIS pPerl
+#undef THIS_
+#define THIS_ pPerl,
+
+#undef SAVEDESTRUCTOR
+#define SAVEDESTRUCTOR(f,p) \
+ pPerl->Perl_save_destructor((FUNC_NAME_TO_PTR(f)),(p))
+
+#ifdef WIN32
+
+#ifndef WIN32IO_IS_STDIO
+#undef errno
+#define errno ErrorNo()
+#endif
+
+#undef ErrorNo
+#define ErrorNo pPerl->ErrorNo
+#undef NtCrypt
+#define NtCrypt pPerl->NtCrypt
+#undef NtGetLib
+#define NtGetLib pPerl->NtGetLib
+#undef NtGetArchLib
+#define NtGetArchLib pPerl->NtGetArchLib
+#undef NtGetSiteLib
+#define NtGetSiteLib pPerl->NtGetSiteLib
+#undef NtGetBin
+#define NtGetBin pPerl->NtGetBin
+#undef NtGetDebugScriptStr
+#define NtGetDebugScriptStr pPerl->NtGetDebugScriptStr
+#endif /* WIN32 */
+
+#endif /* __ObjXSub_h__ */
+
#define screamnext (curinterp->Iscreamnext)
#define secondgv (curinterp->Isecondgv)
#define siggv (curinterp->Isiggv)
- #define signalstack (curinterp->Isignalstack)
#define sortcop (curinterp->Isortcop)
+#define sortcxix (curinterp->Isortcxix)
- #define sortstack (curinterp->Isortstack)
#define sortstash (curinterp->Isortstash)
#define splitstr (curinterp->Isplitstr)
#define statcache (curinterp->Istatcache)
#define Iscreamfirst screamfirst
#define Iscreamnext screamnext
#define Isecondgv secondgv
+#define Iseen_zerolen seen_zerolen
#define Isiggv siggv
- #define Isignalstack signalstack
#define Isortcop sortcop
+#define Isortcxix sortcxix
- #define Isortstack sortstack
#define Isortstash sortstash
#define Isplitstr splitstr
#define Istatcache statcache
#define screamfirst Perl_screamfirst
#define screamnext Perl_screamnext
#define secondgv Perl_secondgv
+#define seen_zerolen Perl_seen_zerolen
#define siggv Perl_siggv
- #define signalstack Perl_signalstack
#define sortcop Perl_sortcop
+#define sortcxix Perl_sortcxix
- #define sortstack Perl_sortstack
#define sortstash Perl_sortstash
#define splitstr Perl_splitstr
#define statcache Perl_statcache
# Install the DLL
-safe_unlink("$installbin/perl.$dlext");
-copy("perl.$dlext", "$installbin/perl.$dlext");
-chmod(0755, "$installbin/perl.$dlext");
+safe_unlink("$installbin/$perldll");
+copy("$perldll", "$installbin/$perldll");
+chmod(0755, "$installbin/$perldll");
}
+ # This will be used to store the packlist
+ $packlist = ExtUtils::Packlist->new("$installarchlib/.packlist");
+
# First we install the version-numbered executables.
- if ($^O ne 'dos') {
+ if ($Is_VMS) {
+ safe_unlink("$installbin/perl$exe_ext");
+ copy("perl$exe_ext", "$installbin/perl$exe_ext");
+ chmod(0755, "$installbin/perl$exe_ext");
+ safe_unlink("$installbin/perlshr$exe_ext");
+ copy("perlshr$exe_ext", "$installbin/perlshr$exe_ext");
+ chmod(0755, "$installbin/perlshr$exe_ext");
+ }
+ elsif ($^O ne 'dos') {
safe_unlink("$installbin/perl$ver$exe_ext");
copy("perl$exe_ext", "$installbin/perl$ver$exe_ext");
chmod(0755, "$installbin/perl$ver$exe_ext");
screamfirst
screamnext
secondgv
+seen_zerolen
siggv
- signalstack
sortcop
+sortcxix
- sortstack
sortstash
splitstr
start_env
return 0;
}
+ /* caller is responsible for stack switching/cleanup */
-static int
+STATIC int
magic_methcall(MAGIC *mg, char *meth, I32 flags, int n, SV *val)
{
dSP;
--- /dev/null
+#ifndef __Objpp_h__
+#define __Objpp_h__
+
+#undef amagic_call
+#define amagic_call CPerlObj::Perl_amagic_call
+#undef Gv_AMupdate
+#define Gv_AMupdate CPerlObj::Perl_Gv_AMupdate
+#undef add_data
+#define add_data CPerlObj::add_data
+#undef ao
+#define ao CPerlObj::ao
+#undef append_elem
+#define append_elem CPerlObj::Perl_append_elem
+#undef append_list
+#define append_list CPerlObj::Perl_append_list
+#undef apply
+#define apply CPerlObj::Perl_apply
+#undef asIV
+#define asIV CPerlObj::asIV
+#undef asUV
+#define asUV CPerlObj::asUV
+#undef assertref
+#define assertref CPerlObj::Perl_assertref
+#undef av_clear
+#define av_clear CPerlObj::Perl_av_clear
+#undef av_extend
+#define av_extend CPerlObj::Perl_av_extend
+#undef av_fake
+#define av_fake CPerlObj::Perl_av_fake
+#undef av_fetch
+#define av_fetch CPerlObj::Perl_av_fetch
+#undef av_fill
+#define av_fill CPerlObj::Perl_av_fill
+#undef av_len
+#define av_len CPerlObj::Perl_av_len
+#undef av_make
+#define av_make CPerlObj::Perl_av_make
+#undef av_pop
+#define av_pop CPerlObj::Perl_av_pop
+#undef av_push
+#define av_push CPerlObj::Perl_av_push
+#undef av_shift
+#define av_shift CPerlObj::Perl_av_shift
+#undef av_reify
+#define av_reify CPerlObj::Perl_av_reify
+#undef av_store
+#define av_store CPerlObj::Perl_av_store
+#undef av_undef
+#define av_undef CPerlObj::Perl_av_undef
+#undef av_unshift
+#define av_unshift CPerlObj::Perl_av_unshift
+#undef avhv_keys
+#define avhv_keys CPerlObj::Perl_avhv_keys
+#undef avhv_fetch
+#define avhv_fetch CPerlObj::Perl_avhv_fetch
+#undef avhv_fetch_ent
+#define avhv_fetch_ent CPerlObj::Perl_avhv_fetch_ent
+#undef avhv_store
+#define avhv_store CPerlObj::Perl_avhv_store
+#undef avhv_store_ent
+#define avhv_store_ent CPerlObj::Perl_avhv_store_ent
+#undef avhv_exists_ent
+#define avhv_exists_ent CPerlObj::Perl_avhv_exists_ent
+#undef avhv_exists
+#define avhv_exists CPerlObj::Perl_avhv_exists
+#undef avhv_delete
+#define avhv_delete CPerlObj::Perl_avhv_delete
+#undef avhv_delete_ent
+#define avhv_delete_ent CPerlObj::Perl_avhv_delete_ent
+#undef avhv_iterinit
+#define avhv_iterinit CPerlObj::Perl_avhv_iterinit
+#undef avhv_iternext
+#define avhv_iternext CPerlObj::Perl_avhv_iternext
+#undef avhv_iterval
+#define avhv_iterval CPerlObj::Perl_avhv_iterval
+#undef avhv_iternextsv
+#define avhv_iternextsv CPerlObj::Perl_avhv_iternextsv
+#undef bad_type
+#define bad_type CPerlObj::bad_type
+#undef bind_match
+#define bind_match CPerlObj::Perl_bind_match
+#undef block_end
+#define block_end CPerlObj::Perl_block_end
+#undef block_gimme
+#define block_gimme CPerlObj::Perl_block_gimme
+#undef block_start
+#define block_start CPerlObj::Perl_block_start
+#undef bset_obj_store
+#define bset_obj_store CPerlObj::Perl_bset_obj_store
+#undef byterun
+#define byterun CPerlObj::Perl_byterun
+#undef call_list
+#define call_list CPerlObj::Perl_call_list
+#undef cando
+#define cando CPerlObj::Perl_cando
+#undef cast_ulong
+#define cast_ulong CPerlObj::cast_ulong
+#undef checkcomma
+#define checkcomma CPerlObj::Perl_checkcomma
+#undef check_uni
+#define check_uni CPerlObj::Perl_check_uni
+#undef ck_anoncode
+#define ck_anoncode CPerlObj::Perl_ck_anoncode
+#undef ck_bitop
+#define ck_bitop CPerlObj::Perl_ck_bitop
+#undef ck_concat
+#define ck_concat CPerlObj::Perl_ck_concat
+#undef ck_delete
+#define ck_delete CPerlObj::Perl_ck_delete
+#undef ck_eof
+#define ck_eof CPerlObj::Perl_ck_eof
+#undef ck_eval
+#define ck_eval CPerlObj::Perl_ck_eval
+#undef ck_exec
+#define ck_exec CPerlObj::Perl_ck_exec
+#undef ck_exists
+#define ck_exists CPerlObj::Perl_ck_exists
+#undef ck_formline
+#define ck_formline CPerlObj::Perl_ck_formline
+#undef ck_ftst
+#define ck_ftst CPerlObj::Perl_ck_ftst
+#undef ck_fun
+#define ck_fun CPerlObj::Perl_ck_fun
+#undef ck_fun_locale
+#define ck_fun_locale CPerlObj::Perl_ck_fun_locale
+#undef ck_glob
+#define ck_glob CPerlObj::Perl_ck_glob
+#undef ck_grep
+#define ck_grep CPerlObj::Perl_ck_grep
+#undef ck_gvconst
+#define ck_gvconst CPerlObj::Perl_ck_gvconst
+#undef ck_index
+#define ck_index CPerlObj::Perl_ck_index
+#undef ck_lengthconst
+#define ck_lengthconst CPerlObj::Perl_ck_lengthconst
+#undef ck_lfun
+#define ck_lfun CPerlObj::Perl_ck_lfun
+#undef ck_listiob
+#define ck_listiob CPerlObj::Perl_ck_listiob
+#undef ck_match
+#define ck_match CPerlObj::Perl_ck_match
+#undef ck_null
+#define ck_null CPerlObj::Perl_ck_null
+#undef ck_repeat
+#define ck_repeat CPerlObj::Perl_ck_repeat
+#undef ck_require
+#define ck_require CPerlObj::Perl_ck_require
+#undef ck_retarget
+#define ck_retarget CPerlObj::Perl_ck_retarget
+#undef ck_rfun
+#define ck_rfun CPerlObj::Perl_ck_rfun
+#undef ck_rvconst
+#define ck_rvconst CPerlObj::Perl_ck_rvconst
+#undef ck_scmp
+#define ck_scmp CPerlObj::Perl_ck_scmp
+#undef ck_select
+#define ck_select CPerlObj::Perl_ck_select
+#undef ck_shift
+#define ck_shift CPerlObj::Perl_ck_shift
+#undef ck_sort
+#define ck_sort CPerlObj::Perl_ck_sort
+#undef ck_spair
+#define ck_spair CPerlObj::Perl_ck_spair
+#undef ck_split
+#define ck_split CPerlObj::Perl_ck_split
+#undef ck_subr
+#define ck_subr CPerlObj::Perl_ck_subr
+#undef ck_svconst
+#define ck_svconst CPerlObj::Perl_ck_svconst
+#undef ck_trunc
+#define ck_trunc CPerlObj::Perl_ck_trunc
+#undef convert
+#define convert CPerlObj::Perl_convert
+#undef cpytill
+#define cpytill CPerlObj::Perl_cpytill
+#undef croak
+#define croak CPerlObj::Perl_croak
+#undef cv_ckproto
+#define cv_ckproto CPerlObj::Perl_cv_ckproto
+#undef cv_clone
+#define cv_clone CPerlObj::Perl_cv_clone
+#undef cv_clone2
+#define cv_clone2 CPerlObj::cv_clone2
+#undef cv_const_sv
+#define cv_const_sv CPerlObj::Perl_cv_const_sv
+#undef cv_undef
+#define cv_undef CPerlObj::Perl_cv_undef
+#undef cx_dump
+#define cx_dump CPerlObj::Perl_cx_dump
+#undef cxinc
+#define cxinc CPerlObj::Perl_cxinc
+#undef deb
+#define deb CPerlObj::Perl_deb
+#undef deb_growlevel
+#define deb_growlevel CPerlObj::Perl_deb_growlevel
+#undef debop
+#define debop CPerlObj::Perl_debop
+#undef debstackptrs
+#define debstackptrs CPerlObj::Perl_debstackptrs
+#undef debprof
+#define debprof CPerlObj::debprof
+#undef debprofdump
+#define debprofdump CPerlObj::Perl_debprofdump
+#undef debstack
+#define debstack CPerlObj::Perl_debstack
+#undef del_sv
+#define del_sv CPerlObj::del_sv
+#undef del_xiv
+#define del_xiv CPerlObj::del_xiv
+#undef del_xnv
+#define del_xnv CPerlObj::del_xnv
+#undef del_xpv
+#define del_xpv CPerlObj::del_xpv
+#undef del_xrv
+#define del_xrv CPerlObj::del_xrv
+#undef delimcpy
+#define delimcpy CPerlObj::Perl_delimcpy
+#undef depcom
+#define depcom CPerlObj::depcom
+#undef deprecate
+#define deprecate CPerlObj::Perl_deprecate
+#undef die
+#define die CPerlObj::Perl_die
+#undef die_where
+#define die_where CPerlObj::Perl_die_where
+#undef div128
+#define div128 CPerlObj::div128
+#undef doencodes
+#define doencodes CPerlObj::doencodes
+#undef doeval
+#define doeval CPerlObj::doeval
+#undef doform
+#define doform CPerlObj::doform
+#undef dofindlabel
+#define dofindlabel CPerlObj::Perl_dofindlabel
+#undef doparseform
+#define doparseform CPerlObj::doparseform
+#undef dopoptoeval
+#define dopoptoeval CPerlObj::Perl_dopoptoeval
+#undef dopoptolabel
+#define dopoptolabel CPerlObj::dopoptolabel
+#undef dopoptoloop
+#define dopoptoloop CPerlObj::dopoptoloop
+#undef dopoptosub
+#define dopoptosub CPerlObj::dopoptosub
+#undef dounwind
+#define dounwind CPerlObj::Perl_dounwind
+#undef do_aexec
+#define do_aexec CPerlObj::Perl_do_aexec
+#undef do_aspawn
+#define do_aspawn CPerlObj::do_aspawn
+#undef do_chop
+#define do_chop CPerlObj::Perl_do_chop
+#undef do_close
+#define do_close CPerlObj::Perl_do_close
+#undef do_eof
+#define do_eof CPerlObj::Perl_do_eof
+#undef do_exec
+#define do_exec CPerlObj::Perl_do_exec
+#undef do_execfree
+#define do_execfree CPerlObj::Perl_do_execfree
+#undef do_ipcctl
+#define do_ipcctl CPerlObj::Perl_do_ipcctl
+#undef do_ipcget
+#define do_ipcget CPerlObj::Perl_do_ipcget
+#undef do_join
+#define do_join CPerlObj::Perl_do_join
+#undef do_kv
+#define do_kv CPerlObj::Perl_do_kv
+#undef do_msgrcv
+#define do_msgrcv CPerlObj::Perl_do_msgrcv
+#undef do_msgsnd
+#define do_msgsnd CPerlObj::Perl_do_msgsnd
+#undef do_open
+#define do_open CPerlObj::Perl_do_open
+#undef do_pipe
+#define do_pipe CPerlObj::Perl_do_pipe
+#undef do_print
+#define do_print CPerlObj::Perl_do_print
+#undef do_readline
+#define do_readline CPerlObj::Perl_do_readline
+#undef do_chomp
+#define do_chomp CPerlObj::Perl_do_chomp
+#undef do_seek
+#define do_seek CPerlObj::Perl_do_seek
+#undef do_semop
+#define do_semop CPerlObj::Perl_do_semop
+#undef do_shmio
+#define do_shmio CPerlObj::Perl_do_shmio
+#undef do_sprintf
+#define do_sprintf CPerlObj::Perl_do_sprintf
+#undef do_sysseek
+#define do_sysseek CPerlObj::Perl_do_sysseek
+#undef do_tell
+#define do_tell CPerlObj::Perl_do_tell
+#undef do_trans
+#define do_trans CPerlObj::Perl_do_trans
+#undef do_vecset
+#define do_vecset CPerlObj::Perl_do_vecset
+#undef do_vop
+#define do_vop CPerlObj::Perl_do_vop
+#undef do_clean_all
+#define do_clean_all CPerlObj::do_clean_all
+#undef do_clean_named_objs
+#define do_clean_named_objs CPerlObj::do_clean_named_objs
+#undef do_clean_objs
+#define do_clean_objs CPerlObj::do_clean_objs
+#undef do_report_used
+#define do_report_used CPerlObj::do_report_used
+#undef docatch
+#define docatch CPerlObj::docatch
+#undef dowantarray
+#define dowantarray CPerlObj::Perl_dowantarray
+#undef dump
+#define dump CPerlObj::dump
+#undef dump_all
+#define dump_all CPerlObj::Perl_dump_all
+#undef dump_eval
+#define dump_eval CPerlObj::Perl_dump_eval
+#undef dump_fds
+#define dump_fds CPerlObj::Perl_dump_fds
+#undef dump_form
+#define dump_form CPerlObj::Perl_dump_form
+#undef dump_gv
+#define dump_gv CPerlObj::Perl_dump_gv
+#undef dump_op
+#define dump_op CPerlObj::Perl_dump_op
+#undef dump_pm
+#define dump_pm CPerlObj::Perl_dump_pm
+#undef dump_packsubs
+#define dump_packsubs CPerlObj::Perl_dump_packsubs
+#undef dump_sub
+#define dump_sub CPerlObj::Perl_dump_sub
+#undef dumpuntil
+#define dumpuntil CPerlObj::dumpuntil
+#undef fbm_compile
+#define fbm_compile CPerlObj::Perl_fbm_compile
+#undef fbm_instr
+#define fbm_instr CPerlObj::Perl_fbm_instr
+#undef filter_add
+#define filter_add CPerlObj::Perl_filter_add
+#undef filter_del
+#define filter_del CPerlObj::Perl_filter_del
+#undef filter_gets
+#define filter_gets CPerlObj::filter_gets
+#undef filter_read
+#define filter_read CPerlObj::Perl_filter_read
+#undef find_beginning
+#define find_beginning CPerlObj::find_beginning
+#undef forbid_setid
+#define forbid_setid CPerlObj::forbid_setid
+#undef force_ident
+#define force_ident CPerlObj::Perl_force_ident
+#undef force_list
+#define force_list CPerlObj::Perl_force_list
+#undef force_next
+#define force_next CPerlObj::Perl_force_next
+#undef force_word
+#define force_word CPerlObj::Perl_force_word
+#undef force_version
+#define force_version CPerlObj::force_version
+#undef form
+#define form CPerlObj::Perl_form
+#undef fold_constants
+#define fold_constants CPerlObj::Perl_fold_constants
+#undef fprintf
+#define fprintf CPerlObj::fprintf
+#undef free_tmps
+#define free_tmps CPerlObj::Perl_free_tmps
+#undef gen_constant_list
+#define gen_constant_list CPerlObj::Perl_gen_constant_list
+#undef get_db_sub
+#define get_db_sub CPerlObj::get_db_sub
+#undef get_op_descs
+#define get_op_descs CPerlObj::Perl_get_op_descs
+#undef get_op_names
+#define get_op_names CPerlObj::Perl_get_op_names
+#undef getlogin
+#define getlogin CPerlObj::getlogin
+#undef gp_free
+#define gp_free CPerlObj::Perl_gp_free
+#undef gp_ref
+#define gp_ref CPerlObj::Perl_gp_ref
+#undef gv_autoload4
+#define gv_autoload4 CPerlObj::Perl_gv_autoload4
+#undef gv_AVadd
+#define gv_AVadd CPerlObj::Perl_gv_AVadd
+#undef gv_HVadd
+#define gv_HVadd CPerlObj::Perl_gv_HVadd
+#undef gv_IOadd
+#define gv_IOadd CPerlObj::Perl_gv_IOadd
+#undef gv_check
+#define gv_check CPerlObj::Perl_gv_check
+#undef gv_efullname
+#define gv_efullname CPerlObj::Perl_gv_efullname
+#undef gv_efullname3
+#define gv_efullname3 CPerlObj::Perl_gv_efullname3
+#undef gv_ename
+#define gv_ename CPerlObj::gv_ename
+#undef gv_fetchfile
+#define gv_fetchfile CPerlObj::Perl_gv_fetchfile
+#undef gv_fetchmeth
+#define gv_fetchmeth CPerlObj::Perl_gv_fetchmeth
+#undef gv_fetchmethod
+#define gv_fetchmethod CPerlObj::Perl_gv_fetchmethod
+#undef gv_fetchmethod_autoload
+#define gv_fetchmethod_autoload CPerlObj::Perl_gv_fetchmethod_autoload
+#undef gv_fetchpv
+#define gv_fetchpv CPerlObj::Perl_gv_fetchpv
+#undef gv_fullname
+#define gv_fullname CPerlObj::Perl_gv_fullname
+#undef gv_fullname3
+#define gv_fullname3 CPerlObj::Perl_gv_fullname3
+#undef gv_init
+#define gv_init CPerlObj::Perl_gv_init
+#undef gv_init_sv
+#define gv_init_sv CPerlObj::gv_init_sv
+#undef gv_stashpv
+#define gv_stashpv CPerlObj::Perl_gv_stashpv
+#undef gv_stashpvn
+#define gv_stashpvn CPerlObj::Perl_gv_stashpvn
+#undef gv_stashsv
+#define gv_stashsv CPerlObj::Perl_gv_stashsv
+#undef he_delayfree
+#define he_delayfree CPerlObj::Perl_he_delayfree
+#undef he_free
+#define he_free CPerlObj::Perl_he_free
+#undef hfreeentries
+#define hfreeentries CPerlObj::hfreeentries
+#undef hoistmust
+#define hoistmust CPerlObj::Perl_hoistmust
+#undef hsplit
+#define hsplit CPerlObj::hsplit
+#undef hv_clear
+#define hv_clear CPerlObj::Perl_hv_clear
+#undef hv_delayfree_ent
+#define hv_delayfree_ent CPerlObj::Perl_hv_delayfree_ent
+#undef hv_delete
+#define hv_delete CPerlObj::Perl_hv_delete
+#undef hv_delete_ent
+#define hv_delete_ent CPerlObj::Perl_hv_delete_ent
+#undef hv_exists
+#define hv_exists CPerlObj::Perl_hv_exists
+#undef hv_exists_ent
+#define hv_exists_ent CPerlObj::Perl_hv_exists_ent
+#undef hv_free_ent
+#define hv_free_ent CPerlObj::Perl_hv_free_ent
+#undef hv_fetch
+#define hv_fetch CPerlObj::Perl_hv_fetch
+#undef hv_fetch_ent
+#define hv_fetch_ent CPerlObj::Perl_hv_fetch_ent
+#undef hv_iterinit
+#define hv_iterinit CPerlObj::Perl_hv_iterinit
+#undef hv_iterkey
+#define hv_iterkey CPerlObj::Perl_hv_iterkey
+#undef hv_iterkeysv
+#define hv_iterkeysv CPerlObj::Perl_hv_iterkeysv
+#undef hv_iternext
+#define hv_iternext CPerlObj::Perl_hv_iternext
+#undef hv_iternextsv
+#define hv_iternextsv CPerlObj::Perl_hv_iternextsv
+#undef hv_iterval
+#define hv_iterval CPerlObj::Perl_hv_iterval
+#undef hv_ksplit
+#define hv_ksplit CPerlObj::Perl_hv_ksplit
+#undef hv_magic
+#define hv_magic CPerlObj::Perl_hv_magic
+#undef hv_store
+#define hv_store CPerlObj::Perl_hv_store
+#undef hv_store_ent
+#define hv_store_ent CPerlObj::Perl_hv_store_ent
+#undef hv_undef
+#define hv_undef CPerlObj::Perl_hv_undef
+#undef ibcmp
+#define ibcmp CPerlObj::Perl_ibcmp
+#undef ibcmp_locale
+#define ibcmp_locale CPerlObj::Perl_ibcmp_locale
+#undef incpush
+#define incpush CPerlObj::incpush
+#undef incline
+#define incline CPerlObj::incline
+#undef incl_perldb
+#define incl_perldb CPerlObj::incl_perldb
+#undef ingroup
+#define ingroup CPerlObj::Perl_ingroup
+#undef init_debugger
+#define init_debugger CPerlObj::init_debugger
+#undef init_ids
+#define init_ids CPerlObj::init_ids
+#undef init_main_thread
+#define init_main_thread CPerlObj::init_main_thread
+#undef init_main_stash
+#define init_main_stash CPerlObj::init_main_stash
+#undef init_lexer
+#define init_lexer CPerlObj::init_lexer
+#undef init_perllib
+#define init_perllib CPerlObj::init_perllib
+#undef init_predump_symbols
+#define init_predump_symbols CPerlObj::init_predump_symbols
+#undef init_postdump_symbols
+#define init_postdump_symbols CPerlObj::init_postdump_symbols
+#undef init_stacks
+#define init_stacks CPerlObj::Perl_init_stacks
+#undef intro_my
+#define intro_my CPerlObj::Perl_intro_my
+#undef nuke_stacks
+#define nuke_stacks CPerlObj::nuke_stacks
+#undef instr
+#define instr CPerlObj::Perl_instr
+#undef intuit_method
+#define intuit_method CPerlObj::intuit_method
+#undef intuit_more
+#define intuit_more CPerlObj::Perl_intuit_more
+#undef invert
+#define invert CPerlObj::Perl_invert
+#undef io_close
+#define io_close CPerlObj::Perl_io_close
+#undef is_an_int
+#define is_an_int CPerlObj::is_an_int
+#undef isa_lookup
+#define isa_lookup CPerlObj::isa_lookup
+#undef jmaybe
+#define jmaybe CPerlObj::Perl_jmaybe
+#undef keyword
+#define keyword CPerlObj::Perl_keyword
+#undef leave_scope
+#define leave_scope CPerlObj::Perl_leave_scope
+#undef lex_end
+#define lex_end CPerlObj::Perl_lex_end
+#undef lex_start
+#define lex_start CPerlObj::Perl_lex_start
+#undef linklist
+#define linklist CPerlObj::Perl_linklist
+#undef list
+#define list CPerlObj::Perl_list
+#undef list_assignment
+#define list_assignment CPerlObj::list_assignment
+#undef listkids
+#define listkids CPerlObj::Perl_listkids
+#undef lop
+#define lop CPerlObj::lop
+#undef localize
+#define localize CPerlObj::Perl_localize
+#undef looks_like_number
+#define looks_like_number CPerlObj::Perl_looks_like_number
+#undef magic_clearenv
+#define magic_clearenv CPerlObj::Perl_magic_clearenv
+#undef magic_clear_all_env
+#define magic_clear_all_env CPerlObj::Perl_magic_clear_all_env
+#undef magic_clearpack
+#define magic_clearpack CPerlObj::Perl_magic_clearpack
+#undef magic_clearsig
+#define magic_clearsig CPerlObj::Perl_magic_clearsig
+#undef magic_existspack
+#define magic_existspack CPerlObj::Perl_magic_existspack
+#undef magic_freedefelem
+#define magic_freedefelem CPerlObj::Perl_magic_freedefelem
+#undef magic_freeregexp
+#define magic_freeregexp CPerlObj::Perl_magic_freeregexp
+#undef magic_get
+#define magic_get CPerlObj::Perl_magic_get
+#undef magic_getarylen
+#define magic_getarylen CPerlObj::Perl_magic_getarylen
+#undef magic_getdefelem
+#define magic_getdefelem CPerlObj::Perl_magic_getdefelem
+#undef magic_getpack
+#define magic_getpack CPerlObj::Perl_magic_getpack
+#undef magic_getglob
+#define magic_getglob CPerlObj::Perl_magic_getglob
+#undef magic_getpos
+#define magic_getpos CPerlObj::Perl_magic_getpos
+#undef magic_getsig
+#define magic_getsig CPerlObj::Perl_magic_getsig
+#undef magic_gettaint
+#define magic_gettaint CPerlObj::Perl_magic_gettaint
+#undef magic_getuvar
+#define magic_getuvar CPerlObj::Perl_magic_getuvar
+#undef magic_len
+#define magic_len CPerlObj::Perl_magic_len
+#undef magic_methcall
+#define magic_methcall CPerlObj::magic_methcall
+#undef magic_methpack
+#define magic_methpack CPerlObj::magic_methpack
+#undef magic_nextpack
+#define magic_nextpack CPerlObj::Perl_magic_nextpack
+#undef magic_set
+#define magic_set CPerlObj::Perl_magic_set
+#undef magic_set_all_env
+#define magic_set_all_env CPerlObj::Perl_magic_set_all_env
+#undef magic_setamagic
+#define magic_setamagic CPerlObj::Perl_magic_setamagic
+#undef magic_setarylen
+#define magic_setarylen CPerlObj::Perl_magic_setarylen
+#undef magic_setbm
+#define magic_setbm CPerlObj::Perl_magic_setbm
+#undef magic_setcollxfrm
+#define magic_setcollxfrm CPerlObj::Perl_magic_setcollxfrm
+#undef magic_setdbline
+#define magic_setdbline CPerlObj::Perl_magic_setdbline
+#undef magic_setdefelem
+#define magic_setdefelem CPerlObj::Perl_magic_setdefelem
+#undef magic_setenv
+#define magic_setenv CPerlObj::Perl_magic_setenv
+#undef magic_setfm
+#define magic_setfm CPerlObj::Perl_magic_setfm
+#undef magic_setisa
+#define magic_setisa CPerlObj::Perl_magic_setisa
+#undef magic_setglob
+#define magic_setglob CPerlObj::Perl_magic_setglob
+#undef magic_setmglob
+#define magic_setmglob CPerlObj::Perl_magic_setmglob
+#undef magic_setnkeys
+#define magic_setnkeys CPerlObj::Perl_magic_setnkeys
+#undef magic_setpack
+#define magic_setpack CPerlObj::Perl_magic_setpack
+#undef magic_setpos
+#define magic_setpos CPerlObj::Perl_magic_setpos
+#undef magic_setsig
+#define magic_setsig CPerlObj::Perl_magic_setsig
+#undef magic_setsubstr
+#define magic_setsubstr CPerlObj::Perl_magic_setsubstr
+#undef magic_settaint
+#define magic_settaint CPerlObj::Perl_magic_settaint
+#undef magic_setuvar
+#define magic_setuvar CPerlObj::Perl_magic_setuvar
+#undef magic_setvec
+#define magic_setvec CPerlObj::Perl_magic_setvec
+#undef magic_sizepack
+#define magic_sizepack CPerlObj::Perl_magic_sizepack
+#undef magic_wipepack
+#define magic_wipepack CPerlObj::Perl_magic_wipepack
+#undef magicname
+#define magicname CPerlObj::Perl_magicname
+#undef markstack_grow
+#define markstack_grow CPerlObj::Perl_markstack_grow
+#undef markstack_ptr
+#define markstack_ptr CPerlObj::Perl_markstack_ptr
+#undef mess
+#define mess CPerlObj::Perl_mess
+#undef mess_alloc
+#define mess_alloc CPerlObj::mess_alloc
+#undef mem_collxfrm
+#define mem_collxfrm CPerlObj::Perl_mem_collxfrm
+#undef mg_clear
+#define mg_clear CPerlObj::Perl_mg_clear
+#undef mg_copy
+#define mg_copy CPerlObj::Perl_mg_copy
+#undef mg_find
+#define mg_find CPerlObj::Perl_mg_find
+#undef mg_free
+#define mg_free CPerlObj::Perl_mg_free
+#undef mg_get
+#define mg_get CPerlObj::Perl_mg_get
+#undef mg_length
+#define mg_length CPerlObj::Perl_mg_length
+#undef mg_magical
+#define mg_magical CPerlObj::Perl_mg_magical
+#undef mg_set
+#define mg_set CPerlObj::Perl_mg_set
+#undef mg_size
+#define mg_size CPerlObj::Perl_mg_size
+#undef missingterm
+#define missingterm CPerlObj::missingterm
+#undef mod
+#define mod CPerlObj::Perl_mod
+#undef modkids
+#define modkids CPerlObj::Perl_modkids
+#undef moreswitches
+#define moreswitches CPerlObj::Perl_moreswitches
+#undef more_sv
+#define more_sv CPerlObj::more_sv
+#undef more_xiv
+#define more_xiv CPerlObj::more_xiv
+#undef more_xnv
+#define more_xnv CPerlObj::more_xnv
+#undef more_xpv
+#define more_xpv CPerlObj::more_xpv
+#undef more_xrv
+#define more_xrv CPerlObj::more_xrv
+#undef mstats
+#define mstats CPerlObj::mstats
+#undef mul128
+#define mul128 CPerlObj::mul128
+#undef my
+#define my CPerlObj::Perl_my
+#undef my_bcopy
+#define my_bcopy CPerlObj::Perl_my_bcopy
+#undef my_bzero
+#define my_bzero CPerlObj::Perl_my_bzero
+#undef my_exit
+#define my_exit CPerlObj::Perl_my_exit
+#undef my_exit_jump
+#define my_exit_jump CPerlObj::my_exit_jump
+#undef my_failure_exit
+#define my_failure_exit CPerlObj::Perl_my_failure_exit
+#undef my_lstat
+#define my_lstat CPerlObj::Perl_my_lstat
+#undef my_memcmp
+#define my_memcmp CPerlObj::my_memcmp
+#undef my_pclose
+#define my_pclose CPerlObj::Perl_my_pclose
+#undef my_popen
+#define my_popen CPerlObj::Perl_my_popen
+#undef my_safemalloc
+#define my_safemalloc CPerlObj::my_safemalloc
+#undef my_setenv
+#define my_setenv CPerlObj::Perl_my_setenv
+#undef my_stat
+#define my_stat CPerlObj::Perl_my_stat
+#undef my_swap
+#define my_swap CPerlObj::my_swap
+#undef my_htonl
+#define my_htonl CPerlObj::my_htonl
+#undef my_ntohl
+#define my_ntohl CPerlObj::my_ntohl
+#undef my_unexec
+#define my_unexec CPerlObj::Perl_my_unexec
+#undef newANONLIST
+#define newANONLIST CPerlObj::Perl_newANONLIST
+#undef newANONHASH
+#define newANONHASH CPerlObj::Perl_newANONHASH
+#undef newANONSUB
+#define newANONSUB CPerlObj::Perl_newANONSUB
+#undef newASSIGNOP
+#define newASSIGNOP CPerlObj::Perl_newASSIGNOP
+#undef newCONDOP
+#define newCONDOP CPerlObj::Perl_newCONDOP
++#undef newCONSTSUB
++#define newCONSTSUB CPerlObj::Perl_newCONSTSUB
+#undef newDEFSVOP
+#define newDEFSVOP CPerlObj::newDEFSVOP
+#undef newFORM
+#define newFORM CPerlObj::Perl_newFORM
+#undef newFOROP
+#define newFOROP CPerlObj::Perl_newFOROP
+#undef newLOGOP
+#define newLOGOP CPerlObj::Perl_newLOGOP
+#undef newLOOPEX
+#define newLOOPEX CPerlObj::Perl_newLOOPEX
+#undef newLOOPOP
+#define newLOOPOP CPerlObj::Perl_newLOOPOP
+#undef newMETHOD
+#define newMETHOD CPerlObj::Perl_newMETHOD
+#undef newNULLLIST
+#define newNULLLIST CPerlObj::Perl_newNULLLIST
+#undef newOP
+#define newOP CPerlObj::Perl_newOP
+#undef newPROG
+#define newPROG CPerlObj::Perl_newPROG
+#undef newRANGE
+#define newRANGE CPerlObj::Perl_newRANGE
+#undef newSLICEOP
+#define newSLICEOP CPerlObj::Perl_newSLICEOP
+#undef newSTATEOP
+#define newSTATEOP CPerlObj::Perl_newSTATEOP
+#undef newSUB
+#define newSUB CPerlObj::Perl_newSUB
+#undef newXS
+#define newXS CPerlObj::Perl_newXS
+#undef newXSUB
+#define newXSUB CPerlObj::Perl_newXSUB
+#undef newAV
+#define newAV CPerlObj::Perl_newAV
+#undef newAVREF
+#define newAVREF CPerlObj::Perl_newAVREF
+#undef newBINOP
+#define newBINOP CPerlObj::Perl_newBINOP
+#undef newCVREF
+#define newCVREF CPerlObj::Perl_newCVREF
+#undef newCVOP
+#define newCVOP CPerlObj::Perl_newCVOP
+#undef newGVOP
+#define newGVOP CPerlObj::Perl_newGVOP
+#undef newGVgen
+#define newGVgen CPerlObj::Perl_newGVgen
+#undef newGVREF
+#define newGVREF CPerlObj::Perl_newGVREF
+#undef newHVREF
+#define newHVREF CPerlObj::Perl_newHVREF
+#undef newHV
+#define newHV CPerlObj::Perl_newHV
+#undef newIO
+#define newIO CPerlObj::Perl_newIO
+#undef newLISTOP
+#define newLISTOP CPerlObj::Perl_newLISTOP
+#undef newPMOP
+#define newPMOP CPerlObj::Perl_newPMOP
+#undef newPVOP
+#define newPVOP CPerlObj::Perl_newPVOP
+#undef newRV
+#define newRV CPerlObj::Perl_newRV
+#undef Perl_newRV_noinc
+#define Perl_newRV_noinc CPerlObj::Perl_newRV_noinc
+#undef newSV
+#define newSV CPerlObj::Perl_newSV
+#undef newSVREF
+#define newSVREF CPerlObj::Perl_newSVREF
+#undef newSVOP
+#define newSVOP CPerlObj::Perl_newSVOP
+#undef newSViv
+#define newSViv CPerlObj::Perl_newSViv
+#undef newSVnv
+#define newSVnv CPerlObj::Perl_newSVnv
+#undef newSVpv
+#define newSVpv CPerlObj::Perl_newSVpv
+#undef newSVpvf
+#define newSVpvf CPerlObj::Perl_newSVpvf
+#undef newSVpvn
+#define newSVpvn CPerlObj::Perl_newSVpvn
+#undef newSVrv
+#define newSVrv CPerlObj::Perl_newSVrv
+#undef newSVsv
+#define newSVsv CPerlObj::Perl_newSVsv
+#undef newUNOP
+#define newUNOP CPerlObj::Perl_newUNOP
+#undef newWHILEOP
+#define newWHILEOP CPerlObj::Perl_newWHILEOP
+#undef new_logop
+#define new_logop CPerlObj::new_logop
+#undef new_sv
+#define new_sv CPerlObj::new_sv
+#undef new_xiv
+#define new_xiv CPerlObj::new_xiv
+#undef new_xnv
+#define new_xnv CPerlObj::new_xnv
+#undef new_xpv
+#define new_xpv CPerlObj::new_xpv
+#undef new_xrv
+#define new_xrv CPerlObj::new_xrv
+#undef nextargv
+#define nextargv CPerlObj::Perl_nextargv
+#undef nextchar
+#define nextchar CPerlObj::nextchar
+#undef ninstr
+#define ninstr CPerlObj::Perl_ninstr
+#undef not_a_number
+#define not_a_number CPerlObj::not_a_number
+#undef no_fh_allowed
+#define no_fh_allowed CPerlObj::Perl_no_fh_allowed
+#undef no_op
+#define no_op CPerlObj::Perl_no_op
+#undef null
+#define null CPerlObj::null
+#undef profiledata
+#define profiledata CPerlObj::Perl_profiledata
+#undef package
+#define package CPerlObj::Perl_package
+#undef pad_alloc
+#define pad_alloc CPerlObj::Perl_pad_alloc
+#undef pad_allocmy
+#define pad_allocmy CPerlObj::Perl_pad_allocmy
+#undef pad_findmy
+#define pad_findmy CPerlObj::Perl_pad_findmy
+#undef op_free
+#define op_free CPerlObj::Perl_op_free
+#undef oopsCV
+#define oopsCV CPerlObj::Perl_oopsCV
+#undef oopsAV
+#define oopsAV CPerlObj::Perl_oopsAV
+#undef oopsHV
+#define oopsHV CPerlObj::Perl_oopsHV
+#undef open_script
+#define open_script CPerlObj::open_script
+#undef pad_leavemy
+#define pad_leavemy CPerlObj::Perl_pad_leavemy
+#undef pad_sv
+#define pad_sv CPerlObj::Perl_pad_sv
+#undef pad_findlex
+#define pad_findlex CPerlObj::pad_findlex
+#undef pad_free
+#define pad_free CPerlObj::Perl_pad_free
+#undef pad_reset
+#define pad_reset CPerlObj::Perl_pad_reset
+#undef pad_swipe
+#define pad_swipe CPerlObj::Perl_pad_swipe
+#undef peep
+#define peep CPerlObj::Perl_peep
+#undef perl_call_argv
+#define perl_call_argv CPerlObj::perl_call_argv
+#undef perl_call_method
+#define perl_call_method CPerlObj::perl_call_method
+#undef perl_call_pv
+#define perl_call_pv CPerlObj::perl_call_pv
+#undef perl_call_sv
+#define perl_call_sv CPerlObj::perl_call_sv
+#undef perl_callargv
+#define perl_callargv CPerlObj::perl_callargv
+#undef perl_callpv
+#define perl_callpv CPerlObj::perl_callpv
+#undef perl_callsv
+#define perl_callsv CPerlObj::perl_callsv
+#undef perl_eval_pv
+#define perl_eval_pv CPerlObj::perl_eval_pv
+#undef perl_eval_sv
+#define perl_eval_sv CPerlObj::perl_eval_sv
+#undef perl_get_sv
+#define perl_get_sv CPerlObj::perl_get_sv
+#undef perl_get_av
+#define perl_get_av CPerlObj::perl_get_av
+#undef perl_get_hv
+#define perl_get_hv CPerlObj::perl_get_hv
+#undef perl_get_cv
+#define perl_get_cv CPerlObj::perl_get_cv
+#undef Perl_GetVars
+#define Perl_GetVars CPerlObj::Perl_GetVars
+#undef perl_init_fold
+#define perl_init_fold CPerlObj::perl_init_fold
+#undef perl_init_i18nl10n
+#define perl_init_i18nl10n CPerlObj::perl_init_i18nl10n
+#undef perl_init_i18nl14n
+#define perl_init_i18nl14n CPerlObj::perl_init_i18nl14n
+#undef perl_new_collate
+#define perl_new_collate CPerlObj::perl_new_collate
+#undef perl_new_ctype
+#define perl_new_ctype CPerlObj::perl_new_ctype
+#undef perl_new_numeric
+#define perl_new_numeric CPerlObj::perl_new_numeric
+#undef perl_set_numeric_standard
+#define perl_set_numeric_standard CPerlObj::perl_set_numeric_standard
+#undef perl_set_numeric_local
+#define perl_set_numeric_local CPerlObj::perl_set_numeric_local
+#undef perl_require_pv
+#define perl_require_pv CPerlObj::perl_require_pv
+#undef perl_thread
+#define perl_thread CPerlObj::perl_thread
+#undef pidgone
+#define pidgone CPerlObj::Perl_pidgone
+#undef pmflag
+#define pmflag CPerlObj::Perl_pmflag
+#undef pmruntime
+#define pmruntime CPerlObj::Perl_pmruntime
+#undef pmtrans
+#define pmtrans CPerlObj::Perl_pmtrans
+#undef pop_return
+#define pop_return CPerlObj::Perl_pop_return
+#undef pop_scope
+#define pop_scope CPerlObj::Perl_pop_scope
+#undef prepend_elem
+#define prepend_elem CPerlObj::Perl_prepend_elem
+#undef provide_ref
+#define provide_ref CPerlObj::Perl_provide_ref
+#undef push_return
+#define push_return CPerlObj::Perl_push_return
+#undef push_scope
+#define push_scope CPerlObj::Perl_push_scope
+#undef pregcomp
+#define pregcomp CPerlObj::Perl_pregcomp
+#undef qsortsv
+#define qsortsv CPerlObj::qsortsv
+#undef ref
+#define ref CPerlObj::Perl_ref
+#undef refkids
+#define refkids CPerlObj::Perl_refkids
+#undef regdump
+#define regdump CPerlObj::Perl_regdump
+#undef rsignal
+#define rsignal CPerlObj::Perl_rsignal
+#undef rsignal_restore
+#define rsignal_restore CPerlObj::Perl_rsignal_restore
+#undef rsignal_save
+#define rsignal_save CPerlObj::Perl_rsignal_save
+#undef rsignal_state
+#define rsignal_state CPerlObj::Perl_rsignal_state
+#undef pregexec
+#define pregexec CPerlObj::Perl_pregexec
+#undef pregfree
+#define pregfree CPerlObj::Perl_pregfree
+#undef re_croak2
+#define re_croak2 CPerlObj::re_croak2
+#undef refto
+#define refto CPerlObj::refto
+#undef reg
+#define reg CPerlObj::reg
+#undef reg_node
+#define reg_node CPerlObj::reg_node
+#undef reganode
+#define reganode CPerlObj::reganode
+#undef regatom
+#define regatom CPerlObj::regatom
+#undef regbranch
+#define regbranch CPerlObj::regbranch
+#undef regc
+#define regc CPerlObj::regc
+#undef regcurly
+#define regcurly CPerlObj::regcurly
+#undef regcppush
+#define regcppush CPerlObj::regcppush
+#undef regcppop
+#define regcppop CPerlObj::regcppop
+#undef regclass
+#define regclass CPerlObj::regclass
+#undef regexec_flags
+#define regexec_flags CPerlObj::Perl_regexec_flags
+#undef reginclass
+#define reginclass CPerlObj::reginclass
+#undef reginsert
+#define reginsert CPerlObj::reginsert
+#undef regmatch
+#define regmatch CPerlObj::regmatch
+#undef regnext
+#define regnext CPerlObj::Perl_regnext
+#undef regoptail
+#define regoptail CPerlObj::regoptail
+#undef regpiece
+#define regpiece CPerlObj::regpiece
+#undef regprop
+#define regprop CPerlObj::Perl_regprop
+#undef regrepeat
+#define regrepeat CPerlObj::regrepeat
+#undef regrepeat_hard
+#define regrepeat_hard CPerlObj::regrepeat_hard
+#undef regset
+#define regset CPerlObj::regset
+#undef regtail
+#define regtail CPerlObj::regtail
+#undef regtry
+#define regtry CPerlObj::regtry
+#undef repeatcpy
+#define repeatcpy CPerlObj::Perl_repeatcpy
+#undef restore_expect
+#define restore_expect CPerlObj::restore_expect
+#undef restore_lex_expect
+#define restore_lex_expect CPerlObj::restore_lex_expect
+#undef restore_magic
+#define restore_magic CPerlObj::restore_magic
+#undef restore_rsfp
+#define restore_rsfp CPerlObj::restore_rsfp
+#undef rninstr
+#define rninstr CPerlObj::Perl_rninstr
+#undef runops_standard
+#define runops_standard CPerlObj::Perl_runops_standard
+#undef runops_debug
+#define runops_debug CPerlObj::Perl_runops_debug
+#undef rxres_free
+#define rxres_free CPerlObj::Perl_rxres_free
+#undef rxres_restore
+#define rxres_restore CPerlObj::Perl_rxres_restore
+#undef rxres_save
+#define rxres_save CPerlObj::Perl_rxres_save
+#ifndef MYMALLOC
+#undef safefree
+#define safefree CPerlObj::Perl_safefree
+#undef safecalloc
+#define safecalloc CPerlObj::Perl_safecalloc
+#undef safemalloc
+#define safemalloc CPerlObj::Perl_safemalloc
+#undef saferealloc
+#define saferealloc CPerlObj::Perl_saferealloc
+#endif /* MYMALLOC */
+#undef same_dirent
+#define same_dirent CPerlObj::same_dirent
+#undef savepv
+#define savepv CPerlObj::Perl_savepv
+#undef savepvn
+#define savepvn CPerlObj::Perl_savepvn
+#undef savestack_grow
+#define savestack_grow CPerlObj::Perl_savestack_grow
+#undef save_aelem
+#define save_aelem CPerlObj::Perl_save_aelem
+#undef save_aptr
+#define save_aptr CPerlObj::Perl_save_aptr
+#undef save_ary
+#define save_ary CPerlObj::Perl_save_ary
+#undef save_clearsv
+#define save_clearsv CPerlObj::Perl_save_clearsv
+#undef save_delete
+#define save_delete CPerlObj::Perl_save_delete
+#undef save_destructor
+#define save_destructor CPerlObj::Perl_save_destructor
+#undef save_freesv
+#define save_freesv CPerlObj::Perl_save_freesv
+#undef save_freeop
+#define save_freeop CPerlObj::Perl_save_freeop
+#undef save_freepv
+#define save_freepv CPerlObj::Perl_save_freepv
+#undef save_gp
+#define save_gp CPerlObj::Perl_save_gp
+#undef save_hash
+#define save_hash CPerlObj::Perl_save_hash
+#undef save_hek
+#define save_hek CPerlObj::save_hek
+#undef save_helem
+#define save_helem CPerlObj::Perl_save_helem
+#undef save_hptr
+#define save_hptr CPerlObj::Perl_save_hptr
+#undef save_I16
+#define save_I16 CPerlObj::Perl_save_I16
+#undef save_I32
+#define save_I32 CPerlObj::Perl_save_I32
+#undef save_int
+#define save_int CPerlObj::Perl_save_int
+#undef save_item
+#define save_item CPerlObj::Perl_save_item
+#undef save_iv
+#define save_iv CPerlObj::Perl_save_iv
+#undef save_lines
+#define save_lines CPerlObj::save_lines
+#undef save_list
+#define save_list CPerlObj::Perl_save_list
+#undef save_long
+#define save_long CPerlObj::Perl_save_long
+#undef save_magic
+#define save_magic CPerlObj::save_magic
+#undef save_nogv
+#define save_nogv CPerlObj::Perl_save_nogv
+#undef save_op
+#define save_op CPerlObj::Perl_save_op
+#undef save_scalar
+#define save_scalar CPerlObj::Perl_save_scalar
+#undef save_scalar_at
+#define save_scalar_at CPerlObj::save_scalar_at
+#undef save_pptr
+#define save_pptr CPerlObj::Perl_save_pptr
+#undef save_sptr
+#define save_sptr CPerlObj::Perl_save_sptr
+#undef save_svref
+#define save_svref CPerlObj::Perl_save_svref
+#undef save_threadsv
+#define save_threadsv CPerlObj::Perl_save_threadsv
+#undef sawparens
+#define sawparens CPerlObj::Perl_sawparens
+#undef scalar
+#define scalar CPerlObj::Perl_scalar
+#undef scalarboolean
+#define scalarboolean CPerlObj::scalarboolean
+#undef scalarkids
+#define scalarkids CPerlObj::Perl_scalarkids
+#undef scalarseq
+#define scalarseq CPerlObj::Perl_scalarseq
+#undef scalarvoid
+#define scalarvoid CPerlObj::Perl_scalarvoid
+#undef scan_commit
+#define scan_commit CPerlObj::scan_commit
+#undef scan_const
+#define scan_const CPerlObj::Perl_scan_const
+#undef scan_formline
+#define scan_formline CPerlObj::Perl_scan_formline
+#undef scan_ident
+#define scan_ident CPerlObj::Perl_scan_ident
+#undef scan_inputsymbol
+#define scan_inputsymbol CPerlObj::Perl_scan_inputsymbol
+#undef scan_heredoc
+#define scan_heredoc CPerlObj::Perl_scan_heredoc
+#undef scan_hex
+#define scan_hex CPerlObj::Perl_scan_hex
+#undef scan_num
+#define scan_num CPerlObj::Perl_scan_num
+#undef scan_oct
+#define scan_oct CPerlObj::Perl_scan_oct
+#undef scan_pat
+#define scan_pat CPerlObj::Perl_scan_pat
+#undef scan_str
+#define scan_str CPerlObj::Perl_scan_str
+#undef scan_subst
+#define scan_subst CPerlObj::Perl_scan_subst
+#undef scan_trans
+#define scan_trans CPerlObj::Perl_scan_trans
+#undef scan_word
+#define scan_word CPerlObj::Perl_scan_word
+#undef scope
+#define scope CPerlObj::Perl_scope
+#undef screaminstr
+#define screaminstr CPerlObj::Perl_screaminstr
+#undef seed
+#define seed CPerlObj::seed
+#undef setdefout
+#define setdefout CPerlObj::Perl_setdefout
+#undef setenv_getix
+#define setenv_getix CPerlObj::Perl_setenv_getix
+#undef sharepvn
+#define sharepvn CPerlObj::Perl_sharepvn
+#undef set_csh
+#define set_csh CPerlObj::set_csh
+#undef sighandler
+#define sighandler CPerlObj::Perl_sighandler
+#undef share_hek
+#define share_hek CPerlObj::Perl_share_hek
+#undef skipspace
+#define skipspace CPerlObj::Perl_skipspace
+#undef sortcv
+#define sortcv CPerlObj::sortcv
+#ifndef PERL_OBJECT
+#undef stack_base
+#define stack_base CPerlObj::Perl_stack_base
+#endif
+#undef stack_grow
+#define stack_grow CPerlObj::Perl_stack_grow
+#undef start_subparse
+#define start_subparse CPerlObj::Perl_start_subparse
+#undef study_chunk
+#define study_chunk CPerlObj::study_chunk
+#undef sub_crush_depth
+#define sub_crush_depth CPerlObj::Perl_sub_crush_depth
+#undef sublex_done
+#define sublex_done CPerlObj::sublex_done
+#undef sublex_push
+#define sublex_push CPerlObj::sublex_push
+#undef sublex_start
+#define sublex_start CPerlObj::sublex_start
+#undef sv_2bool
+#define sv_2bool CPerlObj::Perl_sv_2bool
+#undef sv_2cv
+#define sv_2cv CPerlObj::Perl_sv_2cv
+#undef sv_2io
+#define sv_2io CPerlObj::Perl_sv_2io
+#undef sv_2iv
+#define sv_2iv CPerlObj::Perl_sv_2iv
+#undef sv_2uv
+#define sv_2uv CPerlObj::Perl_sv_2uv
+#undef sv_2mortal
+#define sv_2mortal CPerlObj::Perl_sv_2mortal
+#undef sv_2nv
+#define sv_2nv CPerlObj::Perl_sv_2nv
+#undef sv_2pv
+#define sv_2pv CPerlObj::Perl_sv_2pv
+#undef sv_add_arena
+#define sv_add_arena CPerlObj::Perl_sv_add_arena
+#undef sv_backoff
+#define sv_backoff CPerlObj::Perl_sv_backoff
+#undef sv_bless
+#define sv_bless CPerlObj::Perl_sv_bless
+#undef sv_catpv
+#define sv_catpv CPerlObj::Perl_sv_catpv
+#undef sv_catpv_mg
+#define sv_catpv_mg CPerlObj::Perl_sv_catpv_mg
+#undef sv_catpvf
+#define sv_catpvf CPerlObj::Perl_sv_catpvf
+#undef sv_catpvf_mg
+#define sv_catpvf_mg CPerlObj::Perl_sv_catpvf_mg
+#undef sv_catpvn
+#define sv_catpvn CPerlObj::Perl_sv_catpvn
+#undef sv_catpvn_mg
+#define sv_catpvn_mg CPerlObj::Perl_sv_catpvn_mg
+#undef sv_catsv
+#define sv_catsv CPerlObj::Perl_sv_catsv
+#undef sv_catsv_mg
+#define sv_catsv_mg CPerlObj::Perl_sv_catsv_mg
+#undef sv_check_thinkfirst
+#define sv_check_thinkfirst CPerlObj::sv_check_thinkfirst
+#undef sv_chop
+#define sv_chop CPerlObj::Perl_sv_chop
+#undef sv_clean_all
+#define sv_clean_all CPerlObj::Perl_sv_clean_all
+#undef sv_clean_objs
+#define sv_clean_objs CPerlObj::Perl_sv_clean_objs
+#undef sv_clear
+#define sv_clear CPerlObj::Perl_sv_clear
+#undef sv_cmp
+#define sv_cmp CPerlObj::Perl_sv_cmp
+#undef sv_cmp_locale
+#define sv_cmp_locale CPerlObj::Perl_sv_cmp_locale
+#undef sv_collxfrm
+#define sv_collxfrm CPerlObj::Perl_sv_collxfrm
+#undef sv_compile_2op
+#define sv_compile_2op CPerlObj::Perl_sv_compile_2op
+#undef sv_dec
+#define sv_dec CPerlObj::Perl_sv_dec
+#undef sv_derived_from
+#define sv_derived_from CPerlObj::Perl_sv_derived_from
+#undef sv_dump
+#define sv_dump CPerlObj::Perl_sv_dump
+#undef sv_eq
+#define sv_eq CPerlObj::Perl_sv_eq
+#undef sv_free
+#define sv_free CPerlObj::Perl_sv_free
+#undef sv_free_arenas
+#define sv_free_arenas CPerlObj::Perl_sv_free_arenas
+#undef sv_gets
+#define sv_gets CPerlObj::Perl_sv_gets
+#undef sv_grow
+#define sv_grow CPerlObj::Perl_sv_grow
+#undef sv_inc
+#define sv_inc CPerlObj::Perl_sv_inc
+#undef sv_insert
+#define sv_insert CPerlObj::Perl_sv_insert
+#undef sv_isa
+#define sv_isa CPerlObj::Perl_sv_isa
+#undef sv_isobject
+#define sv_isobject CPerlObj::Perl_sv_isobject
+#undef sv_iv
+#define sv_iv CPerlObj::Perl_sv_iv
+#undef sv_len
+#define sv_len CPerlObj::Perl_sv_len
+#undef sv_magic
+#define sv_magic CPerlObj::Perl_sv_magic
+#undef sv_mortalcopy
+#define sv_mortalcopy CPerlObj::Perl_sv_mortalcopy
+#undef sv_mortalgrow
+#define sv_mortalgrow CPerlObj::sv_mortalgrow
+#undef sv_newmortal
+#define sv_newmortal CPerlObj::Perl_sv_newmortal
+#undef sv_newref
+#define sv_newref CPerlObj::Perl_sv_newref
+#undef sv_nv
+#define sv_nv CPerlObj::Perl_sv_nv
+#undef sv_peek
+#define sv_peek CPerlObj::Perl_sv_peek
+#undef sv_pvn
+#define sv_pvn CPerlObj::Perl_sv_pvn
+#undef sv_pvn_force
+#define sv_pvn_force CPerlObj::Perl_sv_pvn_force
+#undef sv_reftype
+#define sv_reftype CPerlObj::Perl_sv_reftype
+#undef sv_replace
+#define sv_replace CPerlObj::Perl_sv_replace
+#undef sv_report_used
+#define sv_report_used CPerlObj::Perl_sv_report_used
+#undef sv_reset
+#define sv_reset CPerlObj::Perl_sv_reset
+#undef sv_setiv
+#define sv_setiv CPerlObj::Perl_sv_setiv
+#undef sv_setiv_mg
+#define sv_setiv_mg CPerlObj::Perl_sv_setiv_mg
+#undef sv_setnv
+#define sv_setnv CPerlObj::Perl_sv_setnv
+#undef sv_setnv_mg
+#define sv_setnv_mg CPerlObj::Perl_sv_setnv_mg
+#undef sv_setuv
+#define sv_setuv CPerlObj::Perl_sv_setuv
+#undef sv_setuv_mg
+#define sv_setuv_mg CPerlObj::Perl_sv_setuv_mg
+#undef sv_setref_iv
+#define sv_setref_iv CPerlObj::Perl_sv_setref_iv
+#undef sv_setref_nv
+#define sv_setref_nv CPerlObj::Perl_sv_setref_nv
+#undef sv_setref_pv
+#define sv_setref_pv CPerlObj::Perl_sv_setref_pv
+#undef sv_setref_pvn
+#define sv_setref_pvn CPerlObj::Perl_sv_setref_pvn
+#undef sv_setpv
+#define sv_setpv CPerlObj::Perl_sv_setpv
+#undef sv_setpv_mg
+#define sv_setpv_mg CPerlObj::Perl_sv_setpv_mg
+#undef sv_setpvf
+#define sv_setpvf CPerlObj::Perl_sv_setpvf
+#undef sv_setpvf_mg
+#define sv_setpvf_mg CPerlObj::Perl_sv_setpvf_mg
+#undef sv_setpviv
+#define sv_setpviv CPerlObj::Perl_sv_setpviv
+#undef sv_setpviv_mg
+#define sv_setpviv_mg CPerlObj::Perl_sv_setpviv_mg
+#undef sv_setpvn
+#define sv_setpvn CPerlObj::Perl_sv_setpvn
+#undef sv_setpvn_mg
+#define sv_setpvn_mg CPerlObj::Perl_sv_setpvn_mg
+#undef sv_setsv
+#define sv_setsv CPerlObj::Perl_sv_setsv
+#undef sv_setsv_mg
+#define sv_setsv_mg CPerlObj::Perl_sv_setsv_mg
+#undef sv_taint
+#define sv_taint CPerlObj::Perl_sv_taint
+#undef sv_tainted
+#define sv_tainted CPerlObj::Perl_sv_tainted
+#undef sv_true
+#define sv_true CPerlObj::Perl_sv_true
+#undef sv_unglob
+#define sv_unglob CPerlObj::sv_unglob
+#undef sv_unmagic
+#define sv_unmagic CPerlObj::Perl_sv_unmagic
+#undef sv_unref
+#define sv_unref CPerlObj::Perl_sv_unref
+#undef sv_untaint
+#define sv_untaint CPerlObj::Perl_sv_untaint
+#undef sv_upgrade
+#define sv_upgrade CPerlObj::Perl_sv_upgrade
+#undef sv_usepvn
+#define sv_usepvn CPerlObj::Perl_sv_usepvn
+#undef sv_usepvn_mg
+#define sv_usepvn_mg CPerlObj::Perl_sv_usepvn_mg
+#undef sv_uv
+#define sv_uv CPerlObj::Perl_sv_uv
+#undef sv_vcatpvfn
+#define sv_vcatpvfn CPerlObj::Perl_sv_vcatpvfn
+#undef sv_vsetpvfn
+#define sv_vsetpvfn CPerlObj::Perl_sv_vsetpvfn
+#undef taint_env
+#define taint_env CPerlObj::Perl_taint_env
+#undef taint_not
+#define taint_not CPerlObj::Perl_taint_not
+#undef taint_proper
+#define taint_proper CPerlObj::Perl_taint_proper
+#undef tokeq
+#define tokeq CPerlObj::tokeq
+#undef too_few_arguments
+#define too_few_arguments CPerlObj::Perl_too_few_arguments
+#undef too_many_arguments
+#define too_many_arguments CPerlObj::Perl_too_many_arguments
+#undef unlnk
+#define unlnk CPerlObj::unlnk
+#undef unsharepvn
+#define unsharepvn CPerlObj::Perl_unsharepvn
+#undef unshare_hek
+#define unshare_hek CPerlObj::Perl_unshare_hek
+#undef unwind_handler_stack
+#define unwind_handler_stack CPerlObj::unwind_handler_stack
+#undef usage
+#define usage CPerlObj::usage
+#undef utilize
+#define utilize CPerlObj::Perl_utilize
+#undef validate_suid
+#define validate_suid CPerlObj::validate_suid
+#undef visit
+#define visit CPerlObj::visit
+#undef vivify_defelem
+#define vivify_defelem CPerlObj::Perl_vivify_defelem
+#undef vivify_ref
+#define vivify_ref CPerlObj::Perl_vivify_ref
+#undef wait4pid
+#define wait4pid CPerlObj::Perl_wait4pid
+#undef warn
+#define warn CPerlObj::Perl_warn
+#undef watch
+#define watch CPerlObj::Perl_watch
+#undef whichsig
+#define whichsig CPerlObj::Perl_whichsig
+#undef win32_textfilter
+#define win32_textfilter CPerlObj::win32_textfilter
+#undef yyerror
+#define yyerror CPerlObj::Perl_yyerror
+#undef yylex
+#define yylex CPerlObj::Perl_yylex
+#undef yyparse
+#define yyparse CPerlObj::Perl_yyparse
+#undef yywarn
+#define yywarn CPerlObj::Perl_yywarn
+#undef yydestruct
+#define yydestruct CPerlObj::Perl_yydestruct
+
+#define new_he CPerlObj::new_he
+#define more_he CPerlObj::more_he
+#define del_he CPerlObj::del_he
+
+#if defined(WIN32) && !defined(WIN32IO_IS_STDIO)
+#undef errno
+#define errno CPerlObj::ErrorNo()
+
+#endif /* WIN32 */
+
+#endif /* __Objpp_h__ */
return cv;
}
+ void
+ newCONSTSUB(HV *stash, char *name, SV *sv)
+ {
+ dTHR;
+ U32 oldhints = hints;
+ HV *old_cop_stash = curcop->cop_stash;
+ HV *old_curstash = curstash;
+ line_t oldline = curcop->cop_line;
+ curcop->cop_line = copline;
+
+ hints &= ~HINT_BLOCK_SCOPE;
+ if(stash)
+ curstash = curcop->cop_stash = stash;
+
+ newSUB(
+ start_subparse(FALSE, 0),
+ newSVOP(OP_CONST, 0, newSVpv(name,0)),
+ newSVOP(OP_CONST, 0, &sv_no), /* SvPV(&sv_no) == "" -- GMB */
+ newSTATEOP(0, Nullch, newSVOP(OP_CONST, 0, sv))
+ );
+
+ hints = oldhints;
+ curcop->cop_stash = old_cop_stash;
+ curstash = old_curstash;
+ curcop->cop_line = oldline;
+ }
+
CV *
-newXS(char *name, void (*subaddr) (CV *), char *filename)
+newXS(char *name, void (*subaddr) (CPERLproto_ CV *), char *filename)
{
dTHR;
GV *gv = gv_fetchpv(name ? name : "__ANON__", GV_ADDMULTI, SVt_PVCV);
char *validarg = "";
I32 oldscope;
AV* comppadlist;
+ int e_tmpfd = -1;
dJMPENV;
int ret;
+ int fdscript = -1;
#ifdef SETUID_SCRIPTS_ARE_SECURE_NOW
#ifdef IAMSUID
}
int
+#ifdef PERL_OBJECT
+CPerlObj::perl_run(void)
+#else
perl_run(PerlInterpreter *sv_interp)
+#endif
{
- dTHR;
+ dSP;
I32 oldscope;
dJMPENV;
int ret;
}
}
+ #undef REASONABLE
+
-static void
+STATIC void
nuke_stacks(void)
{
dTHR;
my_exit_jump();
}
-static void
+STATIC void
my_exit_jump(void)
{
- dTHR;
+ dSP;
register PERL_CONTEXT *cx;
I32 gimme;
SV **newsp;
#define H_PERLDIR 1
#ifdef PERL_OBJECT
+
+#include "ipdir.h"
+
+#define PerlDir_mkdir(name, mode) piDir->Makedir((name), (mode), ErrorNo())
+#define PerlDir_chdir(name) piDir->Chdir((name), ErrorNo())
+#define PerlDir_rmdir(name) piDir->Rmdir((name), ErrorNo())
+#define PerlDir_close(dir) piDir->Close((dir), ErrorNo())
+#define PerlDir_open(name) piDir->Open((name), ErrorNo())
+#define PerlDir_read(dir) piDir->Read((dir), ErrorNo())
+#define PerlDir_rewind(dir) piDir->Rewind((dir), ErrorNo())
+#define PerlDir_seek(dir, loc) piDir->Seek((dir), (loc), ErrorNo())
+#define PerlDir_tell(dir) piDir->Tell((dir), ErrorNo())
#else
#define PerlDir_mkdir(name, mode) Mkdir((name), (mode))
- #define PerlDir_chdir(name) chdir((name))
+ #ifdef VMS
+ # define PerlDir_chdir(name) chdir(((name) && *(name)) ? (name) : "SYS$LOGIN")
+ #else
+ # define PerlDir_chdir(name) chdir((name))
+ #endif
#define PerlDir_rmdir(name) rmdir((name))
#define PerlDir_close(dir) closedir((dir))
#define PerlDir_open(name) opendir((name))
#define PerlSock_accept(s, a, l) accept(s, a, l)
#define PerlSock_bind(s, n, l) bind(s, n, l)
#define PerlSock_connect(s, n, l) connect(s, n, l)
- #define PerlSock_endhostent() endhostent()
- #define PerlSock_endnetent() endnetent()
- #define PerlSock_endprotoent() endprotoent()
- #define PerlSock_endservent() endservent()
+
#define PerlSock_gethostbyaddr(a, l, t) gethostbyaddr(a, l, t)
#define PerlSock_gethostbyname(n) gethostbyname(n)
- #define PerlSock_gethostent() gethostent()
+ #define PerlSock_gethostent gethostent
+ #define PerlSock_endhostent endhostent
#define PerlSock_gethostname(n, l) gethostname(n, l)
+
#define PerlSock_getnetbyaddr(n, t) getnetbyaddr(n, t)
- #define PerlSock_getnetbyname(c) getnetbyname(c)
- #define PerlSock_getnetent() getnetent()
+ #define PerlSock_getnetbyname(n) getnetbyname(n)
+ #define PerlSock_getnetent getnetent
+ #define PerlSock_endnetent endnetent
-
#define PerlSock_getpeername(s, n, l) getpeername(s, n, l)
+
#define PerlSock_getprotobyname(n) getprotobyname(n)
#define PerlSock_getprotobynumber(n) getprotobynumber(n)
- #define PerlSock_getprotoent() getprotoent()
+ #define PerlSock_getprotoent getprotoent
+ #define PerlSock_endprotoent endprotoent
+
#define PerlSock_getservbyname(n, p) getservbyname(n, p)
#define PerlSock_getservbyport(port, p) getservbyport(port, p)
- #define PerlSock_getservent() getservent()
+ #define PerlSock_getservent getservent
+ #define PerlSock_endservent endservent
+
#define PerlSock_getsockname(s, n, l) getsockname(s, n, l)
#define PerlSock_getsockopt(s, l, n, v, i) getsockopt(s, l, n, v, i)
+#define PerlSock_inet_addr(c) inet_addr(c)
+#define PerlSock_inet_ntoa(i) inet_ntoa(i)
#define PerlSock_listen(s, b) listen(s, b)
#define PerlSock_recvfrom(s, b, l, f, from, fromlen) recvfrom(s, b, l, f, from, fromlen)
#define PerlSock_select(n, r, w, e, t) select(n, r, w, e, t)
(void)SvREFCNT_inc(cv); /* in preparation for POPSUB */
}
sortcxix = cxstack_ix;
-
- qsortsv(myorigmark+1, max, sortcv);
+ qsortsv((myorigmark+1), max, FUNC_NAME_TO_PTR(sortcv));
POPBLOCK(cx,curpm);
- SWITCHSTACK(sortstack, oldstack);
+ POPSTACK();
CATCH_SET(oldcatch);
}
LEAVE;
#if !defined(HAS_MEMSET)
void* my_memset _((char* loc, I32 ch, I32 len));
#endif
-I32 my_pclose _((PerlIO* ptr));
-PerlIO* my_popen _((char* cmd, char* mode));
-void my_setenv _((char* nam, char* val));
-I32 my_stat _((ARGSproto));
+#ifndef PERL_OBJECT
+VIRTUAL I32 my_pclose _((PerlIO* ptr));
+VIRTUAL PerlIO* my_popen _((char* cmd, char* mode));
+#endif
+VIRTUAL void my_setenv _((char* nam, char* val));
+VIRTUAL I32 my_stat _((ARGSproto));
#ifdef MYSWAP
-short my_swap _((short s));
-long my_htonl _((long l));
-long my_ntohl _((long l));
-#endif
-void my_unexec _((void));
-OP* newANONLIST _((OP* o));
-OP* newANONHASH _((OP* o));
-OP* newANONSUB _((I32 floor, OP* proto, OP* block));
-OP* newASSIGNOP _((I32 flags, OP* left, I32 optype, OP* right));
-OP* newCONDOP _((I32 flags, OP* expr, OP* trueop, OP* falseop));
-void newCONSTSUB _((HV* stash, char* name, SV* sv));
-void newFORM _((I32 floor, OP* o, OP* block));
-OP* newFOROP _((I32 flags, char* label, line_t forline, OP* scalar, OP* expr, OP*block, OP*cont));
-OP* newLOGOP _((I32 optype, I32 flags, OP* left, OP* right));
-OP* newLOOPEX _((I32 type, OP* label));
-OP* newLOOPOP _((I32 flags, I32 debuggable, OP* expr, OP* block));
-OP* newNULLLIST _((void));
-OP* newOP _((I32 optype, I32 flags));
-void newPROG _((OP* o));
-OP* newRANGE _((I32 flags, OP* left, OP* right));
-OP* newSLICEOP _((I32 flags, OP* subscript, OP* list));
-OP* newSTATEOP _((I32 flags, char* label, OP* o));
-CV* newSUB _((I32 floor, OP* o, OP* proto, OP* block));
-CV* newXS _((char* name, void (*subaddr)(CV* cv), char* filename));
-AV* newAV _((void));
-OP* newAVREF _((OP* o));
-OP* newBINOP _((I32 type, I32 flags, OP* first, OP* last));
-OP* newCVREF _((I32 flags, OP* o));
-OP* newGVOP _((I32 type, I32 flags, GV* gv));
-GV* newGVgen _((char* pack));
-OP* newGVREF _((I32 type, OP* o));
-OP* newHVREF _((OP* o));
-HV* newHV _((void));
-IO* newIO _((void));
-OP* newLISTOP _((I32 type, I32 flags, OP* first, OP* last));
-OP* newPMOP _((I32 type, I32 flags));
-OP* newPVOP _((I32 type, I32 flags, char* pv));
-SV* newRV _((SV* ref));
-#if !defined(__GNUC__) && (defined(CRIPPLED_CC) || defined(USE_THREADS))
-SV* newRV_noinc _((SV *));
+VIRTUAL short my_swap _((short s));
+VIRTUAL long my_htonl _((long l));
+VIRTUAL long my_ntohl _((long l));
+#endif
+VIRTUAL void my_unexec _((void));
+VIRTUAL OP* newANONLIST _((OP* o));
+VIRTUAL OP* newANONHASH _((OP* o));
+VIRTUAL OP* newANONSUB _((I32 floor, OP* proto, OP* block));
+VIRTUAL OP* newASSIGNOP _((I32 flags, OP* left, I32 optype, OP* right));
+VIRTUAL OP* newCONDOP _((I32 flags, OP* expr, OP* trueop, OP* falseop));
++VIRTUAL void newCONSTSUB _((HV* stash, char* name, SV* sv));
+VIRTUAL void newFORM _((I32 floor, OP* o, OP* block));
+VIRTUAL OP* newFOROP _((I32 flags, char* label, line_t forline, OP* scalar, OP* expr, OP*block, OP*cont));
+VIRTUAL OP* newLOGOP _((I32 optype, I32 flags, OP* left, OP* right));
+VIRTUAL OP* newLOOPEX _((I32 type, OP* label));
+VIRTUAL OP* newLOOPOP _((I32 flags, I32 debuggable, OP* expr, OP* block));
+VIRTUAL OP* newNULLLIST _((void));
+VIRTUAL OP* newOP _((I32 optype, I32 flags));
+VIRTUAL void newPROG _((OP* o));
+VIRTUAL OP* newRANGE _((I32 flags, OP* left, OP* right));
+VIRTUAL OP* newSLICEOP _((I32 flags, OP* subscript, OP* list));
+VIRTUAL OP* newSTATEOP _((I32 flags, char* label, OP* o));
+VIRTUAL CV* newSUB _((I32 floor, OP* o, OP* proto, OP* block));
+VIRTUAL CV* newXS _((char* name, void (*subaddr)(CPERLproto_ CV* cv), char* filename));
+VIRTUAL AV* newAV _((void));
+VIRTUAL OP* newAVREF _((OP* o));
+VIRTUAL OP* newBINOP _((I32 type, I32 flags, OP* first, OP* last));
+VIRTUAL OP* newCVREF _((I32 flags, OP* o));
+VIRTUAL OP* newGVOP _((I32 type, I32 flags, GV* gv));
+VIRTUAL GV* newGVgen _((char* pack));
+VIRTUAL OP* newGVREF _((I32 type, OP* o));
+VIRTUAL OP* newHVREF _((OP* o));
+VIRTUAL HV* newHV _((void));
+VIRTUAL IO* newIO _((void));
+VIRTUAL OP* newLISTOP _((I32 type, I32 flags, OP* first, OP* last));
+VIRTUAL OP* newPMOP _((I32 type, I32 flags));
+VIRTUAL OP* newPVOP _((I32 type, I32 flags, char* pv));
+VIRTUAL SV* newRV _((SV* ref));
+#if !defined(__GNUC__) && (defined(CRIPPLED_CC) || defined(USE_THREADS) || defined(PERL_OBJECT))
+VIRTUAL SV* newRV_noinc _((SV *));
#endif
#ifdef LEAKTEST
-SV* newSV _((I32 x, STRLEN len));
+VIRTUAL SV* newSV _((I32 x, STRLEN len));
#else
-SV* newSV _((STRLEN len));
-#endif
-OP* newSVREF _((OP* o));
-OP* newSVOP _((I32 type, I32 flags, SV* sv));
-SV* newSViv _((IV i));
-SV* newSVnv _((double n));
-SV* newSVpv _((char* s, STRLEN len));
-SV* newSVpvn _((char* s, STRLEN len));
-SV* newSVpvf _((const char* pat, ...));
-SV* newSVrv _((SV* rv, char* classname));
-SV* newSVsv _((SV* old));
-OP* newUNOP _((I32 type, I32 flags, OP* first));
-OP* newWHILEOP _((I32 flags, I32 debuggable, LOOP* loop,
+VIRTUAL SV* newSV _((STRLEN len));
+#endif
+VIRTUAL OP* newSVREF _((OP* o));
+VIRTUAL OP* newSVOP _((I32 type, I32 flags, SV* sv));
+VIRTUAL SV* newSViv _((IV i));
+VIRTUAL SV* newSVnv _((double n));
+VIRTUAL SV* newSVpv _((char* s, STRLEN len));
+VIRTUAL SV* newSVpvf _((const char* pat, ...));
+VIRTUAL SV* newSVrv _((SV* rv, char* classname));
+VIRTUAL SV* newSVsv _((SV* old));
+VIRTUAL OP* newUNOP _((I32 type, I32 flags, OP* first));
+VIRTUAL OP* newWHILEOP _((I32 flags, I32 debuggable, LOOP* loop,
I32 whileline, OP* expr, OP* block, OP* cont));
#ifdef USE_THREADS
-struct perl_thread * new_struct_thread _((struct perl_thread *t));
-#endif
-PERL_SI * new_stackinfo _((I32 stitems, I32 cxitems));
-PerlIO* nextargv _((GV* gv));
-char* ninstr _((char* big, char* bigend, char* little, char* lend));
-OP* oopsCV _((OP* o));
-void op_free _((OP* arg));
-void package _((OP* o));
-PADOFFSET pad_alloc _((I32 optype, U32 tmptype));
-PADOFFSET pad_allocmy _((char* name));
-PADOFFSET pad_findmy _((char* name));
-OP* oopsAV _((OP* o));
-OP* oopsHV _((OP* o));
-void pad_leavemy _((I32 fill));
-SV* pad_sv _((PADOFFSET po));
-void pad_free _((PADOFFSET po));
-void pad_reset _((void));
-void pad_swipe _((PADOFFSET po));
-void peep _((OP* o));
+VIRTUAL struct perl_thread * new_struct_thread _((struct perl_thread *t));
+#endif
++VIRTUAL PERL_SI * new_stackinfo _((I32 stitems, I32 cxitems));
+VIRTUAL PerlIO* nextargv _((GV* gv));
+VIRTUAL char* ninstr _((char* big, char* bigend, char* little, char* lend));
+VIRTUAL OP* oopsCV _((OP* o));
+VIRTUAL void op_free _((OP* arg));
+VIRTUAL void package _((OP* o));
+VIRTUAL PADOFFSET pad_alloc _((I32 optype, U32 tmptype));
+VIRTUAL PADOFFSET pad_allocmy _((char* name));
+VIRTUAL PADOFFSET pad_findmy _((char* name));
+VIRTUAL OP* oopsAV _((OP* o));
+VIRTUAL OP* oopsHV _((OP* o));
+VIRTUAL void pad_leavemy _((I32 fill));
+VIRTUAL SV* pad_sv _((PADOFFSET po));
+VIRTUAL void pad_free _((PADOFFSET po));
+VIRTUAL void pad_reset _((void));
+VIRTUAL void pad_swipe _((PADOFFSET po));
+VIRTUAL void peep _((OP* o));
+#ifndef PERL_OBJECT
PerlInterpreter* perl_alloc _((void));
-I32 perl_call_argv _((char* subname, I32 flags, char** argv));
-I32 perl_call_method _((char* methname, I32 flags));
-I32 perl_call_pv _((char* subname, I32 flags));
-I32 perl_call_sv _((SV* sv, I32 flags));
+#endif
+VIRTUAL I32 perl_call_argv _((char* subname, I32 flags, char** argv));
+VIRTUAL I32 perl_call_method _((char* methname, I32 flags));
+VIRTUAL I32 perl_call_pv _((char* subname, I32 flags));
+VIRTUAL I32 perl_call_sv _((SV* sv, I32 flags));
+#ifdef PERL_OBJECT
+VIRTUAL void perl_construct _((void));
+VIRTUAL void perl_destruct _((void));
+#else
void perl_construct _((PerlInterpreter* sv_interp));
void perl_destruct _((PerlInterpreter* sv_interp));
-SV* perl_eval_pv _((char* p, I32 croak_on_error));
-I32 perl_eval_sv _((SV* sv, I32 flags));
+#endif
+VIRTUAL SV* perl_eval_pv _((char* p, I32 croak_on_error));
+VIRTUAL I32 perl_eval_sv _((SV* sv, I32 flags));
+#ifdef PERL_OBJECT
+VIRTUAL void perl_free _((void));
+#else
void perl_free _((PerlInterpreter* sv_interp));
-SV* perl_get_sv _((char* name, I32 create));
-AV* perl_get_av _((char* name, I32 create));
-HV* perl_get_hv _((char* name, I32 create));
-CV* perl_get_cv _((char* name, I32 create));
-int perl_init_i18nl10n _((int printwarn));
-int perl_init_i18nl14n _((int printwarn));
-void perl_new_collate _((char* newcoll));
-void perl_new_ctype _((char* newctype));
-void perl_new_numeric _((char* newcoll));
-void perl_set_numeric_local _((void));
-void perl_set_numeric_standard _((void));
+#endif
+VIRTUAL SV* perl_get_sv _((char* name, I32 create));
+VIRTUAL AV* perl_get_av _((char* name, I32 create));
+VIRTUAL HV* perl_get_hv _((char* name, I32 create));
+VIRTUAL CV* perl_get_cv _((char* name, I32 create));
+VIRTUAL int perl_init_i18nl10n _((int printwarn));
+VIRTUAL int perl_init_i18nl14n _((int printwarn));
+VIRTUAL void perl_new_collate _((char* newcoll));
+VIRTUAL void perl_new_ctype _((char* newctype));
+VIRTUAL void perl_new_numeric _((char* newcoll));
+VIRTUAL void perl_set_numeric_local _((void));
+VIRTUAL void perl_set_numeric_standard _((void));
+#ifdef PERL_OBJECT
+VIRTUAL int perl_parse _((void(*xsinit)(CPerlObj*), int argc, char** argv, char** env));
+#else
int perl_parse _((PerlInterpreter* sv_interp, void(*xsinit)(void), int argc, char** argv, char** env));
-void perl_require_pv _((char* pv));
+#endif
+VIRTUAL void perl_require_pv _((char* pv));
#define perl_requirepv perl_require_pv
+#ifdef PERL_OBJECT
+VIRTUAL int perl_run _((void));
+#else
int perl_run _((PerlInterpreter* sv_interp));
-void pidgone _((int pid, int status));
-void pmflag _((U16* pmfl, int ch));
-OP* pmruntime _((OP* pm, OP* expr, OP* repl));
-OP* pmtrans _((OP* o, OP* expr, OP* repl));
-OP* pop_return _((void));
-void pop_scope _((void));
-OP* prepend_elem _((I32 optype, OP* head, OP* tail));
-void push_return _((OP* o));
-void push_scope _((void));
-regexp* pregcomp _((char* exp, char* xend, PMOP* pm));
-OP* ref _((OP* o, I32 type));
-OP* refkids _((OP* o, I32 type));
+#endif
+VIRTUAL void pidgone _((int pid, int status));
+VIRTUAL void pmflag _((U16* pmfl, int ch));
+VIRTUAL OP* pmruntime _((OP* pm, OP* expr, OP* repl));
+VIRTUAL OP* pmtrans _((OP* o, OP* expr, OP* repl));
+VIRTUAL OP* pop_return _((void));
+VIRTUAL void pop_scope _((void));
+VIRTUAL OP* prepend_elem _((I32 optype, OP* head, OP* tail));
+VIRTUAL void push_return _((OP* o));
+VIRTUAL void push_scope _((void));
+VIRTUAL regexp* pregcomp _((char* exp, char* xend, PMOP* pm));
+VIRTUAL OP* ref _((OP* o, I32 type));
+VIRTUAL OP* refkids _((OP* o, I32 type));
+#ifdef DEBUGGING
void regdump _((regexp* r));
-I32 pregexec _((regexp* prog, char* stringarg, char* strend, char* strbeg, I32 minend, SV* screamer, U32 nosave));
-I32 regexec_flags _((regexp* prog, char* stringarg, char* strend, char* strbeg, I32 minend, SV* screamer, void* data, U32 flags));
- void pregfree _((struct regexp* r));
-regnode*regnext _((regnode* p));
+#endif
+VIRTUAL I32 pregexec _((regexp* prog, char* stringarg, char* strend, char* strbeg, I32 minend, SV* screamer, U32 nosave));
+VIRTUAL I32 regexec_flags _((regexp* prog, char* stringarg, char* strend, char* strbeg, I32 minend, SV* screamer, void* data, U32 flags));
+VIRTUAL void pregfree _((struct regexp* r));
+VIRTUAL regnode*regnext _((regnode* p));
+#ifdef DEBUGGING
void regprop _((SV* sv, regnode* o));
-void repeatcpy _((char* to, char* from, I32 len, I32 count));
-char* rninstr _((char* big, char* bigend, char* little, char* lend));
-Sighandler_t rsignal _((int, Sighandler_t));
-int rsignal_restore _((int, Sigsave_t*));
-int rsignal_save _((int, Sighandler_t, Sigsave_t*));
-Sighandler_t rsignal_state _((int));
-void rxres_free _((void** rsp));
-void rxres_restore _((void** rsp, REGEXP* rx));
-void rxres_save _((void** rsp, REGEXP* rx));
+#endif
+VIRTUAL void repeatcpy _((char* to, char* from, I32 len, I32 count));
+VIRTUAL char* rninstr _((char* big, char* bigend, char* little, char* lend));
+VIRTUAL Sighandler_t rsignal _((int, Sighandler_t));
+VIRTUAL int rsignal_restore _((int, Sigsave_t*));
+VIRTUAL int rsignal_save _((int, Sighandler_t, Sigsave_t*));
+VIRTUAL Sighandler_t rsignal_state _((int));
+VIRTUAL void rxres_free _((void** rsp));
+VIRTUAL void rxres_restore _((void** rsp, REGEXP* rx));
+VIRTUAL void rxres_save _((void** rsp, REGEXP* rx));
#ifndef HAS_RENAME
-I32 same_dirent _((char* a, char* b));
-#endif
-char* savepv _((char* sv));
-char* savepvn _((char* sv, I32 len));
-void savestack_grow _((void));
-void save_aelem _((AV* av, I32 idx, SV **sptr));
-void save_aptr _((AV** aptr));
-AV* save_ary _((GV* gv));
-void save_clearsv _((SV** svp));
-void save_delete _((HV* hv, char* key, I32 klen));
+VIRTUAL I32 same_dirent _((char* a, char* b));
+#endif
+VIRTUAL char* savepv _((char* sv));
+VIRTUAL char* savepvn _((char* sv, I32 len));
+VIRTUAL void savestack_grow _((void));
+VIRTUAL void save_aelem _((AV* av, I32 idx, SV **sptr));
+VIRTUAL void save_aptr _((AV** aptr));
+VIRTUAL AV* save_ary _((GV* gv));
+VIRTUAL void save_clearsv _((SV** svp));
+VIRTUAL void save_delete _((HV* hv, char* key, I32 klen));
#ifndef titan /* TitanOS cc can't handle this */
+#ifdef PERL_OBJECT
+typedef void (CPerlObj::*DESTRUCTORFUNC) _((void*));
+VIRTUAL void save_destructor _((DESTRUCTORFUNC f, void* p));
+#else
void save_destructor _((void (*f)(void*), void* p));
+#endif
#endif /* titan */
-void save_freesv _((SV* sv));
-void save_freeop _((OP* o));
-void save_freepv _((char* pv));
-void save_gp _((GV* gv, I32 empty));
-HV* save_hash _((GV* gv));
-void save_helem _((HV* hv, SV *key, SV **sptr));
-void save_hptr _((HV** hptr));
-void save_I16 _((I16* intp));
-void save_I32 _((I32* intp));
-void save_int _((int* intp));
-void save_item _((SV* item));
-void save_iv _((IV* iv));
-void save_list _((SV** sarg, I32 maxsarg));
-void save_long _((long* longp));
-void save_nogv _((GV* gv));
-void save_op _((void));
-SV* save_scalar _((GV* gv));
-void save_pptr _((char** pptr));
-void save_sptr _((SV** sptr));
-SV* save_svref _((SV** sptr));
-SV** save_threadsv _((PADOFFSET i));
-OP* sawparens _((OP* o));
-OP* scalar _((OP* o));
-OP* scalarkids _((OP* o));
-OP* scalarseq _((OP* o));
-OP* scalarvoid _((OP* o));
-UV scan_hex _((char* start, I32 len, I32* retlen));
-char* scan_num _((char* s));
-UV scan_oct _((char* start, I32 len, I32* retlen));
-OP* scope _((OP* o));
-char* screaminstr _((SV* bigsv, SV* littlesv, I32 start_shift, I32 end_shift, I32 *state, I32 last));
+VIRTUAL void save_freesv _((SV* sv));
+VIRTUAL void save_freeop _((OP* o));
+VIRTUAL void save_freepv _((char* pv));
+VIRTUAL void save_gp _((GV* gv, I32 empty));
+VIRTUAL HV* save_hash _((GV* gv));
+VIRTUAL void save_helem _((HV* hv, SV *key, SV **sptr));
+VIRTUAL void save_hptr _((HV** hptr));
+VIRTUAL void save_I16 _((I16* intp));
+VIRTUAL void save_I32 _((I32* intp));
+VIRTUAL void save_int _((int* intp));
+VIRTUAL void save_item _((SV* item));
+VIRTUAL void save_iv _((IV* iv));
+VIRTUAL void save_list _((SV** sarg, I32 maxsarg));
+VIRTUAL void save_long _((long* longp));
+VIRTUAL void save_nogv _((GV* gv));
+VIRTUAL void save_op _((void));
+VIRTUAL SV* save_scalar _((GV* gv));
+VIRTUAL void save_pptr _((char** pptr));
+VIRTUAL void save_sptr _((SV** sptr));
+VIRTUAL SV* save_svref _((SV** sptr));
+VIRTUAL SV** save_threadsv _((PADOFFSET i));
+VIRTUAL OP* sawparens _((OP* o));
+VIRTUAL OP* scalar _((OP* o));
+VIRTUAL OP* scalarkids _((OP* o));
+VIRTUAL OP* scalarseq _((OP* o));
+VIRTUAL OP* scalarvoid _((OP* o));
+VIRTUAL UV scan_hex _((char* start, I32 len, I32* retlen));
+VIRTUAL char* scan_num _((char* s));
+VIRTUAL UV scan_oct _((char* start, I32 len, I32* retlen));
+VIRTUAL OP* scope _((OP* o));
+VIRTUAL char* screaminstr _((SV* bigsv, SV* littlesv, I32 start_shift, I32 end_shift, I32 *state, I32 last));
#ifndef VMS
-I32 setenv_getix _((char* nam));
-#endif
-void setdefout _((GV* gv));
-char* sharepvn _((char* sv, I32 len, U32 hash));
-HEK* share_hek _((char* sv, I32 len, U32 hash));
-Signal_t sighandler _((int sig));
-SV** stack_grow _((SV** sp, SV**p, int n));
-I32 start_subparse _((I32 is_format, U32 flags));
-void sub_crush_depth _((CV* cv));
-bool sv_2bool _((SV* sv));
-CV* sv_2cv _((SV* sv, HV** st, GV** gvp, I32 lref));
-IO* sv_2io _((SV* sv));
-IV sv_2iv _((SV* sv));
-SV* sv_2mortal _((SV* sv));
-double sv_2nv _((SV* sv));
-char* sv_2pv _((SV* sv, STRLEN* lp));
-UV sv_2uv _((SV* sv));
-IV sv_iv _((SV* sv));
-UV sv_uv _((SV* sv));
-double sv_nv _((SV* sv));
-char * sv_pvn _((SV *, STRLEN *));
-I32 sv_true _((SV *));
-void sv_add_arena _((char* ptr, U32 size, U32 flags));
-int sv_backoff _((SV* sv));
-SV* sv_bless _((SV* sv, HV* stash));
-void sv_catpvf _((SV* sv, const char* pat, ...));
-void sv_catpvf_mg _((SV* sv, const char* pat, ...));
-void sv_catpv _((SV* sv, char* ptr));
-void sv_catpv_mg _((SV* sv, char* ptr));
-void sv_catpvn _((SV* sv, char* ptr, STRLEN len));
-void sv_catpvn_mg _((SV* sv, char* ptr, STRLEN len));
-void sv_catsv _((SV* dsv, SV* ssv));
-void sv_catsv_mg _((SV* dsv, SV* ssv));
-void sv_chop _((SV* sv, char* ptr));
-void sv_clean_all _((void));
-void sv_clean_objs _((void));
-void sv_clear _((SV* sv));
-I32 sv_cmp _((SV* sv1, SV* sv2));
-I32 sv_cmp_locale _((SV* sv1, SV* sv2));
+VIRTUAL I32 setenv_getix _((char* nam));
+#endif
+VIRTUAL void setdefout _((GV* gv));
+VIRTUAL char* sharepvn _((char* sv, I32 len, U32 hash));
+VIRTUAL HEK* share_hek _((char* sv, I32 len, U32 hash));
+VIRTUAL Signal_t sighandler _((int sig));
+VIRTUAL SV** stack_grow _((SV** sp, SV**p, int n));
+VIRTUAL I32 start_subparse _((I32 is_format, U32 flags));
+VIRTUAL void sub_crush_depth _((CV* cv));
+VIRTUAL bool sv_2bool _((SV* sv));
+VIRTUAL CV* sv_2cv _((SV* sv, HV** st, GV** gvp, I32 lref));
+VIRTUAL IO* sv_2io _((SV* sv));
+VIRTUAL IV sv_2iv _((SV* sv));
+VIRTUAL SV* sv_2mortal _((SV* sv));
+VIRTUAL double sv_2nv _((SV* sv));
+VIRTUAL char* sv_2pv _((SV* sv, STRLEN* lp));
+VIRTUAL UV sv_2uv _((SV* sv));
+VIRTUAL IV sv_iv _((SV* sv));
+VIRTUAL UV sv_uv _((SV* sv));
+VIRTUAL double sv_nv _((SV* sv));
+VIRTUAL char * sv_pvn _((SV *, STRLEN *));
+VIRTUAL I32 sv_true _((SV *));
+VIRTUAL void sv_add_arena _((char* ptr, U32 size, U32 flags));
+VIRTUAL int sv_backoff _((SV* sv));
+VIRTUAL SV* sv_bless _((SV* sv, HV* stash));
+VIRTUAL void sv_catpvf _((SV* sv, const char* pat, ...));
+VIRTUAL void sv_catpv _((SV* sv, char* ptr));
+VIRTUAL void sv_catpvn _((SV* sv, char* ptr, STRLEN len));
+VIRTUAL void sv_catsv _((SV* dsv, SV* ssv));
+VIRTUAL void sv_chop _((SV* sv, char* ptr));
+VIRTUAL void sv_clean_all _((void));
+VIRTUAL void sv_clean_objs _((void));
+VIRTUAL void sv_clear _((SV* sv));
+VIRTUAL I32 sv_cmp _((SV* sv1, SV* sv2));
+VIRTUAL I32 sv_cmp_locale _((SV* sv1, SV* sv2));
#ifdef USE_LOCALE_COLLATE
-char* sv_collxfrm _((SV* sv, STRLEN* nxp));
-#endif
-OP* sv_compile_2op _((SV* sv, OP** startp, char* code, AV** avp));
-void sv_dec _((SV* sv));
-void sv_dump _((SV* sv));
-bool sv_derived_from _((SV* sv, char* name));
-I32 sv_eq _((SV* sv1, SV* sv2));
-void sv_free _((SV* sv));
-void sv_free_arenas _((void));
-char* sv_gets _((SV* sv, PerlIO* fp, I32 append));
+VIRTUAL char* sv_collxfrm _((SV* sv, STRLEN* nxp));
+#endif
+VIRTUAL OP* sv_compile_2op _((SV* sv, OP** startp, char* code, AV** avp));
+VIRTUAL void sv_dec _((SV* sv));
+VIRTUAL void sv_dump _((SV* sv));
+VIRTUAL bool sv_derived_from _((SV* sv, char* name));
+VIRTUAL I32 sv_eq _((SV* sv1, SV* sv2));
+VIRTUAL void sv_free _((SV* sv));
+VIRTUAL void sv_free_arenas _((void));
+VIRTUAL char* sv_gets _((SV* sv, PerlIO* fp, I32 append));
#ifndef DOSISH
-char* sv_grow _((SV* sv, I32 newlen));
+VIRTUAL char* sv_grow _((SV* sv, I32 newlen));
#else
-char* sv_grow _((SV* sv, unsigned long newlen));
-#endif
-void sv_inc _((SV* sv));
-void sv_insert _((SV* bigsv, STRLEN offset, STRLEN len, char* little, STRLEN littlelen));
-int sv_isa _((SV* sv, char* name));
-int sv_isobject _((SV* sv));
-STRLEN sv_len _((SV* sv));
-void sv_magic _((SV* sv, SV* obj, int how, char* name, I32 namlen));
-SV* sv_mortalcopy _((SV* oldsv));
-SV* sv_newmortal _((void));
-SV* sv_newref _((SV* sv));
+VIRTUAL char* sv_grow _((SV* sv, unsigned long newlen));
+#endif
+VIRTUAL void sv_inc _((SV* sv));
+VIRTUAL void sv_insert _((SV* bigsv, STRLEN offset, STRLEN len, char* little, STRLEN littlelen));
+VIRTUAL int sv_isa _((SV* sv, char* name));
+VIRTUAL int sv_isobject _((SV* sv));
+VIRTUAL STRLEN sv_len _((SV* sv));
+VIRTUAL void sv_magic _((SV* sv, SV* obj, int how, char* name, I32 namlen));
+VIRTUAL SV* sv_mortalcopy _((SV* oldsv));
+VIRTUAL SV* sv_newmortal _((void));
+VIRTUAL SV* sv_newref _((SV* sv));
+#ifdef DEBUGGING
char* sv_peek _((SV* sv));
-char* sv_pvn_force _((SV* sv, STRLEN* lp));
-char* sv_reftype _((SV* sv, int ob));
-void sv_replace _((SV* sv, SV* nsv));
-void sv_report_used _((void));
-void sv_reset _((char* s, HV* stash));
-void sv_setpvf _((SV* sv, const char* pat, ...));
-void sv_setpvf_mg _((SV* sv, const char* pat, ...));
-void sv_setiv _((SV* sv, IV num));
-void sv_setiv_mg _((SV* sv, IV num));
-void sv_setpviv _((SV* sv, IV num));
-void sv_setpviv_mg _((SV* sv, IV num));
-void sv_setuv _((SV* sv, UV num));
-void sv_setuv_mg _((SV* sv, UV num));
-void sv_setnv _((SV* sv, double num));
-void sv_setnv_mg _((SV* sv, double num));
-SV* sv_setref_iv _((SV* rv, char* classname, IV iv));
-SV* sv_setref_nv _((SV* rv, char* classname, double nv));
-SV* sv_setref_pv _((SV* rv, char* classname, void* pv));
-SV* sv_setref_pvn _((SV* rv, char* classname, char* pv, I32 n));
-void sv_setpv _((SV* sv, const char* ptr));
-void sv_setpv_mg _((SV* sv, const char* ptr));
-void sv_setpvn _((SV* sv, const char* ptr, STRLEN len));
-void sv_setpvn_mg _((SV* sv, const char* ptr, STRLEN len));
-void sv_setsv _((SV* dsv, SV* ssv));
-void sv_setsv_mg _((SV* dsv, SV* ssv));
-void sv_taint _((SV* sv));
-bool sv_tainted _((SV* sv));
-int sv_unmagic _((SV* sv, int type));
-void sv_unref _((SV* sv));
-void sv_untaint _((SV* sv));
-bool sv_upgrade _((SV* sv, U32 mt));
-void sv_usepvn _((SV* sv, char* ptr, STRLEN len));
-void sv_usepvn_mg _((SV* sv, char* ptr, STRLEN len));
-void sv_vcatpvfn _((SV* sv, const char* pat, STRLEN patlen,
+#endif
+VIRTUAL char* sv_pvn_force _((SV* sv, STRLEN* lp));
+VIRTUAL char* sv_reftype _((SV* sv, int ob));
+VIRTUAL void sv_replace _((SV* sv, SV* nsv));
+VIRTUAL void sv_report_used _((void));
+VIRTUAL void sv_reset _((char* s, HV* stash));
+VIRTUAL void sv_setpvf _((SV* sv, const char* pat, ...));
+VIRTUAL void sv_setiv _((SV* sv, IV num));
+VIRTUAL void sv_setpviv _((SV* sv, IV num));
+VIRTUAL void sv_setuv _((SV* sv, UV num));
+VIRTUAL void sv_setnv _((SV* sv, double num));
+VIRTUAL SV* sv_setref_iv _((SV* rv, char* classname, IV iv));
+VIRTUAL SV* sv_setref_nv _((SV* rv, char* classname, double nv));
+VIRTUAL SV* sv_setref_pv _((SV* rv, char* classname, void* pv));
+VIRTUAL SV* sv_setref_pvn _((SV* rv, char* classname, char* pv, I32 n));
+VIRTUAL void sv_setpv _((SV* sv, const char* ptr));
+VIRTUAL void sv_setpvn _((SV* sv, const char* ptr, STRLEN len));
+VIRTUAL void sv_setsv _((SV* dsv, SV* ssv));
+VIRTUAL void sv_taint _((SV* sv));
+VIRTUAL bool sv_tainted _((SV* sv));
+VIRTUAL int sv_unmagic _((SV* sv, int type));
+VIRTUAL void sv_unref _((SV* sv));
+VIRTUAL void sv_untaint _((SV* sv));
+VIRTUAL bool sv_upgrade _((SV* sv, U32 mt));
+VIRTUAL void sv_usepvn _((SV* sv, char* ptr, STRLEN len));
+VIRTUAL void sv_vcatpvfn _((SV* sv, const char* pat, STRLEN patlen,
va_list* args, SV** svargs, I32 svmax,
bool *used_locale));
-void sv_vsetpvfn _((SV* sv, const char* pat, STRLEN patlen,
+VIRTUAL void sv_vsetpvfn _((SV* sv, const char* pat, STRLEN patlen,
va_list* args, SV** svargs, I32 svmax,
bool *used_locale));
-void taint_env _((void));
-void taint_proper _((const char* f, char* s));
+VIRTUAL void taint_env _((void));
+VIRTUAL void taint_proper _((const char* f, char* s));
#ifdef UNLINK_ALL_VERSIONS
-I32 unlnk _((char* f));
+VIRTUAL I32 unlnk _((char* f));
#endif
#ifdef USE_THREADS
-void unlock_condpair _((void* svv));
-#endif
-void unsharepvn _((char* sv, I32 len, U32 hash));
-void unshare_hek _((HEK* hek));
-void utilize _((int aver, I32 floor, OP* version, OP* id, OP* arg));
-void vivify_defelem _((SV* sv));
-void vivify_ref _((SV* sv, U32 to_what));
-I32 wait4pid _((int pid, int* statusp, int flags));
-void warn _((const char* pat,...));
+VIRTUAL void unlock_condpair _((void* svv));
+#endif
+VIRTUAL void unsharepvn _((char* sv, I32 len, U32 hash));
+VIRTUAL void unshare_hek _((HEK* hek));
+VIRTUAL void utilize _((int aver, I32 floor, OP* version, OP* id, OP* arg));
+VIRTUAL void vivify_defelem _((SV* sv));
+VIRTUAL void vivify_ref _((SV* sv, U32 to_what));
+VIRTUAL I32 wait4pid _((int pid, int* statusp, int flags));
+VIRTUAL void warn _((const char* pat,...));
+#ifdef DEBUGGING
void watch _((char** addr));
-I32 whichsig _((char* sig));
-int yyerror _((char* s));
-int yylex _((void));
-int yyparse _((void));
-int yywarn _((char* s));
+#endif
+VIRTUAL I32 whichsig _((char* sig));
+VIRTUAL int yyerror _((char* s));
+VIRTUAL int yylex _((void));
+VIRTUAL int yyparse _((void));
+VIRTUAL int yywarn _((char* s));
#ifndef MYMALLOC
-Malloc_t safemalloc _((MEM_SIZE nbytes));
-Malloc_t safecalloc _((MEM_SIZE elements, MEM_SIZE size));
-Malloc_t saferealloc _((Malloc_t where, MEM_SIZE nbytes));
-Free_t safefree _((Malloc_t where));
+VIRTUAL Malloc_t safemalloc _((MEM_SIZE nbytes));
+VIRTUAL Malloc_t safecalloc _((MEM_SIZE elements, MEM_SIZE size));
+VIRTUAL Malloc_t saferealloc _((Malloc_t where, MEM_SIZE nbytes));
+VIRTUAL Free_t safefree _((Malloc_t where));
#endif
#ifdef LEAKTEST
}
#ifndef DISABLE_DESTRUCTOR_KLUDGE
-static void
+STATIC void
do_clean_named_objs(SV *sv)
{
- if (SvTYPE(sv) == SVt_PVGV && GvSV(sv))
- do_clean_objs(GvSV(sv));
+ if (SvTYPE(sv) == SVt_PVGV) {
+ if ( SvOBJECT(GvSV(sv)) ||
+ GvAV(sv) && SvOBJECT(GvAV(sv)) ||
+ GvHV(sv) && SvOBJECT(GvHV(sv)) ||
+ GvIO(sv) && SvOBJECT(GvIO(sv)) ||
+ GvCV(sv) && SvOBJECT(GvCV(sv)) )
+ {
+ DEBUG_D((PerlIO_printf(Perl_debug_log, "Cleaning named glob object:\n "), sv_dump(sv));)
+ SvREFCNT_dec(sv);
+ }
+ else if (GvSV(sv))
+ do_clean_objs(GvSV(sv));
+ }
}
#endif
if (defstash) { /* Still have a symbol table? */
djSP;
GV* destructor;
- HV* stash;
- SV ref;
+ SV tmpref;
- Zero(&ref, 1, SV);
- sv_upgrade(&ref, SVt_RV);
- SvROK_on(&ref);
- SvREADONLY_on(&ref); /* DESTROY() could be naughty */
- SvREFCNT(&ref) = 1;
+ Zero(&tmpref, 1, SV);
+ sv_upgrade(&tmpref, SVt_RV);
+ SvROK_on(&tmpref);
+ SvREADONLY_on(&tmpref); /* DESTROY() could be naughty */
+ SvREFCNT(&tmpref) = 1;
do {
stash = SvSTASH(sv);
destructor = gv_fetchmethod(SvSTASH(sv), "DESTROY");
if (destructor) {
ENTER;
+ PUSHSTACK(SI_DESTROY);
- SvRV(&ref) = SvREFCNT_inc(sv);
+ SvRV(&tmpref) = SvREFCNT_inc(sv);
EXTEND(SP, 2);
PUSHMARK(SP);
- PUSHs(&ref);
+ PUSHs(&tmpref);
PUTBACK;
perl_call_sv((SV*)GvCV(destructor),
G_DISCARD|G_EVAL|G_KEEPERR);
shortsize='2'
shrpenv=''
shsharp='true'
- sig_name='ZERO INT ILL FPE SEGV TERM USR1 USR2 USR3 BREAK ABRT'
- sig_name_init='"ZERO", "INT", "ILL", "FPE", "SEGV", "TERM", "USR1", "USR2", "USR3", "BREAK", "ABRT", 0'
- sig_num='0, 2, 4, 8, 11, 15, 16, 17, 20, 21, 22, 0'
+ sig_name='ZERO INT QUIT ILL FPE KILL SEGV PIPE ALRM TERM USR1 USR2 CHLD USR3 BREAK ABRT STOP CONT CLD'
+ sig_name_init='"ZERO", "INT", "QUIT", "ILL", "FPE", "KILL", "SEGV", "PIPE", "ALRM", "TERM", "USR1", "USR2", "CHLD", "USR3", "BREAK", "ABRT", "STOP", "CONT", "CLD", 0'
+ sig_num='0, 2, 3, 4, 8, 9, 11, 13, 14, 15, 16, 17, 18, 20, 21, 22, 23, 25, 18, 0'
signal_t='void'
-sitearch='~INST_TOP~\lib\site\~archname~'
-sitearchexp='~INST_TOP~\lib\site\~archname~'
+sitearch=''
+sitearchexp=''
sitelib='~INST_TOP~\lib\site'
sitelibexp='~INST_TOP~\lib\site'
sizetype='size_t'
shortsize='2'
shrpenv=''
shsharp='true'
- sig_name='ZERO INT ILL FPE SEGV TERM BREAK ABRT'
- sig_name_init='"ZERO", "INT", "ILL", "FPE", "SEGV", "TERM", "BREAK", "ABRT", 0'
- sig_num='0, 2, 4, 8, 11, 15, 21, 22, 0'
+ sig_name='ZERO INT QUIT ILL FPE KILL SEGV PIPE ALRM TERM CHLD BREAK ABRT STOP CONT CLD'
+ sig_name_init='"ZERO", "INT", "QUIT", "ILL", "FPE", "KILL", "SEGV", "PIPE", "ALRM", "TERM", "CHLD", "BREAK", "ABRT", "STOP", "CONT", "CLD", 0'
+ sig_num='0, 2, 3, 4, 8, 9, 11, 13, 14, 15, 20, 21, 22, 23, 25, 20, 0'
signal_t='void'
-sitearch='~INST_TOP~\lib\site\~archname~'
-sitearchexp='~INST_TOP~\lib\site\~archname~'
+sitearch=''
+sitearchexp=''
sitelib='~INST_TOP~\lib\site'
sitelibexp='~INST_TOP~\lib\site'
sizetype='size_t'
shortsize='2'
shrpenv=''
shsharp='true'
- sig_name='ZERO INT ILL FPE SEGV TERM BREAK ABRT'
- sig_name_init='"ZERO", "INT", "ILL", "FPE", "SEGV", "TERM", "BREAK", "ABRT", 0'
- sig_num='0, 2, 4, 8, 11, 15, 21, 22, 0'
+ sig_name='ZERO INT QUIT ILL FPE KILL SEGV PIPE ALRM TERM CHLD BREAK ABRT STOP CONT CLD'
+ sig_name_init='"ZERO", "INT", "QUIT", "ILL", "FPE", "KILL", "SEGV", "PIPE", "ALRM", "TERM", "CHLD", "BREAK", "ABRT", "STOP", "CONT", "CLD", 0'
+ sig_num='0, 2, 3, 4, 8, 9, 11, 13, 14, 15, 20, 21, 22, 23, 25, 20, 0'
signal_t='void'
-sitearch='~INST_TOP~\lib\site\~archname~'
-sitearchexp='~INST_TOP~\lib\site\~archname~'
-sitelib='~INST_TOP~\lib\site'
-sitelibexp='~INST_TOP~\lib\site'
+sitearch=''
+sitearchexp=''
+sitelib='~INST_TOP~\..\site\~VERSION~\lib'
+sitelibexp='~INST_TOP~\..\site\~VERSION~\lib'
sizetype='size_t'
sleep=''
smail=''
/* MYMALLOC:
* This symbol, if defined, indicates that we're using our own malloc.
*/
-#define MYMALLOC /**/
+/*#define MYMALLOC /**/
- /* Mode_t:
- * This symbol holds the type used to declare file modes
- * for systems calls. It is usually mode_t, but may be
- * int or unsigned short. It may be necessary to include <sys/types.h>
- * to get any typedef'ed information.
- */
- #define Mode_t mode_t /* file mode parameter for system calls */
-
- /* Pid_t:
- * This symbol holds the type used to declare process ids in the kernel.
- * It can be int, uint, pid_t, etc... It may be necessary to include
- * <sys/types.h> to get any typedef'ed information.
- */
- #define Pid_t int /* PID type */
-
/* CAN_PROTOTYPE:
* If defined, this macro indicates that the C compiler can handle
* function prototypes.
* in programs that are not prepared to deal with ~ expansion at run-time.
*/
#define PRIVLIB "c:\\perl5004.5x\\lib" /**/
-#define PRIVLIB_EXP (win32_perllib_path(NULL)) /**/
+#define PRIVLIB_EXP (win32_get_stdlib(patchlevel)) /**/
- /* SIG_NAME:
- * This symbol contains a list of signal names in order of
- * signal number. This is intended
- * to be used as a static array initialization, like this:
- * char *sig_name[] = { SIG_NAME };
- * The signals in the list are separated with commas, and each signal
- * is surrounded by double quotes. There is no leading SIG in the signal
- * name, i.e. SIGQUIT is known as "QUIT".
- * Gaps in the signal numbers (up to NSIG) are filled in with NUMnn,
- * etc., where nn is the actual signal number (e.g. NUM37).
- * The signal number for sig_name[i] is stored in sig_num[i].
- * The last element is 0 to terminate the list with a NULL. This
- * corresponds to the 0 at the end of the sig_num list.
- */
- /* SIG_NUM:
- * This symbol contains a list of signal numbers, in the same order as the
- * SIG_NAME list. It is suitable for static array initialization, as in:
- * int sig_num[] = { SIG_NUM };
- * The signals in the list are separated with commas, and the indices
- * within that list and the SIG_NAME list match, so it's easy to compute
- * the signal name from a number or vice versa at the price of a small
- * dynamic linear lookup.
- * Duplicates are allowed, but are moved to the end of the list.
- * The signal number corresponding to sig_name[i] is sig_number[i].
- * if (i < NSIG) then sig_number[i] == i.
- * The last element is 0, corresponding to the 0 at the end of
- * the sig_name list.
- */
- #define SIG_NAME "ZERO", "INT", "ILL", "FPE", "SEGV", "TERM", "USR1", "USR2", "USR3", "BREAK", "ABRT", 0 /**/
- #define SIG_NUM 0, 2, 4, 8, 11, 15, 16, 17, 20, 21, 22, 0 /**/
-
/* SITEARCH:
* This symbol contains the name of the private library for this package.
* The library is private in the sense that it needn't be in anyone's
/* MYMALLOC:
* This symbol, if defined, indicates that we're using our own malloc.
*/
-#define MYMALLOC /**/
+/*#define MYMALLOC /**/
- /* Mode_t:
- * This symbol holds the type used to declare file modes
- * for systems calls. It is usually mode_t, but may be
- * int or unsigned short. It may be necessary to include <sys/types.h>
- * to get any typedef'ed information.
- */
- #define Mode_t mode_t /* file mode parameter for system calls */
-
- /* Pid_t:
- * This symbol holds the type used to declare process ids in the kernel.
- * It can be int, uint, pid_t, etc... It may be necessary to include
- * <sys/types.h> to get any typedef'ed information.
- */
- #define Pid_t int /* PID type */
-
/* CAN_PROTOTYPE:
* If defined, this macro indicates that the C compiler can handle
* function prototypes.
* in programs that are not prepared to deal with ~ expansion at run-time.
*/
#define PRIVLIB "c:\\perl5004.5x\\lib" /**/
-#define PRIVLIB_EXP (win32_perllib_path(NULL)) /**/
+#define PRIVLIB_EXP (win32_get_stdlib(patchlevel)) /**/
- /* SIG_NAME:
- * This symbol contains a list of signal names in order of
- * signal number. This is intended
- * to be used as a static array initialization, like this:
- * char *sig_name[] = { SIG_NAME };
- * The signals in the list are separated with commas, and each signal
- * is surrounded by double quotes. There is no leading SIG in the signal
- * name, i.e. SIGQUIT is known as "QUIT".
- * Gaps in the signal numbers (up to NSIG) are filled in with NUMnn,
- * etc., where nn is the actual signal number (e.g. NUM37).
- * The signal number for sig_name[i] is stored in sig_num[i].
- * The last element is 0 to terminate the list with a NULL. This
- * corresponds to the 0 at the end of the sig_num list.
- */
- /* SIG_NUM:
- * This symbol contains a list of signal numbers, in the same order as the
- * SIG_NAME list. It is suitable for static array initialization, as in:
- * int sig_num[] = { SIG_NUM };
- * The signals in the list are separated with commas, and the indices
- * within that list and the SIG_NAME list match, so it's easy to compute
- * the signal name from a number or vice versa at the price of a small
- * dynamic linear lookup.
- * Duplicates are allowed, but are moved to the end of the list.
- * The signal number corresponding to sig_name[i] is sig_number[i].
- * if (i < NSIG) then sig_number[i] == i.
- * The last element is 0, corresponding to the 0 at the end of
- * the sig_name list.
- */
- #define SIG_NAME "ZERO", "INT", "ILL", "FPE", "SEGV", "TERM", "BREAK", "ABRT", 0 /**/
- #define SIG_NUM 0, 2, 4, 8, 11, 15, 21, 22, 0 /**/
-
/* SITEARCH:
* This symbol contains the name of the private library for this package.
* The library is private in the sense that it needn't be in anyone's
/* MYMALLOC:
* This symbol, if defined, indicates that we're using our own malloc.
*/
-#define MYMALLOC /**/
+/*#define MYMALLOC /**/
- /* Mode_t:
- * This symbol holds the type used to declare file modes
- * for systems calls. It is usually mode_t, but may be
- * int or unsigned short. It may be necessary to include <sys/types.h>
- * to get any typedef'ed information.
- */
- #define Mode_t mode_t /* file mode parameter for system calls */
-
- /* Pid_t:
- * This symbol holds the type used to declare process ids in the kernel.
- * It can be int, uint, pid_t, etc... It may be necessary to include
- * <sys/types.h> to get any typedef'ed information.
- */
- #define Pid_t int /* PID type */
-
/* CAN_PROTOTYPE:
* If defined, this macro indicates that the C compiler can handle
* function prototypes.
* in programs that are not prepared to deal with ~ expansion at run-time.
*/
#define PRIVLIB "c:\\perl5004.5x\\lib" /**/
-#define PRIVLIB_EXP (win32_perllib_path(NULL)) /**/
+#define PRIVLIB_EXP (win32_get_stdlib(patchlevel)) /**/
- /* SIG_NAME:
- * This symbol contains a list of signal names in order of
- * signal number. This is intended
- * to be used as a static array initialization, like this:
- * char *sig_name[] = { SIG_NAME };
- * The signals in the list are separated with commas, and each signal
- * is surrounded by double quotes. There is no leading SIG in the signal
- * name, i.e. SIGQUIT is known as "QUIT".
- * Gaps in the signal numbers (up to NSIG) are filled in with NUMnn,
- * etc., where nn is the actual signal number (e.g. NUM37).
- * The signal number for sig_name[i] is stored in sig_num[i].
- * The last element is 0 to terminate the list with a NULL. This
- * corresponds to the 0 at the end of the sig_num list.
- */
- /* SIG_NUM:
- * This symbol contains a list of signal numbers, in the same order as the
- * SIG_NAME list. It is suitable for static array initialization, as in:
- * int sig_num[] = { SIG_NUM };
- * The signals in the list are separated with commas, and the indices
- * within that list and the SIG_NAME list match, so it's easy to compute
- * the signal name from a number or vice versa at the price of a small
- * dynamic linear lookup.
- * Duplicates are allowed, but are moved to the end of the list.
- * The signal number corresponding to sig_name[i] is sig_number[i].
- * if (i < NSIG) then sig_number[i] == i.
- * The last element is 0, corresponding to the 0 at the end of
- * the sig_name list.
- */
- #define SIG_NAME "ZERO", "INT", "ILL", "FPE", "SEGV", "TERM", "BREAK", "ABRT", 0 /**/
- #define SIG_NUM 0, 2, 4, 8, 11, 15, 21, 22, 0 /**/
-
/* SITEARCH:
* This symbol contains the name of the private library for this package.
* The library is private in the sense that it needn't be in anyone's
return (os_id() == VER_PLATFORM_WIN32_NT);
}
+char*
+GetRegStrFromKey(HKEY hkey, const char *lpszValueName, char** ptr, DWORD* lpDataLen)
+{ /* Retrieve a REG_SZ or REG_EXPAND_SZ from the registry */
+ HKEY handle;
+ DWORD type;
+ const char *subkey = "Software\\Perl";
+ long retval;
+
+ retval = RegOpenKeyEx(hkey, subkey, 0, KEY_READ, &handle);
- if(retval == ERROR_SUCCESS){
++ if (retval == ERROR_SUCCESS){
+ retval = RegQueryValueEx(handle, lpszValueName, 0, &type, NULL, lpDataLen);
- if(retval == ERROR_SUCCESS && type == REG_SZ) {
- if(*ptr != NULL) {
++ if (retval == ERROR_SUCCESS && type == REG_SZ) {
++ if (*ptr != NULL) {
+ Renew(*ptr, *lpDataLen, char);
+ }
+ else {
+ New(1312, *ptr, *lpDataLen, char);
+ }
+ retval = RegQueryValueEx(handle, lpszValueName, 0, NULL, (PBYTE)*ptr, lpDataLen);
- if(retval != ERROR_SUCCESS) {
++ if (retval != ERROR_SUCCESS) {
+ Safefree(ptr);
+ ptr = NULL;
+ }
+ }
+ RegCloseKey(handle);
+ }
+ return *ptr;
+}
+
+char*
+GetRegStr(const char *lpszValueName, char** ptr, DWORD* lpDataLen)
+{
+ *ptr = GetRegStrFromKey(HKEY_CURRENT_USER, lpszValueName, ptr, lpDataLen);
- if(*ptr == NULL)
++ if (*ptr == NULL)
+ {
+ *ptr = GetRegStrFromKey(HKEY_LOCAL_MACHINE, lpszValueName, ptr, lpDataLen);
+ }
+ return *ptr;
+}
+
+char *
+win32_get_stdlib(char *pl)
+{
+ static char szStdLib[] = "lib";
+ int len = 0, newSize;
+ char szBuffer[MAX_PATH+1];
+ char szModuleName[MAX_PATH];
+ int result;
+ DWORD dwDataLen;
+ char *lpPath = NULL;
+ char *ptr;
+
+ /* $stdlib = $HKCU{"lib-$]"} || $HKLM{"lib-$]"} || $HKCU{"lib"} || $HKLM{"lib"} || ""; */
+ sprintf(szBuffer, "%s-%s", szStdLib, pl);
+ lpPath = GetRegStr(szBuffer, &lpPath, &dwDataLen);
- if(lpPath == NULL)
++ if (lpPath == NULL)
+ lpPath = GetRegStr(szStdLib, &lpPath, &dwDataLen);
+
+ /* $stdlib .= ";$EMD/../../lib" */
+ GetModuleFileName(GetModuleHandle(NULL), szModuleName, sizeof(szModuleName));
+ ptr = strrchr(szModuleName, '\\');
- if(ptr != NULL)
++ if (ptr != NULL)
+ {
+ *ptr = '\0';
+ ptr = strrchr(szModuleName, '\\');
- if(ptr != NULL)
++ if (ptr != NULL)
+ {
+ *ptr = '\0';
+ ptr = strrchr(szModuleName, '\\');
+ }
+ }
- if(ptr == NULL)
++ if (ptr == NULL)
+ {
+ ptr = szModuleName;
+ *ptr = '\\';
+ }
+ strcpy(++ptr, szStdLib);
+
+ /* check that this path exists */
+ GetCurrentDirectory(sizeof(szBuffer), szBuffer);
+ result = SetCurrentDirectory(szModuleName);
+ SetCurrentDirectory(szBuffer);
- if(result == 0)
++ if (result == 0)
+ {
+ GetModuleFileName(GetModuleHandle(NULL), szModuleName, sizeof(szModuleName));
+ ptr = strrchr(szModuleName, '\\');
- if(ptr != NULL)
++ if (ptr != NULL)
+ strcpy(++ptr, szStdLib);
+ }
+
+ newSize = strlen(szModuleName) + 1;
- if(lpPath != NULL)
++ if (lpPath != NULL)
+ {
+ len = strlen(lpPath);
+ newSize += len + 1; /* plus 1 for ';' */
+ lpPath = Renew(lpPath, newSize, char);
+ }
+ else
+ New(1310, lpPath, newSize, char);
+
- if(lpPath != NULL)
++ if (lpPath != NULL)
+ {
- if(len != 0)
++ if (len != 0)
+ lpPath[len++] = ';';
+ strcpy(&lpPath[len], szModuleName);
+ }
+ return lpPath;
+}
+
+char *
+get_sitelib_part(char* lpRegStr, char* lpPathStr)
+{
+ char szBuffer[MAX_PATH+1];
+ char szModuleName[MAX_PATH];
+ DWORD dwDataLen;
+ int len = 0;
+ int result;
+ char *lpPath = NULL;
+ char *ptr;
+
+ lpPath = GetRegStr(lpRegStr, &lpPath, &dwDataLen);
+
+ /* $sitelib .= ";$EMD/../../../<lpPathStr>" */
+ GetModuleFileName(GetModuleHandle(NULL), szModuleName, sizeof(szModuleName));
+ ptr = strrchr(szModuleName, '\\');
- if(ptr != NULL)
++ if (ptr != NULL)
+ {
+ *ptr = '\0';
+ ptr = strrchr(szModuleName, '\\');
- if(ptr != NULL)
++ if (ptr != NULL)
+ {
+ *ptr = '\0';
+ ptr = strrchr(szModuleName, '\\');
- if(ptr != NULL)
++ if (ptr != NULL)
+ {
+ *ptr = '\0';
+ ptr = strrchr(szModuleName, '\\');
+ }
+ }
+ }
- if(ptr == NULL)
++ if (ptr == NULL)
+ {
+ ptr = szModuleName;
+ *ptr = '\\';
+ }
+ strcpy(++ptr, lpPathStr);
+
+ /* check that this path exists */
+ GetCurrentDirectory(sizeof(szBuffer), szBuffer);
+ result = SetCurrentDirectory(szModuleName);
+ SetCurrentDirectory(szBuffer);
+
- if(result)
++ if (result)
+ {
+ int newSize = strlen(szModuleName) + 1;
- if(lpPath != NULL)
++ if (lpPath != NULL)
+ {
+ len = strlen(lpPath);
+ newSize += len + 1; /* plus 1 for ';' */
+ lpPath = Renew(lpPath, newSize, char);
+ }
+ else
+ New(1311, lpPath, newSize, char);
+
- if(lpPath != NULL)
++ if (lpPath != NULL)
+ {
- if(len != 0)
++ if (len != 0)
+ lpPath[len++] = ';';
+ strcpy(&lpPath[len], szModuleName);
+ }
+ }
+ return lpPath;
+}
+
char *
-win32_perllib_path(char *sfx,...)
+win32_get_sitelib(char *pl)
{
- va_list ap;
- char *end;
- va_start(ap,sfx);
- GetModuleFileName((w32_perldll_handle == INVALID_HANDLE_VALUE)
- ? GetModuleHandle(NULL)
- : w32_perldll_handle,
- w32_perllib_root,
- sizeof(w32_perllib_root));
- *(end = strrchr(w32_perllib_root, '\\')) = '\0';
- if (stricmp(end-4,"\\bin") == 0)
- end -= 4;
- strcpy(end,"\\lib");
- while (sfx)
- {
- strcat(end,"\\");
- strcat(end,sfx);
- sfx = va_arg(ap,char *);
- }
- va_end(ap);
- return (w32_perllib_root);
+ static char szSiteLib[] = "sitelib";
+ char szRegStr[40];
+ char szPathStr[MAX_PATH];
+ char *lpPath1;
+ char *lpPath2;
+
+ /* $HKCU{"sitelib-$]"} || $HKLM{"sitelib-$]"} . ---; */
+ sprintf(szRegStr, "%s-%s", szSiteLib, pl);
+ sprintf(szPathStr, "site\\%s\\lib", pl);
+ lpPath1 = get_sitelib_part(szRegStr, szPathStr);
+
+ /* $HKCU{'sitelib'} || $HKLM{'sitelib'} . ---; */
+ lpPath2 = get_sitelib_part(szSiteLib, "site\\lib");
- if(lpPath1 == NULL)
++ if (lpPath1 == NULL)
+ return lpPath2;
+
- if(lpPath2 == NULL)
++ if (lpPath2 == NULL)
+ return lpPath1;
+
+ int len = strlen(lpPath1);
+ int newSize = len + strlen(lpPath2) + 2; /* plus one for ';' */
+
+ lpPath1 = Renew(lpPath1, newSize, char);
- if(lpPath1 != NULL)
++ if (lpPath1 != NULL)
+ {
+ lpPath1[len++] = ';';
+ strcpy(&lpPath1[len], lpPath2);
+ }
+ Safefree(lpPath2);
+ return lpPath1;
}
curlen = needlen;
needlen = GetEnvironmentVariable(name,curitem,curlen);
}
- if(curitem == NULL)
++ if (curitem == NULL)
+ {
- if(strcmp("PERL5DB", name) == 0)
++ if (strcmp("PERL5DB", name) == 0)
+ curitem = GetRegStr(name, &curitem, &curlen);
+ }
return curitem;
}
XSRETURN_YES;
}
+#define TMPBUFSZ 1024
+#define MAX_LENGTH 2048
+#define SUCCESSRETURNED(x) (x == ERROR_SUCCESS)
+#define REGRETURN(x) XSRETURN_IV(SUCCESSRETURNED(x))
+#define SvHKEY(index) (HKEY)((unsigned long)SvIV(index))
+#define SETIV(index,value) sv_setiv(ST(index), value)
+#define SETNV(index,value) sv_setnv(ST(index), value)
+#define SETPV(index,string) sv_setpv(ST(index), string)
+#define SETPVN(index, buffer, length) sv_setpvn(ST(index), (char*)buffer, length)
+#define SETHKEY(index, hkey) SETIV(index,(long)hkey)
+
+static time_t ft2timet(FILETIME *ft)
+{
+ SYSTEMTIME st;
+ struct tm tm;
+
+ FileTimeToSystemTime(ft, &st);
+ tm.tm_sec = st.wSecond;
+ tm.tm_min = st.wMinute;
+ tm.tm_hour = st.wHour;
+ tm.tm_mday = st.wDay;
+ tm.tm_mon = st.wMonth - 1;
+ tm.tm_year = st.wYear - 1900;
+ tm.tm_wday = st.wDayOfWeek;
+ tm.tm_yday = -1;
+ tm.tm_isdst = -1;
+ return mktime (&tm);
+}
+
+static
+XS(w32_RegCloseKey)
+{
+ dXSARGS;
+
- if(items != 1)
++ if (items != 1)
+ {
+ croak("usage: Win32::RegCloseKey($hkey);\n");
+ }
+
+ REGRETURN(RegCloseKey(SvHKEY(ST(0))));
+}
+
+static
+XS(w32_RegConnectRegistry)
+{
+ dXSARGS;
+ HKEY handle;
+
- if(items != 3)
++ if (items != 3)
+ {
+ croak("usage: Win32::RegConnectRegistry($machine, $hkey, $handle);\n");
+ }
+
- if(SUCCESSRETURNED(RegConnectRegistry((char *)SvPV(ST(0), na), SvHKEY(ST(1)), &handle)))
++ if (SUCCESSRETURNED(RegConnectRegistry((char *)SvPV(ST(0), na), SvHKEY(ST(1)), &handle)))
+ {
+ SETHKEY(2,handle);
+ XSRETURN_YES;
+ }
+ XSRETURN_NO;
+}
+
+static
+XS(w32_RegCreateKey)
+{
+ dXSARGS;
+ HKEY handle;
+ DWORD disposition;
+ long retval;
+
- if(items != 3)
++ if (items != 3)
+ {
+ croak("usage: Win32::RegCreateKey($hkey, $subkey, $handle);\n");
+ }
+
+ retval = RegCreateKeyEx(SvHKEY(ST(0)), (char *)SvPV(ST(1), na), 0, NULL, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS,
+ NULL, &handle, &disposition);
+
- if(SUCCESSRETURNED(retval))
++ if (SUCCESSRETURNED(retval))
+ {
+ SETHKEY(2,handle);
+ XSRETURN_YES;
+ }
+ XSRETURN_NO;
+}
+
+static
+XS(w32_RegCreateKeyEx)
+{
+ dXSARGS;
+
+ unsigned int length;
+ long retval;
+ HKEY hkey, handle;
+ char *subkey;
+ char *keyclass;
+ DWORD options, disposition;
+ REGSAM sam;
+ SECURITY_ATTRIBUTES sa, *psa;
+
- if(items != 9)
++ if (items != 9)
+ {
+ croak("usage: Win32::RegCreateKeyEx($hkey, $subkey, $reserved, $class, $options, $sam, "
+ "$security, $handle, $disposition);\n");
+ }
+
+ hkey = SvHKEY(ST(0));
+ subkey = (char *)SvPV(ST(1), na);
+ keyclass = (char *)SvPV(ST(3), na);
+ options = (DWORD) ((unsigned long)SvIV(ST(4)));
+ sam = (REGSAM) ((unsigned long)SvIV(ST(5)));
+ psa = (SECURITY_ATTRIBUTES*)SvPV(ST(6), length);
- if(length != sizeof(SECURITY_ATTRIBUTES))
++ if (length != sizeof(SECURITY_ATTRIBUTES))
+ {
+ psa = &sa;
+ memset(&sa, 0, sizeof(SECURITY_ATTRIBUTES));
+ sa.nLength = sizeof(SECURITY_ATTRIBUTES);
+ }
+
+ retval = RegCreateKeyEx(hkey, subkey, 0, keyclass, options, sam,
+ psa, &handle, &disposition);
+
- if(SUCCESSRETURNED(retval))
++ if (SUCCESSRETURNED(retval))
+ {
- if(psa == &sa)
++ if (psa == &sa)
+ SETPVN(6, &sa, sizeof(sa));
+
+ SETHKEY(7,handle);
+ SETIV(8,disposition);
+ XSRETURN_YES;
+ }
+ XSRETURN_NO;
+}
+
+static
+XS(w32_RegDeleteKey)
+{
+ dXSARGS;
+
- if(items != 2)
++ if (items != 2)
+ {
+ croak("usage: Win32::RegDeleteKey($hkey, $subkey);\n");
+ }
+
+ REGRETURN(RegDeleteKey(SvHKEY(ST(0)), (char *)SvPV(ST(1), na)));
+}
+
+static
+XS(w32_RegDeleteValue)
+{
+ dXSARGS;
+
- if(items != 2)
++ if (items != 2)
+ {
+ croak("usage: Win32::RegDeleteValue($hkey, $valname);\n");
+ }
+
+ REGRETURN(RegDeleteValue(SvHKEY(ST(0)), (char *)SvPV(ST(1), na)));
+}
+
+static
+XS(w32_RegEnumKey)
+{
+ dXSARGS;
+
+ char keybuffer[TMPBUFSZ];
+
- if(items != 3)
++ if (items != 3)
+ {
+ croak("usage: Win32::RegEnumKey($hkey, $idx, $subkeyname);\n");
+ }
+
- if(SUCCESSRETURNED(RegEnumKey(SvHKEY(ST(0)), SvIV(ST(1)), keybuffer, sizeof(keybuffer))))
++ if (SUCCESSRETURNED(RegEnumKey(SvHKEY(ST(0)), SvIV(ST(1)), keybuffer, sizeof(keybuffer))))
+ {
+ SETPV(2, keybuffer);
+ XSRETURN_YES;
+ }
+ XSRETURN_NO;
+}
+
+static
+XS(w32_RegEnumKeyEx)
+{
+ dXSARGS;
+ int length;
+
+ DWORD keysz, classsz;
+ char keybuffer[TMPBUFSZ];
+ char classbuffer[TMPBUFSZ];
+ long retval;
+ FILETIME filetime;
+
- if(items != 6)
++ if (items != 6)
+ {
+ croak("usage: Win32::RegEnumKeyEx($hkey, $idx, $subkeyname, $reserved, $class, $time);\n");
+ }
+
+ keysz = sizeof(keybuffer);
+ classsz = sizeof(classbuffer);
+ retval = RegEnumKeyEx(SvHKEY(ST(0)), SvIV(ST(1)), keybuffer, &keysz, 0,
+ classbuffer, &classsz, &filetime);
- if(SUCCESSRETURNED(retval))
++ if (SUCCESSRETURNED(retval))
+ {
+ SETPV(2, keybuffer);
+ SETPV(4, classbuffer);
+ SETIV(5, ft2timet(&filetime));
+ XSRETURN_YES;
+ }
+ XSRETURN_NO;
+}
+
+static
+XS(w32_RegEnumValue)
+{
+ dXSARGS;
+ HKEY hkey;
+ DWORD type, namesz, valsz;
+ long retval;
+ static HKEY last_hkey;
+ char myvalbuf[MAX_LENGTH];
+ char mynambuf[MAX_LENGTH];
+
- if(items != 6)
++ if (items != 6)
+ {
+ croak("usage: Win32::RegEnumValue($hkey, $i, $name, $reserved, $type, $value);\n");
+ }
+
+ hkey = SvHKEY(ST(0));
+
+ // If this is a new key, find out how big the maximum name and value sizes are and
+ // allocate space for them. Free any old storage and set the old key value to the
+ // current key.
+
- if(hkey != (HKEY)last_hkey)
++ if (hkey != (HKEY)last_hkey)
+ {
+ char keyclass[TMPBUFSZ];
+ DWORD classsz, subkeys, maxsubkey, maxclass, values, salen, maxnamesz, maxvalsz;
+ FILETIME ft;
+ classsz = sizeof(keyclass);
+ retval = RegQueryInfoKey(hkey, keyclass, &classsz, 0, &subkeys, &maxsubkey, &maxclass,
+ &values, &maxnamesz, &maxvalsz, &salen, &ft);
+
- if(!SUCCESSRETURNED(retval))
++ if (!SUCCESSRETURNED(retval))
+ {
+ XSRETURN_NO;
+ }
+ memset(myvalbuf, 0, MAX_LENGTH);
+ memset(mynambuf, 0, MAX_LENGTH);
+ last_hkey = hkey;
+ }
+
+ namesz = MAX_LENGTH;
+ valsz = MAX_LENGTH;
+ retval = RegEnumValue(hkey, SvIV(ST(1)), mynambuf, &namesz, 0, &type, (LPBYTE) myvalbuf, &valsz);
- if(!SUCCESSRETURNED(retval))
++ if (!SUCCESSRETURNED(retval))
+ {
+ XSRETURN_NO;
+ }
+ else
+ {
+ SETPV(2, mynambuf);
+ SETIV(4, type);
+
+ // return includes the null terminator so delete it if REG_SZ, REG_MULTI_SZ or REG_EXPAND_SZ
+ switch(type)
+ {
+ case REG_SZ:
+ case REG_MULTI_SZ:
+ case REG_EXPAND_SZ:
- if(valsz)
++ if (valsz)
+ --valsz;
+ case REG_BINARY:
+ SETPVN(5, myvalbuf, valsz);
+ break;
+
+ case REG_DWORD_BIG_ENDIAN:
+ {
+ BYTE tmp = myvalbuf[0];
+ myvalbuf[0] = myvalbuf[3];
+ myvalbuf[3] = tmp;
+ tmp = myvalbuf[1];
+ myvalbuf[1] = myvalbuf[2];
+ myvalbuf[2] = tmp;
+ }
+ case REG_DWORD_LITTLE_ENDIAN: // same as REG_DWORD
+ SETNV(5, (double)*((DWORD*)myvalbuf));
+ break;
+
+ default:
+ break;
+ }
+
+ XSRETURN_YES;
+ }
+}
+
+static
+XS(w32_RegFlushKey)
+{
+ dXSARGS;
+
- if(items != 1)
++ if (items != 1)
+ {
+ croak("usage: Win32::RegFlushKey($hkey);\n");
+ }
+
+ REGRETURN(RegFlushKey(SvHKEY(ST(0))));
+}
+
+static
+XS(w32_RegGetKeySecurity)
+{
+ dXSARGS;
+ SECURITY_DESCRIPTOR sd;
+ DWORD sdsz;
+
- if(items != 3)
++ if (items != 3)
+ {
+ croak("usage: Win32::RegGetKeySecurity($hkey, $security_info, $security_descriptor);\n");
+ }
+
- if(SUCCESSRETURNED(RegGetKeySecurity(SvHKEY(ST(0)), SvIV(ST(1)), &sd, &sdsz)))
++ if (SUCCESSRETURNED(RegGetKeySecurity(SvHKEY(ST(0)), SvIV(ST(1)), &sd, &sdsz)))
+ {
+ SETPVN(2, &sd, sdsz);
+ XSRETURN_YES;
+ }
+ XSRETURN_NO;
+}
+
+static
+XS(w32_RegLoadKey)
+{
+ dXSARGS;
+
- if(items != 3)
++ if (items != 3)
+ {
+ croak("usage: Win32::RegLoadKey($hkey, $subkey, $filename);\n");
+ }
+
+ REGRETURN(RegLoadKey(SvHKEY(ST(0)), (char *)SvPV(ST(1), na), (char *)SvPV(ST(2), na)));
+}
+
+static
+XS(w32_RegNotifyChangeKeyValue)
+{
+ croak("Win32::RegNotifyChangeKeyValue not yet implemented!\n");
+}
+
+static
+XS(w32_RegOpenKey)
+{
+ dXSARGS;
+ HKEY handle;
+
- if(items != 3)
++ if (items != 3)
+ {
+ croak("usage: Win32::RegOpenKey($hkey, $subkey, $handle);\n");
+ }
+
- if(SUCCESSRETURNED(RegOpenKey(SvHKEY(ST(0)), (char *)SvPV(ST(1), na), &handle)))
++ if (SUCCESSRETURNED(RegOpenKey(SvHKEY(ST(0)), (char *)SvPV(ST(1), na), &handle)))
+ {
+ SETHKEY(2,handle);
+ XSRETURN_YES;
+ }
+ XSRETURN_NO;
+}
+
+static
+XS(w32_RegOpenKeyEx)
+{
+ dXSARGS;
+ HKEY handle;
+
- if(items != 5)
++ if (items != 5)
+ {
+ croak("usage: Win32::RegOpenKeyEx($hkey, $subkey, $reserved, $sam, $handle);\n");
+ }
+
- if(SUCCESSRETURNED(RegOpenKeyEx(SvHKEY(ST(0)), (char *)SvPV(ST(1), na),
++ if (SUCCESSRETURNED(RegOpenKeyEx(SvHKEY(ST(0)), (char *)SvPV(ST(1), na),
+ 0, (REGSAM) ((unsigned long)SvIV(ST(3))), &handle)))
+ {
+ SETHKEY(4,handle);
+ XSRETURN_YES;
+ }
+ XSRETURN_NO;
+}
+
+#pragma optimize("", off)
+static
+XS(w32_RegQueryInfoKey)
+{
+ dXSARGS;
+ int length;
+
+ char keyclass[TMPBUFSZ];
+ DWORD subkeys, maxsubkey, maxclass, values, maxvalname, maxvaldata;
+ DWORD seclen, classsz;
+ FILETIME ft;
+ long retval;
+
- if(items != 10)
++ if (items != 10)
+ {
+ croak("usage: Win32::RegQueryInfoKey($hkey, $class, $numsubkeys, $maxsubkey,"
+ "$maxclass, $values, $maxvalname, $maxvaldata, $secdesclen,"
+ "$lastwritetime);\n");
+ }
+
+ classsz = sizeof(keyclass);
+ retval = RegQueryInfoKey(SvHKEY(ST(0)), keyclass, &classsz, 0, &subkeys, &maxsubkey,
+ &maxclass, &values, &maxvalname, &maxvaldata,
+ &seclen, &ft);
- if(SUCCESSRETURNED(retval))
++ if (SUCCESSRETURNED(retval))
+ {
+ SETPV(1, keyclass);
+ SETIV(2, subkeys);
+ SETIV(3, maxsubkey);
+ SETIV(4, maxclass);
+ SETIV(5, values);
+ SETIV(6, maxvalname);
+ SETIV(7, maxvaldata);
+ SETIV(8, seclen);
+ SETIV(9, ft2timet(&ft));
+ XSRETURN_YES;
+ }
+ XSRETURN_NO;
+}
+#pragma optimize("", on)
+
+static
+XS(w32_RegQueryValue)
+{
+ dXSARGS;
+
+ unsigned char databuffer[TMPBUFSZ*2];
+ long datasz = sizeof(databuffer);
+
- if(items != 3)
++ if (items != 3)
+ {
+ croak("usage: Win32::RegQueryValue($hkey, $valuename, $data);\n");
+ }
+
- if(SUCCESSRETURNED(RegQueryValue(SvHKEY(ST(0)), SvPV(ST(1), na), (char*)databuffer, &datasz)))
++ if (SUCCESSRETURNED(RegQueryValue(SvHKEY(ST(0)), SvPV(ST(1), na), (char*)databuffer, &datasz)))
+ {
+ // return includes the null terminator so delete it
+ SETPVN(2, databuffer, --datasz);
+ XSRETURN_YES;
+ }
+ XSRETURN_NO;
+}
+
+static
+XS(w32_RegQueryValueEx)
+{
+ dXSARGS;
+
+ unsigned char databuffer[TMPBUFSZ*2];
+ DWORD datasz = sizeof(databuffer);
+ DWORD type;
+ LONG result;
+ LPBYTE ptr = databuffer;
+
- if(items != 5)
++ if (items != 5)
+ {
+ croak("usage: Win32::RegQueryValueEx($hkey, $valuename, $reserved, $type, $data);\n");
+ }
+
+ result = RegQueryValueEx(SvHKEY(ST(0)), SvPV(ST(1), na), 0, &type, ptr, &datasz);
- if(result == ERROR_MORE_DATA)
++ if (result == ERROR_MORE_DATA)
+ {
+ New(0, ptr, datasz+1, BYTE);
+ result = RegQueryValueEx(SvHKEY(ST(0)), SvPV(ST(1), na), 0, &type, ptr, &datasz);
+ }
- if(SUCCESSRETURNED(result))
++ if (SUCCESSRETURNED(result))
+ {
+ SETIV(3, type);
+
+ // return includes the null terminator so delete it if REG_SZ, REG_MULTI_SZ or REG_EXPAND_SZ
+ switch(type)
+ {
+ case REG_SZ:
+ case REG_MULTI_SZ:
+ case REG_EXPAND_SZ:
+ --datasz;
+ case REG_BINARY:
+ SETPVN(4, ptr, datasz);
+ break;
+
+ case REG_DWORD_BIG_ENDIAN:
+ {
+ BYTE tmp = ptr[0];
+ ptr[0] = ptr[3];
+ ptr[3] = tmp;
+ tmp = ptr[1];
+ ptr[1] = ptr[2];
+ ptr[2] = tmp;
+ }
+ case REG_DWORD_LITTLE_ENDIAN: // same as REG_DWORD
+ SETNV(4, (double)*((DWORD*)ptr));
+ break;
+
+ default:
+ break;
+ }
+
- if(ptr != databuffer)
++ if (ptr != databuffer)
+ safefree(ptr);
+
+ XSRETURN_YES;
+ }
- if(ptr != databuffer)
++ if (ptr != databuffer)
+ safefree(ptr);
+
+ XSRETURN_NO;
+}
+
+static
+XS(w32_RegReplaceKey)
+{
+ dXSARGS;
+
- if(items != 4)
++ if (items != 4)
+ {
+ croak("usage: Win32::RegReplaceKey($hkey, $subkey, $newfile, $oldfile);\n");
+ }
+
+ REGRETURN(RegReplaceKey(SvHKEY(ST(0)), (char *)SvPV(ST(1), na), (char *)SvPV(ST(2), na), (char *)SvPV(ST(3), na)));
+}
+
+static
+XS(w32_RegRestoreKey)
+{
+ dXSARGS;
+
- if(items < 2 || items > 3)
++ if (items < 2 || items > 3)
+ {
+ croak("usage: Win32::RegRestoreKey($hkey, $filename [, $flags]);\n");
+ }
+
+ REGRETURN(RegRestoreKey(SvHKEY(ST(0)), (char*)SvPV(ST(1), na), (DWORD)((items == 3) ? SvIV(ST(2)) : 0)));
+}
+
+static
+XS(w32_RegSaveKey)
+{
+ dXSARGS;
+
- if(items != 2)
++ if (items != 2)
+ {
+ croak("usage: Win32::RegSaveKey($hkey, $filename);\n");
+ }
+
+ REGRETURN(RegSaveKey(SvHKEY(ST(0)), (char *)SvPV(ST(1), na), NULL));
+}
+
+static
+XS(w32_RegSetKeySecurity)
+{
+ dXSARGS;
+
- if(items != 3)
++ if (items != 3)
+ {
+ croak("usage: Win32::RegSetKeySecurity($hkey, $security_info, $security_descriptor);\n");
+ }
+
+ REGRETURN(RegSetKeySecurity(SvHKEY(ST(0)), SvIV(ST(1)), (SECURITY_DESCRIPTOR*)SvPV(ST(2), na)));
+}
+
+static
+XS(w32_RegSetValue)
+{
+ dXSARGS;
+
+ unsigned int size;
+ char *buffer;
+
- if(items != 4)
++ if (items != 4)
+ {
+ croak("usage: Win32::RegSetValue($hkey, $subKey, $type, $data);\n");
+ }
+
+ DWORD type = SvIV(ST(2));
- if(type != REG_SZ && type != REG_EXPAND_SZ)
++ if (type != REG_SZ && type != REG_EXPAND_SZ)
+ {
+ croak("Win32::RegSetValue: Type was not REG_SZ or REG_EXPAND_SZ, cannot set %s\n", (char *)SvPV(ST(1), na));
+ }
+
+ buffer = (char *)SvPV(ST(3), size);
+ REGRETURN(RegSetValue(SvHKEY(ST(0)), SvPV(ST(1), na), REG_SZ, buffer, size));
+}
+
+static
+XS(w32_RegSetValueEx)
+{
+ dXSARGS;
+
+ DWORD type;
+ DWORD val;
+ unsigned int size;
+ char *buffer;
+
- if(items != 5)
++ if (items != 5)
+ {
+ croak("usage: Win32::RegSetValueEx($hkey, $valname, $reserved, $type, $data);\n");
+ }
+
+ type = (DWORD)SvIV(ST(3));
+ switch(type)
+ {
+ case REG_SZ:
+ case REG_BINARY:
+ case REG_MULTI_SZ:
+ case REG_EXPAND_SZ:
+ buffer = (char *)SvPV(ST(4), size);
- if(type != REG_BINARY)
++ if (type != REG_BINARY)
+ size++; // include null terminator in size
+
+ REGRETURN(RegSetValueEx(SvHKEY(ST(0)), (char *)SvPV(ST(1), na), 0, type, (PBYTE) buffer, size));
+ break;
+
+ case REG_DWORD_BIG_ENDIAN:
+ case REG_DWORD_LITTLE_ENDIAN: // Same as REG_DWORD
+ val = (DWORD)SvIV(ST(4));
+ REGRETURN(RegSetValueEx(SvHKEY(ST(0)), (char *)SvPV(ST(1), na), 0, type, (PBYTE) &val, sizeof(DWORD)));
+ break;
+
+ default:
+ croak("Win32::RegSetValueEx: Type not specified, cannot set %s\n", (char *)SvPV(ST(1), na));
+ }
+}
+
+static
+XS(w32_RegUnloadKey)
+{
+ dXSARGS;
+
- if(items != 2)
++ if (items != 2)
+ {
+ croak("usage: Win32::RegUnLoadKey($hkey, $subkey);\n");
+ }
+
+ REGRETURN(RegUnLoadKey(SvHKEY(ST(0)), (char *)SvPV(ST(1), na)));
+}
+
+static
+XS(w32_RegisterServer)
+{
+ dXSARGS;
+ BOOL bSuccess = FALSE;
+ HINSTANCE hInstance;
+ unsigned int length;
+ FARPROC sFunc;
+
- if(items != 1)
++ if (items != 1)
+ {
+ croak("usage: Win32::RegisterServer($LibraryName)\n");
+ }
+
+ hInstance = LoadLibrary((char *)SvPV(ST(0), length));
- if(hInstance != NULL)
++ if (hInstance != NULL)
+ {
+ sFunc = GetProcAddress(hInstance, "DllRegisterServer");
- if(sFunc != NULL)
++ if (sFunc != NULL)
+ {
+ bSuccess = (sFunc() == 0);
+ }
+ FreeLibrary(hInstance);
+ }
+
- if(bSuccess)
++ if (bSuccess)
+ {
+ XSRETURN_YES;
+ }
+ XSRETURN_NO;
+}
+
+static
+XS(w32_UnregisterServer)
+{
+ dXSARGS;
+ BOOL bSuccess = FALSE;
+ HINSTANCE hInstance;
+ unsigned int length;
+ FARPROC sFunc;
+
- if(items != 1)
++ if (items != 1)
+ {
+ croak("usage: Win32::UnregisterServer($LibraryName)\n");
+ }
+
+ hInstance = LoadLibrary((char *)SvPV(ST(0), length));
- if(hInstance != NULL)
++ if (hInstance != NULL)
+ {
+ sFunc = GetProcAddress(hInstance, "DllUnregisterServer");
- if(sFunc != NULL)
++ if (sFunc != NULL)
+ {
+ bSuccess = (sFunc() == 0);
+ }
+ FreeLibrary(hInstance);
+ }
+
- if(bSuccess)
++ if (bSuccess)
+ {
+ XSRETURN_YES;
+ }
+ XSRETURN_NO;
+}
+
+
void
Perl_init_os_extras()
{
# endif
#endif
++#ifndef _O_NOINHERIT
++# define _O_NOINHERIT 0x0080
++# ifndef _NO_OLDNAMES
++# define O_NOINHERIT _O_NOINHERIT
++# endif
++#endif
++
#endif /* __MINGW32__ */
/* compatibility stuff for other compilers goes here */