summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Adler <madler@alumni.caltech.edu>2016-12-03 10:27:14 -0800
committerMark Adler <madler@alumni.caltech.edu>2016-12-04 07:48:48 -0800
commitca50ebd4dfd08dfd7e8c8bb087278e158cd67720 (patch)
tree9262ad9bb1dde6992b41093614d75d63eea2bf31
parentc5ee34c28a9144b1b5a5021d05ed29940c53010c (diff)
downloadzlib-ca50ebd4dfd08dfd7e8c8bb087278e158cd67720.tar.gz
zlib-ca50ebd4dfd08dfd7e8c8bb087278e158cd67720.tar.bz2
zlib-ca50ebd4dfd08dfd7e8c8bb087278e158cd67720.zip
Create z_size_t and z_ssize_t types.
Normally these are set to size_t and ssize_t. But if they do not exist, then they are set to the smallest integer type that can contain a pointer. size_t is unsigned and ssize_t is signed.
-rwxr-xr-xconfigure106
-rw-r--r--gzlib.c4
-rw-r--r--gzread.c2
-rw-r--r--gzwrite.c2
-rw-r--r--test/minigzip.c2
-rw-r--r--zconf.h15
-rw-r--r--zconf.h.cmakein15
-rw-r--r--zconf.h.in15
8 files changed, 144 insertions, 17 deletions
diff --git a/configure b/configure
index 9f2e82e..f60585b 100755
--- a/configure
+++ b/configure
@@ -181,9 +181,12 @@ show $cc -c $test.c
181if test "$gcc" -eq 1 && ($cc -c $test.c) >> configure.log 2>&1; then 181if test "$gcc" -eq 1 && ($cc -c $test.c) >> configure.log 2>&1; then
182 echo ... using gcc >> configure.log 182 echo ... using gcc >> configure.log
183 CC="$cc" 183 CC="$cc"
184 CFLAGS="${CFLAGS--O3} ${ARCHS}" 184 CFLAGS="${CFLAGS--O3}"
185 SFLAGS="${CFLAGS--O3} -fPIC" 185 SFLAGS="${CFLAGS--O3} -fPIC"
186 LDFLAGS="${LDFLAGS} ${ARCHS}" 186 if test "$ARCHS"; then
187 CFLAGS="${CFLAGS} ${ARCHS}"
188 LDFLAGS="${LDFLAGS} ${ARCHS}"
189 fi
187 if test $build64 -eq 1; then 190 if test $build64 -eq 1; then
188 CFLAGS="${CFLAGS} -m64" 191 CFLAGS="${CFLAGS} -m64"
189 SFLAGS="${SFLAGS} -m64" 192 SFLAGS="${SFLAGS} -m64"
@@ -360,16 +363,16 @@ if ($CC -c $CFLAGS $test.c) 2>/dev/null; then
360 } 363 }
361 echo - using any output from compiler to indicate an error >> configure.log 364 echo - using any output from compiler to indicate an error >> configure.log
362else 365else
363try() 366 try()
364{ 367 {
365 show $* 368 show $*
366 ( $* ) >> configure.log 2>&1 369 ( $* ) >> configure.log 2>&1
367 ret=$? 370 ret=$?
368 if test $ret -ne 0; then 371 if test $ret -ne 0; then
369 echo "(exit code "$ret")" >> configure.log 372 echo "(exit code "$ret")" >> configure.log
370 fi 373 fi
371 return $ret 374 return $ret
372} 375 }
373fi 376fi
374 377
375tryboth() 378tryboth()
@@ -445,6 +448,85 @@ esac
445 448
446echo >> configure.log 449echo >> configure.log
447 450
451# check for size_t
452cat > $test.c <<EOF
453#include <stdio.h>
454#include <stdlib.h>
455size_t dummy = 0;
456EOF
457if try $CC -c $CFLAGS $test.c; then
458 echo "Checking for size_t... Yes." | tee -a configure.log
459 need_sizet=0
460else
461 echo "Checking for size_t... No." | tee -a configure.log
462 need_sizet=1
463fi
464
465echo >> configure.log
466
467# check for ssize_t
468cat > $test.c <<EOF
469#include <sys/types.h>
470ssize_t dummy = 0;
471EOF
472if try $CC -c $CFLAGS $test.c; then
473 echo "Checking for ssize_t... Yes." | tee -a configure.log
474 need_ssizet=0
475else
476 echo "Checking for ssize_t... No." | tee -a configure.log
477 need_ssizet=1
478fi
479
480echo >> configure.log
481
482# find the size_t integer type, if needed
483if test $need_sizet -eq 1 -o $need_ssizet -eq 1; then
484 cat > $test.c <<EOF
485long long dummy = 0;
486EOF
487 if try $CC -c $CFLAGS $test.c; then
488 echo "Checking for long long... Yes." | tee -a configure.log
489 cat > $test.c <<EOF
490#include <stdio.h>
491int main(void) {
492 if (sizeof(void *) <= sizeof(int)) puts("int");
493 else if (sizeof(void *) <= sizeof(long)) puts("long");
494 else puts("long long");
495 return 0;
496}
497EOF
498 else
499 echo "Checking for long long... No." | tee -a configure.log
500 cat > $test.c <<EOF
501#include <stdio.h>
502int main(void) {
503 if (sizeof(void *) <= sizeof(int)) puts("int");
504 else puts("long");
505 return 0;
506}
507EOF
508 fi
509 if try $CC $CFLAGS -o $test $test.c; then
510 sizet=`./$test`
511 echo "Checking for a pointer-size integer type..." $sizet"." | tee -a configure.log
512 else
513 echo "Failed to find a pointer-size integer type." | tee -a configure.log
514 leave 1
515 fi
516fi
517
518if test $need_sizet -eq 1; then
519 CFLAGS="${CFLAGS} -DNO_SIZE_T=${sizet}"
520 SFLAGS="${SFLAGS} -DNO_SIZE_T=${sizet}"
521fi
522
523if test $need_ssizet -eq 1; then
524 CFLAGS="${CFLAGS} -DNO_SSIZE_T=${sizet}"
525 SFLAGS="${SFLAGS} -DNO_SSIZE_T=${sizet}"
526fi
527
528echo >> configure.log
529
448# check for large file support, and if none, check for fseeko() 530# check for large file support, and if none, check for fseeko()
449cat > $test.c <<EOF 531cat > $test.c <<EOF
450#include <sys/types.h> 532#include <sys/types.h>
diff --git a/gzlib.c b/gzlib.c
index a52c55b..3b2b71b 100644
--- a/gzlib.c
+++ b/gzlib.c
@@ -94,7 +94,7 @@ local gzFile gz_open(path, fd, mode)
94 const char *mode; 94 const char *mode;
95{ 95{
96 gz_statep state; 96 gz_statep state;
97 size_t len; 97 z_size_t len;
98 int oflag; 98 int oflag;
99#ifdef O_CLOEXEC 99#ifdef O_CLOEXEC
100 int cloexec = 0; 100 int cloexec = 0;
@@ -191,7 +191,7 @@ local gzFile gz_open(path, fd, mode)
191#ifdef WIDECHAR 191#ifdef WIDECHAR
192 if (fd == -2) { 192 if (fd == -2) {
193 len = wcstombs(NULL, path, 0); 193 len = wcstombs(NULL, path, 0);
194 if (len == (size_t)-1) 194 if (len == (z_size_t)-1)
195 len = 0; 195 len = 0;
196 } 196 }
197 else 197 else
diff --git a/gzread.c b/gzread.c
index d41704a..b05229e 100644
--- a/gzread.c
+++ b/gzread.c
@@ -23,7 +23,7 @@ local int gz_load(state, buf, len, have)
23 unsigned len; 23 unsigned len;
24 unsigned *have; 24 unsigned *have;
25{ 25{
26 ssize_t ret; 26 z_ssize_t ret;
27 27
28 *have = 0; 28 *have = 0;
29 do { 29 do {
diff --git a/gzwrite.c b/gzwrite.c
index 61a4de7..eb73d9c 100644
--- a/gzwrite.c
+++ b/gzwrite.c
@@ -74,7 +74,7 @@ local int gz_comp(state, flush)
74 int flush; 74 int flush;
75{ 75{
76 int ret; 76 int ret;
77 ssize_t got; 77 z_ssize_t got;
78 unsigned have; 78 unsigned have;
79 z_streamp strm = &(state->strm); 79 z_streamp strm = &(state->strm);
80 80
diff --git a/test/minigzip.c b/test/minigzip.c
index f4ffbe2..6c64cc7 100644
--- a/test/minigzip.c
+++ b/test/minigzip.c
@@ -500,7 +500,7 @@ void file_uncompress(file)
500 char *infile, *outfile; 500 char *infile, *outfile;
501 FILE *out; 501 FILE *out;
502 gzFile in; 502 gzFile in;
503 size_t len = strlen(file); 503 z_size_t len = strlen(file);
504 504
505 if (len + strlen(GZ_SUFFIX) >= sizeof(buf)) { 505 if (len + strlen(GZ_SUFFIX) >= sizeof(buf)) {
506 fprintf(stderr, "%s: filename too long\n", prog); 506 fprintf(stderr, "%s: filename too long\n", prog);
diff --git a/zconf.h b/zconf.h
index d09f186..2c22d32 100644
--- a/zconf.h
+++ b/zconf.h
@@ -224,6 +224,21 @@
224# define z_const 224# define z_const
225#endif 225#endif
226 226
227#ifndef Z_SOLO
228# ifdef NO_SIZE_T
229 typedef unsigned NO_SIZE_T z_size_t;
230# else
231# include <stddef.h>
232 typedef size_t z_size_t;
233# endif
234# ifdef NO_SSIZE_T
235 typedef NO_SSIZE_T z_ssize_t;
236# else
237# include <sys/types.h>
238 typedef ssize_t z_ssize_t;
239# endif
240#endif
241
227/* Maximum value for memLevel in deflateInit2 */ 242/* Maximum value for memLevel in deflateInit2 */
228#ifndef MAX_MEM_LEVEL 243#ifndef MAX_MEM_LEVEL
229# ifdef MAXSEG_64K 244# ifdef MAXSEG_64K
diff --git a/zconf.h.cmakein b/zconf.h.cmakein
index 70942e4..662fc3d 100644
--- a/zconf.h.cmakein
+++ b/zconf.h.cmakein
@@ -226,6 +226,21 @@
226# define z_const 226# define z_const
227#endif 227#endif
228 228
229#ifndef Z_SOLO
230# ifdef NO_SIZE_T
231 typedef unsigned NO_SIZE_T z_size_t;
232# else
233# include <stddef.h>
234 typedef size_t z_size_t;
235# endif
236# ifdef NO_SSIZE_T
237 typedef NO_SSIZE_T z_ssize_t;
238# else
239# include <sys/types.h>
240 typedef ssize_t z_ssize_t;
241# endif
242#endif
243
229/* Maximum value for memLevel in deflateInit2 */ 244/* Maximum value for memLevel in deflateInit2 */
230#ifndef MAX_MEM_LEVEL 245#ifndef MAX_MEM_LEVEL
231# ifdef MAXSEG_64K 246# ifdef MAXSEG_64K
diff --git a/zconf.h.in b/zconf.h.in
index d09f186..2c22d32 100644
--- a/zconf.h.in
+++ b/zconf.h.in
@@ -224,6 +224,21 @@
224# define z_const 224# define z_const
225#endif 225#endif
226 226
227#ifndef Z_SOLO
228# ifdef NO_SIZE_T
229 typedef unsigned NO_SIZE_T z_size_t;
230# else
231# include <stddef.h>
232 typedef size_t z_size_t;
233# endif
234# ifdef NO_SSIZE_T
235 typedef NO_SSIZE_T z_ssize_t;
236# else
237# include <sys/types.h>
238 typedef ssize_t z_ssize_t;
239# endif
240#endif
241
227/* Maximum value for memLevel in deflateInit2 */ 242/* Maximum value for memLevel in deflateInit2 */
228#ifndef MAX_MEM_LEVEL 243#ifndef MAX_MEM_LEVEL
229# ifdef MAXSEG_64K 244# ifdef MAXSEG_64K