OSDN Git Service

Update OpenSSL to 1.0.2a.
[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(OPENSSL_SYSNAME_WINNT)\r
113 #    undef OPENSSL_SYS_UNIX\r
114 #    define OPENSSL_SYS_WINNT\r
115 #   endif\r
116 #   if defined(OPENSSL_SYSNAME_WINCE)\r
117 #    undef OPENSSL_SYS_UNIX\r
118 #    define OPENSSL_SYS_WINCE\r
119 #   endif\r
120 #  endif\r
121 # endif\r
122 \r
123 /* Anything that tries to look like Microsoft is "Windows" */\r
124 # if defined(OPENSSL_SYS_WIN32) || defined(OPENSSL_SYS_WINNT) || defined(OPENSSL_SYS_WINCE)\r
125 #  undef OPENSSL_SYS_UNIX\r
126 #  define OPENSSL_SYS_WINDOWS\r
127 #  ifndef OPENSSL_SYS_MSDOS\r
128 #   define OPENSSL_SYS_MSDOS\r
129 #  endif\r
130 # endif\r
131 \r
132 /*\r
133  * DLL settings.  This part is a bit tough, because it's up to the\r
134  * application implementor how he or she will link the application, so it\r
135  * requires some macro to be used.\r
136  */\r
137 # ifdef OPENSSL_SYS_WINDOWS\r
138 #  ifndef OPENSSL_OPT_WINDLL\r
139 #   if defined(_WINDLL)         /* This is used when building OpenSSL to\r
140                                  * indicate that DLL linkage should be used */\r
141 #    define OPENSSL_OPT_WINDLL\r
142 #   endif\r
143 #  endif\r
144 # endif\r
145 \r
146 /* ------------------------------- OpenVMS -------------------------------- */\r
147 # if defined(__VMS) || defined(VMS) || defined(OPENSSL_SYSNAME_VMS)\r
148 #  undef OPENSSL_SYS_UNIX\r
149 #  define OPENSSL_SYS_VMS\r
150 #  if defined(__DECC)\r
151 #   define OPENSSL_SYS_VMS_DECC\r
152 #  elif defined(__DECCXX)\r
153 #   define OPENSSL_SYS_VMS_DECC\r
154 #   define OPENSSL_SYS_VMS_DECCXX\r
155 #  else\r
156 #   define OPENSSL_SYS_VMS_NODECC\r
157 #  endif\r
158 # endif\r
159 \r
160 /* -------------------------------- OS/2 ---------------------------------- */\r
161 # if defined(__EMX__) || defined(__OS2__)\r
162 #  undef OPENSSL_SYS_UNIX\r
163 #  define OPENSSL_SYS_OS2\r
164 # endif\r
165 \r
166 /* -------------------------------- Unix ---------------------------------- */\r
167 # ifdef OPENSSL_SYS_UNIX\r
168 #  if defined(linux) || defined(__linux__) || defined(OPENSSL_SYSNAME_LINUX)\r
169 #   define OPENSSL_SYS_LINUX\r
170 #  endif\r
171 #  ifdef OPENSSL_SYSNAME_MPE\r
172 #   define OPENSSL_SYS_MPE\r
173 #  endif\r
174 #  ifdef OPENSSL_SYSNAME_SNI\r
175 #   define OPENSSL_SYS_SNI\r
176 #  endif\r
177 #  ifdef OPENSSL_SYSNAME_ULTRASPARC\r
178 #   define OPENSSL_SYS_ULTRASPARC\r
179 #  endif\r
180 #  ifdef OPENSSL_SYSNAME_NEWS4\r
181 #   define OPENSSL_SYS_NEWS4\r
182 #  endif\r
183 #  ifdef OPENSSL_SYSNAME_MACOSX\r
184 #   define OPENSSL_SYS_MACOSX\r
185 #  endif\r
186 #  ifdef OPENSSL_SYSNAME_MACOSX_RHAPSODY\r
187 #   define OPENSSL_SYS_MACOSX_RHAPSODY\r
188 #   define OPENSSL_SYS_MACOSX\r
189 #  endif\r
190 #  ifdef OPENSSL_SYSNAME_SUNOS\r
191 #   define OPENSSL_SYS_SUNOS\r
192 #  endif\r
193 #  if defined(_CRAY) || defined(OPENSSL_SYSNAME_CRAY)\r
194 #   define OPENSSL_SYS_CRAY\r
195 #  endif\r
196 #  if defined(_AIX) || defined(OPENSSL_SYSNAME_AIX)\r
197 #   define OPENSSL_SYS_AIX\r
198 #  endif\r
199 # endif\r
200 \r
201 /* -------------------------------- VOS ----------------------------------- */\r
202 # if defined(__VOS__) || defined(OPENSSL_SYSNAME_VOS)\r
203 #  define OPENSSL_SYS_VOS\r
204 #  ifdef __HPPA__\r
205 #   define OPENSSL_SYS_VOS_HPPA\r
206 #  endif\r
207 #  ifdef __IA32__\r
208 #   define OPENSSL_SYS_VOS_IA32\r
209 #  endif\r
210 # endif\r
211 \r
212 /* ------------------------------ VxWorks --------------------------------- */\r
213 # ifdef OPENSSL_SYSNAME_VXWORKS\r
214 #  define OPENSSL_SYS_VXWORKS\r
215 # endif\r
216 \r
217 /* -------------------------------- BeOS ---------------------------------- */\r
218 # if defined(__BEOS__)\r
219 #  define OPENSSL_SYS_BEOS\r
220 #  include <sys/socket.h>\r
221 #  if defined(BONE_VERSION)\r
222 #   define OPENSSL_SYS_BEOS_BONE\r
223 #  else\r
224 #   define OPENSSL_SYS_BEOS_R5\r
225 #  endif\r
226 # endif\r
227 \r
228 /**\r
229  * That's it for OS-specific stuff\r
230  *****************************************************************************/\r
231 \r
232 /* Specials for I/O an exit */\r
233 # ifdef OPENSSL_SYS_MSDOS\r
234 #  define OPENSSL_UNISTD_IO <io.h>\r
235 #  define OPENSSL_DECLARE_EXIT extern void exit(int);\r
236 # else\r
237 #  define OPENSSL_UNISTD_IO OPENSSL_UNISTD\r
238 #  define OPENSSL_DECLARE_EXIT  /* declared in unistd.h */\r
239 # endif\r
240 \r
241 /*-\r
242  * Definitions of OPENSSL_GLOBAL and OPENSSL_EXTERN, to define and declare\r
243  * certain global symbols that, with some compilers under VMS, have to be\r
244  * defined and declared explicitely with globaldef and globalref.\r
245  * Definitions of OPENSSL_EXPORT and OPENSSL_IMPORT, to define and declare\r
246  * DLL exports and imports for compilers under Win32.  These are a little\r
247  * more complicated to use.  Basically, for any library that exports some\r
248  * global variables, the following code must be present in the header file\r
249  * that declares them, before OPENSSL_EXTERN is used:\r
250  *\r
251  * #ifdef SOME_BUILD_FLAG_MACRO\r
252  * # undef OPENSSL_EXTERN\r
253  * # define OPENSSL_EXTERN OPENSSL_EXPORT\r
254  * #endif\r
255  *\r
256  * The default is to have OPENSSL_EXPORT, OPENSSL_IMPORT and OPENSSL_GLOBAL\r
257  * have some generally sensible values, and for OPENSSL_EXTERN to have the\r
258  * value OPENSSL_IMPORT.\r
259  */\r
260 \r
261 # if defined(OPENSSL_SYS_VMS_NODECC)\r
262 #  define OPENSSL_EXPORT globalref\r
263 #  define OPENSSL_IMPORT globalref\r
264 #  define OPENSSL_GLOBAL globaldef\r
265 # elif defined(OPENSSL_SYS_WINDOWS) && defined(OPENSSL_OPT_WINDLL)\r
266 #  define OPENSSL_EXPORT extern __declspec(dllexport)\r
267 #  define OPENSSL_IMPORT extern __declspec(dllimport)\r
268 #  define OPENSSL_GLOBAL\r
269 # else\r
270 #  define OPENSSL_EXPORT extern\r
271 #  define OPENSSL_IMPORT extern\r
272 #  define OPENSSL_GLOBAL\r
273 # endif\r
274 # define OPENSSL_EXTERN OPENSSL_IMPORT\r
275 \r
276 /*-\r
277  * Macros to allow global variables to be reached through function calls when\r
278  * required (if a shared library version requires it, for example.\r
279  * The way it's done allows definitions like this:\r
280  *\r
281  *      // in foobar.c\r
282  *      OPENSSL_IMPLEMENT_GLOBAL(int,foobar,0)\r
283  *      // in foobar.h\r
284  *      OPENSSL_DECLARE_GLOBAL(int,foobar);\r
285  *      #define foobar OPENSSL_GLOBAL_REF(foobar)\r
286  */\r
287 # ifdef OPENSSL_EXPORT_VAR_AS_FUNCTION\r
288 #  define OPENSSL_IMPLEMENT_GLOBAL(type,name,value)                      \\r
289         type *_shadow_##name(void)                                      \\r
290         { static type _hide_##name=value; return &_hide_##name; }\r
291 #  define OPENSSL_DECLARE_GLOBAL(type,name) type *_shadow_##name(void)\r
292 #  define OPENSSL_GLOBAL_REF(name) (*(_shadow_##name()))\r
293 # else\r
294 #  define OPENSSL_IMPLEMENT_GLOBAL(type,name,value) OPENSSL_GLOBAL type _shadow_##name=value;\r
295 #  define OPENSSL_DECLARE_GLOBAL(type,name) OPENSSL_EXPORT type _shadow_##name\r
296 #  define OPENSSL_GLOBAL_REF(name) _shadow_##name\r
297 # endif\r
298 \r
299 # if defined(OPENSSL_SYS_MACINTOSH_CLASSIC) && macintosh==1 && !defined(MAC_OS_GUSI_SOURCE)\r
300 #  define ossl_ssize_t long\r
301 # endif\r
302 \r
303 # ifdef OPENSSL_SYS_MSDOS\r
304 #  define ossl_ssize_t long\r
305 # endif\r
306 \r
307 # if defined(NeXT) || defined(OPENSSL_SYS_NEWS4) || defined(OPENSSL_SYS_SUNOS)\r
308 #  define ssize_t int\r
309 # endif\r
310 \r
311 # if defined(__ultrix) && !defined(ssize_t)\r
312 #  define ossl_ssize_t int\r
313 # endif\r
314 \r
315 # ifndef ossl_ssize_t\r
316 #  define ossl_ssize_t ssize_t\r
317 # endif\r
318 \r
319 #ifdef  __cplusplus\r
320 }\r
321 #endif\r
322 #endif\r