s/^M$//g
[p5sagit/p5-mst-13.2.git] / pp_sys.c
index 5dcaa1a..0451d5a 100644 (file)
--- a/pp_sys.c
+++ b/pp_sys.c
@@ -668,8 +668,8 @@ PP(pp_fileno)
 
 PP(pp_umask)
 {
-#ifdef HAS_UMASK
     dSP; dTARGET;
+#ifdef HAS_UMASK
     Mode_t anum;
 
     if (MAXARG < 1) {
@@ -699,8 +699,6 @@ PP(pp_binmode)
     PerlIO *fp;
     MAGIC *mg;
     SV *discp = Nullsv;
-    STRLEN len  = 0;
-    char *names = NULL;
 
     if (MAXARG < 1)
        RETPUSHUNDEF;
@@ -730,10 +728,6 @@ PP(pp_binmode)
         RETPUSHUNDEF;
     }
 
-    if (discp) {
-       names = SvPV(discp,len);
-    }
-
     if (PerlIO_binmode(aTHX_ fp,IoTYPE(io),mode_from_discipline(discp),
                        (discp) ? SvPV_nolen(discp) : Nullch))
        RETPUSHYES;
@@ -764,9 +758,9 @@ PP(pp_tie)
            methname = "TIEARRAY";
            break;
        case SVt_PVGV:
-#ifdef GV_SHARED_CHECK
-           if (GvSHARED((GV*)varsv)) {
-                Perl_croak(aTHX_ "Attempt to tie shared GV");
+#ifdef GV_UNIQUE_CHECK
+           if (GvUNIQUE((GV*)varsv)) {
+                Perl_croak(aTHX_ "Attempt to tie unique GV");
            }
 #endif
            methname = "TIEHANDLE";
@@ -2795,8 +2789,8 @@ PP(pp_stat)
 
 PP(pp_ftrread)
 {
-    dSP;
     I32 result;
+    dSP;
 #if defined(HAS_ACCESS) && defined(R_OK)
     STRLEN n_a;
     if ((PL_hints & HINT_FILETEST_ACCESS) && SvPOK(TOPs)) {
@@ -2822,8 +2816,8 @@ PP(pp_ftrread)
 
 PP(pp_ftrwrite)
 {
-    dSP;
     I32 result;
+    dSP;
 #if defined(HAS_ACCESS) && defined(W_OK)
     STRLEN n_a;
     if ((PL_hints & HINT_FILETEST_ACCESS) && SvPOK(TOPs)) {
@@ -2849,8 +2843,8 @@ PP(pp_ftrwrite)
 
 PP(pp_ftrexec)
 {
-    dSP;
     I32 result;
+    dSP;
 #if defined(HAS_ACCESS) && defined(X_OK)
     STRLEN n_a;
     if ((PL_hints & HINT_FILETEST_ACCESS) && SvPOK(TOPs)) {
@@ -2876,8 +2870,8 @@ PP(pp_ftrexec)
 
 PP(pp_fteread)
 {
-    dSP;
     I32 result;
+    dSP;
 #ifdef PERL_EFF_ACCESS_R_OK
     STRLEN n_a;
     if ((PL_hints & HINT_FILETEST_ACCESS) && SvPOK(TOPs)) {
@@ -2903,8 +2897,8 @@ PP(pp_fteread)
 
 PP(pp_ftewrite)
 {
-    dSP;
     I32 result;
+    dSP;
 #ifdef PERL_EFF_ACCESS_W_OK
     STRLEN n_a;
     if ((PL_hints & HINT_FILETEST_ACCESS) && SvPOK(TOPs)) {
@@ -2930,8 +2924,8 @@ PP(pp_ftewrite)
 
 PP(pp_fteexec)
 {
-    dSP;
     I32 result;
+    dSP;
 #ifdef PERL_EFF_ACCESS_X_OK
     STRLEN n_a;
     if ((PL_hints & HINT_FILETEST_ACCESS) && SvPOK(TOPs)) {
@@ -2957,8 +2951,8 @@ PP(pp_fteexec)
 
 PP(pp_ftis)
 {
-    dSP;
     I32 result = my_stat();
+    dSP;
     if (result < 0)
        RETPUSHUNDEF;
     RETPUSHYES;
@@ -2971,8 +2965,8 @@ PP(pp_fteowned)
 
 PP(pp_ftrowned)
 {
-    dSP;
     I32 result = my_stat();
+    dSP;
     if (result < 0)
        RETPUSHUNDEF;
     if (PL_statcache.st_uid == (PL_op->op_type == OP_FTEOWNED ?
@@ -2983,8 +2977,8 @@ PP(pp_ftrowned)
 
 PP(pp_ftzero)
 {
-    dSP;
     I32 result = my_stat();
+    dSP;
     if (result < 0)
        RETPUSHUNDEF;
     if (PL_statcache.st_size == 0)
@@ -2994,8 +2988,8 @@ PP(pp_ftzero)
 
 PP(pp_ftsize)
 {
-    dSP; dTARGET;
     I32 result = my_stat();
+    dSP; dTARGET;
     if (result < 0)
        RETPUSHUNDEF;
 #if Off_t_size > IVSIZE
@@ -3008,8 +3002,8 @@ PP(pp_ftsize)
 
 PP(pp_ftmtime)
 {
-    dSP; dTARGET;
     I32 result = my_stat();
+    dSP; dTARGET;
     if (result < 0)
        RETPUSHUNDEF;
     PUSHn( (PL_basetime - PL_statcache.st_mtime) / 86400.0 );
@@ -3018,8 +3012,8 @@ PP(pp_ftmtime)
 
 PP(pp_ftatime)
 {
-    dSP; dTARGET;
     I32 result = my_stat();
+    dSP; dTARGET;
     if (result < 0)
        RETPUSHUNDEF;
     PUSHn( (PL_basetime - PL_statcache.st_atime) / 86400.0 );
@@ -3028,8 +3022,8 @@ PP(pp_ftatime)
 
 PP(pp_ftctime)
 {
-    dSP; dTARGET;
     I32 result = my_stat();
+    dSP; dTARGET;
     if (result < 0)
        RETPUSHUNDEF;
     PUSHn( (PL_basetime - PL_statcache.st_ctime) / 86400.0 );
@@ -3038,8 +3032,8 @@ PP(pp_ftctime)
 
 PP(pp_ftsock)
 {
-    dSP;
     I32 result = my_stat();
+    dSP;
     if (result < 0)
        RETPUSHUNDEF;
     if (S_ISSOCK(PL_statcache.st_mode))
@@ -3049,8 +3043,8 @@ PP(pp_ftsock)
 
 PP(pp_ftchr)
 {
-    dSP;
     I32 result = my_stat();
+    dSP;
     if (result < 0)
        RETPUSHUNDEF;
     if (S_ISCHR(PL_statcache.st_mode))
@@ -3060,8 +3054,8 @@ PP(pp_ftchr)
 
 PP(pp_ftblk)
 {
-    dSP;
     I32 result = my_stat();
+    dSP;
     if (result < 0)
        RETPUSHUNDEF;
     if (S_ISBLK(PL_statcache.st_mode))
@@ -3071,8 +3065,8 @@ PP(pp_ftblk)
 
 PP(pp_ftfile)
 {
-    dSP;
     I32 result = my_stat();
+    dSP;
     if (result < 0)
        RETPUSHUNDEF;
     if (S_ISREG(PL_statcache.st_mode))
@@ -3082,8 +3076,8 @@ PP(pp_ftfile)
 
 PP(pp_ftdir)
 {
-    dSP;
     I32 result = my_stat();
+    dSP;
     if (result < 0)
        RETPUSHUNDEF;
     if (S_ISDIR(PL_statcache.st_mode))
@@ -3093,8 +3087,8 @@ PP(pp_ftdir)
 
 PP(pp_ftpipe)
 {
-    dSP;
     I32 result = my_stat();
+    dSP;
     if (result < 0)
        RETPUSHUNDEF;
     if (S_ISFIFO(PL_statcache.st_mode))
@@ -3104,8 +3098,8 @@ PP(pp_ftpipe)
 
 PP(pp_ftlink)
 {
-    dSP;
     I32 result = my_lstat();
+    dSP;
     if (result < 0)
        RETPUSHUNDEF;
     if (S_ISLNK(PL_statcache.st_mode))
@@ -3477,17 +3471,18 @@ PP(pp_rename)
 
 PP(pp_link)
 {
+    dSP;
 #ifdef HAS_LINK
-    dSP; dTARGET;
+    dTARGET;
     STRLEN n_a;
     char *tmps2 = POPpx;
     char *tmps = SvPV(TOPs, n_a);
     TAINT_PROPER("link");
     SETi( PerlLIO_link(tmps, tmps2) >= 0 );
+    RETURN;
 #else
     DIE(aTHX_ PL_no_func, "link");
 #endif
-    RETURN;
 }
 
 PP(pp_symlink)
@@ -3985,72 +3980,72 @@ PP(pp_system)
     }
     PERL_FLUSHALL_FOR_CHILD;
 #if (defined(HAS_FORK) || defined(AMIGAOS)) && !defined(VMS) && !defined(OS2) || defined(PERL_MICRO)
-  {
-    Pid_t childpid;
-    int status;
-    Sigsave_t ihand,qhand;     /* place to save signals during system() */
-
-    if (PerlProc_pipe(pp) >= 0)
-       did_pipes = 1;
-    while ((childpid = vfork()) == -1) {
-       if (errno != EAGAIN) {
-           value = -1;
-           SP = ORIGMARK;
-           PUSHi(value);
-           if (did_pipes) {
-               PerlLIO_close(pp[0]);
-               PerlLIO_close(pp[1]);
-           }
-           RETURN;
-       }
-       sleep(5);
-    }
-    if (childpid > 0) {
-       if (did_pipes)
-           PerlLIO_close(pp[1]);
+    {
+        Pid_t childpid;
+        int status;
+        Sigsave_t ihand,qhand;     /* place to save signals during system() */
+        
+        if (PerlProc_pipe(pp) >= 0)
+             did_pipes = 1;
+        while ((childpid = vfork()) == -1) {
+             if (errno != EAGAIN) {
+                  value = -1;
+                  SP = ORIGMARK;
+                  PUSHi(value);
+                  if (did_pipes) {
+                       PerlLIO_close(pp[0]);
+                       PerlLIO_close(pp[1]);
+                  }
+                  RETURN;
+             }
+             sleep(5);
+        }
+        if (childpid > 0) {
+             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, SIG_IGN, &ihand);
+             rsignal_save(SIGQUIT, SIG_IGN, &qhand);
 #endif
-       do {
-           result = wait4pid(childpid, &status, 0);
-       } while (result == -1 && errno == EINTR);
+             do {
+                  result = wait4pid(childpid, &status, 0);
+             } while (result == -1 && errno == EINTR);
 #ifndef PERL_MICRO
-       (void)rsignal_restore(SIGINT, &ihand);
-       (void)rsignal_restore(SIGQUIT, &qhand);
-#endif
-       STATUS_NATIVE_SET(result == -1 ? -1 : status);
-       do_execfree();  /* free any memory child malloced on vfork */
-       SP = ORIGMARK;
-       if (did_pipes) {
-           int errkid;
-           int n = 0, n1;
-
-           while (n < sizeof(int)) {
-               n1 = PerlLIO_read(pp[0],
-                                 (void*)(((char*)&errkid)+n),
-                                 (sizeof(int)) - n);
-               if (n1 <= 0)
-                   break;
-               n += n1;
-           }
-           PerlLIO_close(pp[0]);
-           if (n) {                    /* Error */
-               if (n != sizeof(int))
-                   DIE(aTHX_ "panic: kid popen errno read");
-               errno = errkid;         /* Propagate errno from kid */
-               STATUS_CURRENT = -1;
-           }
-       }
-       PUSHi(STATUS_CURRENT);
-       RETURN;
-    }
-    if (did_pipes) {
-       PerlLIO_close(pp[0]);
+             (void)rsignal_restore(SIGINT, &ihand);
+             (void)rsignal_restore(SIGQUIT, &qhand);
+#endif
+             STATUS_NATIVE_SET(result == -1 ? -1 : status);
+             do_execfree();    /* free any memory child malloced on vfork */
+             SP = ORIGMARK;
+             if (did_pipes) {
+                  int errkid;
+                  int n = 0, n1;
+                  
+                  while (n < sizeof(int)) {
+                       n1 = PerlLIO_read(pp[0],
+                                         (void*)(((char*)&errkid)+n),
+                                         (sizeof(int)) - n);
+                       if (n1 <= 0)
+                            break;
+                       n += n1;
+                  }
+                  PerlLIO_close(pp[0]);
+                  if (n) {                     /* Error */
+                       if (n != sizeof(int))
+                            DIE(aTHX_ "panic: kid popen errno read");
+                       errno = errkid;         /* Propagate errno from kid */
+                       STATUS_CURRENT = -1;
+                  }
+             }
+             PUSHi(STATUS_CURRENT);
+             RETURN;
+        }
+        if (did_pipes) {
+             PerlLIO_close(pp[0]);
 #if defined(HAS_FCNTL) && defined(F_SETFD)
-       fcntl(pp[1], F_SETFD, FD_CLOEXEC);
-  }
+             fcntl(pp[1], F_SETFD, FD_CLOEXEC);
 #endif
+        }
     }
     if (PL_op->op_flags & OPf_STACKED) {
        SV *really = *++MARK;
@@ -4126,11 +4121,6 @@ PP(pp_exec)
 #endif
     }
 
-#if !defined(HAS_FORK) && defined(USE_ITHREADS) && defined(PERL_IMPLICIT_SYS)
-    if (value >= 0)
-       my_exit(value);
-#endif
-
     SP = ORIGMARK;
     PUSHi(value);
     RETURN;
@@ -4328,10 +4318,10 @@ PP(pp_gmtime)
     else
        tmbuf = gmtime(&when);
 
-    EXTEND(SP, 9);
-    EXTEND_MORTAL(9);
     if (GIMME != G_ARRAY) {
        SV *tsv;
+        EXTEND(SP, 1);
+        EXTEND_MORTAL(1);
        if (!tmbuf)
            RETPUSHUNDEF;
        tsv = Perl_newSVpvf(aTHX_ "%s %s %2d %02d:%02d:%02d %d",
@@ -4345,7 +4335,9 @@ PP(pp_gmtime)
        PUSHs(sv_2mortal(tsv));
     }
     else if (tmbuf) {
-       PUSHs(sv_2mortal(newSViv(tmbuf->tm_sec)));
+        EXTEND(SP, 9);
+        EXTEND_MORTAL(9);
+        PUSHs(sv_2mortal(newSViv(tmbuf->tm_sec)));
        PUSHs(sv_2mortal(newSViv(tmbuf->tm_min)));
        PUSHs(sv_2mortal(newSViv(tmbuf->tm_hour)));
        PUSHs(sv_2mortal(newSViv(tmbuf->tm_mday)));