1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59: #ifndef HEADER_E_OS_H
60: #define HEADER_E_OS_H
61:
62: #include <openssl/opensslconf.h>
63:
64: #include <openssl/e_os2.h>
65:
66:
67:
68:
69: #ifdef __cplusplus
70: extern "C" {
71: #endif
72:
73:
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:
81:
82: #define DEVRANDOM "/dev/urandom","/dev/random","/dev/srandom"
83: #endif
84: #ifndef DEVRANDOM_EGD
85:
86:
87:
88: #define DEVRANDOM_EGD "/var/run/egd-pool","/dev/egd-pool","/etc/egd-pool","/etc/entropy"
89: #endif
90:
91: #if defined(OPENSSL_SYS_VXWORKS)
92: # define NO_SYS_PARAM_H
93: # define NO_CHMOD
94: # define NO_SYSLOG
95: #endif
96:
97: #if defined(OPENSSL_SYS_MACINTOSH_CLASSIC)
98: # if macintosh==1
99: # ifndef MAC_OS_GUSI_SOURCE
100: # define MAC_OS_pre_X
101: # define NO_SYS_TYPES_H
102: typedef long ssize_t;
103: # endif
104: # define NO_SYS_PARAM_H
105: # define NO_CHMOD
106: # define NO_SYSLOG
107: # undef DEVRANDOM
108: # define GETPID_IS_MEANINGLESS
109: # endif
110: #endif
111:
112:
113:
114:
115:
116:
117: #if defined(OPENSSL_SYS_MSDOS) && !defined(OPENSSL_SYSNAME_WIN32)
118: # define MS_STATIC static
119: #else
120: # define MS_STATIC
121: #endif
122:
123: #if defined(OPENSSL_SYS_WIN32) && !defined(WIN32)
124: # define WIN32
125: #endif
126: #if defined(OPENSSL_SYS_WIN16) && !defined(WIN16)
127: # define WIN16
128: #endif
129: #if defined(OPENSSL_SYS_WINDOWS) && !defined(WINDOWS)
130: # define WINDOWS
131: #endif
132: #if defined(OPENSSL_SYS_MSDOS) && !defined(MSDOS)
133: # define MSDOS
134: #endif
135:
136: #if defined(MSDOS) && !defined(GETPID_IS_MEANINGLESS)
137: # define GETPID_IS_MEANINGLESS
138: #endif
139:
140: #ifdef WIN32
141: #define get_last_sys_error() GetLastError()
142: #define clear_sys_error() SetLastError(0)
143: #if !defined(WINNT)
144: #define WIN_CONSOLE_BUG
145: #endif
146: #else
147: #define get_last_sys_error() errno
148: #define clear_sys_error() errno=0
149: #endif
150:
151: #if defined(WINDOWS)
152: #define get_last_socket_error() WSAGetLastError()
153: #define clear_socket_error() WSASetLastError(0)
154: #define readsocket(s,b,n) recv((s),(b),(n),0)
155: #define writesocket(s,b,n) send((s),(b),(n),0)
156: #define EADDRINUSE WSAEADDRINUSE
157: #elif defined(__DJGPP__)
158: #define WATT32
159: #define get_last_socket_error() errno
160: #define clear_socket_error() errno=0
161: #define closesocket(s) close_s(s)
162: #define readsocket(s,b,n) read_s(s,b,n)
163: #define writesocket(s,b,n) send(s,b,n,0)
164: #elif defined(MAC_OS_pre_X)
165: #define get_last_socket_error() errno
166: #define clear_socket_error() errno=0
167: #define closesocket(s) MacSocket_close(s)
168: #define readsocket(s,b,n) MacSocket_recv((s),(b),(n),true)
169: #define writesocket(s,b,n) MacSocket_send((s),(b),(n))
170: #elif defined(OPENSSL_SYS_VMS)
171: #define get_last_socket_error() errno
172: #define clear_socket_error() errno=0
173: #define ioctlsocket(a,b,c) ioctl(a,b,c)
174: #define closesocket(s) close(s)
175: #define readsocket(s,b,n) recv((s),(b),(n),0)
176: #define writesocket(s,b,n) send((s),(b),(n),0)
177: #elif defined(OPENSSL_SYS_VXWORKS)
178: #define get_last_socket_error() errno
179: #define clear_socket_error() errno=0
180: #define ioctlsocket(a,b,c) ioctl((a),(b),(int)(c))
181: #define closesocket(s) close(s)
182: #define readsocket(s,b,n) read((s),(b),(n))
183: #define writesocket(s,b,n) write((s),(char *)(b),(n))
184: #elif defined(OPENSSL_SYS_NETWARE)
185: #if defined(NETWARE_BSDSOCK)
186: #define get_last_socket_error() errno
187: #define clear_socket_error() errno=0
188: #define closesocket(s) close(s)
189: #define readsocket(s,b,n) recv((s),(b),(n),0)
190: #define writesocket(s,b,n) send((s),(b),(n),0)
191: #else
192: #define get_last_socket_error() WSAGetLastError()
193: #define clear_socket_error() WSASetLastError(0)
194: #define readsocket(s,b,n) recv((s),(b),(n),0)
195: #define writesocket(s,b,n) send((s),(b),(n),0)
196: #endif
197: #else
198: #define get_last_socket_error() errno
199: #define clear_socket_error() errno=0
200: #define ioctlsocket(a,b,c) ioctl(a,b,c)
201: #define closesocket(s) close(s)
202: #define readsocket(s,b,n) read((s),(b),(n))
203: #define writesocket(s,b,n) write((s),(b),(n))
204: #endif
205:
206: #ifdef WIN16
207: # define MS_CALLBACK _far _loadds
208: # define MS_FAR _far
209: #else
210: # define MS_CALLBACK
211: # define MS_FAR
212: #endif
213:
214: #ifdef OPENSSL_NO_STDIO
215: # undef OPENSSL_NO_FP_API
216: # define OPENSSL_NO_FP_API
217: #endif
218:
219: #if (defined(WINDOWS) || defined(MSDOS))
220:
221: # ifdef __DJGPP__
222: # include <unistd.h>
223: # include <sys/stat.h>
224: # include <sys/socket.h>
225: # include <tcp.h>
226: # include <netdb.h>
227: # define _setmode setmode
228: # define _O_TEXT O_TEXT
229: # define _O_BINARY O_BINARY
230: # undef DEVRANDOM
231: # define DEVRANDOM "/dev/urandom\x24"
232: # endif
233:
234: # ifndef S_IFDIR
235: # define S_IFDIR _S_IFDIR
236: # endif
237:
238: # ifndef S_IFMT
239: # define S_IFMT _S_IFMT
240: # endif
241:
242: # if !defined(WINNT) && !defined(__DJGPP__)
243: # define NO_SYSLOG
244: # endif
245: # define NO_DIRENT
246:
247: # ifdef WINDOWS
248: # if !defined(_WIN32_WCE) && !defined(_WIN32_WINNT)
249:
250:
251:
252:
253:
254:
255:
256:
257:
258:
259:
260:
261:
262:
263: # define _WIN32_WINNT 0x0400
264: # endif
265: # include <windows.h>
266: # include <stddef.h>
267: # include <errno.h>
268: # include <string.h>
269: # ifdef _WIN64
270: # define strlen(s) _strlen31(s)
271:
272: static unsigned int _strlen31(const char *str)
273: {
274: unsigned int len=0;
275: while (*str && len<0x80000000U) str++, len++;
276: return len&0x7FFFFFFF;
277: }
278: # endif
279: # include <malloc.h>
280: # endif
281: # include <io.h>
282: # include <fcntl.h>
283:
284: # ifdef OPENSSL_SYS_WINCE
285: # include <winsock_extras.h>
286: # endif
287:
288: # define ssize_t long
289:
290: # if defined (__BORLANDC__)
291: # define _setmode setmode
292: # define _O_TEXT O_TEXT
293: # define _O_BINARY O_BINARY
294: # define _int64 __int64
295: # define _kbhit kbhit
296: # endif
297:
298: # if defined(WIN16) && defined(SSLEAY) && defined(_WINEXITNOPERSIST)
299: # define EXIT(n) _wsetexit(_WINEXITNOPERSIST)
300: # define OPENSSL_EXIT(n) do { if (n == 0) EXIT(n); return(n); } while(0)
301: # else
302: # define EXIT(n) exit(n)
303: # endif
304: # define LIST_SEPARATOR_CHAR ';'
305: # ifndef X_OK
306: # define X_OK 0
307: # endif
308: # ifndef W_OK
309: # define W_OK 2
310: # endif
311: # ifndef R_OK
312: # define R_OK 4
313: # endif
314: # define OPENSSL_CONF "openssl.cnf"
315: # define SSLEAY_CONF OPENSSL_CONF
316: # define NUL_DEV "nul"
317: # define RFILE ".rnd"
318: # ifdef OPENSSL_SYS_WINCE
319: # define DEFAULT_HOME ""
320: # else
321: # define DEFAULT_HOME "C:"
322: # endif
323:
324: #else
325:
326: # ifdef OPENSSL_SYS_VMS
327: # define VMS 1
328:
329:
330: # include <stdlib.h>
331: # if defined(__DECC)
332: # include <unistd.h>
333: # else
334: # include <unixlib.h>
335: # endif
336: # define OPENSSL_CONF "openssl.cnf"
337: # define SSLEAY_CONF OPENSSL_CONF
338: # define RFILE ".rnd"
339: # define LIST_SEPARATOR_CHAR ','
340: # define NUL_DEV "NLA0:"
341:
342: # undef DEVRANDOM
343:
344:
345:
346:
347:
348:
349:
350:
351:
352:
353:
354:
355:
356:
357:
358: # define EXIT(n) do { int __VMS_EXIT = n; \
359: if (__VMS_EXIT == 0) \
360: __VMS_EXIT = 1; \
361: else \
362: __VMS_EXIT = (n << 3) | 2; \
363: __VMS_EXIT |= 0x10000000; \
364: exit(__VMS_EXIT); } while(0)
365: # define NO_SYS_PARAM_H
366:
367: # elif defined(OPENSSL_SYS_NETWARE)
368: # include <fcntl.h>
369: # include <unistd.h>
370: # define NO_SYS_TYPES_H
371: # undef DEVRANDOM
372: # ifdef NETWARE_CLIB
373: # define getpid GetThreadID
374: # endif
375: # define NO_SYSLOG
376: # define _setmode setmode
377: # define _kbhit kbhit
378: # define _O_TEXT O_TEXT
379: # define _O_BINARY O_BINARY
380: # define OPENSSL_CONF "openssl.cnf"
381: # define SSLEAY_CONF OPENSSL_CONF
382: # define RFILE ".rnd"
383: # define LIST_SEPARATOR_CHAR ';'
384: # define EXIT(n) { if (n) printf("ERROR: %d\n", (int)n); exit(n); }
385:
386: # else
387:
388: # ifdef OPENSSL_SYS_MPE
389: # define NO_SYS_PARAM_H
390: # endif
391: # ifdef OPENSSL_UNISTD
392: # include OPENSSL_UNISTD
393: # else
394: # include <unistd.h>
395: # endif
396: # ifndef NO_SYS_TYPES_H
397: # include <sys/types.h>
398: # endif
399: # if defined(NeXT) || defined(OPENSSL_SYS_NEWS4)
400: # define pid_t int
401:
402:
403: # endif
404: # if defined(NeXT) || defined(OPENSSL_SYS_NEWS4) || defined(OPENSSL_SYS_SUNOS)
405: # define ssize_t int
406: # endif
407: # ifdef OPENSSL_SYS_NEWS4
408: # define setvbuf(a, b, c, d) setbuffer((a), (b), (d))
409: typedef unsigned long clock_t;
410: # endif
411:
412: # define OPENSSL_CONF "openssl.cnf"
413: # define SSLEAY_CONF OPENSSL_CONF
414: # define RFILE ".rnd"
415: # define LIST_SEPARATOR_CHAR ':'
416: # define NUL_DEV "/dev/null"
417: # define EXIT(n) exit(n)
418: # endif
419:
420: # define SSLeay_getpid() getpid()
421:
422: #endif
423:
424:
425:
426:
427: #ifdef USE_SOCKETS
428: # if defined(WINDOWS) || defined(MSDOS)
429:
430:
431: # ifdef OPENSSL_NO_SOCK
432: # define SSLeay_Write(a,b,c) (-1)
433: # define SSLeay_Read(a,b,c) (-1)
434: # define SHUTDOWN(fd) close(fd)
435: # define SHUTDOWN2(fd) close(fd)
436: # elif !defined(__DJGPP__)
437: # include <winsock.h>
438: extern HINSTANCE _hInstance;
439: # ifdef _WIN64
440:
441:
442:
443:
444:
445: # define socket(d,t,p) ((int)socket(d,t,p))
446: # define accept(s,f,l) ((int)accept(s,f,l))
447: # endif
448: # define SSLeay_Write(a,b,c) send((a),(b),(c),0)
449: # define SSLeay_Read(a,b,c) recv((a),(b),(c),0)
450: # define SHUTDOWN(fd) { shutdown((fd),0); closesocket(fd); }
451: # define SHUTDOWN2(fd) { shutdown((fd),2); closesocket(fd); }
452: # else
453: # define SSLeay_Write(a,b,c) write_s(a,b,c,0)
454: # define SSLeay_Read(a,b,c) read_s(a,b,c)
455: # define SHUTDOWN(fd) close_s(fd)
456: # define SHUTDOWN2(fd) close_s(fd)
457: # endif
458:
459: # elif defined(MAC_OS_pre_X)
460:
461: # include "MacSocket.h"
462: # define SSLeay_Write(a,b,c) MacSocket_send((a),(b),(c))
463: # define SSLeay_Read(a,b,c) MacSocket_recv((a),(b),(c),true)
464: # define SHUTDOWN(fd) MacSocket_close(fd)
465: # define SHUTDOWN2(fd) MacSocket_close(fd)
466:
467: # elif defined(OPENSSL_SYS_NETWARE)
468:
469:
470: # if defined(NETWARE_BSDSOCK)
471: # include <sys/