Todo tweaks
[p5sagit/p5-mst-13.2.git] / win32 / win32.h
index bfbaaed..fef3cbc 100644 (file)
@@ -10,6 +10,9 @@
 #define  _INC_WIN32_PERL5
 
 #ifdef PERL_OBJECT
+#  define DYNAMIC_ENV_FETCH
+#  define ENV_HV_NAME "___ENV_HV_NAME___"
+#  define prime_env_iter()
 #  define WIN32IO_IS_STDIO             /* don't pull in custom stdio layer */
 #  ifdef PERL_GLOBAL_STRUCT
 #    error PERL_GLOBAL_STRUCT cannot be defined with PERL_OBJECT
@@ -24,10 +27,14 @@ typedef long long __int64;
 /* GCC does not do __declspec() - render it a nop 
  * and turn on options to avoid importing data 
  */
+#ifndef __declspec
 #  define __declspec(x)
+#endif
 #  ifndef PERL_OBJECT
 #    define PERL_GLOBAL_STRUCT
-#    define MULTIPLICITY
+#    ifndef MULTIPLICITY
+#      define MULTIPLICITY
+#    endif
 #  endif
 #endif
 
@@ -97,6 +104,11 @@ struct tms {
  * real filehandles. XXX Should always be defined (the other version is untested) */
 #define USE_SOCKETS_AS_HANDLES
 
+/* read() and write() aren't transparent for socket handles */
+#define PERL_SOCK_SYSREAD_IS_RECV
+#define PERL_SOCK_SYSWRITE_IS_SEND
+
+
 /* if USE_WIN32_RTL_ENV is not defined, Perl uses direct Win32 calls
  * to read the environment, bypassing the runtime's (usually broken)
  * facilities for accessing the same.  See note in util.c/my_setenv(). */
@@ -118,6 +130,14 @@ struct tms {
 #define FILE_SHARE_DELETE              0x00000004
 #endif
 
+/* access() mode bits */
+#ifndef R_OK
+#  define      R_OK    4
+#  define      W_OK    2
+#  define      X_OK    1
+#  define      F_OK    0
+#endif
+
 /* Compiler-specific stuff. */
 
 #ifdef __BORLANDC__            /* Borland C++ */
@@ -139,6 +159,7 @@ struct tms {
 #pragma warn -use      /* "'foo' is declared but never used" */
 #pragma warn -csu      /* "comparing signed and unsigned values" */
 #pragma warn -pro      /* "call to function with no prototype" */
+#pragma warn -stu      /* "undefined structure 'foo'" */
 
 #define USE_RTL_WAIT   /* Borland has a working wait() */
 
@@ -210,7 +231,9 @@ struct mgvtbl {                                                             \
 
 typedef long           uid_t;
 typedef long           gid_t;
+#ifndef _environ
 #define _environ       environ
+#endif
 #define flushall       _flushall
 #define fcloseall      _fcloseall