Hard-configure z_off_t as long. Soft configuration using HAVE_UNISTD_H

just breaks the prototypes for gzseek() and gztell() when an application
defines HAVE_UNISTD_H before including <zlib.h>.  z_off_t was always
long for compiling zlib, but was sometimes off_t for compiling
applications, e.g., Ethereal 0.7.5.

This "fix" preserves bug for bug binary compatibility.  z_off_t should
be off_t for everything, but zlib doesn't support off_t being longer
than long, so using the correct type without fixing zlib's internals
would at best break binary compatibility.  This "fix" also make the
namespace problems for HAVE_UNISTD_H no worse than hundreds of other
namespace prooblems in zconf.h.  I'll wait for a new release of zlib
for proper fixes.

Reported by:	Guy Harris via jkh
This commit is contained in:
bde 1999-10-09 11:31:50 +00:00
parent db2544af13
commit 70983e046b

View File

@ -238,16 +238,18 @@ typedef uLong FAR uLongf;
#ifdef HAVE_UNISTD_H
# include <sys/types.h> /* for off_t */
# include <unistd.h> /* for SEEK_* and off_t */
# define z_off_t off_t
#endif
#ifndef SEEK_SET
# define SEEK_SET 0 /* Seek from beginning of file. */
# define SEEK_CUR 1 /* Seek from current position. */
# define SEEK_END 2 /* Set file pointer to EOF plus "offset" */
#endif
#ifndef z_off_t
# define z_off_t long
#endif
/*
* This is hard-configured for FreeBSD, since zlib doesn't actually support
* using the system off_t for offsets unless off_t is no longer than long.
*/
#define z_off_t long
/* MVS linker does not support external names larger than 8 bytes */
#if defined(__MVS__)