X-Git-Url: https://git.tcpdump.org/tcpdump/blobdiff_plain/53412397f6ce23f1c189e27adc81ec44ec94d2ef..c91ffeae22ab1c7d6714f0935a51030d088a5f5c:/tcpdump-stdinc.h diff --git a/tcpdump-stdinc.h b/tcpdump-stdinc.h index d350d1be..d971341c 100644 --- a/tcpdump-stdinc.h +++ b/tcpdump-stdinc.h @@ -27,9 +27,6 @@ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * - * @(#) $Header: /tcpdump/master/tcpdump/tcpdump-stdinc.h,v 1.18 2007-11-24 18:13:33 mcr Exp $ (LBL) */ /* @@ -60,17 +57,12 @@ #endif #if !defined(__MINGW32__) && !defined(__WATCOMC__) -#undef toascii -#define isascii __isascii -#define toascii __toascii #define stat _stat #define open _open #define fstat _fstat #define read _read #define close _close #define O_RDONLY _O_RDONLY - -typedef short ino_t; #endif /* __MINGW32__ */ #ifdef __MINGW32__ @@ -84,12 +76,15 @@ extern const char *inet_ntop (int, const void *, char *, size_t); extern int inet_pton (int, const char *, void *); extern int inet_aton (const char *cp, struct in_addr *addr); -#ifndef INET6_ADDRSTRLEN -#define INET6_ADDRSTRLEN 46 +/* + * With MSVC, for C, __inline is used to make a function an inline. + */ +#ifdef _MSC_VER +#define inline __inline #endif -#ifndef toascii -#define toascii(c) ((c) & 0x7f) +#ifndef INET6_ADDRSTRLEN +#define INET6_ADDRSTRLEN 46 #endif #ifndef caddr_t @@ -166,7 +161,11 @@ typedef char* 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) +/* MSVC may have its own macro defined with the same name and purpose. */ +#else #define UNALIGNED __attribute__((packed)) +#endif #if defined(WIN32) || defined(MSDOS) #define FOPEN_READ_TXT "rt" @@ -180,7 +179,7 @@ typedef char* caddr_t; #define FOPEN_WRITE_BIN FOPEN_WRITE_TXT #endif -#if defined(__GNUC__) && defined(__i386__) && !defined(__APPLE__) && !defined(__ntohl) +#if defined(__GNUC__) && defined(__i386__) && !defined(__APPLE__) && !defined(__ntohl) #undef ntohl #undef ntohs #undef htonl @@ -223,4 +222,57 @@ typedef char* caddr_t; #define FALSE 0 #endif +/* + * The Apple deprecation workaround macros below were adopted from the + * FreeRADIUS server code under permission of Alan DeKok and Arran Cudbard-Bell. + */ + +#define XSTRINGIFY(x) #x + +/* + * Macros for controlling warnings in GCC >= 4.2 and clang >= 2.8 + */ +#define DIAG_JOINSTR(x,y) XSTRINGIFY(x ## y) +#define DIAG_DO_PRAGMA(x) _Pragma (#x) + +#if defined(__GNUC__) && ((__GNUC__ * 100) + __GNUC_MINOR__) >= 402 +# define DIAG_PRAGMA(x) DIAG_DO_PRAGMA(GCC diagnostic x) +# if ((__GNUC__ * 100) + __GNUC_MINOR__) >= 406 +# define DIAG_OFF(x) DIAG_PRAGMA(push) DIAG_PRAGMA(ignored DIAG_JOINSTR(-W,x)) +# define DIAG_ON(x) DIAG_PRAGMA(pop) +# else +# define DIAG_OFF(x) DIAG_PRAGMA(ignored DIAG_JOINSTR(-W,x)) +# define DIAG_ON(x) DIAG_PRAGMA(warning DIAG_JOINSTR(-W,x)) +# endif +#elif defined(__clang__) && ((__clang_major__ * 100) + __clang_minor__ >= 208) +# define DIAG_PRAGMA(x) DIAG_DO_PRAGMA(clang diagnostic x) +# define DIAG_OFF(x) DIAG_PRAGMA(push) DIAG_PRAGMA(ignored DIAG_JOINSTR(-W,x)) +# define DIAG_ON(x) DIAG_PRAGMA(pop) +#else +# define DIAG_OFF(x) +# define DIAG_ON(x) +#endif + +/* + * For dealing with APIs which are only deprecated in OSX (like the OpenSSL API) + */ +#ifdef __APPLE__ +# define USES_APPLE_DEPRECATED_API DIAG_OFF(deprecated-declarations) +# define USES_APPLE_RST DIAG_ON(deprecated-declarations) +#else +# define USES_APPLE_DEPRECATED_API +# define USES_APPLE_RST +#endif + +/* + * end of Apple deprecation workaround macros + */ + +#ifndef min +#define min(a,b) ((a)>(b)?(b):(a)) +#endif +#ifndef max +#define max(a,b) ((b)>(a)?(b):(a)) +#endif + #endif /* tcpdump_stdinc_h */