X-Git-Url: https://git.openssl.org/gitweb/?p=openssl.git;a=blobdiff_plain;f=include%2Fopenssl%2Fe_os2.h;h=8cf6c842726724e31058105469e38ffaacd0c689;hp=9f7dcf16199da0c6b5671f96fb79b48d57f95eae;hb=21b80f9a1246e4af099ed580f1c352ed5bde87cb;hpb=fb029cebaeb6b0dbdb05a26a515e38a52a3c0fa1 diff --git a/include/openssl/e_os2.h b/include/openssl/e_os2.h index 9f7dcf1619..8cf6c84272 100644 --- a/include/openssl/e_os2.h +++ b/include/openssl/e_os2.h @@ -1,4 +1,3 @@ -/* e_os2.h */ /* ==================================================================== * Copyright (c) 1998-2000 The OpenSSL Project. All rights reserved. * @@ -53,11 +52,11 @@ * */ -#include - #ifndef HEADER_E_OS2_H # define HEADER_E_OS2_H +# include + #ifdef __cplusplus extern "C" { #endif @@ -90,7 +89,13 @@ extern "C" { * For 32 bit environment, there seems to be the CygWin environment and then * all the others that try to do the same thing Microsoft does... */ -# if defined(OPENSSL_SYS_UWIN) +/* + * UEFI lives here because it might be built with a Microsoft toolchain and + * we need to avoid the false positive match on Windows. + */ +# if defined(OPENSSL_SYS_UEFI) +# undef OPENSSL_SYS_UNIX +# elif defined(OPENSSL_SYS_UWIN) # undef OPENSSL_SYS_UNIX # define OPENSSL_SYS_WIN32_UWIN # else @@ -201,7 +206,7 @@ extern "C" { /*- * Definitions of OPENSSL_GLOBAL and OPENSSL_EXTERN, to define and declare * certain global symbols that, with some compilers under VMS, have to be - * defined and declared explicitely with globaldef and globalref. + * defined and declared explicitly with globaldef and globalref. * Definitions of OPENSSL_EXPORT and OPENSSL_IMPORT, to define and declare * DLL exports and imports for compilers under Win32. These are a little * more complicated to use. Basically, for any library that exports some @@ -213,25 +218,23 @@ extern "C" { * # define OPENSSL_EXTERN OPENSSL_EXPORT * #endif * - * The default is to have OPENSSL_EXPORT, OPENSSL_IMPORT and OPENSSL_GLOBAL - * have some generally sensible values, and for OPENSSL_EXTERN to have the - * value OPENSSL_IMPORT. + * The default is to have OPENSSL_EXPORT, OPENSSL_EXTERN and OPENSSL_GLOBAL + * have some generally sensible values. */ # if defined(OPENSSL_SYS_VMS_NODECC) # define OPENSSL_EXPORT globalref -# define OPENSSL_IMPORT globalref +# define OPENSSL_EXTERN globalref # define OPENSSL_GLOBAL globaldef # elif defined(OPENSSL_SYS_WINDOWS) && defined(OPENSSL_OPT_WINDLL) # define OPENSSL_EXPORT extern __declspec(dllexport) -# define OPENSSL_IMPORT extern __declspec(dllimport) +# define OPENSSL_EXTERN extern __declspec(dllimport) # define OPENSSL_GLOBAL # else # define OPENSSL_EXPORT extern -# define OPENSSL_IMPORT extern +# define OPENSSL_EXTERN extern # define OPENSSL_GLOBAL # endif -# define OPENSSL_EXTERN OPENSSL_IMPORT /*- * Macros to allow global variables to be reached through function calls when @@ -256,16 +259,24 @@ extern "C" { # define OPENSSL_GLOBAL_REF(name) _shadow_##name # endif -# ifdef OPENSSL_SYS_MSDOS -# define ossl_ssize_t long +# ifdef _WIN32 +# ifdef _WIN64 +# define ossl_ssize_t __int64 +# define OSSL_SSIZE_MAX _I64_MAX +# else +# define ossl_ssize_t int +# define OSSL_SSIZE_MAX INT_MAX +# endif # endif -# if defined(__ultrix) && !defined(ssize_t) +# if (defined(__ultrix) || defined(OPENSSL_SYS_UEFI)) && !defined(ssize_t) # define ossl_ssize_t int +# define OSSL_SSIZE_MAX INT_MAX # endif # ifndef ossl_ssize_t # define ossl_ssize_t ssize_t +# define OSSL_SSIZE_MAX SSIZE_MAX # endif # ifdef DEBUG_UNUSED @@ -275,8 +286,19 @@ extern "C" { # endif /* Standard integer types */ -# if defined(__osf__) || defined(__sgi) || defined(__hpux) || defined(OPENSSL_SYS_VMS) +# if (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) || \ + defined(__osf__) || defined(__sgi) || defined(__hpux) || \ + defined(OPENSSL_SYS_VMS) # include +# elif defined(OPENSSL_SYS_UEFI) +typedef INT8 int8_t; +typedef UINT8 uint8_t; +typedef INT16 int16_t; +typedef UINT16 uint16_t; +typedef INT32 int32_t; +typedef UINT32 uint32_t; +typedef INT64 int64_t; +typedef UINT64 uint64_t; # elif defined(_MSC_VER) && _MSC_VER<=1500 /* * minimally required typdefs for systems not supporting inttypes.h or @@ -295,21 +317,38 @@ typedef unsigned __int64 uint64_t; # endif /* - * We need a format operator for some client tools for uint64_t. - * This is an attempt at doing so in a portable manner. - * If we can't use a built-in definition, we'll revert to the previous - * behavior that was hard-coded but now causing compiler warnings on - * some systems (e.g. Mac OS X). + * We need a format operator for some client tools for uint64_t. If inttypes.h + * isn't available or did not define it, just go with hard-coded. */ # ifndef PRIu64 -# if (__STDC_VERSION__ >= 199901L) -# include -# endif -# ifndef PRIu64 +# ifdef SIXTY_FOUR_BIT_LONG # define PRIu64 "lu" +# else +# define PRIu64 "llu" # endif # endif +/* ossl_inline: portable inline definition usable in public headers */ +# if !defined(inline) && !defined(__cplusplus) +# if defined(__STDC_VERSION__) && __STDC_VERSION__>=199901L + /* just use inline */ +# define ossl_inline inline +# elif defined(__GNUC__) && __GNUC__>=2 +# define ossl_inline __inline__ +# elif defined(_MSC_VER) + /* + * Visual Studio: inline is available in C++ only, however + * __inline is available for C, see + * http://msdn.microsoft.com/en-us/library/z8y1yy88.aspx + */ +# define ossl_inline __inline +# else +# define ossl_inline +# endif +# else +# define ossl_inline inline +# endif + #ifdef __cplusplus } #endif