Skip to content

Commit

Permalink
This _WIN32-specific patch makes it possible to "wrap" OpenSSL in ano…
Browse files Browse the repository at this point in the history
…ther

.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
  • Loading branch information
Andy Polyakov committed Dec 22, 2008
1 parent 70531c1 commit e527201
Show file tree
Hide file tree
Showing 9 changed files with 55 additions and 6 deletions.
2 changes: 1 addition & 1 deletion crypto/bio/bss_file.c
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
4 changes: 4 additions & 0 deletions crypto/des/enc_read.c
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
4 changes: 4 additions & 0 deletions crypto/des/enc_writ.c
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
3 changes: 2 additions & 1 deletion crypto/ocsp/ocsp_ht.c
Original file line number Diff line number Diff line change
Expand Up @@ -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>
Expand Down
7 changes: 7 additions & 0 deletions crypto/rand/randfile.c
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
2 changes: 2 additions & 0 deletions crypto/ui/ui_openssl.c
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
3 changes: 3 additions & 0 deletions crypto/x509/by_dir.c
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
28 changes: 27 additions & 1 deletion e_os.h
Original file line number Diff line number Diff line change
Expand Up @@ -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>
Expand All @@ -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>
Expand Down
8 changes: 5 additions & 3 deletions engines/e_aep.c
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down

0 comments on commit e527201

Please sign in to comment.