/*
* Include the appropriate OS header files on Windows and various flavors
- * of UNIX, and also define some additional items and include various
- * non-OS header files on Windows, and; this isolates most of the platform
+ * of UNIX, include various non-OS header files on Windows, and define
+ * various items as needed, to isolate most of tcpdump's platform
* differences to this one file.
*/
#ifndef tcpdump_stdinc_h
#define tcpdump_stdinc_h
+#include <errno.h>
+
#ifdef WIN32
+#include <stdint.h>
#include <stdio.h>
#include <winsock2.h>
-#include <Ws2tcpip.h>
+#include <ws2tcpip.h>
+#include "bittypes.h" /* in wpcap's Win32/include */
#include <ctype.h>
#include <time.h>
#include <io.h>
#include <sys/types.h>
#include <net/netdb.h> /* in wpcap's Win32/include */
-#ifndef NBBY
-#define NBBY 8
-#endif
-
#ifndef uint8_t
#define uint8_t unsigned char
#endif
#endif /* _MSC_EXTENSIONS */
-#if !defined(__MINGW32__) && !defined(__WATCOMC__)
+#ifdef _MSC_VER
#define stat _stat
#define open _open
#define fstat _fstat
#define read _read
#define close _close
#define O_RDONLY _O_RDONLY
-#endif /* __MINGW32__ */
-
-#ifdef __MINGW32__
-#include <stdint.h>
-#endif
+#endif /* _MSC_VER */
/* Protos for missing/x.c functions (ideally <missing/addrinfo.h>
* should be used, but it clashes with <ws2tcpip.h>).
#define INET6_ADDRSTRLEN 46
#endif
+/* It is in MSVC's <errno.h>, but not defined in MingW+Watcom.
+ */
+#ifndef EAFNOSUPPORT
+#define EAFNOSUPPORT WSAEAFNOSUPPORT
+#endif
+
#ifndef caddr_t
typedef char* caddr_t;
#endif /* caddr_t */
* Note: this also requires that padding be put into the structure,
* at least for compilers where it's implemented as __attribute__((packed)).
*/
-#if defined(_MSC_VER) && defined(UNALIGNED)
+#if !(defined(_MSC_VER) && defined(UNALIGNED))
/* MSVC may have its own macro defined with the same name and purpose. */
-#else
+#undef UNALIGNED
#define UNALIGNED __attribute__((packed))
#endif