Integrate with Sarathy.
[p5sagit/p5-mst-13.2.git] / toke.c
diff --git a/toke.c b/toke.c
index 197609a..d1f77df 100644 (file)
--- a/toke.c
+++ b/toke.c
@@ -456,9 +456,7 @@ S_incline(pTHX_ char *s)
     char ch;
     int sawline = 0;
 
-#ifdef MACOS_TRADITIONAL
-    MACPERL_DO_ASYNC_TASKS();
-#endif 
+    PERL_ASYNC_CHECK();
     PL_curcop->cop_line++;
     if (*s++ != '#')
        return;
@@ -484,9 +482,9 @@ S_incline(pTHX_ char *s)
     ch = *t;
     *t = '\0';
     if (t - s > 0)
-       PL_curcop->cop_filegv = gv_fetchfile(s);
+       CopFILEGV_set(PL_curcop, gv_fetchfile(s));
     else
-       PL_curcop->cop_filegv = gv_fetchfile(PL_origfilename);
+       CopFILEGV_set(PL_curcop, gv_fetchfile(PL_origfilename));
     *t = ch;
     PL_curcop->cop_line = atoi(n)-1;
 }
@@ -600,7 +598,7 @@ S_skipspace(pTHX_ register char *s)
 
            sv_upgrade(sv, SVt_PVMG);
            sv_setpvn(sv,PL_bufptr,PL_bufend-PL_bufptr);
-           av_store(GvAV(PL_curcop->cop_filegv),(I32)PL_curcop->cop_line,sv);
+           av_store(CopFILEAV(PL_curcop),(I32)PL_curcop->cop_line,sv);
        }
     }
 }
@@ -2340,7 +2338,7 @@ Perl_yylex(pTHX)
 
                sv_upgrade(sv, SVt_PVMG);
                sv_setsv(sv,PL_linestr);
-               av_store(GvAV(PL_curcop->cop_filegv),(I32)PL_curcop->cop_line,sv);
+               av_store(CopFILEAV(PL_curcop),(I32)PL_curcop->cop_line,sv);
            }
            goto retry;
        }
@@ -2389,7 +2387,7 @@ Perl_yylex(pTHX)
 
            sv_upgrade(sv, SVt_PVMG);
            sv_setsv(sv,PL_linestr);
-           av_store(GvAV(PL_curcop->cop_filegv),(I32)PL_curcop->cop_line,sv);
+           av_store(CopFILEAV(PL_curcop),(I32)PL_curcop->cop_line,sv);
        }
        PL_bufend = SvPVX(PL_linestr) + SvCUR(PL_linestr);
        if (PL_curcop->cop_line == 1) {
@@ -2430,7 +2428,7 @@ Perl_yylex(pTHX)
                     */
                    SV *x = GvSV(gv_fetchpv("\030", TRUE, SVt_PV));
                    assert(SvPOK(x) || SvGMAGICAL(x));
-                   if (sv_eq(x, GvSV(PL_curcop->cop_filegv))) {
+                   if (sv_eq(x, CopFILESV(PL_curcop))) {
                        sv_setpvn(x, ipath, ipathend - ipath);
                        SvSETMAGIC(x);
                    }
@@ -2558,7 +2556,7 @@ Perl_yylex(pTHX)
 #endif
     case ' ': case '\t': case '\f': case 013:
 #ifdef MACOS_TRADITIONAL
-    case '\312':
+    case '\312': /* Them nonbreaking spaces again */
 #endif
        s++;
        goto retry;
@@ -3739,7 +3737,7 @@ Perl_yylex(pTHX)
 
        case KEY___FILE__:
            yylval.opval = (OP*)newSVOP(OP_CONST, 0,
-                                       newSVsv(GvSV(PL_curcop->cop_filegv)));
+                                       newSVsv(CopFILESV(PL_curcop)));
            TERM(THING);
 
        case KEY___LINE__:
@@ -3791,6 +3789,7 @@ Perl_yylex(pTHX)
        case KEY_DESTROY:
        case KEY_BEGIN:
        case KEY_END:
+       case KEY_STOP:
        case KEY_INIT:
            if (PL_expect == XSTATE) {
                s = PL_bufptr;
@@ -5229,6 +5228,9 @@ Perl_keyword(pTHX_ register char *d, I32 len)
            break;
        }
        break;
+    case 'S':
+       if (strEQ(d,"STOP"))                    return KEY_STOP;
+       break;
     case 's':
        switch (d[1]) {
        case 0:                                 return KEY_s;
@@ -6130,8 +6132,7 @@ S_scan_heredoc(pTHX_ register char *s)
 
            sv_upgrade(sv, SVt_PVMG);
            sv_setsv(sv,PL_linestr);
-           av_store(GvAV(PL_curcop->cop_filegv),
-             (I32)PL_curcop->cop_line,sv);
+           av_store(CopFILEAV(PL_curcop), (I32)PL_curcop->cop_line,sv);
        }
        if (*s == term && memEQ(s,PL_tokenbuf,len)) {
            s = PL_bufend - 1;
@@ -6454,8 +6455,7 @@ S_scan_str(pTHX_ char *start, int keep_quoted, int keep_delims)
 
            sv_upgrade(sv, SVt_PVMG);
            sv_setsv(sv,PL_linestr);
-           av_store(GvAV(PL_curcop->cop_filegv),
-             (I32)PL_curcop->cop_line, sv);
+           av_store(CopFILEAV(PL_curcop), (I32)PL_curcop->cop_line, sv);
        }
 
        /* having changed the buffer, we must update PL_bufend */
@@ -6996,41 +6996,26 @@ Perl_yyerror(pTHX_ char *s)
            Perl_sv_catpvf(aTHX_ where_sv, "\\%03o", yychar & 255);
        where = SvPVX(where_sv);
     }
-#ifdef MACOS_TRADITIONAL
-    msg = sv_2mortal(newSVpv("# ", 0));
-    sv_catpvf(msg, "%s, ", s);
-#else
     msg = sv_2mortal(newSVpv(s, 0));
     Perl_sv_catpvf(aTHX_ msg, " at %_ line %"IVdf", ",
-              GvSV(PL_curcop->cop_filegv), (IV)PL_curcop->cop_line);
-#endif
+                  CopFILESV(PL_curcop), (IV)PL_curcop->cop_line);
     if (context)
        Perl_sv_catpvf(aTHX_ msg, "near \"%.*s\"\n", contlen, context);
     else
        Perl_sv_catpvf(aTHX_ msg, "%s\n", where);
     if (PL_multi_start < PL_multi_end &&
        (U32)(PL_curcop->cop_line - PL_multi_end) <= 1) {
-#ifdef MACOS_TRADITIONAL
-        Perl_sv_catpvf(aTHX_ msg,
-        "#   (Might be a runaway multi-line %c%c string starting on line %"IVdf")\n",
-                (int)PL_multi_open,(int)PL_multi_close,(IV)PL_multi_start);
-#else
         Perl_sv_catpvf(aTHX_ msg,
         "   (Might be a runaway multi-line %c%c string starting on line %"IVdf")\n",
                 (int)PL_multi_open,(int)PL_multi_close,(IV)PL_multi_start);
-#endif
         PL_multi_end = 0;
     }
-#ifdef MACOS_TRADITIONAL
-    MacPosIndication(msg, SvPVX(GvSV(PL_curcop->cop_filegv)), PL_curcop->cop_line);
-    sv_catpvn(msg, "\n", 1);
-#endif
     if (PL_in_eval & EVAL_WARNONLY)
        Perl_warn(aTHX_ "%_", msg);
     else
        qerror(msg);
     if (PL_error_count >= 10)
-       Perl_croak(aTHX_ "%_ has too many errors.\n", GvSV(PL_curcop->cop_filegv));
+       Perl_croak(aTHX_ "%_ has too many errors.\n", CopFILESV(PL_curcop));
     PL_in_my = 0;
     PL_in_my_stash = Nullhv;
     return 0;
@@ -7038,7 +7023,6 @@ Perl_yyerror(pTHX_ char *s)
 
 
 #ifdef PERL_OBJECT
-#define NO_XSLOCKS
 #include "XSUB.h"
 #endif