Commit 2c25ebd1 authored by Richard Levitte's avatar Richard Levitte
Browse files

DJGPP adjustments



* Configure: Replaced -DTERMIO by -DTERMIOS in CFLAGS.

* crypto/bio/bss_dgram.c [WATT32]: Remove obsolete redefinition of
  function names: sock_write, sock_read and sock_puts.

* crypto/bio/bss_sock.c [WATT32]: For Watt-32 2.2.11 sock_write,
  sock_read and sock_puts are redefined to their private names so
  their names must be undefined first before they can be redefined
  again.

* crypto/bio/bss_file.c (file_fopen) [__DJGPP__]: Make a copy of the
  passed file name and replace the leading dots in the dirname part
  and the basname part of the file name, unless LFN is supported.

* e_os.h [__DJGPP__]: Undefine macro DEVRANDOM_EGD. Neither MS-DOS nor
  FreeDOS provide 'egd' sockets.
  New macro HAS_LFN_SUPPORT checks if underlying file system supports
  long file names or not.
  Include sys/un.h.
  Define WATT32_NO_OLDIES.

* INSTALL.DJGPP: Update URL of WATT-32 library.

Submitted by Juan Manuel Guerrero <juan.guerrero@gmx.de>

RT#4217

Reviewed-by: default avatarAndy Polyakov <appro@openssl.org>
parent ae69c7d3
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -19,7 +19,7 @@
 files to download, see the DJGPP "ZIP PICKER" page at
 "http://www.delorie.com/djgpp/zip-picker.html". You also need to have
 the WATT-32 networking package installed before you try to compile
 OpenSSL. This can be obtained from "http://www.bgnett.no/~giva/".
 OpenSSL. This can be obtained from "http://www.watt-32.net/".
 The Makefile assumes that the WATT-32 code is in the directory
 specified by the environment variable WATT_ROOT. If you have watt-32
 in directory "watt32" under your main DJGPP directory, specify
+0 −6
Original line number Diff line number Diff line
@@ -94,12 +94,6 @@
         ((a)->s6_addr32[2] == htonl(0x0000ffff)))
# endif

# ifdef WATT32
#  define sock_write SockWrite  /* Watt-32 uses same names */
#  define sock_read  SockRead
#  define sock_puts  SockPuts
# endif

static int dgram_write(BIO *h, const char *buf, int num);
static int dgram_read(BIO *h, char *buf, int size);
static int dgram_puts(BIO *h, const char *str);
+30 −0
Original line number Diff line number Diff line
@@ -154,6 +154,36 @@ static FILE *file_fopen(const char *filename, const char *mode)
    } else if (GetLastError() == ERROR_NO_UNICODE_TRANSLATION) {
        file = fopen(filename, mode);
    }
#  elif defined(__DJGPP__)
    {
        char *newname = NULL;

        if (!HAS_LFN_SUPPORT(filename)) {
            char *iterator;
            char lastchar;

            newname = OPENSSL_malloc(strlen(filename) + 1);
            if (newname == NULL)
                return NULL;

            for(iterator = newname, lastchar = '\0';
                *filename; filename++, iterator++) {
                if (lastchar == '/' && filename[0] == '.'
                    && filename[1] != '.' && filename[1] != '/') {
                    /* Leading dots are not permitted in plain DOS. */
                    *iterator = '_';
                } else {
                    *iterator = *filename;
                }
                lastchar = *filename;
            }
            *iterator = '\0';
            filename = newname;
        }
        file = fopen(filename, mode);

        OPENSSL_free(newname);
    }
#  else
    file = fopen(filename, mode);
#  endif
+5 −1
Original line number Diff line number Diff line
@@ -66,7 +66,11 @@
# include <openssl/bio.h>

# ifdef WATT32
#  define sock_write SockWrite  /* Watt-32 uses same names */
/* Watt-32 uses same names */
#  undef sock_write
#  undef sock_read
#  undef sock_puts
#  define sock_write SockWrite
#  define sock_read  SockRead
#  define sock_puts  SockPuts
# endif
+4 −0
Original line number Diff line number Diff line
@@ -151,6 +151,7 @@ extern "C" {
#  define writesocket(s,b,n)      send((s),(b),(n),0)
# elif defined(__DJGPP__)
#  define WATT32
#  define WATT32_NO_OLDIES
#  define get_last_socket_error() errno
#  define clear_socket_error()    errno=0
#  define closesocket(s)          close_s(s)
@@ -185,11 +186,14 @@ extern "C" {
#   include <unistd.h>
#   include <sys/stat.h>
#   include <sys/socket.h>
#   include <sys/un.h>
#   include <tcp.h>
#   include <netdb.h>
#   define _setmode setmode
#   define _O_TEXT O_TEXT
#   define _O_BINARY O_BINARY
#   define HAS_LFN_SUPPORT(name)  (pathconf((name), _PC_NAME_MAX) > 12)
#   undef DEVRANDOM_EGD  /*  Neither MS-DOS nor FreeDOS provide 'egd' sockets.  */
#   undef DEVRANDOM
#   define DEVRANDOM "/dev/urandom\x24"
#  endif                        /* __DJGPP__ */