Project

General

Profile

Statistics
| Revision:

root / lab4 / .minix-src / include / openssl / e_os2.h @ 13

History | View | Annotate | Download (10.7 KB)

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