Commit aa942e2b authored by Eli Zaretskii's avatar Eli Zaretskii
Browse files

Fix zlib support on MS-Windows.

 configure.ac (HAVE_ZLIB): Don't use -lz on MinGW.

 src/decompress.c <zlib_initialized> [WINDOWSNT]: New static variable.
 (Fzlib_decompress_region) [WINDOWSNT]: Call init_zlib_functions if
 not yet initialized.
parent 7d8e68fe
2013-08-12 Eli Zaretskii <eliz@gnu.org>
* configure.ac (HAVE_ZLIB): Don't use -lz on MinGW.
2013-08-12 Paul Eggert <eggert@cs.ucla.edu> 2013-08-12 Paul Eggert <eggert@cs.ucla.edu>
Minor zlib configuration tweaks. Minor zlib configuration tweaks.
......
...@@ -2955,6 +2955,10 @@ if test "${with_zlib}" != "no"; then ...@@ -2955,6 +2955,10 @@ if test "${with_zlib}" != "no"; then
fi fi
if test "${HAVE_ZLIB}" = "yes"; then if test "${HAVE_ZLIB}" = "yes"; then
AC_DEFINE([HAVE_ZLIB], 1, [Define to 1 if you have the zlib library (-lz).]) AC_DEFINE([HAVE_ZLIB], 1, [Define to 1 if you have the zlib library (-lz).])
### mingw32 doesn't use -lz, since it loads the library dynamically.
if test "${opsys}" = "mingw32"; then
LIBZ=
fi
fi fi
AC_SUBST(LIBZ) AC_SUBST(LIBZ)
......
2013-08-12 Eli Zaretskii <eliz@gnu.org>
* decompress.c <zlib_initialized> [WINDOWSNT]: New static variable.
(Fzlib_decompress_region) [WINDOWSNT]: Call init_zlib_functions if
not yet initialized.
2013-08-12 Lars Magne Ingebrigtsen <larsi@gnus.org> 2013-08-12 Lars Magne Ingebrigtsen <larsi@gnus.org>
* decompress.c (Fzlib_decompress_region): Support zlib * decompress.c (Fzlib_decompress_region): Support zlib
......
...@@ -38,7 +38,7 @@ static Lisp_Object Qzlib_dll; ...@@ -38,7 +38,7 @@ static Lisp_Object Qzlib_dll;
/* Macro for loading zlib functions from the library. */ /* Macro for loading zlib functions from the library. */
#define LOAD_ZLIB_FN(lib,func) { \ #define LOAD_ZLIB_FN(lib,func) { \
fn_##func = (void *) GetProcAddress (lib, #func); \ fn_##func = (void *) GetProcAddress (lib, #func); \
if (!fn_##func) return 0; \ if (!fn_##func) return false; \
} }
DEF_ZLIB_FN (int, inflateInit2_, DEF_ZLIB_FN (int, inflateInit2_,
...@@ -50,6 +50,8 @@ DEF_ZLIB_FN (int, inflate, ...@@ -50,6 +50,8 @@ DEF_ZLIB_FN (int, inflate,
DEF_ZLIB_FN (int, inflateEnd, DEF_ZLIB_FN (int, inflateEnd,
(z_streamp strm)); (z_streamp strm));
static bool zlib_initialized;
static bool static bool
init_zlib_functions (void) init_zlib_functions (void)
{ {
...@@ -58,13 +60,13 @@ init_zlib_functions (void) ...@@ -58,13 +60,13 @@ init_zlib_functions (void)
if (!library) if (!library)
{ {
message1 ("zlib library not found"); message1 ("zlib library not found");
return 0; return false;
} }
LOAD_ZLIB_FN (library, inflateInit2_); LOAD_ZLIB_FN (library, inflateInit2_);
LOAD_ZLIB_FN (library, inflate); LOAD_ZLIB_FN (library, inflate);
LOAD_ZLIB_FN (library, inflateEnd); LOAD_ZLIB_FN (library, inflateEnd);
return 1; return true;
} }
#define fn_inflateInit2(strm, windowBits) \ #define fn_inflateInit2(strm, windowBits) \
...@@ -139,6 +141,11 @@ This function can be called only in unibyte buffers. */) ...@@ -139,6 +141,11 @@ This function can be called only in unibyte buffers. */)
if (! NILP (BVAR (current_buffer, enable_multibyte_characters))) if (! NILP (BVAR (current_buffer, enable_multibyte_characters)))
error ("This function can be called only in unibyte buffers"); error ("This function can be called only in unibyte buffers");
#ifdef WINDOWSNT
if (!zlib_initialized)
zlib_initialized = init_zlib_functions ();
#endif
/* This is a unibyte buffer, so character positions and bytes are /* This is a unibyte buffer, so character positions and bytes are
the same. */ the same. */
istart = XINT (start); istart = XINT (start);
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment