$\1 and serious bug in evalling
[p5sagit/p5-mst-13.2.git] / perl.h
diff --git a/perl.h b/perl.h
index e86f930..8108f03 100644 (file)
--- a/perl.h
+++ b/perl.h
@@ -37,7 +37,7 @@
  * Trying to select a version that gives no warnings...
  */
 #if !(defined(STMT_START) && defined(STMT_END))
-# if defined(__GNUC__) && !defined(__STRICT_ANSI__)
+# if defined(__GNUC__) && !defined(__STRICT_ANSI__) && !defined(__cplusplus)
 #   define STMT_START  (void)( /* gcc supports ``({ STATEMENTS; })'' */
 #   define STMT_END    )
 # else
 
 #define MEM_SIZE Size_t
 
-#if _XOPEN_VERSION >= 4
-#   define Sock_size_t Size_t
-#else
-#   define Sock_size_t int
-#endif
-
 #if defined(STANDARD_C) && defined(I_STDDEF)
 #   include <stddef.h>
 #   define STRUCT_OFFSET(s,m)  offsetof(s,m)
        extern char *memset _((char*, int, int));
 #    endif
 #  endif
-#  define memzero(d,l) memset(d,0,l)
 #else
-#   ifndef memzero
-#      ifdef HAS_BZERO
-#          define memzero(d,l) bzero(d,l)
-#      else
-#          define memzero(d,l) my_bzero(d,l)
-#      endif
-#   endif
+#  define memset(d,c,l) my_memset(d,c,l)
 #endif /* HAS_MEMSET */
 
 #if !defined(HAS_MEMMOVE) && !defined(memmove)
 #   endif
 #endif /* HAS_MEMCMP && HAS_SANE_MEMCMP */
 
+#ifndef memzero
+#   ifdef HAS_MEMSET
+#      define memzero(d,l) memset(d,0,l)
+#   else
+#      ifdef HAS_BZERO
+#          define memzero(d,l) bzero(d,l)
+#      else
+#          define memzero(d,l) my_bzero(d,l)
+#      endif
+#   endif
+#endif
+
 #ifndef HAS_BCMP
 #   ifndef bcmp
 #      define bcmp(s1,s2,l) memcmp(s1,s2,l)
@@ -857,7 +856,9 @@ typedef struct loop LOOP;
 
 typedef struct Outrec Outrec;
 typedef struct interpreter PerlInterpreter;
-typedef struct ff FF;
+#ifndef __BORLANDC__
+typedef struct ff FF;          /* XXX not defined anywhere, should go? */
+#endif
 typedef struct sv SV;
 typedef struct av AV;
 typedef struct hv HV;
@@ -989,18 +990,19 @@ union any {
     void       (*any_dptr) _((void*));
 };
 
+/* Work around some cygwin32 problems with importing global symbols */
+#if defined(CYGWIN32) && defined(DLLIMPORT) 
+#   include "cw32imp.h"
+#endif
+
 #include "regexp.h"
 #include "sv.h"
 #include "util.h"
 #include "form.h"
 #include "gv.h"
 #include "cv.h"
-#include "op.h"
-/* Work Around some problems with importing globals from dlls for cygwin32 */
-#if defined(CYGWIN32) && defined(DLLIMPORT) 
-#   include "extLibInc.h"
-#endif
 #include "opcode.h"
+#include "op.h"
 #include "cop.h"
 #include "av.h"
 #include "hv.h"
@@ -1210,7 +1212,10 @@ char *strcpy(), *strcat();
 #   endif
            double exp _((double));
            double log _((double));
+           double log10 _((double));
            double sqrt _((double));
+           double frexp _((double,int*));
+           double ldexp _((double,int));
            double modf _((double,double*));
            double sin _((double));
            double cos _((double));
@@ -1359,7 +1364,6 @@ EXT SV ** curpad;
 /* temp space */
 EXT SV *       Sv;
 EXT XPV *      Xpv;
-EXT char       buf[2048];      /* should be longer than PATH_MAX */
 EXT char       tokenbuf[256];
 EXT struct stat        statbuf;
 #ifdef HAS_TIMES
@@ -1379,37 +1383,37 @@ EXTCONST char * hexdigit INIT("0123456789abcdef0123456789ABCDEFx");
 EXTCONST char *        patleave INIT("\\.^$@dDwWsSbB+*?|()-nrtfeaxc0123456789[{]}");
 EXTCONST char *        vert INIT("|");
 
-EXTCONST char  warn_uninit[]
+EXTCONST char warn_uninit[]
   INIT("Use of uninitialized value");
-EXTCONST char  warn_nosemi[]
+EXTCONST char warn_nosemi[]
   INIT("Semicolon seems to be missing");
-EXTCONST char  warn_reserved[]
+EXTCONST char warn_reserved[]
   INIT("Unquoted string \"%s\" may clash with future reserved word");
-EXTCONST char  warn_nl[]
+EXTCONST char warn_nl[]
   INIT("Unsuccessful %s on filename containing newline");
-EXTCONST char  no_wrongref[]
+EXTCONST char no_wrongref[]
   INIT("Can't use %s ref as %s ref");
-EXTCONST char  no_symref[]
+EXTCONST char no_symref[]
   INIT("Can't use string (\"%.32s\") as %s ref while \"strict refs\" in use");
-EXTCONST char  no_usym[]
+EXTCONST char no_usym[]
   INIT("Can't use an undefined value as %s reference");
-EXTCONST char  no_aelem[]
+EXTCONST char no_aelem[]
   INIT("Modification of non-creatable array value attempted, subscript %d");
-EXTCONST char  no_helem[]
+EXTCONST char no_helem[]
   INIT("Modification of non-creatable hash value attempted, subscript \"%s\"");
-EXTCONST char  no_modify[]
+EXTCONST char no_modify[]
   INIT("Modification of a read-only value attempted");
-EXTCONST char  no_mem[]
+EXTCONST char no_mem[]
   INIT("Out of memory!\n");
-EXTCONST char  no_security[]
+EXTCONST char no_security[]
   INIT("Insecure dependency in %s%s");
-EXTCONST char  no_sock_func[]
+EXTCONST char no_sock_func[]
   INIT("Unsupported socket function \"%s\" called");
-EXTCONST char  no_dir_func[]
+EXTCONST char no_dir_func[]
   INIT("Unsupported directory function \"%s\" called");
-EXTCONST char  no_func[]
+EXTCONST char no_func[]
   INIT("The %s function is unimplemented");
-EXTCONST char  no_myglob[]
+EXTCONST char no_myglob[]
   INIT("\"my\" variable %s can't be in a package");
 
 EXT SV         sv_undef;
@@ -1847,9 +1851,9 @@ IEXT line_t       Icopline IINIT(NOLINE);
 IEXT CONTEXT * Icxstack;
 IEXT I32       Icxstack_ix IINIT(-1);
 IEXT I32       Icxstack_max IINIT(128);
-IEXT Sigjmp_buf        Itop_env;
+IEXT JMPENV    Istart_env;     /* empty startup sigjmp() environment */
+IEXT JMPENV *  Itop_env;       /* ptr. to current sigjmp() environment */
 IEXT I32       Irunlevel;
-IEXT bool      Imustcatch;     /* doeval() must be caught locally */
 
 /* stack stuff */
 IEXT AV *      Icurstack;              /* THE STACK */
@@ -1884,6 +1888,7 @@ IEXT bool Ipreambled;
 IEXT AV *      Ipreambleav;
 IEXT int       Ilaststatval IINIT(-1);
 IEXT I32       Ilaststype IINIT(OP_STAT);
+IEXT SV *      Imess_sv;
 
 #undef IEXT
 #undef IINIT
@@ -1924,7 +1929,8 @@ EXT MGVTBL vtbl_sv =      {magic_get,
                                magic_set,
                                        magic_len,
                                                0,      0};
-EXT MGVTBL vtbl_env =  {0,     0,      0,      0,      0};
+EXT MGVTBL vtbl_env =  {0,     0,      0,      magic_clear_all_env,
+                                                       0};
 EXT MGVTBL vtbl_envelem =      {0,     magic_setenv,
                                        0,      magic_clearenv,
                                                        0};