MPE/iX tweaks from Mark Bixby.
[p5sagit/p5-mst-13.2.git] / pp_sys.c
index e9f761e..c61f09e 100644 (file)
--- a/pp_sys.c
+++ b/pp_sys.c
@@ -1535,7 +1535,7 @@ PP(pp_sysread)
     io = GvIO(gv);
     if (!io || !IoIFP(io))
        goto say_undef;
-    if ((fp_utf8 = PerlIO_isutf8(IoIFP(io))) && !IN_BYTE) {
+    if ((fp_utf8 = PerlIO_isutf8(IoIFP(io))) && !IN_BYTES) {
        buffer = SvPVutf8_force(bufsv, blen);
        /* UTF8 may not have been set if they are all low bytes */
        SvUTF8_on(bufsv);
@@ -1663,7 +1663,7 @@ PP(pp_sysread)
     SvCUR_set(bufsv, count+(buffer - SvPVX(bufsv)));
     *SvEND(bufsv) = '\0';
     (void)SvPOK_only(bufsv);
-    if (fp_utf8 && !IN_BYTE) {
+    if (fp_utf8 && !IN_BYTES) {
        /* Look at utf8 we got back and count the characters */
        char *bend = buffer + count;
        while (buffer < bend) {
@@ -1988,9 +1988,6 @@ PP(pp_truncate)
      * at least as wide as size_t, so using an off_t should be okay. */
     /* XXX Configure probe for the length type of *truncate() needed XXX */
     Off_t len;
-    int result = 1;
-    GV *tmpgv;
-    STRLEN n_a;
 
 #if Size_t_size > IVSIZE
     len = (Off_t)POPn;
@@ -2002,60 +1999,67 @@ PP(pp_truncate)
     /* XXX Configure probe for the signedness of the length type of *truncate() needed? XXX */
     SETERRNO(0,0);
 #if defined(HAS_TRUNCATE) || defined(HAS_CHSIZE) || defined(F_FREESP)
-    if (PL_op->op_flags & OPf_SPECIAL) {
-       tmpgv = gv_fetchpv(POPpx, FALSE, SVt_PVIO);
-    do_ftruncate:
-       TAINT_PROPER("truncate");
-       if (!GvIO(tmpgv) || !IoIFP(GvIOp(tmpgv)))
-           result = 0;
-       else {
-           PerlIO_flush(IoIFP(GvIOp(tmpgv)));
+    {
+        STRLEN n_a;
+       int result = 1;
+       GV *tmpgv;
+       
+       if (PL_op->op_flags & OPf_SPECIAL) {
+           tmpgv = gv_fetchpv(POPpx, FALSE, SVt_PVIO);
+
+       do_ftruncate:
+           TAINT_PROPER("truncate");
+           if (!GvIO(tmpgv) || !IoIFP(GvIOp(tmpgv)))
+               result = 0;
+           else {
+               PerlIO_flush(IoIFP(GvIOp(tmpgv)));
 #ifdef HAS_TRUNCATE
-           if (ftruncate(PerlIO_fileno(IoIFP(GvIOn(tmpgv))), len) < 0)
+               if (ftruncate(PerlIO_fileno(IoIFP(GvIOn(tmpgv))), len) < 0)
 #else
-           if (my_chsize(PerlIO_fileno(IoIFP(GvIOn(tmpgv))), len) < 0)
+               if (my_chsize(PerlIO_fileno(IoIFP(GvIOn(tmpgv))), len) < 0)
 #endif
-               result = 0;
-       }
-    }
-    else {
-       SV *sv = POPs;
-       char *name;
-       STRLEN n_a;
-
-       if (SvTYPE(sv) == SVt_PVGV) {
-           tmpgv = (GV*)sv;            /* *main::FRED for example */
-           goto do_ftruncate;
-       }
-       else if (SvROK(sv) && SvTYPE(SvRV(sv)) == SVt_PVGV) {
-           tmpgv = (GV*) SvRV(sv);     /* \*main::FRED for example */
-           goto do_ftruncate;
+                   result = 0;
+           }
        }
+       else {
+           SV *sv = POPs;
+           char *name;
+         
+           if (SvTYPE(sv) == SVt_PVGV) {
+               tmpgv = (GV*)sv;                /* *main::FRED for example */
+               goto do_ftruncate;
+           }
+           else if (SvROK(sv) && SvTYPE(SvRV(sv)) == SVt_PVGV) {
+               tmpgv = (GV*) SvRV(sv); /* \*main::FRED for example */
+               goto do_ftruncate;
+           }
 
-       name = SvPV(sv, n_a);
-       TAINT_PROPER("truncate");
+           name = SvPV(sv, n_a);
+           TAINT_PROPER("truncate");
 #ifdef HAS_TRUNCATE
-       if (truncate(name, len) < 0)
-           result = 0;
+           if (truncate(name, len) < 0)
+               result = 0;
 #else
-       {
-           int tmpfd;
-           if ((tmpfd = PerlLIO_open(name, O_RDWR)) < 0)
-               result = 0;
-           else {
-               if (my_chsize(tmpfd, len) < 0)
+           {
+               int tmpfd;
+
+               if ((tmpfd = PerlLIO_open(name, O_RDWR)) < 0)
                    result = 0;
-               PerlLIO_close(tmpfd);
+               else {
+                   if (my_chsize(tmpfd, len) < 0)
+                       result = 0;
+                   PerlLIO_close(tmpfd);
+               }
            }
-       }
 #endif
-    }
+       }
 
-    if (result)
-       RETPUSHYES;
-    if (!errno)
-       SETERRNO(EBADF,RMS$_IFI);
-    RETPUSHUNDEF;
+       if (result)
+           RETPUSHYES;
+       if (!errno)
+           SETERRNO(EBADF,RMS$_IFI);
+       RETPUSHUNDEF;
+    }
 #else
     DIE(aTHX_ "truncate not implemented");
 #endif
@@ -3300,7 +3304,7 @@ PP(pp_fttext)
 #else
        else if (*s & 128) {
 #ifdef USE_LOCALE
-           if ((PL_op->op_private & OPpLOCALE) && isALPHA_LC(*s))
+           if (IN_LOCALE_RUNTIME && isALPHA_LC(*s))
                continue;
 #endif
            /* utf8 characters don't count as odd */
@@ -3396,10 +3400,9 @@ PP(pp_chown)
 PP(pp_chroot)
 {
     dSP; dTARGET;
-    char *tmps;
 #ifdef HAS_CHROOT
     STRLEN n_a;
-    tmps = POPpx;
+    char *tmps = POPpx;
     TAINT_PROPER("chroot");
     PUSHi( chroot(tmps) >= 0 );
     RETURN;
@@ -3970,7 +3973,7 @@ PP(pp_system)
 
     if (SP - MARK == 1) {
        if (PL_tainting) {
-           char *junk = SvPV(TOPs, n_a);
+           (void)SvPV_nolen(TOPs);      /* stringify for taint check */
            TAINT_ENV();
            TAINT_PROPER("system");
        }
@@ -4096,7 +4099,7 @@ PP(pp_exec)
 #endif
     else {
        if (PL_tainting) {
-           char *junk = SvPV(*SP, n_a);
+           (void)SvPV_nolen(*SP);      /* stringify for taint check */
            TAINT_ENV();
            TAINT_PROPER("exec");
        }
@@ -4207,11 +4210,9 @@ PP(pp_setpgrp)
 PP(pp_getpriority)
 {
     dSP; dTARGET;
-    int which;
-    int who;
 #ifdef HAS_GETPRIORITY
-    who = POPi;
-    which = TOPi;
+    int who = POPi;
+    int which = TOPi;
     SETi( getpriority(which, who) );
     RETURN;
 #else
@@ -4222,13 +4223,10 @@ PP(pp_getpriority)
 PP(pp_setpriority)
 {
     dSP; dTARGET;
-    int which;
-    int who;
-    int niceval;
 #ifdef HAS_SETPRIORITY
-    niceval = POPi;
-    who = POPi;
-    which = TOPi;
+    int niceval = POPi;
+    int who = POPi;
+    int which = TOPi;
     TAINT_PROPER("setpriority");
     SETi( setpriority(which, who, niceval) >= 0 );
     RETURN;