support OE/MVS
[p5sagit/p5-mst-13.2.git] / globals.c
index 53750a6..1d8ef92 100644 (file)
--- a/globals.c
+++ b/globals.c
 #define pp_rcatline    CPerlObj::Perl_pp_rcatline
 #undef  pp_regcmaybe   
 #define pp_regcmaybe   CPerlObj::Perl_pp_regcmaybe
+#undef  pp_regcreset   
+#define pp_regcreset   CPerlObj::Perl_pp_regcreset
 #undef  pp_regcomp     
 #define pp_regcomp     CPerlObj::Perl_pp_regcomp
 #undef  pp_match       
 #define pp_match       CPerlObj::Perl_pp_match
+#undef  pp_qr
+#define pp_qr          CPerlObj::Perl_pp_qr
 #undef  pp_subst       
 #define pp_subst       CPerlObj::Perl_pp_subst
 #undef  pp_substcont   
@@ -725,8 +729,10 @@ OP * (CPERLscope(*check)[]) _((OP *op)) = {
        ck_null,        /* readline */
        ck_null,        /* rcatline */
        ck_fun,         /* regcmaybe */
+       ck_fun,         /* regcreset */
        ck_null,        /* regcomp */
        ck_match,       /* match */
+       ck_match,       /* qr */
        ck_null,        /* subst */
        ck_null,        /* substcont */
        ck_null,        /* trans */
@@ -1074,8 +1080,10 @@ OP * (CPERLscope(*ppaddr)[])(ARGSproto) = {
        pp_readline,
        pp_rcatline,
        pp_regcmaybe,
+       pp_regcreset,
        pp_regcomp,
        pp_match,
+       pp_qr,
        pp_subst,
        pp_substcont,
        pp_trans,
@@ -1401,17 +1409,29 @@ fprintf(PerlIO *stream, const char *format, ...)
     return PerlIO_vprintf(stream, format, arglist);
 }
 
+#undef PERLVAR
+#define PERLVAR(x, y)
+#undef PERLVARI
+#define PERLVARI(x, y, z) PL_##x = z;
+#undef PERLVARIC
+#define PERLVARIC(x, y, z) PL_##x = z;
+
 CPerlObj::CPerlObj(IPerlMem* ipM, IPerlEnv* ipE, IPerlStdIO* ipStd,
                                             IPerlLIO* ipLIO, IPerlDir* ipD, IPerlSock* ipS, IPerlProc* ipP)
 {
     memset(((char*)this)+sizeof(void*), 0, sizeof(CPerlObj)-sizeof(void*));
-    piMem = ipM;
-    piENV = ipE;
-    piStdIO = ipStd;
-    piLIO = ipLIO;
-    piDir = ipD;
-    piSock = ipS;
-    piProc = ipP;
+
+#include "thrdvar.h"
+#include "intrpvar.h"
+#include "perlvars.h"
+
+    PL_piMem = ipM;
+    PL_piENV = ipE;
+    PL_piStdIO = ipStd;
+    PL_piLIO = ipLIO;
+    PL_piDir = ipD;
+    PL_piSock = ipS;
+    PL_piProc = ipP;
 }
 
 void*
@@ -1426,63 +1446,15 @@ CPerlObj::operator new(size_t nSize, IPerlMem *pvtbl)
 int&
 CPerlObj::ErrorNo(void)
 {
-    return error_no;
+    return errno;
 }
 
 void
 CPerlObj::Init(void)
 {
-    curcop = &compiling;
-    cxstack_ix = -1;
-    cxstack_max = 128;
-    chopset = " \n-";
-#ifdef USE_THREADS
-    threadsv_names = THREADSV_NAMES;
-    tmps_ix = -1;
-    tmps_floor = -1;
-#endif
-    maxo = MAXO;
-    sh_path = SH_PATH;
-    runops = FUNC_NAME_TO_PTR(RUNOPS_DEFAULT);
-#ifdef CSH
-    cshname = CSH;
-#endif
-    rsfp = Nullfp;
-    expect = XSTATE;
-#ifdef USE_LOCALE_COLLATE
-    collation_standard = TRUE;
-    collxfrm_mult = 2;
-#endif
-#ifdef USE_LOCALE_NUMERIC
-    numeric_standard = TRUE;
-    numeric_local = TRUE;
-#endif /* !USE_LOCALE_NUMERIC */
-
-/* constants (these are not literals to facilitate pointer comparisons) */
-    Yes = "1";
-    No = "";
-    hexdigit = "0123456789abcdef0123456789ABCDEFx";
-    patleave = "\\.^$@dDwWsSbB+*?|()-nrtfeaxc0123456789[{]}";
-    splitstr = " ";
-    perl_destruct_level = 0;
-    maxsysfd = MAXSYSFD;
-    statname = Nullsv;
-    maxscream = -1;
-    op_mask = NULL;
-    dlmax = 128;
-    curcopdb = NULL;
-    copline = NOLINE;
-    laststatval = -1;
-    laststype = OP_STAT;
-    generation = 100;
-
-#ifdef WIN32
-    New(2904, environ, 1, char*);
-    *environ = NULL;
-#endif
 }
 
-#ifdef WIN32
+#ifdef WIN32           /* XXX why are these needed? */
 bool
 do_exec(char *cmd)
 {