#ifdef PERL_MICRO
# include "uconfig.h"
#else
-# include "config.h"
+# ifndef USE_CROSS_COMPILE
+# include "config.h"
+# else
+# include "xconfig.h"
+# endif
#endif
/* See L<perlguts/"The Perl API"> for detailed notes on
# endif
#endif
-#define pVAR PERL_UNUSED_DECL(register struct perl_vars* const my_vars)
+#define pVAR register struct perl_vars* my_vars PERL_UNUSED_DECL
#ifdef PERL_GLOBAL_STRUCT
# define dVAR pVAR = (struct perl_vars*)PERL_GET_VARS()
# define MULTIPLICITY
# endif
# define tTHX PerlInterpreter*
-# define pTHX PERL_UNUSED_DECL(register tTHX my_perl)
+# define pTHX register tTHX my_perl PERL_UNUSED_DECL
# define aTHX my_perl
# ifdef PERL_GLOBAL_STRUCT
# define dTHXa(a) dVAR; pTHX = (tTHX)a
#define CALLREG_INTUIT_STRING CALL_FPTR(PL_regint_string)
#define CALLREGFREE CALL_FPTR(PL_regfree)
-/* Note that there are C compilers such as MetroWerks CodeWarrior
+/*
+ * Because of backward compatibility reasons the PERL_UNUSED_DECL
+ * cannot be changed from postfix to PERL_UNUSED_DECL(x). Sigh.
+ *
+ * Note that there are C compilers such as MetroWerks CodeWarrior
* which do not have an "inlined" way (like the gcc __attribute__) of
- * marking unused variables (they need e.g. a #pragma, and using e.g.
- * (void)x is considered dubious) and therefore cpp macros like
- * PERL_UNUSED_DECL(x) cannot work for this purpose. */
+ * marking unused variables (they need e.g. a #pragma) and therefore
+ * cpp macros like PERL_UNUSED_DECL cannot work for this purpose, even
+ * if it were PERL_UNUSED_DECL(x), which it cannot be (see above).
+ *
+ */
#if defined(__SYMBIAN32__) && defined(__GNUC__)
# ifdef __cplusplus
-# define PERL_UNUSED_DECL(x) /*@unused@*/ x
+# define PERL_UNUSED_DECL
# else
-# define PERL_UNUSED_DECL(x) /*@unused@*/ x __attribute__((unused))
+# define PERL_UNUSED_DECL __attribute__((unused))
# endif
#endif
#ifndef PERL_UNUSED_DECL
# if defined(HASATTRIBUTE_UNUSED) && !defined(__cplusplus)
-# define PERL_UNUSED_DECL(x) /*@unused@*/ x __attribute__unused__
+# define PERL_UNUSED_DECL __attribute__unused__
# else
-# define PERL_UNUSED_DECL(x) /*@unused@*/ x
+# define PERL_UNUSED_DECL
# endif
#endif
* but we cannot quite get rid of, such as "ax" in PPCODE+noargs xsubs
*/
#ifndef PERL_UNUSED_ARG
-/* Which lint? Which <note.h>? Need more more robust cpp test. */
-# ifdef lint
+# if defined(lint) && defined(S_SPLINT_S) /* www.splint.org */
# include <note.h>
# define PERL_UNUSED_ARG(x) NOTE(ARGUNUSED(x))
# else
# define PERL_UNUSED_CONTEXT
#endif
-#define NOOP (void)0
-#define dNOOP PERL_UNUSED_DECL(extern int Perl___notused)
+#define NOOP /*EMPTY*/(void)0
+#define dNOOP extern int /*@unused@*/ Perl___notused PERL_UNUSED_DECL
#ifndef pTHX
/* Don't bother defining tTHX and sTHX; using them outside
# endif
#endif
-#if defined(__STRICT_ANSI__) && defined(PERL_GCC_PEDANTIC)
+#if defined(PERL_GCC_PEDANTIC)
# if !defined(PERL_GCC_BRACE_GROUPS_FORBIDDEN)
# define PERL_GCC_BRACE_GROUPS_FORBIDDEN
# endif
# include "embed.h"
# ifndef PERL_MAD
# undef op_getmad
-# define op_getmad(arg,pegop,slot) /*EMPTY*/
+# define op_getmad(arg,pegop,slot) NOOP
# endif
#endif
*/
#ifdef SPRINTF_RETURNS_STRLEN
# define my_sprintf sprintf
+# ifdef HAS_SNPRINTF
+# define USE_SNPRINTF
+# endif
+# ifdef HAS_VSNPRINTF
+# define USE_VSNPRINTF
+# endif
#else
# define my_sprintf Perl_my_sprintf
#endif
# include "embed.h"
# ifndef PERL_MAD
# undef op_getmad
-# define op_getmad(arg,pegop,slot) /*EMPTY*/
+# define op_getmad(arg,pegop,slot) NOOP
# endif
# define ISHISH "vms"
#endif
# include "embed.h"
# ifndef PERL_MAD
# undef op_getmad
-# define op_getmad(arg,pegop,slot) /*EMPTY*/
+# define op_getmad(arg,pegop,slot) NOOP
# endif
# define ISHISH "symbian"
#endif
EXTCONST char PL_no_func[]
INIT("The %s function is unimplemented");
EXTCONST char PL_no_myglob[]
- INIT("\"my\" variable %s can't be in a package");
+ INIT("\"%s\" variable %s can't be in a package");
EXTCONST char PL_no_localize_ref[]
INIT("Can't localize through a reference");
EXTCONST char PL_memory_wrap[]
# include "embed.h"
# ifndef PERL_MAD
# undef op_getmad
-# define op_getmad(arg,pegop,slot) /*EMPTY*/
+# define op_getmad(arg,pegop,slot) NOOP
# endif
#endif
#define SET_NUMERIC_LOCAL() \
set_numeric_local();
-#define IN_LOCALE_RUNTIME (PL_curcop->op_private & HINT_LOCALE)
+#define IN_LOCALE_RUNTIME (CopHINTS_get(PL_curcop) & HINT_LOCALE)
#define IN_LOCALE_COMPILETIME (PL_hints & HINT_LOCALE)
#define IN_LOCALE \
#define PERL_UNICODE_ARGV_FLAG 0x0020
#define PERL_UNICODE_LOCALE_FLAG 0x0040
#define PERL_UNICODE_WIDESYSCALLS_FLAG 0x0080 /* for Sarathy */
+#define PERL_UNICODE_UTF8CACHEASSERT_FLAG 0x0100
#define PERL_UNICODE_STD_FLAG \
(PERL_UNICODE_STDIN_FLAG | \
PERL_UNICODE_INOUT_FLAG | \
PERL_UNICODE_LOCALE_FLAG)
-#define PERL_UNICODE_ALL_FLAGS 0x00ff
+#define PERL_UNICODE_ALL_FLAGS 0x01ff
#define PERL_UNICODE_STDIN 'I'
#define PERL_UNICODE_STDOUT 'O'
#define PERL_UNICODE_ARGV 'A'
#define PERL_UNICODE_LOCALE 'L'
#define PERL_UNICODE_WIDESYSCALLS 'W'
+#define PERL_UNICODE_UTF8CACHEASSERT 'a'
#define PERL_SIGNALS_UNSAFE_FLAG 0x0001