diff --git a/src/common/torint.h b/src/common/torint.h index 07e291e51e..8018fd8894 100644 --- a/src/common/torint.h +++ b/src/common/torint.h @@ -18,6 +18,20 @@ #ifdef HAVE_SYS_TYPES_H #include #endif +#ifdef HAVE_LIMITS_H +#include +#endif +#ifdef HAVE_SYS_LIMITS_H +#include +#endif +#ifdef HAVE_MACHINE_LIMITS_H +#ifndef __FreeBSD__ + /* FreeBSD has a bug where it complains that this file is obsolete, + and I should migrate to using sys/limits. It complains even when + I include both. */ +#include +#endif +#endif #if (SIZEOF_INT8_T != 0) @@ -180,6 +194,31 @@ typedef uint32_t uintptr_t; #error "Missing type uint64_t" #endif +/* XXXX This assumes a sane (2's-complement) representation. But if you + * aren't 2's complement, and you don't define LONG_MAX, then you're so + * bizarre that I want nothing to do with you. */ +#ifndef LONG_MAX +#if (SIZEOF_LONG == 4) +#define LONG_MAX 0x7fffffffL +#elif (SIZEOF_LONG == 8) +#define LONG_MAX 0x7fffffffffffffffL +#else +#error "Can't define LONG_MAX" +#endif +#endif + +#ifndef UINT_MAX +#if (SIZEOF_INT == 2) +#define UINT_MAX 0xffffu +#elif (SIZEOF_INT == 4) +#define UINT_MAX 0xffffffffu +#elif (SIZEOF_INT == 8) +#define UINT_MAX 0xffffffffffffffffu +#else +#error "Can't define UINT_MAX" +#endif +#endif + #endif /* __TORINT_H */ /* diff --git a/src/common/util.c b/src/common/util.c index 36a8048d2a..4886f9b103 100644 --- a/src/common/util.c +++ b/src/common/util.c @@ -874,12 +874,6 @@ tv_udiff(struct timeval *start, struct timeval *end) long udiff; long secdiff = end->tv_sec - start->tv_sec; -/* XXX some SunOS machines don't have LONG_MAX defined in the includes - * we use. Surely there is a better fix... */ -#ifndef LONG_MAX -#define LONG_MAX 2147483647L -#endif - if (secdiff+1 > LONG_MAX/1000000) { log_fn(LOG_WARN, "comparing times too far apart."); return LONG_MAX;