aboutsummaryrefslogtreecommitdiff
path: root/src/include/ndpi_win32.h
diff options
context:
space:
mode:
authorJacob Masen-Smith <smith.jacob@gmail.com>2017-11-22 01:11:31 -0800
committerJacob Masen-Smith <smith.jacob@gmail.com>2017-11-22 01:11:49 -0800
commit33e0be73f7d7b398b246933f67c643a467b7f8f2 (patch)
treee3579d0e9df7fc0bbbe994dc9765907466ff6e69 /src/include/ndpi_win32.h
parent6e62367b56d7b79f840b02604c9d5e8f6340a0c5 (diff)
Fixed ndpi_win32.h so that it compiles on MinGW+GCC
Diffstat (limited to 'src/include/ndpi_win32.h')
-rw-r--r--src/include/ndpi_win32.h13
1 files changed, 12 insertions, 1 deletions
diff --git a/src/include/ndpi_win32.h b/src/include/ndpi_win32.h
index 8a952b293..d4109dcb2 100644
--- a/src/include/ndpi_win32.h
+++ b/src/include/ndpi_win32.h
@@ -24,7 +24,18 @@
#ifndef __NDPI_WIN32_H__
#define __NDPI_WIN32_H__
+// fix a MinGW build issue "error: multiple storage classes in declaration specifiers" due to MinGW
+// defining extern for __forceinline types
+#if (defined(__MINGW32__) || defined(__MINGW64__)) && defined(__GNUC__)
+// MinGW winnt.h uses FORCEINLINE which is originally defined as __forceinline, but requires extern
+#undef FORCEINLINE
+#define FORCEINLINE extern __inline__ __attribute__((__always_inline__,__gnu_inline__))
+#undef __forceinline
+#define __forceinline __inline__ __attribute__((__always_inline__,__gnu_inline__))
+#endif
+
#include <winsock2.h>
+#include <windows.h>
#include <ws2tcpip.h>
#include <process.h>
#include <io.h>
@@ -40,7 +51,7 @@
#define IPVERSION 4 /* on *nix it is defined in netinet/ip.h */
-extern char* strsep(char **sp, const char *sep);
+extern char* strsep(char **sp, char *sep);
typedef unsigned char u_char;
typedef unsigned short u_short;