Skip processing a file if the file to be opened is '-'
[p5sagit/p5-mst-13.2.git] / mg.c
diff --git a/mg.c b/mg.c
index bb69f5c..35d73dd 100644 (file)
--- a/mg.c
+++ b/mg.c
@@ -408,6 +408,14 @@ Perl_magic_get(pTHX_ SV *sv, MAGIC *mg)
        sv_setiv(sv, (IV)(PL_debug & 32767));
        break;
     case '\005':  /* ^E */
+#ifdef MACOS_TRADITIONAL
+       {
+           char msg[256];
+           
+           sv_setnv(sv,(double)gLastMacOSErr);
+           sv_setpv(sv, gLastMacOSErr ? GetSysErrText(gLastMacOSErr, msg) : "");       
+       }
+#else  
 #ifdef VMS
        {
 #          include <descrip.h>
@@ -453,6 +461,7 @@ Perl_magic_get(pTHX_ SV *sv, MAGIC *mg)
 #endif
 #endif
 #endif
+#endif
        SvNOK_on(sv);   /* what a wonderful hack! */
        break;
     case '\006':               /* ^F */
@@ -656,11 +665,15 @@ Perl_magic_get(pTHX_ SV *sv, MAGIC *mg)
        break;
     case '(':
        sv_setiv(sv, (IV)PL_gid);
+#ifdef HAS_GETGROUPS
        Perl_sv_setpvf(aTHX_ sv, "%"Gid_t_f, PL_gid);
+#endif
        goto add_groups;
     case ')':
        sv_setiv(sv, (IV)PL_egid);
+#ifdef HAS_GETGROUPS
        Perl_sv_setpvf(aTHX_ sv, "%"Gid_t_f, PL_egid);
+#endif
       add_groups:
 #ifdef HAS_GETGROUPS
        {
@@ -674,8 +687,10 @@ Perl_magic_get(pTHX_ SV *sv, MAGIC *mg)
        break;
     case '*':
        break;
+#ifndef MACOS_TRADITIONAL
     case '0':
        break;
+#endif
 #ifdef USE_THREADS
     case '@':
        sv_setsv(sv, thr->errsv);
@@ -1568,15 +1583,19 @@ Perl_magic_set(pTHX_ SV *sv, MAGIC *mg)
        DEBUG_x(dump_all());
        break;
     case '\005':  /* ^E */
-#ifdef VMS
-       set_vaxc_errno(SvIOK(sv) ? SvIVX(sv) : sv_2iv(sv));
+#ifdef MACOS_TRADITIONAL
+       gLastMacOSErr = SvIOK(sv) ? SvIVX(sv) : sv_2iv(sv);
 #else
-#  ifdef WIN32
-       SetLastError( SvIV(sv) );
+#  ifdef VMS
+       set_vaxc_errno(SvIOK(sv) ? SvIVX(sv) : sv_2iv(sv));
 #  else
-#    ifndef OS2
+#    ifdef WIN32
+       SetLastError( SvIV(sv) );
+#    else
+#      ifndef OS2
        /* will anyone ever use this? */
        SETERRNO(SvIOK(sv) ? SvIVX(sv) : sv_2iv(sv), 4);
+#      endif
 #    endif
 #  endif
 #endif
@@ -1640,7 +1659,7 @@ Perl_magic_set(pTHX_ SV *sv, MAGIC *mg)
                        PL_dowarn |= G_WARN_ONCE ;
                }
            }
-       }    
+       }
        break;
     case '.':
        if (PL_localizing) {
@@ -1873,6 +1892,7 @@ Perl_magic_set(pTHX_ SV *sv, MAGIC *mg)
     case ':':
        PL_chopset = SvPV_force(sv,len);
        break;
+#ifndef MACOS_TRADITIONAL
     case '0':
        if (!PL_origalen) {
            s = PL_origargv[0];
@@ -1930,6 +1950,7 @@ Perl_magic_set(pTHX_ SV *sv, MAGIC *mg)
                PL_origargv[i] = Nullch;
        }
        break;
+#endif
 #ifdef USE_THREADS
     case '@':
        sv_setsv(thr->errsv, sv);