/* Define USE_FIXED_OSFHANDLE to fix MSVCRT's _open_osfhandle() on W95.
It now uses some black magic to work seamlessly with the DLL CRT and
works with MSVC++ 4.0+ or GCC/Mingw32
- -- BKS 1-24-2000 */
-#if (defined(_M_IX86) && _MSC_VER >= 1000) || defined(__MINGW32__)
+ -- BKS 1-24-2000
+ Only use this fix for VC++ 6.x or earlier (and for GCC, which we assume
+ uses MSVCRT.DLL). Later versions use MSVCR70.dll, MSVCR71.dll, etc, which
+ do not require the fix. */
+#if (defined(_M_IX86) && _MSC_VER >= 1000 && _MSC_VER <= 1200) || defined(__MINGW32__)
#define USE_FIXED_OSFHANDLE
#endif
#define DllMain DllEntryPoint
#endif
-#pragma warn -ccc /* "condition is always true/false" */
-#pragma warn -rch /* "unreachable code" */
-#pragma warn -sig /* "conversion may lose significant digits" */
-#pragma warn -pia /* "possibly incorrect assignment" */
-#pragma warn -par /* "parameter 'foo' is never used" */
-#pragma warn -aus /* "'foo' is assigned a value that is never used" */
-#pragma warn -use /* "'foo' is declared but never used" */
-#pragma warn -csu /* "comparing signed and unsigned values" */
+#pragma warn -8004 /* "'foo' is assigned a value that is never used" */
+#pragma warn -8008 /* "condition is always true/false" */
+#pragma warn -8012 /* "comparing signed and unsigned values" */
+#pragma warn -8027 /* "functions containing %s are not expanded inline" */
+#pragma warn -8057 /* "parameter 'foo' is never used" */
+#pragma warn -8060 /* "possibly incorrect assignment" */
+#pragma warn -8066 /* "unreachable code" */
+#pragma warn -8071 /* "conversion may lose significant digits" */
+#pragma warn -8080 /* "'foo' is declared but never used" */
/* Borland C thinks that a pointer to a member variable is 12 bytes in size. */
#define PERL_MEMBER_PTR_SIZE 12
#ifdef _MSC_VER /* Microsoft Visual C++ */
+#ifndef UNDER_CE
typedef long uid_t;
typedef long gid_t;
typedef unsigned short mode_t;
+#endif
+
#pragma warning(disable: 4102) /* "unreferenced label" */
/* Visual C thinks that a pointer to a member variable is 16 bytes in size. */
#define PERL_MEMBER_PTR_SIZE 16
#define isnan _isnan
+#define snprintf _snprintf
+#define vsnprintf _vsnprintf
+
+#if _MSC_VER < 1300
+/* VC6 has broken NaN semantics: NaN == NaN returns true instead of false */
+#define NAN_COMPARE_BROKEN 1
+#endif
#endif /* _MSC_VER */
extern int setuid(uid_t uid);
extern int setgid(gid_t gid);
extern int kill(int pid, int sig);
+extern int killpg(int pid, int sig);
#ifndef USE_PERL_SBRK
extern void *sbrk(ptrdiff_t need);
# define HAS_SBRK_PROTO
} child_IO_table;
DllExport void win32_get_child_IO(child_IO_table* ptr);
-DllExport HWND win32_create_message_window();
+DllExport HWND win32_create_message_window(void);
#ifndef USE_SOCKETS_AS_HANDLES
extern FILE * my_fdopen(int, char *);
extern char * win32_get_vendorlib(const char *pl);
extern int IsWin95(void);
extern int IsWinNT(void);
-extern void win32_argv2utf8(int argc, char** argv);
#ifdef PERL_IMPLICIT_SYS
extern void win32_delete_internal_host(void *h);
/* #define PERL_SBRK_VIA_MALLOC /**/
#endif
-#if defined(PERLDLL) && !defined(PERL_CORE)
-#define PERL_CORE
-#endif
-
#ifdef PERL_TEXTMODE_SCRIPTS
# define PERL_SCRIPT_MODE "r"
#else
char Wstrerror_buffer[512];
struct servent Wservent;
char Wgetlogin_buffer[128];
+# ifdef USE_SOCKETS_AS_HANDLES
+ int Winit_socktype;
+# endif
# ifdef HAVE_DES_FCRYPT
char Wcrypt_buffer[30];
# endif
#define w32_getlogin_buffer (PL_sys_intern.thr_intern.Wgetlogin_buffer)
#define w32_crypt_buffer (PL_sys_intern.thr_intern.Wcrypt_buffer)
#define w32_servent (PL_sys_intern.thr_intern.Wservent)
+#define w32_init_socktype (PL_sys_intern.thr_intern.Winit_socktype)
#define w32_use_showwindow (PL_sys_intern.thr_intern.Wuse_showwindow)
#define w32_showwindow (PL_sys_intern.thr_intern.Wshowwindow)
DllExport void *win32_signal_context(void);
#define PERL_GET_SIG_CONTEXT win32_signal_context()
+#ifdef UNDER_CE
+#define Win_GetModuleHandle XCEGetModuleHandleA
+#define Win_GetProcAddress XCEGetProcAddressA
+#define Win_GetModuleFileName XCEGetModuleFileNameA
+#define Win_CreateSemaphore CreateSemaphoreW
+#else
+#define Win_GetModuleHandle GetModuleHandle
+#define Win_GetProcAddress GetProcAddress
+#define Win_GetModuleFileName GetModuleFileName
+#define Win_CreateSemaphore CreateSemaphore
+#endif
+
#endif /* _INC_WIN32_PERL5 */