This _WIN32-specific patch makes it possible to "wrap" OpenSSL in another
.DLL, in particular static build. The issue has been discussed in RT#1230 and later on openssl-dev, and mutually exclusive approaches were suggested. This completes compromise solution suggested in RT#1230. PR: 1230
This commit is contained in:
parent
70531c147c
commit
e527201f6b
9 changed files with 55 additions and 6 deletions
|
@ -279,7 +279,7 @@ static long MS_CALLBACK file_ctrl(BIO *b, int cmd, long num, void *ptr)
|
|||
#endif
|
||||
{
|
||||
#if defined(OPENSSL_SYS_WINDOWS)
|
||||
int fd = fileno((FILE*)ptr);
|
||||
int fd = _fileno((FILE*)ptr);
|
||||
if (num & BIO_FP_TEXT)
|
||||
_setmode(fd,_O_TEXT);
|
||||
else
|
||||
|
|
|
@ -150,7 +150,11 @@ int DES_enc_read(int fd, void *buf, int len, DES_key_schedule *sched,
|
|||
/* first - get the length */
|
||||
while (net_num < HDRSIZE)
|
||||
{
|
||||
#ifndef _WIN32
|
||||
i=read(fd,(void *)&(net[net_num]),HDRSIZE-net_num);
|
||||
#else
|
||||
i=_read(fd,(void *)&(net[net_num]),HDRSIZE-net_num);
|
||||
#endif
|
||||
#ifdef EINTR
|
||||
if ((i == -1) && (errno == EINTR)) continue;
|
||||
#endif
|
||||
|
|
|
@ -156,7 +156,11 @@ int DES_enc_write(int fd, const void *_buf, int len,
|
|||
{
|
||||
/* eay 26/08/92 I was not doing writing from where we
|
||||
* got up to. */
|
||||
#ifndef _WIN32
|
||||
i=write(fd,(void *)&(outbuf[j]),outnum-j);
|
||||
#else
|
||||
i=_write(fd,(void *)&(outbuf[j]),outnum-j);
|
||||
#endif
|
||||
if (i == -1)
|
||||
{
|
||||
#ifdef EINTR
|
||||
|
|
|
@ -56,11 +56,12 @@
|
|||
*
|
||||
*/
|
||||
|
||||
#include <openssl/asn1.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <ctype.h>
|
||||
#include <string.h>
|
||||
#include "e_os.h"
|
||||
#include <openssl/asn1.h>
|
||||
#include <openssl/ocsp.h>
|
||||
#include <openssl/err.h>
|
||||
#include <openssl/buffer.h>
|
||||
|
|
|
@ -79,6 +79,13 @@
|
|||
# include <sys/stat.h>
|
||||
#endif
|
||||
|
||||
#ifdef _WIN32
|
||||
#define stat _stat
|
||||
#define chmod _chmod
|
||||
#define open _open
|
||||
#define fdopen _fdopen
|
||||
#endif
|
||||
|
||||
#undef BUFSIZE
|
||||
#define BUFSIZE 1024
|
||||
#define RAND_DATA 1024
|
||||
|
|
|
@ -677,6 +677,8 @@ static int noecho_fgets(char *buf, int size, FILE *tty)
|
|||
size--;
|
||||
#ifdef WIN16TTY
|
||||
i=_inchar();
|
||||
#elif defined(_WIN32)
|
||||
i=_getch();
|
||||
#else
|
||||
i=getch();
|
||||
#endif
|
||||
|
|
|
@ -392,6 +392,9 @@ static int get_cert_by_subject(X509_LOOKUP *xl, int type, X509_NAME *name,
|
|||
postfix,k);
|
||||
}
|
||||
#ifndef OPENSSL_NO_POSIX_IO
|
||||
#ifdef _WIN32
|
||||
#define stat _stat
|
||||
#endif
|
||||
{
|
||||
struct stat st;
|
||||
if (stat(b->data,&st) < 0)
|
||||
|
|
28
e_os.h
28
e_os.h
|
@ -285,6 +285,7 @@ extern "C" {
|
|||
/* yes, they have to be #included prior <windows.h> */
|
||||
# endif
|
||||
# include <windows.h>
|
||||
# include <stdio.h>
|
||||
# include <stddef.h>
|
||||
# include <errno.h>
|
||||
# include <string.h>
|
||||
|
@ -300,13 +301,38 @@ static unsigned int _strlen31(const char *str)
|
|||
# endif
|
||||
# include <malloc.h>
|
||||
# if defined(_MSC_VER) && _MSC_VER<=1200 && defined(_MT) && defined(isspace)
|
||||
/* compensate for bug is VC6 ctype.h */
|
||||
/* 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 <io.h>
|
||||
# include <fcntl.h>
|
||||
|
|
|
@ -867,10 +867,12 @@ static AEP_RV aep_get_connection(AEP_CONNECTION_HNDL_PTR phConnection)
|
|||
|
||||
CRYPTO_w_lock(CRYPTO_LOCK_ENGINE);
|
||||
|
||||
#ifndef NETWARE_CLIB
|
||||
curr_pid = getpid();
|
||||
#else
|
||||
#ifdef NETWARE_CLIB
|
||||
curr_pid = GetThreadID();
|
||||
#elif defined(_WIN32)
|
||||
curr_pid = _getpid();
|
||||
#else
|
||||
curr_pid = getpid();
|
||||
#endif
|
||||
|
||||
/*Check if this is the first time this is being called from the current
|
||||
|
|
Loading…
Reference in a new issue