[win32] add archname to *sitearch in config.{b,g,v}c
[p5sagit/p5-mst-13.2.git] / mg.c
diff --git a/mg.c b/mg.c
index b032bf3..1d00143 100644 (file)
--- a/mg.c
+++ b/mg.c
@@ -69,7 +69,6 @@ restore_magic(void *p)
     }
 }
 
-
 void
 mg_magical(SV *sv)
 {
@@ -350,10 +349,22 @@ magic_get(SV *sv, MAGIC *mg)
            sv_setpv(sv, os2error(Perl_rc));
        }
 #else
+#ifdef WIN32
+       {
+           DWORD dwErr = GetLastError();
+           sv_setnv(sv, (double)dwErr);
+           if (dwErr)
+               win32_str_os_error(sv, dwErr);
+           else
+               sv_setpv(sv, "");
+           SetLastError(dwErr);
+       }
+#else
        sv_setnv(sv, (double)errno);
        sv_setpv(sv, errno ? Strerror(errno) : "");
 #endif
 #endif
+#endif
        SvNOK_on(sv);   /* what a wonderful hack! */
        break;
     case '\006':               /* ^F */
@@ -1349,9 +1360,13 @@ magic_set(SV *sv, MAGIC *mg)
 #ifdef VMS
        set_vaxc_errno(SvIOK(sv) ? SvIVX(sv) : sv_2iv(sv));
 #else
+#ifdef WIN32
+       SetLastError( SvIV(sv) );
+#else
        /* will anyone ever use this? */
        SETERRNO(SvIOK(sv) ? SvIVX(sv) : sv_2iv(sv), 4);
 #endif
+#endif
        break;
     case '\006':       /* ^F */
        maxsysfd = SvIOK(sv) ? SvIVX(sv) : sv_2iv(sv);