~ubuntu-branches/ubuntu/dapper/psi/dapper

« back to all changes in this revision

Viewing changes to src/openssl/e_os.h

  • Committer: Bazaar Package Importer
  • Author(s): Jan Niehusmann
  • Date: 2002-04-19 02:28:44 UTC
  • Revision ID: james.westby@ubuntu.com-20020419022844-za7xgai5qyfd9xv6
Tags: upstream-0.8.5
ImportĀ upstreamĀ versionĀ 0.8.5

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/* e_os.h */
 
2
/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
 
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
#include "opensslconf.h"
 
63
 
 
64
#include "e_os2.h"
 
65
/* <openssl/e_os2.h> contains what we can justify to make visible
 
66
 * to the outside; this file e_os.h is not part of the exported
 
67
 * interface. */
 
68
 
 
69
#ifdef  __cplusplus
 
70
extern "C" {
 
71
#endif
 
72
 
 
73
/* Used to checking reference counts, most while doing perl5 stuff :-) */
 
74
#ifdef REF_PRINT
 
75
#undef REF_PRINT
 
76
#define REF_PRINT(a,b)  fprintf(stderr,"%08X:%4d:%s\n",(int)b,b->references,a)
 
77
#endif
 
78
 
 
79
#ifndef DEVRANDOM
 
80
/* set this to your 'random' device if you have one.
 
81
 * My default, we will try to read this file */
 
82
#define DEVRANDOM "/dev/urandom"
 
83
#endif
 
84
 
 
85
#if defined(__MWERKS__) && defined(macintosh)
 
86
# if macintosh==1
 
87
#  ifndef MAC_OS_GUSI_SOURCE
 
88
#    define MAC_OS_pre_X
 
89
#    define NO_SYS_TYPES_H
 
90
     typedef long ssize_t;
 
91
#  endif
 
92
#  define NO_SYS_PARAM_H
 
93
#  define NO_CHMOD
 
94
#  define NO_SYSLOG
 
95
#  undef  DEVRANDOM
 
96
#  define GETPID_IS_MEANINGLESS
 
97
# endif
 
98
#endif
 
99
 
 
100
/********************************************************************
 
101
 The Microsoft section
 
102
 ********************************************************************/
 
103
/* The following is used becaue of the small stack in some
 
104
 * Microsoft operating systems */
 
105
#if defined(WIN16) || defined(MSDOS)
 
106
#  define MS_STATIC     static
 
107
#else
 
108
#  define MS_STATIC
 
109
#endif
 
110
 
 
111
#if defined(_WIN32) && !defined(WIN32) && !defined(__CYGWIN32__)
 
112
#  define WIN32
 
113
#endif
 
114
 
 
115
#if (defined(WIN32) || defined(WIN16)) && !defined(__CYGWIN32__)
 
116
#  ifndef WINDOWS
 
117
#    define WINDOWS
 
118
#  endif
 
119
#  ifndef MSDOS
 
120
#    define MSDOS
 
121
#  endif
 
122
#endif
 
123
 
 
124
#if defined(MSDOS) && !defined(GETPID_IS_MEANINGLESS)
 
125
#  define GETPID_IS_MEANINGLESS
 
126
#endif
 
127
 
 
128
#ifdef WIN32
 
129
#define get_last_sys_error()    GetLastError()
 
130
#define clear_sys_error()       SetLastError(0)
 
131
#if !defined(WINNT)
 
132
#define WIN_CONSOLE_BUG
 
133
#endif
 
134
#else
 
135
#define get_last_sys_error()    errno
 
136
#define clear_sys_error()       errno=0
 
137
#endif
 
138
 
 
139
#if defined(WINDOWS) && !defined(__CYGWIN32__)
 
140
#define get_last_socket_error() WSAGetLastError()
 
141
#define clear_socket_error()    WSASetLastError(0)
 
142
#define readsocket(s,b,n)       recv((s),(b),(n),0)
 
143
#define writesocket(s,b,n)      send((s),(b),(n),0)
 
144
#define EADDRINUSE              WSAEADDRINUSE
 
145
#elif defined(MAC_OS_pre_X)
 
146
#define get_last_socket_error() errno
 
147
#define clear_socket_error()    errno=0
 
148
#define closesocket(s)          MacSocket_close(s)
 
149
#define readsocket(s,b,n)       MacSocket_recv((s),(b),(n),true)
 
150
#define writesocket(s,b,n)      MacSocket_send((s),(b),(n))
 
151
#else
 
152
#define get_last_socket_error() errno
 
153
#define clear_socket_error()    errno=0
 
154
#define ioctlsocket(a,b,c)      ioctl(a,b,c)
 
155
#define closesocket(s)          close(s)
 
156
#define readsocket(s,b,n)       read((s),(b),(n))
 
157
#define writesocket(s,b,n)      write((s),(b),(n))
 
158
#endif
 
159
 
 
160
#ifdef WIN16
 
161
#  define NO_FP_API
 
162
#  define MS_CALLBACK   _far _loadds
 
163
#  define MS_FAR        _far
 
164
#else
 
165
#  define MS_CALLBACK
 
166
#  define MS_FAR
 
167
#endif
 
168
 
 
169
#ifdef NO_STDIO
 
170
#  define NO_FP_API
 
171
#endif
 
172
 
 
173
#if (defined(WINDOWS) || defined(MSDOS)) && !defined(__CYGWIN32__)
 
174
 
 
175
#  ifndef S_IFDIR
 
176
#    define S_IFDIR     _S_IFDIR
 
177
#  endif
 
178
 
 
179
#  ifndef S_IFMT
 
180
#    define S_IFMT      _S_IFMT
 
181
#  endif
 
182
 
 
183
#  if !defined(WINNT)
 
184
#    define NO_SYSLOG
 
185
#  endif
 
186
#  define NO_DIRENT
 
187
 
 
188
#  ifdef WINDOWS
 
189
#    include <windows.h>
 
190
#    include <stddef.h>
 
191
#    include <errno.h>
 
192
#    include <string.h>
 
193
#    include <malloc.h>
 
194
#  endif
 
195
#  include <io.h>
 
196
#  include <fcntl.h>
 
197
 
 
198
#  define ssize_t long
 
199
 
 
200
#  if defined (__BORLANDC__)
 
201
#    define _setmode setmode
 
202
#    define _O_TEXT O_TEXT
 
203
#    define _O_BINARY O_BINARY
 
204
#    define _int64 __int64
 
205
#    define _kbhit kbhit
 
206
#  endif
 
207
 
 
208
#  if defined(WIN16) && !defined(MONOLITH) && defined(SSLEAY) && defined(_WINEXITNOPERSIST)
 
209
#    define EXIT(n) { if (n == 0) _wsetexit(_WINEXITNOPERSIST); return(n); }
 
210
#  else
 
211
#    define EXIT(n)             return(n);
 
212
#  endif
 
213
#  define LIST_SEPARATOR_CHAR ';'
 
214
#  ifndef X_OK
 
215
#    define X_OK        0
 
216
#  endif
 
217
#  ifndef W_OK
 
218
#    define W_OK        2
 
219
#  endif
 
220
#  ifndef R_OK
 
221
#    define R_OK        4
 
222
#  endif
 
223
#  define OPENSSL_CONF  "openssl.cnf"
 
224
#  define SSLEAY_CONF   OPENSSL_CONF
 
225
#  define NUL_DEV       "nul"
 
226
#  define RFILE         ".rnd"
 
227
#  define DEFAULT_HOME  "C:"
 
228
 
 
229
#else /* The non-microsoft world world */
 
230
 
 
231
#  if defined(__VMS) && !defined(VMS)
 
232
#  define VMS 1
 
233
#  endif
 
234
 
 
235
#  ifdef VMS
 
236
  /* some programs don't include stdlib, so exit() and others give implicit 
 
237
     function warnings */
 
238
#    include <stdlib.h>
 
239
#    if defined(__DECC)
 
240
#      include <unistd.h>
 
241
#    else
 
242
#      include <unixlib.h>
 
243
#    endif
 
244
#    define OPENSSL_CONF        "openssl.cnf"
 
245
#    define SSLEAY_CONF         OPENSSL_CONF
 
246
#    define RFILE               ".rnd"
 
247
#    define LIST_SEPARATOR_CHAR ','
 
248
#    define NUL_DEV             "NLA0:"
 
249
  /* We need to do this since VMS has the following coding on status codes:
 
250
 
 
251
     Bits 0-2: status type: 0 = warning, 1 = success, 2 = error, 3 = info ...
 
252
               The important thing to know is that odd numbers are considered
 
253
               good, while even ones are considered errors.
 
254
     Bits 3-15: actual status number
 
255
     Bits 16-27: facility number.  0 is considered "unknown"
 
256
     Bits 28-31: control bits.  If bit 28 is set, the shell won't try to
 
257
                 output the message (which, for random codes, just looks ugly)
 
258
 
 
259
     So, what we do here is to change 0 to 1 to get the default success status,
 
260
     and everything else is shifted up to fit into the status number field, and
 
261
     the status is tagged as an error, which I believe is what is wanted here.
 
262
     -- Richard Levitte
 
263
  */
 
264
#    if !defined(MONOLITH) || defined(OPENSSL_C)
 
265
#      define EXIT(n)           do { int __VMS_EXIT = n; \
 
266
                                     if (__VMS_EXIT == 0) \
 
267
                                       __VMS_EXIT = 1; \
 
268
                                     else \
 
269
                                       __VMS_EXIT = (n << 3) | 2; \
 
270
                                     __VMS_EXIT |= 0x10000000; \
 
271
                                     exit(__VMS_EXIT); \
 
272
                                     return(__VMS_EXIT); } while(0)
 
273
#    else
 
274
#      define EXIT(n)           return(n)
 
275
#    endif
 
276
#    define NO_SYS_PARAM_H
 
277
#  else
 
278
     /* !defined VMS */
 
279
#    ifdef MPE
 
280
#      define NO_SYS_PARAM_H
 
281
#    endif
 
282
#    ifdef OPENSSL_UNISTD
 
283
#      include OPENSSL_UNISTD
 
284
#    else
 
285
#      include <unistd.h>
 
286
#    endif
 
287
#    ifndef NO_SYS_TYPES_H
 
288
#      include <sys/types.h>
 
289
#    endif
 
290
#    if defined(NeXT) || defined(NEWS4)
 
291
#      define pid_t int /* pid_t is missing on NEXTSTEP/OPENSTEP
 
292
                         * (unless when compiling with -D_POSIX_SOURCE,
 
293
                         * which doesn't work for us) */
 
294
#      define ssize_t int /* ditto */
 
295
#    endif
 
296
#    ifdef NEWS4 /* setvbuf is missing on mips-sony-bsd */
 
297
#      define setvbuf(a, b, c, d) setbuffer((a), (b), (d))
 
298
       typedef unsigned long clock_t;
 
299
#    endif
 
300
 
 
301
#    define OPENSSL_CONF        "openssl.cnf"
 
302
#    define SSLEAY_CONF         OPENSSL_CONF
 
303
#    define RFILE               ".rnd"
 
304
#    define LIST_SEPARATOR_CHAR ':'
 
305
#    define NUL_DEV             "/dev/null"
 
306
#    ifndef MONOLITH
 
307
#      define EXIT(n)           exit(n); return(n)
 
308
#    else
 
309
#      define EXIT(n)           return(n)
 
310
#    endif
 
311
#  endif
 
312
 
 
313
#  define SSLeay_getpid()       getpid()
 
314
 
 
315
#endif
 
316
 
 
317
 
 
318
/*************/
 
319
 
 
320
#ifdef USE_SOCKETS
 
321
#  if defined(WINDOWS) || defined(MSDOS)
 
322
      /* windows world */
 
323
 
 
324
#    ifdef NO_SOCK
 
325
#      define SSLeay_Write(a,b,c)       (-1)
 
326
#      define SSLeay_Read(a,b,c)        (-1)
 
327
#      define SHUTDOWN(fd)              close(fd)
 
328
#      define SHUTDOWN2(fd)             close(fd)
 
329
#    else
 
330
#      include <winsock.h>
 
331
extern HINSTANCE _hInstance;
 
332
#      define SSLeay_Write(a,b,c)       send((a),(b),(c),0)
 
333
#      define SSLeay_Read(a,b,c)        recv((a),(b),(c),0)
 
334
#      define SHUTDOWN(fd)              { shutdown((fd),0); closesocket(fd); }
 
335
#      define SHUTDOWN2(fd)             { shutdown((fd),2); closesocket(fd); }
 
336
#    endif
 
337
 
 
338
#  elif defined(MAC_OS_pre_X)
 
339
 
 
340
#    include "MacSocket.h"
 
341
#    define SSLeay_Write(a,b,c)         MacSocket_send((a),(b),(c))
 
342
#    define SSLeay_Read(a,b,c)          MacSocket_recv((a),(b),(c),true)
 
343
#    define SHUTDOWN(fd)                MacSocket_close(fd)
 
344
#    define SHUTDOWN2(fd)               MacSocket_close(fd)
 
345
 
 
346
#  else
 
347
 
 
348
#    ifndef NO_SYS_PARAM_H
 
349
#      include <sys/param.h>
 
350
#    endif
 
351
#    ifndef MPE
 
352
#      include <sys/time.h> /* Needed under linux for FD_XXX */
 
353
#    endif
 
354
 
 
355
#    include <netdb.h>
 
356
#    if defined(VMS) && !defined(__DECC)
 
357
#      include <socket.h>
 
358
#      include <in.h>
 
359
#      include <inet.h>
 
360
#    else
 
361
#      include <sys/socket.h>
 
362
#      ifdef FILIO_H
 
363
#        include <sys/filio.h> /* Added for FIONBIO under unixware */
 
364
#      endif
 
365
#      include <netinet/in.h>
 
366
#      include <arpa/inet.h>
 
367
#    endif
 
368
 
 
369
#    if defined(NeXT) || defined(_NEXT_SOURCE)
 
370
#      include <sys/fcntl.h>
 
371
#      include <sys/types.h>
 
372
#    endif
 
373
 
 
374
#    ifdef AIX
 
375
#      include <sys/select.h>
 
376
#    endif
 
377
 
 
378
#    ifdef __QNX__
 
379
#      include <sys/select.h>
 
380
#    endif
 
381
 
 
382
#    if defined(sun)
 
383
#      include <sys/filio.h>
 
384
#    else
 
385
#      ifndef VMS
 
386
#        include <sys/ioctl.h>
 
387
#      else
 
388
         /* ioctl is only in VMS > 7.0 and when socketshr is not used */
 
389
#        if !defined(TCPIP_TYPE_SOCKETSHR) && defined(__VMS_VER) && (__VMS_VER > 70000000)
 
390
#          include <sys/ioctl.h>
 
391
#        endif
 
392
#      endif
 
393
#    endif
 
394
 
 
395
#    ifdef VMS
 
396
#      include <unixio.h>
 
397
#      if defined(TCPIP_TYPE_SOCKETSHR)
 
398
#        include <socketshr.h>
 
399
#      endif
 
400
#    endif
 
401
 
 
402
#    define SSLeay_Read(a,b,c)     read((a),(b),(c))
 
403
#    define SSLeay_Write(a,b,c)    write((a),(b),(c))
 
404
#    define SHUTDOWN(fd)    { shutdown((fd),0); closesocket((fd)); }
 
405
#    define SHUTDOWN2(fd)   { shutdown((fd),2); closesocket((fd)); }
 
406
#    define INVALID_SOCKET      (-1)
 
407
#  endif
 
408
#endif
 
409
 
 
410
#if defined(__ultrix)
 
411
#  ifndef ssize_t
 
412
#    define ssize_t int 
 
413
#  endif
 
414
#endif
 
415
 
 
416
#if defined(THREADS) || defined(sun)
 
417
#ifndef _REENTRANT
 
418
#define _REENTRANT
 
419
#endif
 
420
#endif
 
421
 
 
422
#if defined(sun) && !defined(__svr4__) && !defined(__SVR4)
 
423
  /* bcopy can handle overlapping moves according to SunOS 4.1.4 manpage */
 
424
# define memmove(s1,s2,n) bcopy((s2),(s1),(n))
 
425
# define strtoul(s,e,b) ((unsigned long int)strtol((s),(e),(b)))
 
426
extern char *sys_errlist[]; extern int sys_nerr;
 
427
# define strerror(errnum) \
 
428
        (((errnum)<0 || (errnum)>=sys_nerr) ? NULL : sys_errlist[errnum])
 
429
#endif
 
430
 
 
431
/***********************************************/
 
432
 
 
433
/* do we need to do this for getenv.
 
434
 * Just define getenv for use under windows */
 
435
 
 
436
#ifdef WIN16
 
437
/* How to do this needs to be thought out a bit more.... */
 
438
/*char *GETENV(char *);
 
439
#define Getenv  GETENV*/
 
440
#define Getenv  getenv
 
441
#else
 
442
#define Getenv getenv
 
443
#endif
 
444
 
 
445
#define DG_GCC_BUG      /* gcc < 2.6.3 on DGUX */
 
446
 
 
447
#ifdef sgi
 
448
#define IRIX_CC_BUG     /* all version of IRIX I've tested (4.* 5.*) */
 
449
#endif
 
450
#ifdef SNI
 
451
#define IRIX_CC_BUG     /* CDS++ up to V2.0Bsomething suffered from the same bug.*/
 
452
#endif
 
453
 
 
454
#ifdef NO_MD2
 
455
#define MD2_Init MD2Init
 
456
#define MD2_Update MD2Update
 
457
#define MD2_Final MD2Final
 
458
#define MD2_DIGEST_LENGTH 16
 
459
#endif
 
460
#ifdef NO_MD5
 
461
#define MD5_Init MD5Init 
 
462
#define MD5_Update MD5Update
 
463
#define MD5_Final MD5Final
 
464
#define MD5_DIGEST_LENGTH 16
 
465
#endif
 
466
 
 
467
#ifdef  __cplusplus
 
468
}
 
469
#endif
 
470
 
 
471
#endif
 
472