*** further changes made in November 2006 *** There are a very few to the source code of zlib-1.2.3 used here. - zconf.h includes R's config.h - gzio.c has been amended to allow LFS using fseeko/ftello where these are supported, and fseek64o/ftell64o on Windows. Makefile.in is ours, not zlib's, and allows us to use PIC flags so this can be included in libR.so. As from R 2.12.2, on a Unix-alike we remap all the symbols (not just those remapped by defining Z_PREFIX) to avoid conflict with system versions of zlib (notably 1.2.5) linked into packages' *.so. The known problems are with libxml2 and libggobi, both of which are linked to libz. This is not needed on Windows where the DLL is named Rzlib.dll and symbols are imported from a named DLL. But Rzlib.def is used to confine exports to symbols marked ZEXPORT in zlib.h. From 2.13.0, Z_PREFIX is defined in zconf.h, except on Windows. diff -u ./gzio.c /data/gannet/ripley/R/svn/R-patched/src/extra/zlib/gzio.c --- ./gzio.c 2005-07-11 21:31:48.000000000 +0100 +++ /data/gannet/ripley/R/svn/R-patched/src/extra/zlib/gzio.c 2006-09-04 15:41:33.998757000 +0100 @@ -7,10 +7,35 @@ /* @(#) $Id$ */ +#ifdef HAVE_CONFIG_H +#include +#endif + #include +#if !defined(fdopen) && !defined(HAVE_FDOPEN) +/* not used in R */ +static FILE *fdopen(int fildes, const char *mode) +{ +} +#endif + #include "zutil.h" +/* R ADDITION */ +#if defined(HAVE_OFF_T) && defined(HAVE_FSEEKO) +#define f_seek fseeko +#define f_tell ftello +#else +#ifdef Win32 +#define f_seek fseeko64 +#define f_tell ftello64 +#else +#define f_seek fseek +#define f_tell ftell +#endif +#endif + #ifdef NO_DEFLATE /* for compatibility with old definition */ # define NO_GZCOMPRESS #endif @@ -196,7 +221,7 @@ */ } else { check_header(s); /* skip the .gz header */ - s->start = ftell(s->file) - s->stream.avail_in; + s->start = f_tell(s->file) - s->stream.avail_in; } return (gzFile)s; @@ -592,6 +617,7 @@ } +#ifdef UNUSED /* =========================================================================== Converts, formats, and writes the args to the compressed file under control of the format string, as in fprintf. gzprintf returns the number of @@ -670,6 +696,7 @@ return gzwrite(file, buf, len); } #endif +#endif /* UNUSED */ /* =========================================================================== Writes c, converted to an unsigned char, into the compressed file. @@ -816,7 +843,7 @@ s->back = EOF; s->stream.avail_in = 0; s->stream.next_in = s->inbuf; - if (fseek(s->file, offset, SEEK_SET) < 0) return -1L; + if (f_seek(s->file, offset, SEEK_SET) < 0) return -1L; s->in = s->out = offset; return offset; @@ -870,7 +897,7 @@ if (!s->transparent) (void)inflateReset(&s->stream); s->in = 0; s->out = 0; - return fseek(s->file, s->start, SEEK_SET); + return f_seek(s->file, s->start, SEEK_SET); } /* =========================================================================== diff -u ./zconf.h /data/gannet/ripley/R/svn/R-patched/src/extra/zlib/zconf.h --- ./zconf.h 2005-05-28 07:40:35.000000000 +0100 +++ /data/gannet/ripley/R/svn/R-patched/src/extra/zlib/zconf.h 2006-09-04 15:41:34.538753000 +0100 @@ -8,6 +8,9 @@ #ifndef ZCONF_H #define ZCONF_H +#ifdef HAVE_CONFIG_H +#include +#endif /* * If you *really* need a unique prefix for all types and library functions, * compile with -DZ_PREFIX. The "standard" zlib should be compiled without it. @@ -284,7 +287,7 @@ typedef Byte *voidp; #endif -#if 0 /* HAVE_UNISTD_H -- this line is updated by ./configure */ +#ifdef HAVE_UNISTD_H /* HAVE_UNISTD_H -- this line is updated by ./configure */ # include /* for off_t */ # include /* for SEEK_* and off_t */ # ifdef VMS