diff --git a/gzguts.h b/gzguts.h index dc0ebeb2a2..d501525316 100644 --- a/gzguts.h +++ b/gzguts.h @@ -135,11 +135,12 @@ typedef gz_state *gz_statep; /* shared functions */ void Z_INTERNAL gz_error(gz_state *, int, const char *); - +#ifdef ZLIB_COMPAT +unsigned Z_INTERNAL gz_intmax(void); +#endif /* GT_OFF(x), where x is an unsigned value, is true if x > maximum z_off64_t value -- needed when comparing unsigned to z_off64_t, which is signed (possible z_off64_t types off_t, off64_t, and long are all signed) */ -unsigned Z_INTERNAL gz_intmax(void); #define GT_OFF(x) (sizeof(int) == sizeof(z_off64_t) && (x) > INT_MAX) #endif /* GZGUTS_H_ */ diff --git a/gzlib.c b/gzlib.c index 8c7a1dc0b5..c8bca4d5e1 100644 --- a/gzlib.c +++ b/gzlib.c @@ -524,20 +524,8 @@ void Z_INTERNAL gz_error(gz_state *state, int err, const char *msg) { (void)snprintf(state->msg, strlen(state->path) + strlen(msg) + 3, "%s%s%s", state->path, ": ", msg); } -/* portably return maximum value for an int (when limits.h presumed not - available) -- we need to do this to cover cases where 2's complement not - used, since C standard permits 1's complement and sign-bit representations, - otherwise we could just use ((unsigned)-1) >> 1 */ +#ifdef ZLIB_COMPAT unsigned Z_INTERNAL gz_intmax(void) { -#ifdef INT_MAX return INT_MAX; -#else - unsigned p = 1, q; - do { - q = p; - p <<= 1; - p++; - } while (p > q); - return q >> 1; -#endif } +#endif diff --git a/zlib.map b/zlib.map index ebca10d351..293e803729 100644 --- a/zlib.map +++ b/zlib.map @@ -13,6 +13,7 @@ ZLIB_1.2.0 { zcfree; z_errmsg; gz_error; + gz_intmax; _*; };