Add back gz_intmax for zlib compatibility when linking statically

This commit is contained in:
Nathan Moinvaziri 2024-02-04 14:18:56 -08:00 committed by Hans Kristian Rosbach
parent 0d2984d0d3
commit efae7678b0
3 changed files with 6 additions and 16 deletions

View File

@ -135,11 +135,12 @@ typedef gz_state *gz_statep;
/* shared functions */ /* shared functions */
void Z_INTERNAL gz_error(gz_state *, int, const char *); 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 /* 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 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) */ (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) #define GT_OFF(x) (sizeof(int) == sizeof(z_off64_t) && (x) > INT_MAX)
#endif /* GZGUTS_H_ */ #endif /* GZGUTS_H_ */

16
gzlib.c
View File

@ -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); (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 #ifdef ZLIB_COMPAT
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 */
unsigned Z_INTERNAL gz_intmax(void) { unsigned Z_INTERNAL gz_intmax(void) {
#ifdef INT_MAX
return INT_MAX; return INT_MAX;
#else
unsigned p = 1, q;
do {
q = p;
p <<= 1;
p++;
} while (p > q);
return q >> 1;
#endif
} }
#endif

View File

@ -13,6 +13,7 @@ ZLIB_1.2.0 {
zcfree; zcfree;
z_errmsg; z_errmsg;
gz_error; gz_error;
gz_intmax;
_*; _*;
}; };