X-Git-Url: https://git.openssl.org/?p=openssl.git;a=blobdiff_plain;f=e_os.h;h=0f4b7994f55efb5f964e225c24c7d349ddeb6ab2;hp=78753de970802f7900abd5b4933ecf7e6d64aa24;hb=1244d5b713b380caa1b427b2549bc83508d482bc;hpb=61aa2134a48a6a436f498cc69ce895cd8456e080 diff --git a/e_os.h b/e_os.h index 78753de970..0f4b7994f5 100644 --- a/e_os.h +++ b/e_os.h @@ -112,7 +112,7 @@ extern "C" { /******************************************************************** The Microsoft section ********************************************************************/ -/* The following is used becaue of the small stack in some +/* The following is used because of the small stack in some * Microsoft operating systems */ #if defined(OPENSSL_SYS_MSDOS) && !defined(OPENSSL_SYSNAME_WIN32) # define MS_STATIC static @@ -178,14 +178,27 @@ extern "C" { #define closesocket(s) close(s) #define readsocket(s,b,n) read((s),(b),(n)) #define writesocket(s,b,n) write((s),(char *)(b),(n)) +#elif defined(OPENSSL_SYS_BEOS_R5) +#define get_last_socket_error() errno +#define clear_socket_error() errno=0 +#define FIONBIO SO_NONBLOCK +#define ioctlsocket(a,b,c) setsockopt((a),SOL_SOCKET,(b),(c),sizeof(*(c))) +#define readsocket(s,b,n) recv((s),(b),(n),0) +#define writesocket(s,b,n) send((s),(b),(n),0) #elif defined(OPENSSL_SYS_NETWARE) #if defined(NETWARE_BSDSOCK) #define get_last_socket_error() errno #define clear_socket_error() errno=0 #define closesocket(s) close(s) +#define ioctlsocket(a,b,c) ioctl(a,b,c) +#if defined(NETWARE_LIBC) #define readsocket(s,b,n) recv((s),(b),(n),0) #define writesocket(s,b,n) send((s),(b),(n),0) #else +#define readsocket(s,b,n) recv((s),(char*)(b),(n),0) +#define writesocket(s,b,n) send((s),(char*)(b),(n),0) +#endif +#else #define get_last_socket_error() WSAGetLastError() #define clear_socket_error() WSASetLastError(0) #define readsocket(s,b,n) recv((s),(b),(n),0) @@ -262,16 +275,17 @@ extern "C" { # if !defined(OPENSSL_NO_SOCK) && defined(_WIN32_WINNT) /* * Just like defining _WIN32_WINNT including winsock2.h implies - * certain "discipline" for maintaing [broad] binary compatibility. + * certain "discipline" for maintaining [broad] binary compatibility. * As long as structures are invariant among Winsock versions, * it's sufficient to check for specific Winsock2 API availability * at run-time [DSO_global_lookup is recommended]... */ # include # include - /* yes, they have to be #included prior */ + /* yes, they have to be #included prior to */ # endif # include +# include # include # include # include @@ -286,6 +300,39 @@ static unsigned int _strlen31(const char *str) } # endif # include +# if defined(_MSC_VER) && _MSC_VER<=1200 && defined(_MT) && defined(isspace) + /* compensate for bug in VC6 ctype.h */ +# undef isspace +# undef isdigit +# undef isalnum +# undef isupper +# undef isxdigit +# endif +# if defined(_MSC_VER) && !defined(_DLL) && defined(stdin) +# if _MSC_VER>=1300 +# undef stdin +# undef stdout +# undef stderr + FILE *__iob_func(); +# define stdin (&__iob_func()[0]) +# define stdout (&__iob_func()[1]) +# define stderr (&__iob_func()[2]) +# elif defined(I_CAN_LIVE_WITH_LNK4049) +# undef stdin +# undef stdout +# undef stderr + /* pre-1300 has __p__iob(), but it's available only in msvcrt.lib, + * or in other words with /MD. Declaring implicit import, i.e. + * with _imp_ prefix, works correctly with all compiler options, + * but without /MD results in LINK warning LNK4049: + * 'locally defined symbol "__iob" imported'. + */ + extern FILE *_imp___iob; +# define stdin (&_imp___iob[0]) +# define stdout (&_imp___iob[1]) +# define stderr (&_imp___iob[2]) +# endif +# endif # endif # include # include @@ -325,7 +372,7 @@ static unsigned int _strlen31(const char *str) # define DEFAULT_HOME "C:" # endif -#else /* The non-microsoft world world */ +#else /* The non-microsoft world */ # ifdef OPENSSL_SYS_VMS # define VMS 1 @@ -375,6 +422,11 @@ static unsigned int _strlen31(const char *str) # undef DEVRANDOM # ifdef NETWARE_CLIB # define getpid GetThreadID + extern int GetThreadID(void); +/* # include */ + extern int kbhit(void); +# else +# include # endif # define NO_SYSLOG # define _setmode setmode @@ -445,7 +497,10 @@ static unsigned int _strlen31(const char *str) # if defined(_WIN32_WCE) && _WIN32_WCE<410 # define getservbyname _masked_declaration_getservbyname # endif -# include +# if !defined(IPPROTO_IP) + /* winsock[2].h was included already? */ +# include +# endif # ifdef getservbyname # undef getservbyname /* this is used to be wcecompat/include/winsock_extras.h */ @@ -487,7 +542,11 @@ static unsigned int _strlen31(const char *str) # include # include # include -# include +# if defined(NETWARE_CLIB) +# include +# else +# include +# endif # define INVALID_SOCKET (int)(~0) # else # include @@ -519,8 +578,10 @@ static unsigned int _strlen31(const char *str) # include /* Added for FIONBIO under unixware */ # endif # include +# if !defined(OPENSSL_SYS_BEOS_R5) # include # endif +# endif # if defined(NeXT) || defined(_NEXT_SOURCE) # include @@ -563,6 +624,18 @@ static unsigned int _strlen31(const char *str) # define INVALID_SOCKET (-1) # endif /* INVALID_SOCKET */ # endif + +/* Some IPv6 implementations are broken, disable them in known bad + * versions. + */ +# if !defined(OPENSSL_USE_IPV6) +# if defined(AF_INET6) && !defined(OPENSSL_SYS_BEOS_BONE) && !defined(NETWARE_CLIB) +# define OPENSSL_USE_IPV6 1 +# else +# define OPENSSL_USE_IPV6 0 +# endif +# endif + #endif #if defined(__ultrix) @@ -617,16 +690,12 @@ extern char *sys_errlist[]; extern int sys_nerr; #elif defined(OPENSSL_SYS_OS2) && defined(__EMX__) # define strcasecmp stricmp # define strncasecmp strnicmp -#elif defined(OPENSSL_SYS_NETWARE) && defined(NETWARE_CLIB) -# define strcasecmp stricmp -# define strncasecmp strnicmp -#else -# ifdef NO_STRINGS_H - int strcasecmp(); - int strncasecmp(); -# else -# include -# endif /* NO_STRINGS_H */ +#elif defined(OPENSSL_SYS_NETWARE) +# include +# if defined(NETWARE_CLIB) +# define strcasecmp stricmp +# define strncasecmp strnicmp +# endif /* NETWARE_CLIB */ #endif #if defined(OPENSSL_SYS_OS2) && defined(__EMX__) @@ -661,6 +730,15 @@ struct servent *getservbyname(const char *name, const char *proto); #endif /* end vxworks */ +/* beos */ +#if defined(OPENSSL_SYS_BEOS_R5) +#define SO_ERROR 0 +#define NO_SYS_UN +#define IPPROTO_IP 0 +#include +#endif + + #ifdef __cplusplus } #endif