OSDN Git Service

Update OpenSSL to 1.0.2c.
[ffftp/ffftp.git] / contrib / openssl / include / openssl / e_os2.h
1 /* e_os2.h */\r
2 /* ====================================================================\r
3  * Copyright (c) 1998-2000 The OpenSSL Project.  All rights reserved.\r
4  *\r
5  * Redistribution and use in source and binary forms, with or without\r
6  * modification, are permitted provided that the following conditions\r
7  * are met:\r
8  *\r
9  * 1. Redistributions of source code must retain the above copyright\r
10  *    notice, this list of conditions and the following disclaimer.\r
11  *\r
12  * 2. Redistributions in binary form must reproduce the above copyright\r
13  *    notice, this list of conditions and the following disclaimer in\r
14  *    the documentation and/or other materials provided with the\r
15  *    distribution.\r
16  *\r
17  * 3. All advertising materials mentioning features or use of this\r
18  *    software must display the following acknowledgment:\r
19  *    "This product includes software developed by the OpenSSL Project\r
20  *    for use in the OpenSSL Toolkit. (http://www.openssl.org/)"\r
21  *\r
22  * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to\r
23  *    endorse or promote products derived from this software without\r
24  *    prior written permission. For written permission, please contact\r
25  *    openssl-core@openssl.org.\r
26  *\r
27  * 5. Products derived from this software may not be called "OpenSSL"\r
28  *    nor may "OpenSSL" appear in their names without prior written\r
29  *    permission of the OpenSSL Project.\r
30  *\r
31  * 6. Redistributions of any form whatsoever must retain the following\r
32  *    acknowledgment:\r
33  *    "This product includes software developed by the OpenSSL Project\r
34  *    for use in the OpenSSL Toolkit (http://www.openssl.org/)"\r
35  *\r
36  * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY\r
37  * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\r
38  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\r
39  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OpenSSL PROJECT OR\r
40  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\r
41  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\r
42  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\r
43  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\r
44  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,\r
45  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\r
46  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED\r
47  * OF THE POSSIBILITY OF SUCH DAMAGE.\r
48  * ====================================================================\r
49  *\r
50  * This product includes cryptographic software written by Eric Young\r
51  * (eay@cryptsoft.com).  This product includes software written by Tim\r
52  * Hudson (tjh@cryptsoft.com).\r
53  *\r
54  */\r
55 \r
56 #include <openssl/opensslconf.h>\r
57 \r
58 #ifndef HEADER_E_OS2_H\r
59 # define HEADER_E_OS2_H\r
60 \r
61 #ifdef  __cplusplus\r
62 extern "C" {\r
63 #endif\r
64 \r
65 /******************************************************************************\r
66  * Detect operating systems.  This probably needs completing.\r
67  * The result is that at least one OPENSSL_SYS_os macro should be defined.\r
68  * However, if none is defined, Unix is assumed.\r
69  **/\r
70 \r
71 # define OPENSSL_SYS_UNIX\r
72 \r
73 /* ---------------------- Macintosh, before MacOS X ----------------------- */\r
74 # if defined(__MWERKS__) && defined(macintosh) || defined(OPENSSL_SYSNAME_MAC)\r
75 #  undef OPENSSL_SYS_UNIX\r
76 #  define OPENSSL_SYS_MACINTOSH_CLASSIC\r
77 # endif\r
78 \r
79 /* ---------------------- NetWare ----------------------------------------- */\r
80 # if defined(NETWARE) || defined(OPENSSL_SYSNAME_NETWARE)\r
81 #  undef OPENSSL_SYS_UNIX\r
82 #  define OPENSSL_SYS_NETWARE\r
83 # endif\r
84 \r
85 /* --------------------- Microsoft operating systems ---------------------- */\r
86 \r
87 /*\r
88  * Note that MSDOS actually denotes 32-bit environments running on top of\r
89  * MS-DOS, such as DJGPP one.\r
90  */\r
91 # if defined(OPENSSL_SYSNAME_MSDOS)\r
92 #  undef OPENSSL_SYS_UNIX\r
93 #  define OPENSSL_SYS_MSDOS\r
94 # endif\r
95 \r
96 /*\r
97  * For 32 bit environment, there seems to be the CygWin environment and then\r
98  * all the others that try to do the same thing Microsoft does...\r
99  */\r
100 # if defined(OPENSSL_SYSNAME_UWIN)\r
101 #  undef OPENSSL_SYS_UNIX\r
102 #  define OPENSSL_SYS_WIN32_UWIN\r
103 # else\r
104 #  if defined(__CYGWIN__) || defined(OPENSSL_SYSNAME_CYGWIN)\r
105 #   undef OPENSSL_SYS_UNIX\r
106 #   define OPENSSL_SYS_WIN32_CYGWIN\r
107 #  else\r
108 #   if defined(_WIN32) || defined(OPENSSL_SYSNAME_WIN32)\r
109 #    undef OPENSSL_SYS_UNIX\r
110 #    define OPENSSL_SYS_WIN32\r
111 #   endif\r
112 #   if defined(_WIN64) || defined(OPENSSL_SYSNAME_WIN64)\r
113 #    undef OPENSSL_SYS_UNIX\r
114 #    if !defined(OPENSSL_SYS_WIN64)\r
115 #     define OPENSSL_SYS_WIN64\r
116 #    endif\r
117 #   endif\r
118 #   if defined(OPENSSL_SYSNAME_WINNT)\r
119 #    undef OPENSSL_SYS_UNIX\r
120 #    define OPENSSL_SYS_WINNT\r
121 #   endif\r
122 #   if defined(OPENSSL_SYSNAME_WINCE)\r
123 #    undef OPENSSL_SYS_UNIX\r
124 #    define OPENSSL_SYS_WINCE\r
125 #   endif\r
126 #  endif\r
127 # endif\r
128 \r
129 /* Anything that tries to look like Microsoft is "Windows" */\r
130 # if defined(OPENSSL_SYS_WIN32) || defined(OPENSSL_SYS_WIN64) || defined(OPENSSL_SYS_WINNT) || defined(OPENSSL_SYS_WINCE)\r
131 #  undef OPENSSL_SYS_UNIX\r
132 #  define OPENSSL_SYS_WINDOWS\r
133 #  ifndef OPENSSL_SYS_MSDOS\r
134 #   define OPENSSL_SYS_MSDOS\r
135 #  endif\r
136 # endif\r
137 \r
138 /*\r
139  * DLL settings.  This part is a bit tough, because it's up to the\r
140  * application implementor how he or she will link the application, so it\r
141  * requires some macro to be used.\r
142  */\r
143 # ifdef OPENSSL_SYS_WINDOWS\r
144 #  ifndef OPENSSL_OPT_WINDLL\r
145 #   if defined(_WINDLL)         /* This is used when building OpenSSL to\r
146                                  * indicate that DLL linkage should be used */\r
147 #    define OPENSSL_OPT_WINDLL\r
148 #   endif\r
149 #  endif\r
150 # endif\r
151 \r
152 /* ------------------------------- OpenVMS -------------------------------- */\r
153 # if defined(__VMS) || defined(VMS) || defined(OPENSSL_SYSNAME_VMS)\r
154 #  undef OPENSSL_SYS_UNIX\r
155 #  define OPENSSL_SYS_VMS\r
156 #  if defined(__DECC)\r
157 #   define OPENSSL_SYS_VMS_DECC\r
158 #  elif defined(__DECCXX)\r
159 #   define OPENSSL_SYS_VMS_DECC\r
160 #   define OPENSSL_SYS_VMS_DECCXX\r
161 #  else\r
162 #   define OPENSSL_SYS_VMS_NODECC\r
163 #  endif\r
164 # endif\r
165 \r
166 /* -------------------------------- OS/2 ---------------------------------- */\r
167 # if defined(__EMX__) || defined(__OS2__)\r
168 #  undef OPENSSL_SYS_UNIX\r
169 #  define OPENSSL_SYS_OS2\r
170 # endif\r
171 \r
172 /* -------------------------------- Unix ---------------------------------- */\r
173 # ifdef OPENSSL_SYS_UNIX\r
174 #  if defined(linux) || defined(__linux__) || defined(OPENSSL_SYSNAME_LINUX)\r
175 #   define OPENSSL_SYS_LINUX\r
176 #  endif\r
177 #  ifdef OPENSSL_SYSNAME_MPE\r
178 #   define OPENSSL_SYS_MPE\r
179 #  endif\r
180 #  ifdef OPENSSL_SYSNAME_SNI\r
181 #   define OPENSSL_SYS_SNI\r
182 #  endif\r
183 #  ifdef OPENSSL_SYSNAME_ULTRASPARC\r
184 #   define OPENSSL_SYS_ULTRASPARC\r
185 #  endif\r
186 #  ifdef OPENSSL_SYSNAME_NEWS4\r
187 #   define OPENSSL_SYS_NEWS4\r
188 #  endif\r
189 #  ifdef OPENSSL_SYSNAME_MACOSX\r
190 #   define OPENSSL_SYS_MACOSX\r
191 #  endif\r
192 #  ifdef OPENSSL_SYSNAME_MACOSX_RHAPSODY\r
193 #   define OPENSSL_SYS_MACOSX_RHAPSODY\r
194 #   define OPENSSL_SYS_MACOSX\r
195 #  endif\r
196 #  ifdef OPENSSL_SYSNAME_SUNOS\r
197 #   define OPENSSL_SYS_SUNOS\r
198 #  endif\r
199 #  if defined(_CRAY) || defined(OPENSSL_SYSNAME_CRAY)\r
200 #   define OPENSSL_SYS_CRAY\r
201 #  endif\r
202 #  if defined(_AIX) || defined(OPENSSL_SYSNAME_AIX)\r
203 #   define OPENSSL_SYS_AIX\r
204 #  endif\r
205 # endif\r
206 \r
207 /* -------------------------------- VOS ----------------------------------- */\r
208 # if defined(__VOS__) || defined(OPENSSL_SYSNAME_VOS)\r
209 #  define OPENSSL_SYS_VOS\r
210 #  ifdef __HPPA__\r
211 #   define OPENSSL_SYS_VOS_HPPA\r
212 #  endif\r
213 #  ifdef __IA32__\r
214 #   define OPENSSL_SYS_VOS_IA32\r
215 #  endif\r
216 # endif\r
217 \r
218 /* ------------------------------ VxWorks --------------------------------- */\r
219 # ifdef OPENSSL_SYSNAME_VXWORKS\r
220 #  define OPENSSL_SYS_VXWORKS\r
221 # endif\r
222 \r
223 /* -------------------------------- BeOS ---------------------------------- */\r
224 # if defined(__BEOS__)\r
225 #  define OPENSSL_SYS_BEOS\r
226 #  include <sys/socket.h>\r
227 #  if defined(BONE_VERSION)\r
228 #   define OPENSSL_SYS_BEOS_BONE\r
229 #  else\r
230 #   define OPENSSL_SYS_BEOS_R5\r
231 #  endif\r
232 # endif\r
233 \r
234 /**\r
235  * That's it for OS-specific stuff\r
236  *****************************************************************************/\r
237 \r
238 /* Specials for I/O an exit */\r
239 # ifdef OPENSSL_SYS_MSDOS\r
240 #  define OPENSSL_UNISTD_IO <io.h>\r
241 #  define OPENSSL_DECLARE_EXIT extern void exit(int);\r
242 # else\r
243 #  define OPENSSL_UNISTD_IO OPENSSL_UNISTD\r
244 #  define OPENSSL_DECLARE_EXIT  /* declared in unistd.h */\r
245 # endif\r
246 \r
247 /*-\r
248  * Definitions of OPENSSL_GLOBAL and OPENSSL_EXTERN, to define and declare\r
249  * certain global symbols that, with some compilers under VMS, have to be\r
250  * defined and declared explicitely with globaldef and globalref.\r
251  * Definitions of OPENSSL_EXPORT and OPENSSL_IMPORT, to define and declare\r
252  * DLL exports and imports for compilers under Win32.  These are a little\r
253  * more complicated to use.  Basically, for any library that exports some\r
254  * global variables, the following code must be present in the header file\r
255  * that declares them, before OPENSSL_EXTERN is used:\r
256  *\r
257  * #ifdef SOME_BUILD_FLAG_MACRO\r
258  * # undef OPENSSL_EXTERN\r
259  * # define OPENSSL_EXTERN OPENSSL_EXPORT\r
260  * #endif\r
261  *\r
262  * The default is to have OPENSSL_EXPORT, OPENSSL_IMPORT and OPENSSL_GLOBAL\r
263  * have some generally sensible values, and for OPENSSL_EXTERN to have the\r
264  * value OPENSSL_IMPORT.\r
265  */\r
266 \r
267 # if defined(OPENSSL_SYS_VMS_NODECC)\r
268 #  define OPENSSL_EXPORT globalref\r
269 #  define OPENSSL_IMPORT globalref\r
270 #  define OPENSSL_GLOBAL globaldef\r
271 # elif defined(OPENSSL_SYS_WINDOWS) && defined(OPENSSL_OPT_WINDLL)\r
272 #  define OPENSSL_EXPORT extern __declspec(dllexport)\r
273 #  define OPENSSL_IMPORT extern __declspec(dllimport)\r
274 #  define OPENSSL_GLOBAL\r
275 # else\r
276 #  define OPENSSL_EXPORT extern\r
277 #  define OPENSSL_IMPORT extern\r
278 #  define OPENSSL_GLOBAL\r
279 # endif\r
280 # define OPENSSL_EXTERN OPENSSL_IMPORT\r
281 \r
282 /*-\r
283  * Macros to allow global variables to be reached through function calls when\r
284  * required (if a shared library version requires it, for example.\r
285  * The way it's done allows definitions like this:\r
286  *\r
287  *      // in foobar.c\r
288  *      OPENSSL_IMPLEMENT_GLOBAL(int,foobar,0)\r
289  *      // in foobar.h\r
290  *      OPENSSL_DECLARE_GLOBAL(int,foobar);\r
291  *      #define foobar OPENSSL_GLOBAL_REF(foobar)\r
292  */\r
293 # ifdef OPENSSL_EXPORT_VAR_AS_FUNCTION\r
294 #  define OPENSSL_IMPLEMENT_GLOBAL(type,name,value)                      \\r
295         type *_shadow_##name(void)                                      \\r
296         { static type _hide_##name=value; return &_hide_##name; }\r
297 #  define OPENSSL_DECLARE_GLOBAL(type,name) type *_shadow_##name(void)\r
298 #  define OPENSSL_GLOBAL_REF(name) (*(_shadow_##name()))\r
299 # else\r
300 #  define OPENSSL_IMPLEMENT_GLOBAL(type,name,value) OPENSSL_GLOBAL type _shadow_##name=value;\r
301 #  define OPENSSL_DECLARE_GLOBAL(type,name) OPENSSL_EXPORT type _shadow_##name\r
302 #  define OPENSSL_GLOBAL_REF(name) _shadow_##name\r
303 # endif\r
304 \r
305 # if defined(OPENSSL_SYS_MACINTOSH_CLASSIC) && macintosh==1 && !defined(MAC_OS_GUSI_SOURCE)\r
306 #  define ossl_ssize_t long\r
307 # endif\r
308 \r
309 # ifdef OPENSSL_SYS_MSDOS\r
310 #  define ossl_ssize_t long\r
311 # endif\r
312 \r
313 # if defined(NeXT) || defined(OPENSSL_SYS_NEWS4) || defined(OPENSSL_SYS_SUNOS)\r
314 #  define ssize_t int\r
315 # endif\r
316 \r
317 # if defined(__ultrix) && !defined(ssize_t)\r
318 #  define ossl_ssize_t int\r
319 # endif\r
320 \r
321 # ifndef ossl_ssize_t\r
322 #  define ossl_ssize_t ssize_t\r
323 # endif\r
324 \r
325 #ifdef  __cplusplus\r
326 }\r
327 #endif\r
328 #endif\r