]> git.ipfire.org Git - thirdparty/openssl.git/blame - e_os.h
Import of old SSLeay release: SSLeay 0.9.1b (unreleased)
[thirdparty/openssl.git] / e_os.h
CommitLineData
d02b48c6 1/* e_os.h */
58964a49 2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
d02b48c6
RE
3 * All rights reserved.
4 *
5 * This package is an SSL implementation written
6 * by Eric Young (eay@cryptsoft.com).
7 * The implementation was written so as to conform with Netscapes SSL.
8 *
9 * This library is free for commercial and non-commercial use as long as
10 * the following conditions are aheared to. The following conditions
11 * apply to all code found in this distribution, be it the RC4, RSA,
12 * lhash, DES, etc., code; not just the SSL code. The SSL documentation
13 * included with this distribution is covered by the same copyright terms
14 * except that the holder is Tim Hudson (tjh@cryptsoft.com).
15 *
16 * Copyright remains Eric Young's, and as such any Copyright notices in
17 * the code are not to be removed.
18 * If this package is used in a product, Eric Young should be given attribution
19 * as the author of the parts of the library used.
20 * This can be in the form of a textual message at program startup or
21 * in documentation (online or textual) provided with the package.
22 *
23 * Redistribution and use in source and binary forms, with or without
24 * modification, are permitted provided that the following conditions
25 * are met:
26 * 1. Redistributions of source code must retain the copyright
27 * notice, this list of conditions and the following disclaimer.
28 * 2. Redistributions in binary form must reproduce the above copyright
29 * notice, this list of conditions and the following disclaimer in the
30 * documentation and/or other materials provided with the distribution.
31 * 3. All advertising materials mentioning features or use of this software
32 * must display the following acknowledgement:
33 * "This product includes cryptographic software written by
34 * Eric Young (eay@cryptsoft.com)"
35 * The word 'cryptographic' can be left out if the rouines from the library
36 * being used are not cryptographic related :-).
37 * 4. If you include any Windows specific code (or a derivative thereof) from
38 * the apps directory (application code) you must include an acknowledgement:
39 * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
40 *
41 * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
42 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
43 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
44 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
45 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
46 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
47 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
48 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
49 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
50 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
51 * SUCH DAMAGE.
52 *
53 * The licence and distribution terms for any publically available version or
54 * derivative of this code cannot be changed. i.e. this code cannot simply be
55 * copied and put under another distribution licence
56 * [including the GNU Public Licence.]
57 */
58
59#ifndef HEADER_E_OS_H
60#define HEADER_E_OS_H
61
62#ifdef __cplusplus
63extern "C" {
64#endif
65
58964a49
RE
66/* Used to checking reference counts, most while doing perl5 stuff :-) */
67#ifdef REF_PRINT
68#undef REF_PRINT
69#define REF_PRINT(a,b) fprintf(stderr,"%08X:%4d:%s\n",(int)b,b->references,a)
70#endif
71
d02b48c6 72#ifndef DEVRANDOM
58964a49
RE
73/* set this to your 'random' device if you have one.
74 * My default, we will try to read this file */
75#define DEVRANDOM "/dev/urandom"
d02b48c6
RE
76#endif
77
78#if defined(NOCONST)
79#define const
80#endif
81
82/********************************************************************
83 The Microsoft section
84 ********************************************************************/
85/* The following is used becaue of the small stack in some
86 * Microsoft operating systems */
87#if defined(WIN16) || defined(MSDOS)
88# define MS_STATIC static
89#else
90# define MS_STATIC
91#endif
92
93#if defined(WIN32) || defined(WIN16)
94# ifndef WINDOWS
95# define WINDOWS
96# endif
97# ifndef MSDOS
98# define MSDOS
99# endif
100#endif
101
58964a49
RE
102#ifdef WIN32
103#define get_last_sys_error() GetLastError()
104#define clear_sys_error() SetLastError(0)
105#else
106#define get_last_sys_error() errno
107#define clear_sys_error() errno=0
108#endif
109
110#ifdef WINDOWS
111#define get_last_socket_error() WSAGetLastError()
112#define clear_socket_error() WSASetLastError(0)
dfeab068
RE
113#define readsocket(s,b,n) recv((s),(b),(n),0)
114#define writesocket(s,b,n) send((s),(b),(n),0)
115#define EADDRINUSE WSAEADDRINUSE
58964a49
RE
116#else
117#define get_last_socket_error() errno
118#define clear_socket_error() errno=0
119#define ioctlsocket(a,b,c) ioctl(a,b,c)
dfeab068
RE
120#define closesocket(s) close(s)
121#define readsocket(s,b,n) read((s),(b),(n))
122#define writesocket(s,b,n) write((s),(b),(n))
58964a49
RE
123#endif
124
d02b48c6 125#ifdef WIN16
58964a49 126# define NO_FP_API
d02b48c6
RE
127# define MS_CALLBACK _far _loadds
128# define MS_FAR _far
129#else
130# define MS_CALLBACK
131# define MS_FAR
132#endif
133
58964a49
RE
134#ifdef NO_STDIO
135# define NO_FP_API
136#endif
137
d02b48c6
RE
138#if defined(WINDOWS) || defined(MSDOS)
139
140#ifndef S_IFDIR
141#define S_IFDIR _S_IFDIR
142#endif
143
144#ifndef S_IFMT
145#define S_IFMT _S_IFMT
146#endif
147
148#define strncasecmp(a,b,c) strnicmp((a),(b),(c))
149
150# ifdef WINDOWS
151# include <windows.h>
152# include <stddef.h>
153# include <errno.h>
154# include <string.h>
155# include <malloc.h>
156# endif
157# include <io.h>
158# include <fcntl.h>
159
58964a49
RE
160#if defined(WIN16) && !defined(MONOLITH) && defined(SSLEAY) && defined(_WINEXITNOPERSIST)
161# define EXIT(n) { if (n == 0) _wsetexit(_WINEXITNOPERSIST); return(n); }
d02b48c6
RE
162#else
163# define EXIT(n) return(n);
164#endif
165# define LIST_SEPARATOR_CHAR ';'
166#ifndef X_OK
167# define X_OK 0
168#endif
169#ifndef W_OK
170# define W_OK 2
171#endif
172#ifndef R_OK
173# define R_OK 4
174#endif
175# define SSLEAY_CONF "ssleay.cnf"
58964a49 176# define NUL_DEV "nul"
d02b48c6
RE
177# define RFILE ".rnd"
178
179#else /* The non-microsoft world world */
180
181# ifdef VMS
182# include <unixlib.h>
183# else
184# include <unistd.h>
185# endif
186
187# define SSLEAY_CONF "ssleay.cnf"
188# define RFILE ".rnd"
189# define LIST_SEPARATOR_CHAR ':'
190# ifndef MONOLITH
191# define EXIT(n) exit(n); return(n)
192# else
193# define EXIT(n) return(n)
194# endif
195# define NUL_DEV "/dev/null"
196
197# define SSLeay_getpid() getpid()
198
199#endif
200
201/*************/
202
203#ifdef USE_SOCKETS
204# if defined(WINDOWS) || defined(MSDOS)
205 /* windows world */
206
207# ifdef NO_SOCK
208# define SSLeay_Write(a,b,c) (-1)
209# define SSLeay_Read(a,b,c) (-1)
210# define SHUTDOWN(fd) close(fd)
211# define SHUTDOWN2(fd) close(fd)
212# else
213# include <winsock.h>
214extern HINSTANCE _hInstance;
215# define SSLeay_Write(a,b,c) send((a),(b),(c),0)
216# define SSLeay_Read(a,b,c) recv((a),(b),(c),0)
217# define SHUTDOWN(fd) { shutdown((fd),0); closesocket(fd); }
218# define SHUTDOWN2(fd) { shutdown((fd),2); closesocket(fd); }
219# endif
220
221
222# else
223
224# ifndef VMS
225 /* unix world */
226# include <netdb.h>
227# include <sys/types.h>
228# include <sys/socket.h>
58964a49
RE
229# ifdef FILIO_H
230# include <sys/filio.h> /* Added for FIONBIO under unixware */
231# endif
d02b48c6
RE
232# include <sys/param.h>
233# include <sys/time.h> /* Needed under linux for FD_XXX */
234# include <netinet/in.h>
235# endif
236
237# if defined(NeXT) || defined(_NEXT_SOURCE)
238# include <sys/fcntl.h>
239# include <sys/types.h>
240# endif
241
242# ifdef AIX
243# include <sys/select.h>
244# endif
245
246# if defined(sun)
247# include <sys/filio.h>
248# else
249# include <sys/ioctl.h>
250# endif
251
252# ifdef VMS
253# include <unixio.h>
254# endif
255
256# define SSLeay_Read(a,b,c) read((a),(b),(c))
257# define SSLeay_Write(a,b,c) write((a),(b),(c))
258# define SHUTDOWN(fd) { shutdown((fd),0); close((fd)); }
259# define SHUTDOWN2(fd) { shutdown((fd),2); close((fd)); }
dfeab068 260# define INVALID_SOCKET (-1)
d02b48c6
RE
261# endif
262#endif
263
264#if defined(THREADS) || defined(sun)
265#ifndef _REENTRANT
266#define _REENTRANT
267#endif
268#endif
269
270/***********************************************/
271
272#ifndef NOPROTO
273#define P_CC_CC const void *,const void *
274#define P_I_I int,int
58964a49 275#define P_I_I_P int,int,char *
d02b48c6
RE
276#define P_I_I_P_I int,int,char *,int
277#define P_IP_I_I_P_I int *,int,int,char *,int
278#define P_V void
279#else
280#define P_CC_CC
281#define P_I_I
58964a49 282#define P_I_I_P
d02b48c6
RE
283#define P_IP_I_I_P_I
284#define P_I_I_P_I
285#define P_V
286#endif
287
288/* not used yet */
289#define CS_BEGIN
290#define CS_END
291
292/* do we need to do this for getenv.
293 * Just define getenv for use under windows */
294
295#ifdef WIN16
296/* How to do this needs to be thought out a bit more.... */
297/*char *GETENV(char *);
298#define Getenv GETENV*/
299#define Getenv getenv
300#else
301#define Getenv getenv
302#endif
303
304#define DG_GCC_BUG /* gcc < 2.6.3 on DGUX */
305
306#ifdef sgi
307#define IRIX_CC_BUG /* all version of IRIX I've tested (4.* 5.*) */
308#endif
309
310#ifdef NO_MD2
311#define MD2_Init MD2Init
312#define MD2_Update MD2Update
313#define MD2_Final MD2Final
314#define MD2_DIGEST_LENGTH 16
315#endif
316#ifdef NO_MD5
317#define MD5_Init MD5Init
318#define MD5_Update MD5Update
319#define MD5_Final MD5Final
320#define MD5_DIGEST_LENGTH 16
321#endif
322
323#ifdef __cplusplus
324}
325#endif
326
327#endif
328