Cannot use a L<> within a preformatted section of a Pod document.
[p5sagit/p5-mst-13.2.git] / perl.h
diff --git a/perl.h b/perl.h
index 5fa0da3..1742d61 100644 (file)
--- a/perl.h
+++ b/perl.h
 
 #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)
         (strend),(flags),(data))
 #define CALLREG_INTUIT_STRING(prog) \
     CALL_FPTR((prog)->engine->checkstr)(aTHX_ (prog))
-#define CALLREGFREE(prog) \
-    if(prog) CALL_FPTR((prog)->engine->free)(aTHX_ (prog))
+
 #define CALLREG_AS_STR(mg,lp,flags,haseval) \
-        CALL_FPTR(((regexp *)((mg)->mg_obj))->engine->as_str)(aTHX_ (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
@@ -377,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))
@@ -1180,6 +1189,10 @@ 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
@@ -1502,9 +1515,10 @@ EXTERN_C char *crypt(const char *, const char *);
  * 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
@@ -2639,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
@@ -3219,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 {