X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=win32%2Fwin32.h;h=b52ef4eb80be9be4b7abad06a591bd94097b4000;hb=b86a2fa703d0daf651095b1947eb50e3b5cc41d9;hp=5242018948131024268573ecb5e567ff7453f61b;hpb=e5a95ffba7bb8798f8211d43c45c423a80fd0fa5;p=p5sagit%2Fp5-mst-13.2.git diff --git a/win32/win32.h b/win32/win32.h index 5242018..b52ef4e 100644 --- a/win32/win32.h +++ b/win32/win32.h @@ -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 @@ -20,20 +23,19 @@ #ifdef __GNUC__ typedef long long __int64; -#define Win32_Winsock -# ifdef __cplusplus -#undef __attribute__ /* seems broken in 2.8.0 */ -#define __attribute__(p) -# endif +# define Win32_Winsock /* GCC does not do __declspec() - render it a nop * and turn on options to avoid importing data */ -#define __declspec(x) -#define PERL_GLOBAL_STRUCT -#define MULTIPLICITY -#ifndef TLS_OUT_OF_INDEXES -#define TLS_OUT_OF_INDEXES (DWORD)0xFFFFFFFF +#ifndef __declspec +# define __declspec(x) #endif +# ifndef PERL_OBJECT +# define PERL_GLOBAL_STRUCT +# ifndef MULTIPLICITY +# define MULTIPLICITY +# endif +# endif #endif /* Define DllExport akin to perl's EXT, @@ -46,7 +48,8 @@ typedef long long __int64; #define DllExport #else #if defined(PERLDLL) || defined(WIN95FIX) -#define DllExport __declspec(dllexport) +#define DllExport +/*#define DllExport __declspec(dllexport)*/ /* noises with VC5+sp3 */ #else #define DllExport __declspec(dllimport) #endif @@ -59,6 +62,10 @@ typedef long long __int64; #define CONTEXT PERL_CONTEXT /* Avoid conflict of CONTEXT defs. */ #endif /*WIN32_LEAN_AND_MEAN */ +#ifndef TLS_OUT_OF_INDEXES +#define TLS_OUT_OF_INDEXES (DWORD)0xFFFFFFFF +#endif + #include #include #include @@ -77,6 +84,7 @@ struct tms { }; #ifndef START_EXTERN_C +#undef EXTERN_C #ifdef __cplusplus # define START_EXTERN_C extern "C" { # define END_EXTERN_C } @@ -109,10 +117,22 @@ struct tms { #define ENV_IS_CASELESS -#ifndef VER_PLATFORM_WIN32_WINDOWS /* VC-2.0 headers dont have this */ +#ifndef VER_PLATFORM_WIN32_WINDOWS /* VC-2.0 headers don't have this */ #define VER_PLATFORM_WIN32_WINDOWS 1 #endif +#ifndef FILE_SHARE_DELETE /* VC-4.0 headers don't have this */ +#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++ */ @@ -134,6 +154,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() */ @@ -150,16 +171,71 @@ typedef long uid_t; typedef long gid_t; #pragma warning(disable: 4018 4035 4101 4102 4244 4245 4761) +#ifndef PERL_OBJECT + +/* Visual C thinks that a pointer to a member variable is 16 bytes in size. */ +#define STRUCT_MGVTBL_DEFINITION \ +struct mgvtbl { \ + union { \ + int (CPERLscope(*svt_get)) _((SV *sv, MAGIC* mg)); \ + char handle_VC_problem1[16]; \ + }; \ + union { \ + int (CPERLscope(*svt_set)) _((SV *sv, MAGIC* mg)); \ + char handle_VC_problem2[16]; \ + }; \ + union { \ + U32 (CPERLscope(*svt_len)) _((SV *sv, MAGIC* mg)); \ + char handle_VC_problem3[16]; \ + }; \ + union { \ + int (CPERLscope(*svt_clear)) _((SV *sv, MAGIC* mg)); \ + char handle_VC_problem4[16]; \ + }; \ + union { \ + int (CPERLscope(*svt_free)) _((SV *sv, MAGIC* mg)); \ + char handle_VC_problem5[16]; \ + }; \ +} + +#define BASEOP_DEFINITION \ + OP* op_next; \ + OP* op_sibling; \ + OP* (CPERLscope(*op_ppaddr))_((ARGSproto)); \ + char handle_VC_problem[12]; \ + PADOFFSET op_targ; \ + OPCODE op_type; \ + U16 op_seq; \ + U8 op_flags; \ + U8 op_private; + +#define UNION_ANY_DEFINITION union any { \ + void* any_ptr; \ + I32 any_i32; \ + IV any_iv; \ + long any_long; \ + void (CPERLscope(*any_dptr)) _((void*)); \ + char handle_VC_problem[16]; \ +} + +#endif /* PERL_OBJECT */ + #endif /* _MSC_VER */ #ifdef __MINGW32__ /* Minimal Gnu-Win32 */ typedef long uid_t; typedef long gid_t; +#ifndef _environ #define _environ environ +#endif #define flushall _flushall #define fcloseall _fcloseall +#ifdef PERL_OBJECT +#define FUNC_NAME_TO_PTR(name) &(name) +#endif + #ifndef _O_NOINHERIT # define _O_NOINHERIT 0x0080 # ifndef _NO_OLDNAMES @@ -259,14 +335,14 @@ struct interp_intern { #endif }; -#define w32_perlshell_tokens (sys_intern.w32_perlshell_tokens) -#define w32_perlshell_vec (sys_intern.w32_perlshell_vec) -#define w32_perlshell_items (sys_intern.w32_perlshell_items) -#define w32_fdpid (sys_intern.w32_fdpid) +#define w32_perlshell_tokens (PL_sys_intern.w32_perlshell_tokens) +#define w32_perlshell_vec (PL_sys_intern.w32_perlshell_vec) +#define w32_perlshell_items (PL_sys_intern.w32_perlshell_items) +#define w32_fdpid (PL_sys_intern.w32_fdpid) #ifndef USE_RTL_WAIT -# define w32_num_children (sys_intern.w32_num_children) -# define w32_child_pids (sys_intern.w32_child_pids) +# define w32_num_children (PL_sys_intern.w32_num_children) +# define w32_child_pids (PL_sys_intern.w32_child_pids) #endif /*