Don't warn on use of CCFLAGS
[p5sagit/p5-mst-13.2.git] / mg.c
diff --git a/mg.c b/mg.c
index c42667f..318b7fe 100644 (file)
--- a/mg.c
+++ b/mg.c
@@ -456,7 +456,11 @@ MAGIC *mg;
 #endif
        break;
     case '?':
-       sv_setiv(sv, (IV)statusvalue);
+       sv_setiv(sv, (IV)STATUS_CURRENT);
+#ifdef COMPLEX_STATUS
+       LvTARGOFF(sv) = statusvalue;
+       LvTARGLEN(sv) = statusvalue_vms;
+#endif
        break;
     case '^':
        s = IoTOP_NAME(GvIOp(defoutgv));
@@ -702,13 +706,11 @@ MAGIC* mg;
                warn("No such signal: SIG%s", s);
            return 0;
        }
-        if(psig_ptr[i])
-           SvREFCNT_dec(psig_ptr[i]);
+       SvREFCNT_dec(psig_name[i]);
+       SvREFCNT_dec(psig_ptr[i]);
        psig_ptr[i] = SvREFCNT_inc(sv);
-       if(psig_name[i])
-           SvREFCNT_dec(psig_name[i]);
-       psig_name[i] = newSVpv(s,strlen(s));
        SvTEMP_off(sv); /* Make sure it doesn't go away on us */
+       psig_name[i] = newSVpv(s, strlen(s));
        SvREADONLY_on(psig_name[i]);
     }
     if (SvTYPE(sv) == SVt_PVGV || SvROK(sv)) {
@@ -1036,12 +1038,6 @@ MAGIC* mg;
     if (GvGP(sv))
        gp_free((GV*)sv);
     GvGP(sv) = gp_ref(GvGP(gv));
-    if (!GvAV(gv))
-       gv_AVadd(gv);
-    if (!GvHV(gv))
-       gv_HVadd(gv);
-    if (!GvIOp(gv))
-       GvIOp(gv) = newIO();
     return 0;
 }
 
@@ -1233,7 +1229,8 @@ MAGIC* mg;
 #ifdef VMS
        set_vaxc_errno(SvIOK(sv) ? SvIVX(sv) : sv_2iv(sv));
 #else
-       SETERRNO(SvIOK(sv) ? SvIVX(sv) : sv_2iv(sv),4);         /* will anyone ever use this? */
+       /* will anyone ever use this? */
+       SETERRNO(SvIOK(sv) ? SvIVX(sv) : sv_2iv(sv), 4);
 #endif
        break;
     case '\006':       /* ^F */
@@ -1347,10 +1344,23 @@ MAGIC* mg;
        compiling.cop_arybase = SvIOK(sv) ? SvIVX(sv) : sv_2iv(sv);
        break;
     case '?':
-       statusvalue = FIXSTATUS(SvIOK(sv) ? SvIVX(sv) : sv_2iv(sv));
+#ifdef COMPLEX_STATUS
+       if (localizing == 2) {
+           statusvalue = LvTARGOFF(sv);
+           statusvalue_vms = LvTARGLEN(sv);
+       }
+       else
+#endif
+#ifdef VMSISH_STATUS
+       if (VMSISH_STATUS)
+           STATUS_NATIVE_SET((U32)(SvIOK(sv) ? SvIVX(sv) : sv_2iv(sv)));
+       else
+#endif
+           STATUS_POSIX_SET(SvIOK(sv) ? SvIVX(sv) : sv_2iv(sv));
        break;
     case '!':
-       SETERRNO(SvIOK(sv) ? SvIVX(sv) : sv_2iv(sv),SvIV(sv) == EVMSERR ? 4 : vaxc$errno);              /* will anyone ever use this? */
+       SETERRNO(SvIOK(sv) ? SvIVX(sv) : sv_2iv(sv),
+                (SvIV(sv) == EVMSERR) ? 4 : vaxc$errno);
        break;
     case '<':
        uid = SvIOK(sv) ? SvIVX(sv) : sv_2iv(sv);
@@ -1535,10 +1545,10 @@ int sig;
     SV *sv;
     CV *cv;
     AV *oldstack;
-    
-    if(!psig_ptr[sig])
-       die("Signal SIG%s received, but no signal handler set.\n",
-       sig_name[sig]);
+
+    if (!psig_ptr[sig])
+       die("Signal SIG%s received, but no signal handler set.\n",
+           sig_name[sig]);
 
     cv = sv_2cv(psig_ptr[sig],&st,&gv,TRUE);
     if (!cv || !CvROOT(cv)) {
@@ -1556,8 +1566,8 @@ int sig;
     if(psig_name[sig])
        sv = SvREFCNT_inc(psig_name[sig]);
     else {
-        sv = sv_newmortal();
-        sv_setpv(sv,sig_name[sig]);
+       sv = sv_newmortal();
+       sv_setpv(sv,sig_name[sig]);
     }
     PUSHMARK(sp);
     PUSHs(sv);