# define vfork fork
#endif
-/* Put this after #includes because <unistd.h> defines _XOPEN_VERSION. */
-#if _XOPEN_VERSION >= 4
-# define Sock_size_t Size_t
-#else
-# define Sock_size_t int
+/* Put this after #includes because <unistd.h> defines _XOPEN_*. */
+#ifndef Sock_size_t
+# if _XOPEN_VERSION >= 5 || defined(_XOPEN_SOURCE_EXTENDED) || defined(__GLIBC__)
+# define Sock_size_t Size_t
+# else
+# define Sock_size_t int
+# endif
#endif
#if !defined(HAS_MKDIR) || !defined(HAS_RMDIR)
GV *gv;
IO *io;
char *buffer;
- int length;
+ SSize_t length;
Sock_size_t bufsize;
SV *bufsv;
STRLEN blen;
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);
PP(pp_seek)
{
+ return pp_sysseek(ARGS);
+}
+
+PP(pp_sysseek)
+{
dSP;
GV *gv;
int whence = POPi;
TAINT_PROPER("mkdir");
#ifdef HAS_MKDIR
- SETi( mkdir(tmps, mode) >= 0 );
+ SETi( Mkdir(tmps, mode) >= 0 );
#else
SETi( dooneliner("mkdir", tmps) );
oldumask = umask(0);
PP(pp_spwent)
{
dSP;
-#ifdef HAS_PASSWD
+#if defined(HAS_PASSWD) && !defined(CYGWIN32)
setpwent();
RETPUSHYES;
#else