Some signals are more real than others
[p5sagit/p5-mst-13.2.git] / pp_sys.c
index 63eebef..4ca140f 100644 (file)
--- a/pp_sys.c
+++ b/pp_sys.c
@@ -3592,7 +3592,7 @@ PP(pp_chdir)
 #ifdef HAS_DIRFD
                PUSHi(fchdir(dirfd(IoDIRP(io))) >= 0);
 #else
-               DIE(aTHX PL_no_func, "dirfd");
+               DIE(aTHX_ PL_no_func, "dirfd");
 #endif
            }
            else {
@@ -3607,7 +3607,7 @@ PP(pp_chdir)
 #endif
     }
     else 
-        PUSHi( PerlDir_chdir(tmps) >= 0 );
+        PUSHi( PerlDir_chdir((char *)tmps) >= 0 );
 #ifdef VMS
     /* Clear the DEFAULT element of ENV so we'll get the new value
      * in the future. */
@@ -3878,7 +3878,7 @@ PP(pp_mkdir)
 
     TAINT_PROPER("mkdir");
 #ifdef HAS_MKDIR
-    SETi( PerlDir_mkdir(tmps, mode) >= 0 );
+    SETi( PerlDir_mkdir((char *)tmps, mode) >= 0 );
 #else
     SETi( dooneliner("mkdir", tmps) );
     oldumask = PerlLIO_umask(0);
@@ -3900,7 +3900,7 @@ PP(pp_rmdir)
     TRIMSLASHES(tmps,len,copy);
     TAINT_PROPER("rmdir");
 #ifdef HAS_RMDIR
-    SETi( PerlDir_rmdir(tmps) >= 0 );
+    SETi( PerlDir_rmdir((char *)tmps) >= 0 );
 #else
     SETi( dooneliner("rmdir", tmps) );
 #endif
@@ -3924,7 +3924,7 @@ PP(pp_open_dir)
 
     if (IoDIRP(io))
        PerlDir_close(IoDIRP(io));
-    if (!(IoDIRP(io) = PerlDir_open(dirname)))
+    if (!(IoDIRP(io) = PerlDir_open((char *)dirname)))
        goto nope;
 
     RETPUSHYES;
@@ -4240,8 +4240,8 @@ PP(pp_system)
            if (did_pipes)
                PerlLIO_close(pp[1]);
 #ifndef PERL_MICRO
-           rsignal_save(SIGINT, SIG_IGN, &ihand);
-           rsignal_save(SIGQUIT, SIG_IGN, &qhand);
+           rsignal_save(SIGINT,  (Sighandler_t) SIG_IGN, &ihand);
+           rsignal_save(SIGQUIT, (Sighandler_t) SIG_IGN, &qhand);
 #endif
            do {
                result = wait4pid(childpid, &status, 0);
@@ -4572,14 +4572,16 @@ static struct tm *S_my_localtime (pTHX_ Time_t *tp)
      * Given that legal timezones are typically between GMT-12 and GMT+12
      * we turn back the clock 23 hours before calling the localtime
      * function, and add those to the return value. This will never cause
-     * day wrapping problems, since the edge case is Jan *19*
+     * day wrapping problems, since the edge case is Tue Jan *19*
      */
     T = *tp - 82800; /* 23 hour. allows up to GMT-23 */
     P = localtime (&T);
     P->tm_hour += 23;
     if (P->tm_hour >= 24) {
        P->tm_hour -= 24;
-       P->tm_mday++;
+       P->tm_mday++;   /* 18  -> 19  */
+       P->tm_wday++;   /* Mon -> Tue */
+       P->tm_yday++;   /* 18  -> 19  */
     }
     return (P);
 } /* S_my_localtime */