X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=win32%2Fwin32.h;h=3916b2e1f67b689e9c31df8b89b42a9fdeeaa287;hb=e5973ed5ed7077edf70f4112414ae22c6300aec8;hp=5390df5edf6b7adfb622509010fc851663d2c558;hpb=80e18237757da0670ddbfa6973109e70dbad24f3;p=p5sagit%2Fp5-mst-13.2.git diff --git a/win32/win32.h b/win32/win32.h index 5390df5..3916b2e 100644 --- a/win32/win32.h +++ b/win32/win32.h @@ -1,7 +1,7 @@ /* WIN32.H * * (c) 1995 Microsoft Corporation. All rights reserved. - * Developed by hip communications inc., http://info.hip.com/info/ + * Developed by hip communications inc. * * You may distribute under the terms of either the GNU General Public * License or the Artistic License, as specified in the README file. @@ -58,6 +58,23 @@ #define WIN32_LEAN_AND_MEAN #include +/* + * Bug in winbase.h in mingw-w64 4.4.0-1 at least... they + * do #define GetEnvironmentStringsA GetEnvironmentStrings and fail + * to declare GetEnvironmentStringsA. + */ +#if defined(__MINGW64__) && defined(GetEnvironmentStringsA) && !defined(UNICODE) +#ifdef __cplusplus +extern "C" { +#endif +#undef GetEnvironmentStringsA +WINBASEAPI LPCH WINAPI GetEnvironmentStringsA(VOID); +#define GetEnvironmentStrings GetEnvironmentStringsA +#ifdef __cplusplus +} +#endif +#endif + #ifdef WIN32_LEAN_AND_MEAN /* C file is NOT a Perl5 original. */ #define CONTEXT PERL_CONTEXT /* Avoid conflict of CONTEXT defs. */ #endif /*WIN32_LEAN_AND_MEAN */ @@ -127,8 +144,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 +187,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 +210,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,9 +229,12 @@ 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. */ @@ -278,6 +310,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 @@ -322,19 +355,18 @@ 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 *); #endif extern int my_fclose(FILE *); extern int my_fstat(int fd, Stat_t *sbufptr); -extern char * win32_get_privlib(const char *pl); -extern char * win32_get_sitelib(const char *pl); -extern char * win32_get_vendorlib(const char *pl); +extern char * win32_get_privlib(const char *pl, STRLEN *const len); +extern char * win32_get_sitelib(const char *pl, STRLEN *const len); +extern char * win32_get_vendorlib(const char *pl, STRLEN *const len); 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); @@ -358,10 +390,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 @@ -387,6 +415,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 @@ -465,6 +496,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) @@ -565,7 +597,7 @@ EXTERN_C _CRTIMP ioinfo* __pioinfo[]; DllExport void *win32_signal_context(void); #define PERL_GET_SIG_CONTEXT win32_signal_context() -#ifdef _WIN_CE +#ifdef UNDER_CE #define Win_GetModuleHandle XCEGetModuleHandleA #define Win_GetProcAddress XCEGetProcAddressA #define Win_GetModuleFileName XCEGetModuleFileNameA