Change RAND_poll for Unix to try a number of devices and only read
[openssl.git] / e_os2.h
diff --git a/e_os2.h b/e_os2.h
index 6f0c693..be7f72f 100644 (file)
--- a/e_os2.h
+++ b/e_os2.h
@@ -3,38 +3,55 @@
 #ifndef HEADER_E_OS2_H
 #define HEADER_E_OS2_H
 
+#include <openssl/opensslconf.h> /* OPENSSL_UNISTD */
+
 #ifdef  __cplusplus
 extern "C" {
 #endif
 
-/* 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.  On other OS:es,
-   these macros are defined with something sensible. */
-
-#if defined(VMS) && !defined(__DECC)
-# define OPENSSL_EXTERN globalref
-# define OPENSSL_GLOBAL globaldef
+#ifdef MSDOS
+# define OPENSSL_UNISTD_IO <io.h>
+# define OPENSSL_DECLARE_EXIT extern void exit(int);
 #else
-# define OPENSSL_EXTERN extern
-# define OPENSSL_GLOBAL
+# define OPENSSL_UNISTD_IO OPENSSL_UNISTD
+# define OPENSSL_DECLARE_EXIT /* declared in unistd.h */
 #endif
 
-/* The above definitions should be used throughout the library,
- * but as long as EXTERN and GLOBAL occur there, we keep the following
- * definitions, too: */
+/* 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.
+   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
+   global variables, the following code must be present in the header file
+   that declares them, before OPENSSL_EXTERN is used:
+
+   #ifdef SOME_BUILD_FLAG_MACRO
+   # undef OPENSSL_EXTERN
+   # 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.
+*/
+
 #if defined(VMS) && !defined(__DECC)
-# define EXTERN globalref
-# define GLOBAL globaldef
+# define OPENSSL_EXPORT globalref
+# define OPENSSL_IMPORT globalref
+# define OPENSSL_GLOBAL globaldef
+#elif defined(WINDOWS)
+# define OPENSSL_EXPORT extern _declspec(dllexport)
+# define OPENSSL_IMPORT extern _declspec(dllimport)
+# define OPENSSL_GLOBAL
 #else
-# define EXTERN extern
-# define GLOBAL
+# define OPENSSL_EXPORT extern
+# define OPENSSL_IMPORT extern
+# define OPENSSL_GLOBAL
 #endif
-
+#define OPENSSL_EXTERN OPENSSL_IMPORT
 
 #ifdef  __cplusplus
 }
 #endif
 #endif
-