# define PERL_FPU_POST_EXEC }
#endif
-#ifndef PERL_SYS_INIT3
-# define PERL_SYS_INIT3(argvp,argcp,envp) PERL_SYS_INIT(argvp,argcp)
+#ifndef PERL_SYS_INIT3_BODY
+# define PERL_SYS_INIT3_BODY(argvp,argcp,envp) PERL_SYS_INIT_BODY(argvp,argcp)
#endif
+#define PERL_SYS_INIT(argc, argv) Perl_sys_init(argc, argv)
+#define PERL_SYS_INIT3(argc, argv, env) Perl_sys_init3(argc, argv, env)
+#define PERL_SYS_TERM() Perl_sys_term()
+
#ifndef PERL_WRITE_MSG_TO_CONSOLE
# define PERL_WRITE_MSG_TO_CONSOLE(io, msg, len) PerlIO_write(io, msg, len)
#endif
* have HASATTRIBUTE_FORMAT).
*/
+#ifndef PERL_MICRO
#if defined __GNUC__ && !defined(__INTEL_COMPILER)
# if __GNUC__ >= 3 /* 3.0 -> */ /* XXX Verify this version */
# define HASATTRIBUTE_FORMAT
# define HASATTRIBUTE_WARN_UNUSED_RESULT
# endif
#endif
+#endif /* #ifndef PERL_MICRO */
/* USE_5005THREADS needs to be after unixish.h as <pthread.h> includes
* <sys/signal.h> which defines NSIG - which will stop inclusion of <signal.h>
These formats will still work in perl code.
See comments in sv.c for futher details.
- -DvdNUMBER=<number> can be used to redefine VDf
-
- -DvdNUMBER=0 reverts VDf to "vd", as in perl5.8.7,
- which works properly but gives compiler warnings
-
Robin Barker 2005-07-14
+
+ No longer use %1p for VDf = %vd. RMB 2007-10-19
*/
#ifndef SVf_
#define SVfARG(p) ((void*)(p))
-#ifndef vdNUMBER
-# define vdNUMBER 1
-#endif
-
-#ifndef VDf
-# if vdNUMBER
-# define VDf STRINGIFY(vdNUMBER) "p"
-# else
+#ifdef PERL_CORE
+/* not used; but needed for backward compatibilty with XS code? - RMB */
+# undef VDf
+#else
+# ifndef VDf
# define VDf "vd"
# endif
#endif
#ifdef PERL_CORE
/* not used; but needed for backward compatibilty with XS code? - RMB */
+# undef UVf
+#else
# ifndef UVf
# define UVf UVuf
# endif
-#else
-# undef UVf
#endif
#ifdef HASATTRIBUTE_FORMAT
#define PERL_MAGIC_arylen_p '@' /* to move arylen out of XPVAV */
#define PERL_MAGIC_ext '~' /* Available for use by extensions */
+#if defined(DEBUGGING) && defined(I_ASSERT)
+# include <assert.h>
+#endif
+
+/* Keep the old croak based assert for those who want it, and as a fallback if
+ the platform is so hertically non-ANSI that it can't assert. */
-#ifndef assert /* <assert.h> might have been included somehow */
-#define assert(what) PERL_DEB( \
+#define Perl_assert(what) PERL_DEB( \
((what) ? ((void) 0) : \
(Perl_croak_nocontext("Assertion %s failed: file \"" __FILE__ \
"\", line %d", STRINGIFY(what), __LINE__), \
(void) 0)))
+
+#ifndef assert
+# define assert(what) Perl_assert(what)
#endif
struct ufuncs {
#endif
#ifdef USE_PERLIO
-EXTERN_C void PerlIO_teardown(pTHX);
+EXTERN_C void PerlIO_teardown();
# ifdef USE_ITHREADS
# define PERLIO_INIT MUTEX_INIT(&PL_perlio_mutex)
# define PERLIO_TERM \
STMT_START { \
- PerlIO_teardown(aTHX); \
+ PerlIO_teardown(); \
MUTEX_DESTROY(&PL_perlio_mutex);\
} STMT_END
# else
# define PERLIO_INIT
-# define PERLIO_TERM PerlIO_teardown(aTHX)
+# define PERLIO_TERM PerlIO_teardown()
# endif
#else
# define PERLIO_INIT
typedef void (CPERLscope(*share_proc_t)) (pTHX_ SV *sv);
typedef int (CPERLscope(*thrhook_proc_t)) (pTHX);
typedef OP* (CPERLscope(*PPADDR_t)[]) (pTHX);
+typedef bool (CPERLscope(*destroyable_proc_t)) (pTHX_ SV *sv);
/* _ (for $_) must be first in the following list (DEFSV requires it) */
#define THREADSV_NAMES "_123456789&`'+/.,\\\";^-%=|~:\001\005!@"
EXTCONST char PL_memory_wrap[]
INIT("panic: memory wrap");
+#ifdef CSH
+EXTCONST char PL_cshname[]
+ INIT(CSH);
+# define PL_cshlen (sizeof(CSH "") - 1)
+#endif
+
EXTCONST char PL_uuemap[65]
INIT("`!\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_");
# define FAKE_DEFAULT_SIGNAL_HANDLERS
#endif
+#define PERL_PATCHLEVEL_H_IMPLICIT
+#include "patchlevel.h"
+#undef PERL_PATCHLEVEL_H_IMPLICIT
+
#ifdef PERL_GLOBAL_STRUCT
struct perl_vars {
# include "perlvars.h"
END_EXTERN_C
#endif
+#ifdef PERL_CORE
+/* All core uses now exterminated. Ensure no zombies can return: */
+# undef PL_na
+#endif
+
#if defined(WIN32)
/* Now all the config stuff is setup we can include embed.h */
# include "embed.h"
#define START_MY_CXT static my_cxt_t my_cxt;
#define dMY_CXT_SV dNOOP
#define dMY_CXT dNOOP
+#define dMY_CXT_INTERP(my_perl) dNOOP
#define MY_CXT_INIT NOOP
#define MY_CXT_CLONE NOOP
#define MY_CXT my_cxt
#endif
#ifndef EXEC_ARGV_CAST
-#define EXEC_ARGV_CAST(x) x
+#define EXEC_ARGV_CAST(x) (char **)x
#endif
#define IS_NUMBER_IN_UV 0x01 /* number within UV range (maybe not
#define NO_ENV_ARRAY_IN_MAIN
#endif
-/* and finally... */
-#define PERL_PATCHLEVEL_H_IMPLICIT
-#include "patchlevel.h"
-#undef PERL_PATCHLEVEL_H_IMPLICIT
-
/* These are used by Perl_pv_escape() and Perl_pv_pretty()
* are here so that they are available throughout the core
* NOTE that even though some are for _escape and some for _pretty
#define PERL_PV_ESCAPE_QUOTE 0x0001
#define PERL_PV_PRETTY_QUOTE PERL_PV_ESCAPE_QUOTE
-
-#define PERL_PV_PRETTY_ELIPSES 0x0002
+#define PERL_PV_PRETTY_ELLIPSES 0x0002
#define PERL_PV_PRETTY_LTGT 0x0004
#define PERL_PV_ESCAPE_FIRSTCHAR 0x0008
#define PERL_PV_ESCAPE_NOCLEAR 0x4000
#define PERL_PV_ESCAPE_RE 0x8000
+#define PERL_PV_PRETTY_NOCLEAR PERL_PV_ESCAPE_NOCLEAR
+
/* used by pv_display in dump.c*/
-#define PERL_PV_PRETTY_DUMP PERL_PV_PRETTY_ELIPSES|PERL_PV_PRETTY_QUOTE
-#define PERL_PV_PRETTY_REGPROP PERL_PV_PRETTY_ELIPSES|PERL_PV_PRETTY_LTGT|PERL_PV_ESCAPE_RE
+#define PERL_PV_PRETTY_DUMP PERL_PV_PRETTY_ELLIPSES|PERL_PV_PRETTY_QUOTE
+#define PERL_PV_PRETTY_REGPROP PERL_PV_PRETTY_ELLIPSES|PERL_PV_PRETTY_LTGT|PERL_PV_ESCAPE_RE
/*
*/
#endif /* Include guard */
-