X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=perl.h;h=1742d61d05c530b5ba06bbd418f5a52d0f370d5c;hb=70bef35c07950550d22b89ad8a4afb174aa8aece;hp=93dad5bebf4c7624aea10aa0c0463d3f679ceb45;hpb=2b64ef7931e8c281a8dbf347e21ffb7d8e9120bb;p=p5sagit%2Fp5-mst-13.2.git diff --git a/perl.h b/perl.h index 93dad5b..1742d61 100644 --- a/perl.h +++ b/perl.h @@ -196,7 +196,7 @@ #define CALLRUNOPS CALL_FPTR(PL_runops) -#define CALLREGCOMP(exp, xend, pm) Perl_pregcomp(aTHX_ exp,xend,pm) +#define CALLREGCOMP(exp, xend, pm) Perl_pregcomp(aTHX_ (exp),(xend),(pm)) #define CALLREGCOMP_ENG(prog, exp, xend, pm) \ CALL_FPTR(((prog)->comp))(aTHX_ exp, xend, pm) @@ -208,10 +208,22 @@ (strend),(flags),(data)) #define CALLREG_INTUIT_STRING(prog) \ CALL_FPTR((prog)->engine->checkstr)(aTHX_ (prog)) + +#define CALLREG_AS_STR(mg,lp,flags,haseval) \ + Perl_reg_stringify(aTHX_ (mg), (lp), (flags), (haseval)) +#define CALLREG_STRINGIFY(mg,lp,flags) CALLREG_AS_STR(mg,lp,flags,0) + #define CALLREGFREE(prog) \ + Perl_pregfree(aTHX_ (prog)) + +#define CALLREGFREE_PVT(prog) \ if(prog) CALL_FPTR((prog)->engine->free)(aTHX_ (prog)) + #if defined(USE_ITHREADS) #define CALLREGDUPE(prog,param) \ + Perl_re_dup(aTHX_ (prog),(param)) + +#define CALLREGDUPE_PVT(prog,param) \ (prog ? CALL_FPTR((prog)->engine->dupe)(aTHX_ (prog),(param)) \ : (REGEXP *)NULL) #endif @@ -374,7 +386,7 @@ register struct op *Perl_op asm(stringify(OP_IN_REGISTER)); # endif #endif -/* gcc (-ansi) -pedantic doesn't allow gcc brace groups, +/* gcc (-ansi) -pedantic doesn't allow gcc statement expressions, * g++ allows them but seems to have problems with them * (insane errors ensue). */ #if defined(PERL_GCC_PEDANTIC) || (defined(__GNUC__) && defined(__cplusplus)) @@ -1177,6 +1189,14 @@ EXTERN_C char *crypt(const char *, const char *); EXTERN_C char **environ; #endif +#if defined(__OpenBSD__) && defined(__cplusplus) +EXTERN_C char **environ; +#endif + +#if defined(__CYGWIN__) && defined(__cplusplus) +EXTERN_C char *crypt(const char *, const char *); +#endif + #ifdef SETERRNO # undef SETERRNO /* SOCKS might have defined this */ #endif @@ -1495,9 +1515,10 @@ EXTERN_C char **environ; * If we have v?snprintf() and the C99 variadic macros, we can just * use just the v?snprintf(). It is nice to try to trap the buffer * overflow, however, so if we are DEBUGGING, and we cannot use the - * gcc brace groups, then use the function wrappers which try to trap - * the overflow. If we can use the gcc brace groups, we can try that - * even with the version that uses the C99 variadic macros. + * gcc statement expressions, then use the function wrappers which try + * to trap the overflow. If we can use the gcc statement expressions, + * we can try that even with the version that uses the C99 variadic + * macros. */ /* Note that we do not check against snprintf()/vsnprintf() returning @@ -2565,10 +2586,10 @@ typedef struct clone_params CLONE_PARAMS; # if HAS_FLOATINGPOINT_H # include # endif -# define PERL_FPU_INIT fpsetmask(0); +# define PERL_FPU_INIT fpsetmask(0) # else # if defined(SIGFPE) && defined(SIG_IGN) && !defined(PERL_MICRO) -# define PERL_FPU_INIT PL_sigfpe_saved = (Sighandler_t) signal(SIGFPE, SIG_IGN); +# define PERL_FPU_INIT PL_sigfpe_saved = (Sighandler_t) signal(SIGFPE, SIG_IGN) # define PERL_FPU_PRE_EXEC { Sigsave_t xfpe; rsignal_save(SIGFPE, PL_sigfpe_saved, &xfpe); # define PERL_FPU_POST_EXEC rsignal_restore(SIGFPE, &xfpe); } # else @@ -2632,6 +2653,9 @@ typedef struct clone_params CLONE_PARAMS; #if defined __GNUC__ && !defined(__INTEL_COMPILER) # if __GNUC__ >= 3 /* 3.0 -> */ /* XXX Verify this version */ # define HASATTRIBUTE_FORMAT +# if defined __MINGW32__ +# define PRINTF_FORMAT_NULL_OK +# endif # endif # if __GNUC__ >= 3 /* 3.0 -> */ # define HASATTRIBUTE_MALLOC @@ -3094,6 +3118,13 @@ typedef pthread_key_t perl_key; # define NORETURN_FUNCTION_END /* NOTREACHED */ return 0 #endif +/* Some OS warn on NULL format to printf */ +#ifdef PRINTF_FORMAT_NULL_OK +# define __attribute__format__null_ok__(x,y,z) __attribute__format__(x,y,z) +#else +# define __attribute__format__null_ok__(x,y,z) +#endif + #ifdef HAS_BUILTIN_EXPECT # define EXPECT(expr,val) __builtin_expect(expr,val) #else @@ -3205,6 +3236,7 @@ typedef struct crypt_data { /* straight from /usr/include/crypt.h */ # define YYTOKENTYPE #endif #include "perly.h" +#include "parser.h" #ifdef PERL_MAD struct nexttoken { @@ -3865,7 +3897,7 @@ typedef Sighandler_t Sigsave_t; #ifdef USE_PERLIO EXTERN_C void PerlIO_teardown(pTHX); -# ifdef USE_THREADS +# ifdef USE_ITHREADS # define PERLIO_INIT MUTEX_INIT(&PL_perlio_mutex) # define PERLIO_TERM \ STMT_START { \ @@ -3876,6 +3908,9 @@ EXTERN_C void PerlIO_teardown(pTHX); # define PERLIO_INIT # define PERLIO_TERM PerlIO_teardown(aTHX) # endif +#else +# define PERLIO_INIT +# define PERLIO_TERM #endif #ifdef MYMALLOC @@ -5255,8 +5290,9 @@ typedef struct am_table_short AMTS; /* * Boilerplate macros for initializing and accessing interpreter-local * data from C. All statics in extensions should be reworked to use - * this, if you want to make the extension thread-safe. See ext/re/re.xs - * for an example of the use of these macros, and perlxs.pod for more. + * this, if you want to make the extension thread-safe. See + * ext/XS/APItest/APItest.xs for an example of the use of these macros, + * and perlxs.pod for more. * * Code that uses these macros is responsible for the following: * 1. #define MY_CXT_KEY to a unique string, e.g.