Fix compilation with VS2017
The primary issue is that in MSVC 14.00 (VS2015) Microsoft added snprintf as a function to the standard library and prevents users from defining it to something else (typically, this was _snprintf). So, only define it when using _MSC_VER < 1900. Other changes are: - Fix macro definition of dup2 - Add macro for getpid - Add function definition for win32_dup - Add missing EXTERNs Signed-off-by: Tim Crawford <crawfxrd@gmail.com>
This commit is contained in:
@@ -166,7 +166,7 @@ enum iscsi_immediate_data {
|
|||||||
ISCSI_IMMEDIATE_DATA_NO = 0,
|
ISCSI_IMMEDIATE_DATA_NO = 0,
|
||||||
ISCSI_IMMEDIATE_DATA_YES = 1
|
ISCSI_IMMEDIATE_DATA_YES = 1
|
||||||
};
|
};
|
||||||
int iscsi_set_immediate_data(struct iscsi_context *iscsi, enum iscsi_immediate_data immediate_data);
|
EXTERN int iscsi_set_immediate_data(struct iscsi_context *iscsi, enum iscsi_immediate_data immediate_data);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* This function is used to set the desired mode for initial_r2t
|
* This function is used to set the desired mode for initial_r2t
|
||||||
@@ -179,7 +179,7 @@ enum iscsi_initial_r2t {
|
|||||||
ISCSI_INITIAL_R2T_NO = 0,
|
ISCSI_INITIAL_R2T_NO = 0,
|
||||||
ISCSI_INITIAL_R2T_YES = 1
|
ISCSI_INITIAL_R2T_YES = 1
|
||||||
};
|
};
|
||||||
int
|
EXTERN int
|
||||||
iscsi_set_initial_r2t(struct iscsi_context *iscsi, enum iscsi_initial_r2t initial_r2t);
|
iscsi_set_initial_r2t(struct iscsi_context *iscsi, enum iscsi_initial_r2t initial_r2t);
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -22,6 +22,7 @@
|
|||||||
#define _GNU_SOURCE
|
#define _GNU_SOURCE
|
||||||
|
|
||||||
#if defined(WIN32)
|
#if defined(WIN32)
|
||||||
|
#include "win32/win32_compat.h"
|
||||||
#else
|
#else
|
||||||
#include <strings.h>
|
#include <strings.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
|
|||||||
@@ -1102,7 +1102,7 @@ void iscsi_set_bind_interfaces(struct iscsi_context *iscsi, char * interfaces _U
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef WIN32
|
#if defined(_MSC_VER) && _MSC_VER < 1900
|
||||||
static iscsi_transport iscsi_transport_tcp = {
|
static iscsi_transport iscsi_transport_tcp = {
|
||||||
iscsi_tcp_connect,
|
iscsi_tcp_connect,
|
||||||
iscsi_tcp_queue_pdu,
|
iscsi_tcp_queue_pdu,
|
||||||
|
|||||||
@@ -22,9 +22,10 @@ THE SOFTWARE.
|
|||||||
*/
|
*/
|
||||||
/*Adaptions by memphiz@xbmc.org*/
|
/*Adaptions by memphiz@xbmc.org*/
|
||||||
|
|
||||||
#ifdef WIN32
|
|
||||||
#ifndef win32_COMPAT_H_
|
#ifndef win32_COMPAT_H_
|
||||||
#define win32_COMPAT_H_
|
#define win32_COMPAT_H_
|
||||||
|
|
||||||
|
#ifdef WIN32
|
||||||
#define NO_IPv6 1
|
#define NO_IPv6 1
|
||||||
|
|
||||||
#include <winsock2.h>
|
#include <winsock2.h>
|
||||||
@@ -65,16 +66,22 @@ typedef int socklen_t;
|
|||||||
#define writev win32_writev
|
#define writev win32_writev
|
||||||
#define strncasecmp _strnicmp
|
#define strncasecmp _strnicmp
|
||||||
#define strdup _strdup
|
#define strdup _strdup
|
||||||
#define dup2(x, y, z) win32_dup2(x, y)
|
#define dup2(x, y) win32_dup2(x, y)
|
||||||
#define poll(x, y, z) win32_poll(x, y, z)
|
#define poll(x, y, z) win32_poll(x, y, z)
|
||||||
#define inet_pton(x,y,z) win32_inet_pton(x,y,z)
|
#define inet_pton(x,y,z) win32_inet_pton(x,y,z)
|
||||||
#define sleep(x) Sleep(x * 1000)
|
#define sleep(x) Sleep(x * 1000)
|
||||||
|
#define getpid GetCurrentProcessId
|
||||||
|
|
||||||
|
#if defined(_MSC_VER) && _MSC_VER < 1900
|
||||||
#define snprintf(a, b, c, ...) _snprintf_s(a, b, b, c, ## __VA_ARGS__)
|
#define snprintf(a, b, c, ...) _snprintf_s(a, b, b, c, ## __VA_ARGS__)
|
||||||
|
#endif
|
||||||
|
|
||||||
int win32_inet_pton(int af, const char * src, void * dst);
|
int win32_inet_pton(int af, const char * src, void * dst);
|
||||||
int win32_poll(struct pollfd *fds, unsigned int nfsd, int timeout);
|
int win32_poll(struct pollfd *fds, unsigned int nfsd, int timeout);
|
||||||
int win32_gettimeofday(struct timeval *tv, struct timezone *tz);
|
int win32_gettimeofday(struct timeval *tv, struct timezone *tz);
|
||||||
ssize_t win32_writev(int fd, const struct iovec *iov, int iovcnt);
|
ssize_t win32_writev(int fd, const struct iovec *iov, int iovcnt);
|
||||||
ssize_t win32_readv(int fd, const struct iovec *iov, int iovcnt);
|
ssize_t win32_readv(int fd, const struct iovec *iov, int iovcnt);
|
||||||
|
int win32_dup2(int oldfd, int newfd);
|
||||||
|
|
||||||
struct iovec {
|
struct iovec {
|
||||||
void *iov_base;
|
void *iov_base;
|
||||||
@@ -83,5 +90,5 @@ struct iovec {
|
|||||||
|
|
||||||
#define inline
|
#define inline
|
||||||
|
|
||||||
#endif//win32_COMPAT_H_
|
#endif // WIN32
|
||||||
#endif//WIN32
|
#endif // win32_COMPAT_H_
|
||||||
|
|||||||
Reference in New Issue
Block a user