[inseparable changes from match from perl-5.003_97e to perl-5.003_97f]
[p5sagit/p5-mst-13.2.git] / pp_sys.c
index fe11f85..712b003 100644 (file)
--- a/pp_sys.c
+++ b/pp_sys.c
@@ -91,7 +91,7 @@ extern int h_errno;
 
 /* Put this after #includes because <unistd.h> defines _XOPEN_*. */
 #ifndef Sock_size_t
-#  if _XOPEN_VERSION >= 5 || defined(_XOPEN_SOURCE_EXTENDED)
+#  if _XOPEN_VERSION >= 5 || defined(_XOPEN_SOURCE_EXTENDED) || defined(__GLIBC__)
 #    define Sock_size_t Size_t
 #  else
 #    define Sock_size_t int
@@ -1162,7 +1162,9 @@ PP(pp_sysread)
     MAGIC *mg;
 
     gv = (GV*)*++MARK;
-    if (SvMAGICAL(gv) && (mg = mg_find((SV*)gv, 'q'))) {
+    if (op->op_type == OP_READ &&
+       SvMAGICAL(gv) && (mg = mg_find((SV*)gv, 'q')))
+    {
        SV *sv;
        
        PUSHMARK(MARK-1);
@@ -1355,6 +1357,11 @@ PP(pp_eof)
 
 PP(pp_tell)
 {
+    return pp_systell(ARGS);
+}
+
+PP(pp_systell)
+{
     dSP; dTARGET;
     GV *gv;
 
@@ -1368,6 +1375,11 @@ PP(pp_tell)
 
 PP(pp_seek)
 {
+    return pp_sysseek(ARGS);
+}
+
+PP(pp_sysseek)
+{
     dSP;
     GV *gv;
     int whence = POPi;
@@ -2728,7 +2740,7 @@ PP(pp_mkdir)
 
     TAINT_PROPER("mkdir");
 #ifdef HAS_MKDIR
-    SETi( mkdir(tmps, mode) >= 0 );
+    SETi( Mkdir(tmps, mode) >= 0 );
 #else
     SETi( dooneliner("mkdir", tmps) );
     oldumask = umask(0);