diff --git a/libs/libnatpmp/getgateway.c b/libs/libnatpmp/getgateway.c index 9223bbe212..b667b04643 100644 --- a/libs/libnatpmp/getgateway.c +++ b/libs/libnatpmp/getgateway.c @@ -18,7 +18,9 @@ #ifndef WIN32 #include #endif +#ifndef _MSC_VER #include +#endif /* There is no portable method to get the default route gateway. * So below are three differents functions implementing this. * Parsing /proc/net/route is for linux. @@ -271,10 +273,10 @@ int getdefaultgateway(in_addr_t * addr) DWORD numSubKeys = 0; TCHAR keyName[MAX_KEY_LENGTH]; DWORD keyNameLength = MAX_KEY_LENGTH; - TCHAR keyValue[MAX_VALUE_LENGTH]; + BYTE keyValue[MAX_VALUE_LENGTH]; DWORD keyValueLength = MAX_VALUE_LENGTH; DWORD keyValueType = REG_SZ; - TCHAR gatewayValue[MAX_VALUE_LENGTH]; + BYTE gatewayValue[MAX_VALUE_LENGTH]; DWORD gatewayValueLength = MAX_VALUE_LENGTH; DWORD gatewayValueType = REG_MULTI_SZ; int done = 0; @@ -369,7 +371,7 @@ int getdefaultgateway(in_addr_t * addr) { //printf("keyValue: %s\n", keyValue); - if(RegOpenKeyEx(interfacesKey, keyValue, 0, KEY_READ, &interfaceKey) == ERROR_SUCCESS) + if(RegOpenKeyEx(interfacesKey, (char *)keyValue, 0, KEY_READ, &interfaceKey) == ERROR_SUCCESS) { gatewayValueLength = MAX_VALUE_LENGTH; if(ERROR_SUCCESS == RegQueryValueEx(interfaceKey, // Open registry key @@ -413,7 +415,7 @@ int getdefaultgateway(in_addr_t * addr) if(done) { - *addr = inet_addr(gatewayValue); + *addr = inet_addr((char *)gatewayValue); return 0; } diff --git a/libs/libnatpmp/getgateway.h b/libs/libnatpmp/getgateway.h index cf7794600d..a08b02a6d1 100644 --- a/libs/libnatpmp/getgateway.h +++ b/libs/libnatpmp/getgateway.h @@ -17,7 +17,11 @@ #define __GETGATEWAY_H__ #ifdef WIN32 +#ifdef _MSC_VER +typedef unsigned __int32 uint32_t; +#else #include +#endif #define in_addr_t uint32_t #endif #include "declspec.h" diff --git a/libs/libnatpmp/natpmp.c b/libs/libnatpmp/natpmp.c index 9ea3a053ea..21267bc2ea 100644 --- a/libs/libnatpmp/natpmp.c +++ b/libs/libnatpmp/natpmp.c @@ -16,13 +16,28 @@ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ #include #include +#ifndef _MSC_VER #include +#endif #ifdef WIN32 #include #include #include #define EWOULDBLOCK WSAEWOULDBLOCK #define ECONNREFUSED WSAECONNREFUSED + +static int gettimeofday(struct timeval* p, void* tz /* IGNORED */) { + union { + long long ns100; /*time since 1 Jan 1601 in 100ns units */ + FILETIME ft; + } _now; + + GetSystemTimeAsFileTime( &(_now.ft) ); + p->tv_usec=(long)((_now.ns100 / 10LL) % 1000000LL ); + p->tv_sec= (long)((_now.ns100-(116444736000000000LL))/10000000LL); + return 0; +} + #else #include #include @@ -150,7 +165,7 @@ int sendnewportmappingrequest(natpmp_t * p, int protocol, if(!p || (protocol!=NATPMP_PROTOCOL_TCP && protocol!=NATPMP_PROTOCOL_UDP)) return NATPMP_ERR_INVALIDARGS; p->pending_request[0] = 0; - p->pending_request[1] = protocol; + p->pending_request[1] = (char)protocol; p->pending_request[2] = 0; p->pending_request[3] = 0; *((uint16_t *)(p->pending_request + 4)) = htons(privateport); @@ -162,7 +177,7 @@ int sendnewportmappingrequest(natpmp_t * p, int protocol, int readnatpmpresponse(natpmp_t * p, natpmpresp_t * response) { - unsigned char buf[16]; + char buf[16]; struct sockaddr_in addr; socklen_t addrlen = sizeof(addr); int n; diff --git a/libs/libnatpmp/natpmp.h b/libs/libnatpmp/natpmp.h index d1f09c26ab..0ff41b081a 100644 --- a/libs/libnatpmp/natpmp.h +++ b/libs/libnatpmp/natpmp.h @@ -21,10 +21,17 @@ #define NATPMP_PORT (5351) #include +#ifndef _MSC_VER #include +#endif #ifdef WIN32 #include +#ifdef _MSC_VER +typedef unsigned __int32 uint32_t; +typedef unsigned __int16 uint16_t; +#else #include +#endif #define in_addr_t uint32_t #include "declspec.h" #else @@ -36,7 +43,7 @@ typedef struct { int s; /* socket */ in_addr_t gateway; /* default gateway (IPv4) */ int has_pending_request; - unsigned char pending_request[12]; + char pending_request[12]; int pending_request_len; int try_number; struct timeval retry_time; diff --git a/libs/libnatpmp/wingettimeofday.c b/libs/libnatpmp/wingettimeofday.c index 82590d4dd7..e69de29bb2 100644 --- a/libs/libnatpmp/wingettimeofday.c +++ b/libs/libnatpmp/wingettimeofday.c @@ -1,25 +0,0 @@ -#ifdef WIN32 -#include - -typedef struct _FILETIME { - unsigned long dwLowDateTime; - unsigned long dwHighDateTime; -} FILETIME; - -void __stdcall GetSystemTimeAsFileTime(FILETIME*); - -//void gettimeofday(struct timeval* p, void* tz /* IGNORED */); - -void gettimeofday(struct timeval* p, void* tz /* IGNORED */) { - union { - long long ns100; /*time since 1 Jan 1601 in 100ns units */ - FILETIME ft; - } _now; - - GetSystemTimeAsFileTime( &(_now.ft) ); - p->tv_usec=(long)((_now.ns100 / 10LL) % 1000000LL ); - p->tv_sec= (long)((_now.ns100-(116444736000000000LL))/10000000LL); - return; -} -#endif - diff --git a/libs/miniupnpc/codelength.h b/libs/miniupnpc/codelength.h index f11e5e9367..7280c8cb79 100644 --- a/libs/miniupnpc/codelength.h +++ b/libs/miniupnpc/codelength.h @@ -14,11 +14,11 @@ do { n = (n << 7) | (*p & 0x7f); } \ while(*(p++)&0x80); -#define CODELENGTH(n, p) if(n>=268435456) *(p++) = (n >> 28) | 0x80; \ - if(n>=2097152) *(p++) = (n >> 21) | 0x80; \ - if(n>=16384) *(p++) = (n >> 14) | 0x80; \ - if(n>=128) *(p++) = (n >> 7) | 0x80; \ - *(p++) = n & 0x7f; +#define CODELENGTH(n, p) if(n>=268435456) *(p++) = (unsigned char)((n >> 28) | 0x80); \ + if(n>=2097152) *(p++) = (unsigned char)((n >> 21) | 0x80); \ + if(n>=16384) *(p++) = (unsigned char)((n >> 14) | 0x80); \ + if(n>=128) *(p++) = (unsigned char)((n >> 7) | 0x80); \ + *(p++) = (unsigned char)(n & 0x7f); #endif diff --git a/libs/miniupnpc/minissdpc.c b/libs/miniupnpc/minissdpc.c index 59bd6abb12..0bea0188d2 100644 --- a/libs/miniupnpc/minissdpc.c +++ b/libs/miniupnpc/minissdpc.c @@ -8,7 +8,15 @@ #include #include #include +#ifdef _MSC_VER +#include +typedef intptr_t ssize_t; +#define read _read +#define write _write +#define close _close +#else #include +#endif #include #ifdef WIN32 #include @@ -27,6 +35,10 @@ struct UPNPDev * getDevicesFromMiniSSDPD(const char * devtype, const char * socketpath) { +#ifdef _MSC_VER + /* sockaddr_un not supported on msvc*/ + return NULL; +#else struct UPNPDev * tmp; struct UPNPDev * devlist = NULL; unsigned char buffer[2048]; @@ -105,5 +117,6 @@ getDevicesFromMiniSSDPD(const char * devtype, const char * socketpath) } close(s); return devlist; +#endif }