Any projects which want to use Hush code from now on will need to be licensed as GPLv3 or we will send the lawyers: https://www.softwarefreedom.org/ Notably, Komodo (KMD) is licensed as GPLv2 and is no longer compatible to receive code changes, without causing legal issues. MIT projects, such as Zcash, also cannot pull in changes from the Hush Full Node without permission from The Hush Developers, which may in some circumstances grant an MIT license on a case-by-case basis.
120 lines
3.5 KiB
C
120 lines
3.5 KiB
C
// Copyright (c) 2009-2010 Satoshi Nakamoto
|
|
// Copyright (c) 2009-2014 The Bitcoin Core developers
|
|
// Distributed under the GPLv3 software license, see the accompanying
|
|
// file COPYING or https://www.gnu.org/licenses/gpl-3.0.en.html
|
|
|
|
/******************************************************************************
|
|
* Copyright © 2014-2019 The SuperNET Developers. *
|
|
* *
|
|
* See the AUTHORS, DEVELOPER-AGREEMENT and LICENSE files at *
|
|
* the top-level directory of this distribution for the individual copyright *
|
|
* holder information and the developer policies on copyright and licensing. *
|
|
* *
|
|
* Unless otherwise agreed in a custom licensing agreement, no part of the *
|
|
* SuperNET software, including this file may be copied, modified, propagated *
|
|
* or distributed except according to the terms contained in the LICENSE file *
|
|
* *
|
|
* Removal or modification of this copyright notice is prohibited. *
|
|
* *
|
|
******************************************************************************/
|
|
|
|
#ifndef BITCOIN_COMPAT_H
|
|
#define BITCOIN_COMPAT_H
|
|
|
|
#if defined(HAVE_CONFIG_H)
|
|
#include "config/bitcoin-config.h"
|
|
#endif
|
|
|
|
#ifdef _WIN32
|
|
#ifdef _WIN32_WINNT
|
|
#undef _WIN32_WINNT
|
|
#endif
|
|
#define _WIN32_WINNT 0x0501
|
|
#ifndef WIN32_LEAN_AND_MEAN
|
|
#define WIN32_LEAN_AND_MEAN 1
|
|
#endif
|
|
#ifndef NOMINMAX
|
|
#define NOMINMAX
|
|
#endif
|
|
#ifdef FD_SETSIZE
|
|
#undef FD_SETSIZE // prevent redefinition compiler warning
|
|
#endif
|
|
#define FD_SETSIZE 1024 // max number of fds in fd_set
|
|
|
|
#include <winsock2.h> // Must be included before mswsock.h and windows.h
|
|
|
|
#include <mswsock.h>
|
|
#include <windows.h>
|
|
#include <ws2tcpip.h>
|
|
#else
|
|
#include <fcntl.h>
|
|
#include <sys/mman.h>
|
|
#include <sys/socket.h>
|
|
#include <sys/types.h>
|
|
#include <net/if.h>
|
|
#include <netinet/in.h>
|
|
#include <netinet/tcp.h>
|
|
#include <arpa/inet.h>
|
|
#include <ifaddrs.h>
|
|
#include <limits.h>
|
|
#include <netdb.h>
|
|
#include <unistd.h>
|
|
#endif
|
|
|
|
#ifdef _WIN32
|
|
#define MSG_DONTWAIT 0
|
|
#else
|
|
typedef u_int SOCKET;
|
|
#include "errno.h"
|
|
#define WSAGetLastError() errno
|
|
#define WSAEINVAL EINVAL
|
|
#define WSAEALREADY EALREADY
|
|
#define WSAEWOULDBLOCK EWOULDBLOCK
|
|
#define WSAEMSGSIZE EMSGSIZE
|
|
#define WSAEINTR EINTR
|
|
#define WSAEINPROGRESS EINPROGRESS
|
|
#define WSAEADDRINUSE EADDRINUSE
|
|
#define WSAENOTSOCK EBADF
|
|
#define INVALID_SOCKET (SOCKET)(~0)
|
|
#define SOCKET_ERROR -1
|
|
#endif
|
|
|
|
#ifdef _WIN32
|
|
#ifndef S_IRUSR
|
|
#define S_IRUSR 0400
|
|
#define S_IWUSR 0200
|
|
#endif
|
|
#else
|
|
#define MAX_PATH 1024
|
|
#endif
|
|
|
|
// As Solaris does not have the MSG_NOSIGNAL flag for send(2) syscall, it is defined as 0
|
|
#if !defined(HAVE_MSG_NOSIGNAL) && !defined(MSG_NOSIGNAL)
|
|
#define MSG_NOSIGNAL 0
|
|
#endif
|
|
|
|
#ifndef _WIN32
|
|
// PRIO_MAX is not defined on Solaris
|
|
#ifndef PRIO_MAX
|
|
#define PRIO_MAX 20
|
|
#endif
|
|
#define THREAD_PRIORITY_LOWEST PRIO_MAX
|
|
#define THREAD_PRIORITY_BELOW_NORMAL 2
|
|
#define THREAD_PRIORITY_NORMAL 0
|
|
#define THREAD_PRIORITY_ABOVE_NORMAL (-2)
|
|
#endif
|
|
|
|
#if HAVE_DECL_STRNLEN == 0
|
|
size_t strnlen( const char *start, size_t max_len);
|
|
#endif // HAVE_DECL_STRNLEN
|
|
|
|
bool static inline IsSelectableSocket(SOCKET s) {
|
|
#ifdef _WIN32
|
|
return true;
|
|
#else
|
|
return (s < FD_SETSIZE);
|
|
#endif
|
|
}
|
|
|
|
#endif // BITCOIN_COMPAT_H
|