summaryrefslogtreecommitdiff
path: root/gzguts.h
diff options
context:
space:
mode:
Diffstat (limited to 'gzguts.h')
-rw-r--r--gzguts.h11
1 files changed, 11 insertions, 0 deletions
diff --git a/gzguts.h b/gzguts.h
index 26791b0..84a9797 100644
--- a/gzguts.h
+++ b/gzguts.h
@@ -19,6 +19,7 @@
#ifdef STDC
# include <string.h>
# include <stdlib.h>
+# include <limits.h>
#endif
#include <fcntl.h>
@@ -119,3 +120,13 @@ ZEXTERN void ZEXPORT gz_error OF((gz_statep, int, const char *));
#if defined UNDER_CE && defined NO_ERRNO_H
ZEXTERN char ZEXPORT *gz_strwinerror OF((DWORD error));
#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) */
+#ifdef INT_MAX
+# define GT_OFF(x) (sizeof(int) == sizeof(z_off64_t) && (x) > INT_MAX)
+#else
+ZEXTERN unsigned ZEXPORT gz_intmax OF((void));
+# define GT_OFF(x) (sizeof(int) == sizeof(z_off64_t) && (x) > gz_intmax())
+#endif