xref: /aoo4110/main/sal/osl/w32/system.h (revision b1cdbd2c)
1*b1cdbd2cSJim Jagielski /**************************************************************
2*b1cdbd2cSJim Jagielski  *
3*b1cdbd2cSJim Jagielski  * Licensed to the Apache Software Foundation (ASF) under one
4*b1cdbd2cSJim Jagielski  * or more contributor license agreements.  See the NOTICE file
5*b1cdbd2cSJim Jagielski  * distributed with this work for additional information
6*b1cdbd2cSJim Jagielski  * regarding copyright ownership.  The ASF licenses this file
7*b1cdbd2cSJim Jagielski  * to you under the Apache License, Version 2.0 (the
8*b1cdbd2cSJim Jagielski  * "License"); you may not use this file except in compliance
9*b1cdbd2cSJim Jagielski  * with the License.  You may obtain a copy of the License at
10*b1cdbd2cSJim Jagielski  *
11*b1cdbd2cSJim Jagielski  *   http://www.apache.org/licenses/LICENSE-2.0
12*b1cdbd2cSJim Jagielski  *
13*b1cdbd2cSJim Jagielski  * Unless required by applicable law or agreed to in writing,
14*b1cdbd2cSJim Jagielski  * software distributed under the License is distributed on an
15*b1cdbd2cSJim Jagielski  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*b1cdbd2cSJim Jagielski  * KIND, either express or implied.  See the License for the
17*b1cdbd2cSJim Jagielski  * specific language governing permissions and limitations
18*b1cdbd2cSJim Jagielski  * under the License.
19*b1cdbd2cSJim Jagielski  *
20*b1cdbd2cSJim Jagielski  *************************************************************/
21*b1cdbd2cSJim Jagielski 
22*b1cdbd2cSJim Jagielski 
23*b1cdbd2cSJim Jagielski 
24*b1cdbd2cSJim Jagielski #if OSL_DEBUG_LEVEL == 0
25*b1cdbd2cSJim Jagielski #    define NO_DEBUG_CRT
26*b1cdbd2cSJim Jagielski #endif
27*b1cdbd2cSJim Jagielski 
28*b1cdbd2cSJim Jagielski #ifndef _WIN32_WINNT
29*b1cdbd2cSJim Jagielski #	define _WIN32_WINNT 0x0400
30*b1cdbd2cSJim Jagielski #	define _CTYPE_DISABLE_MACROS /* wg. dynamischer C-Runtime MH */
31*b1cdbd2cSJim Jagielski #endif
32*b1cdbd2cSJim Jagielski 
33*b1cdbd2cSJim Jagielski #include <stdio.h>
34*b1cdbd2cSJim Jagielski #include <stdlib.h>
35*b1cdbd2cSJim Jagielski #include <stdarg.h>
36*b1cdbd2cSJim Jagielski #include <ctype.h>
37*b1cdbd2cSJim Jagielski #include <malloc.h>
38*b1cdbd2cSJim Jagielski #include <limits.h>
39*b1cdbd2cSJim Jagielski #include <process.h>
40*b1cdbd2cSJim Jagielski #include <time.h>
41*b1cdbd2cSJim Jagielski #include <fcntl.h>
42*b1cdbd2cSJim Jagielski #include <sys/types.h>
43*b1cdbd2cSJim Jagielski #include <sys/stat.h>
44*b1cdbd2cSJim Jagielski #include <io.h>
45*b1cdbd2cSJim Jagielski #include <share.h>
46*b1cdbd2cSJim Jagielski #include <direct.h>
47*b1cdbd2cSJim Jagielski 
48*b1cdbd2cSJim Jagielski /* Must define this else build breaks because Winsock2.h
49*b1cdbd2cSJim Jagielski     includes Windows.h and without WIN32_LEAN_AND_MEAN
50*b1cdbd2cSJim Jagielski     also includes mswsock.h which needs a forward typedef
51*b1cdbd2cSJim Jagielski     of SOCKET ...
52*b1cdbd2cSJim Jagielski */
53*b1cdbd2cSJim Jagielski #define WIN32_LEAN_AND_MEAN
54*b1cdbd2cSJim Jagielski 
55*b1cdbd2cSJim Jagielski #ifdef GCC
56*b1cdbd2cSJim Jagielski     // windows.h includes winsock2.h
57*b1cdbd2cSJim Jagielski     // if _WIN32_WINNT > 0x0400
58*b1cdbd2cSJim Jagielski     // so someone cannot include winsock.h
59*b1cdbd2cSJim Jagielski     // at the same time without patching
60*b1cdbd2cSJim Jagielski     // windows.h
61*b1cdbd2cSJim Jagielski     #include <windows.h>
62*b1cdbd2cSJim Jagielski #ifdef __MINGW32__
63*b1cdbd2cSJim Jagielski     #include <winsock2.h>
64*b1cdbd2cSJim Jagielski     #include <ws2tcpip.h>
65*b1cdbd2cSJim Jagielski #endif
66*b1cdbd2cSJim Jagielski     #include <shlobj.h>
67*b1cdbd2cSJim Jagielski     #ifndef NO_DEBUG_CRT
68*b1cdbd2cSJim Jagielski         #include <crtdbg.h>
69*b1cdbd2cSJim Jagielski     #endif
70*b1cdbd2cSJim Jagielski #else
71*b1cdbd2cSJim Jagielski     // winsock2.h includes windows.h
72*b1cdbd2cSJim Jagielski     #pragma warning(push,1) /* disable warnings within system headers */
73*b1cdbd2cSJim Jagielski     #pragma warning(disable:4917)
74*b1cdbd2cSJim Jagielski     #include <winsock2.h>
75*b1cdbd2cSJim Jagielski     #include <wsipx.h>
76*b1cdbd2cSJim Jagielski     #include <shlobj.h>
77*b1cdbd2cSJim Jagielski     #ifndef NO_DEBUG_CRT
78*b1cdbd2cSJim Jagielski         #include <crtdbg.h>
79*b1cdbd2cSJim Jagielski     #endif
80*b1cdbd2cSJim Jagielski     #pragma warning(pop)
81*b1cdbd2cSJim Jagielski #endif
82*b1cdbd2cSJim Jagielski 
83*b1cdbd2cSJim Jagielski #define _MAX_CMD	4096	/* maximum length of commandline     */
84*b1cdbd2cSJim Jagielski /* #define _MAX_ENV	4096	 maximum length of environment var (isn't used anywhere) */
85*b1cdbd2cSJim Jagielski 
86*b1cdbd2cSJim Jagielski #ifdef GCC
87*b1cdbd2cSJim Jagielski     #	ifndef SA_FAMILY_DECL
88*b1cdbd2cSJim Jagielski     #		define SA_FAMILY_DECL short sa_family
89*b1cdbd2cSJim Jagielski     #	endif
90*b1cdbd2cSJim Jagielski 
91*b1cdbd2cSJim Jagielski 	typedef struct sockaddr_ipx {
92*b1cdbd2cSJim Jagielski 		SA_FAMILY_DECL;
93*b1cdbd2cSJim Jagielski 		char sa_netnum[4];
94*b1cdbd2cSJim Jagielski 		char sa_nodenum[6];
95*b1cdbd2cSJim Jagielski 		unsigned short sa_socket;
96*b1cdbd2cSJim Jagielski 	} SOCKADDR_IPX;
97*b1cdbd2cSJim Jagielski 
98*b1cdbd2cSJim Jagielski     #	define NSPROTO_IPX		1000
99*b1cdbd2cSJim Jagielski     #	define NSPROTO_SPX		1256
100*b1cdbd2cSJim Jagielski     #	define NSPROTO_SPXII	1257
101*b1cdbd2cSJim Jagielski #endif // #ifdef GCC
102*b1cdbd2cSJim Jagielski 
103*b1cdbd2cSJim Jagielski #ifdef _DLL_
104*b1cdbd2cSJim Jagielski 
105*b1cdbd2cSJim Jagielski #ifdef __cplusplus
106*b1cdbd2cSJim Jagielski     extern "C" DWORD g_dwPlatformId;
107*b1cdbd2cSJim Jagielski #else
108*b1cdbd2cSJim Jagielski     extern DWORD g_dwPlatformId;
109*b1cdbd2cSJim Jagielski #endif // #ifdef __cplusplus
110*b1cdbd2cSJim Jagielski 
111*b1cdbd2cSJim Jagielski     #define IS_NT (g_dwPlatformId == VER_PLATFORM_WIN32_NT)
112*b1cdbd2cSJim Jagielski #else
113*b1cdbd2cSJim Jagielski 
114*b1cdbd2cSJim Jagielski #ifdef __cplusplus
115*b1cdbd2cSJim Jagielski     extern "C" DWORD GetPlatformId(void);
116*b1cdbd2cSJim Jagielski #else
117*b1cdbd2cSJim Jagielski     extern DWORD GetPlatformId(void);
118*b1cdbd2cSJim Jagielski #endif // #ifdef __cplusplus
119*b1cdbd2cSJim Jagielski 
120*b1cdbd2cSJim Jagielski     #define IS_NT (GetPlatformId() == VER_PLATFORM_WIN32_NT)
121*b1cdbd2cSJim Jagielski #endif // #ifdef _DLL_
122*b1cdbd2cSJim Jagielski 
123