X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=win32%2Fwin32.h;h=7bfeb1550398302cccd4869655a8192958b745ef;hb=4497a157d1131e07b218838ce27e77bd3ed118d0;hp=e56c4df13deff059a6adad06c45574f0037b62ca;hpb=8659febc83cb1245132b6675e1276f70f4cf2801;p=p5sagit%2Fp5-mst-13.2.git diff --git a/win32/win32.h b/win32/win32.h index e56c4df..7bfeb15 100644 --- a/win32/win32.h +++ b/win32/win32.h @@ -127,8 +127,11 @@ struct utsname { /* 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 @@ -167,6 +170,14 @@ struct utsname { /* Compiler-specific stuff. */ +#if defined(_MSC_VER) || defined(__MINGW32__) +/* VC uses non-standard way to determine the size and alignment if bit-fields */ +/* MinGW will compiler with -mms-bitfields, so should use the same types */ +# define PERL_BITFIELD8 unsigned char +# define PERL_BITFIELD16 unsigned short +# define PERL_BITFIELD32 unsigned int +#endif + #ifdef __BORLANDC__ /* Borland C++ */ #if (__BORLANDC__ <= 0x520) @@ -182,14 +193,15 @@ struct utsname { #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 @@ -200,15 +212,25 @@ struct utsname { #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 */ @@ -271,6 +293,7 @@ extern gid_t getegid(void); 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 @@ -315,7 +338,7 @@ typedef struct { } 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 *); @@ -327,7 +350,6 @@ extern char * win32_get_sitelib(const char *pl); 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); @@ -351,10 +373,6 @@ typedef char * caddr_t; /* In malloc.c (core address). */ /* #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 @@ -380,6 +398,9 @@ struct thread_intern { 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 @@ -458,6 +479,7 @@ DllExport int win32_async_check(pTHX); #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) @@ -558,5 +580,17 @@ EXTERN_C _CRTIMP ioinfo* __pioinfo[]; 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 */