diff options
author | Marcus Geelnard <marcus.geelnard@smarteye.se> | 2019-05-08 14:59:06 +0200 |
---|---|---|
committer | m <m@bitsnbites.eu> | 2019-08-09 11:49:02 +0200 |
commit | 85fee2565364cb31b72252a07538c97a52e48ca7 (patch) | |
tree | b904ce3f24c9cd974abe14ffede8c2eaf1ffad6a | |
parent | 3af99d5fd5c2352cd73e851686bb18de122897f1 (diff) |
MinGW fix: Use _MSC_VER instead of _WIN32 where appropriate
Use _MSC_VER (instead of _WIN32) for things that are specific for
Visual Studio.
Also remove #include <winsock2.h> from hiredis.h, as it leaks too
many symbols and defines into the global namespace, which is
undesirable for a public interface header. Anyone who uses the
the affected parts of the hiredis API needs to include the
appropriate headers anyway in order to declare struct timeval
variables.
-rw-r--r-- | async.c | 6 | ||||
-rw-r--r-- | hiredis.h | 4 | ||||
-rw-r--r-- | sds.h | 2 | ||||
-rw-r--r-- | sockcompat.h | 2 | ||||
-rw-r--r-- | win32.h | 10 |
5 files changed, 17 insertions, 7 deletions
@@ -32,11 +32,8 @@ #include "fmacros.h" #include <stdlib.h> #include <string.h> -#ifndef _WIN32 +#ifndef _MSC_VER #include <strings.h> -#else -#define strcasecmp stricmp -#define strncasecmp strnicmp #endif #include <assert.h> #include <ctype.h> @@ -46,6 +43,7 @@ #include "dict.c" #include "sds.h" #include "sslio.h" +#include "win32.h" #define _EL_ADD_READ(ctx) \ do { \ @@ -35,10 +35,10 @@ #define __HIREDIS_H #include "read.h" #include <stdarg.h> /* for va_list */ -#ifndef _WIN32 +#ifndef _MSC_VER #include <sys/time.h> /* for struct timeval */ #else -#include <winsock2.h> +struct timeval; /* forward declaration */ #endif #include <stdint.h> /* uintXX_t, etc */ #include "sds.h" /* for sds */ @@ -34,7 +34,7 @@ #define __SDS_H #define SDS_MAX_PREALLOC (1024*1024) -#ifdef _WIN32 +#ifdef _MSC_VER #define __attribute__(x) #endif diff --git a/sockcompat.h b/sockcompat.h index e0b2e5e..56006c1 100644 --- a/sockcompat.h +++ b/sockcompat.h @@ -50,7 +50,9 @@ #include <ws2tcpip.h> #include <stddef.h> +#ifdef _MSC_VER typedef signed long ssize_t; +#endif /* Emulate the parts of the BSD socket API that we need (override the winsock signatures). */ int win32_getaddrinfo(const char *node, const char *service, const struct addrinfo *hints, struct addrinfo **res); @@ -2,10 +2,20 @@ #define _WIN32_HELPER_INCLUDE #ifdef _MSC_VER +#include <winsock2.h> /* for struct timeval */ + #ifndef inline #define inline __inline #endif +#ifndef strcasecmp +#define strcasecmp stricmp +#endif + +#ifndef strncasecmp +#define strncasecmp strnicmp +#endif + #ifndef va_copy #define va_copy(d,s) ((d) = (s)) #endif |