applied zlib patch
diff --git a/win32/Makefile.msvc b/win32/Makefile.msvc
index 89e17d5..0c8ea14 100644
--- a/win32/Makefile.msvc
+++ b/win32/Makefile.msvc
@@ -36,6 +36,7 @@
 #WITH_XPTR = 1
 #WITH_XINCLUDE = 1
 #WITH_ICONV = 1
+#WITH_ZLIB = 0
 #WITH_DEBUG = 1
 #WITH_MEM_DEBUG = 0
 #WITH_SCHEMAS = 1
@@ -80,6 +81,9 @@
 !if "$(WITH_THREADS)" == "1"
 CFLAGS = $(CFLAGS) /D "_REENTRANT"
 !endif
+!if "$(WITH_ZLIB)" == "1"
+CFLAGS = $(CFLAGS) /D "HAVE_ZLIB_H"
+!endif
 
 # The linker and its options.
 LD = link.exe
@@ -96,6 +100,9 @@
 LIBS = $(LIBS) iconv.lib
 !endif 
 !endif 
+!if "$(WITH_ZLIB)" == "1"
+LIBS = $(LIBS) zlib.lib
+!endif
 
 # The archiver and its options.
 AR = lib.exe
diff --git a/win32/configure.js b/win32/configure.js
index 8450439..24632e7 100644
--- a/win32/configure.js
+++ b/win32/configure.js
@@ -42,6 +42,7 @@
 var withXptr = true;
 var withXinclude = true;
 var withIconv = true;
+var withZlib = false;
 var withDebug = true;
 var withMemDebug = false;
 var withSchemas = true;
@@ -104,7 +105,8 @@
 	txt += "  xpath:      Enable XPath support (" + (withXpath? "yes" : "no")  + ")\n";
 	txt += "  xptr:       Enable XPointer support (" + (withXptr? "yes" : "no")  + ")\n";
 	txt += "  xinclude:   Enable XInclude support (" + (withXinclude? "yes" : "no")  + ")\n";
-	txt += "  iconv:      Enable ICONV support (" + (withIconv? "yes" : "no")  + ")\n";
+	txt += "  iconv:      Enable iconv support (" + (withIconv? "yes" : "no")  + ")\n";
+	txt += "  zlib:       Enable zlib support (" + (withZlib? "yes" : "no")  + ")\n";
 	txt += "  xml_debug:  Enable XML debbugging module (" + (withDebug? "yes" : "no")  + ")\n";
 	txt += "  mem_debug:  Enable memory debugger (" + (withMemDebug? "yes" : "no")  + ")\n";
 	txt += "  regexps:    Enable regular expressions (" + (withRegExps? "yes" : "no") + ")\n";
@@ -170,6 +172,7 @@
 	vf.WriteLine("WITH_XPTR=" + (withXptr? "1" : "0"));
 	vf.WriteLine("WITH_XINCLUDE=" + (withXinclude? "1" : "0"));
 	vf.WriteLine("WITH_ICONV=" + (withIconv? "1" : "0"));
+	vf.WriteLine("WITH_ZLIB=" + (withZlib? "1" : "0"));
 	vf.WriteLine("WITH_DEBUG=" + (withDebug? "1" : "0"));
 	vf.WriteLine("WITH_MEM_DEBUG=" + (withMemDebug? "1" : "0"));
 	vf.WriteLine("WITH_SCHEMAS=" + (withSchemas? "1" : "0"));
@@ -227,6 +230,8 @@
 			of.WriteLine(s.replace(/\@WITH_XINCLUDE\@/, withXinclude? "1" : "0"));
 		} else if (s.search(/\@WITH_ICONV\@/) != -1) {
 			of.WriteLine(s.replace(/\@WITH_ICONV\@/, withIconv? "1" : "0"));
+		} else if (s.search(/\@WITH_ZLIB\@/) != -1) {
+			of.WriteLine(s.replace(/\@WITH_ZLIB\@/, withZlib? "1" : "0"));
 		} else if (s.search(/\@WITH_DEBUG\@/) != -1) {
 			of.WriteLine(s.replace(/\@WITH_DEBUG\@/, withDebug? "1" : "0"));
 		} else if (s.search(/\@WITH_MEM_DEBUG\@/) != -1) {
@@ -333,6 +338,8 @@
 			withXinclude = strToBool(arg.substring(opt.length + 1, arg.length));
 		else if (opt == "iconv")
 			withIconv = strToBool(arg.substring(opt.length + 1, arg.length));
+		else if (opt == "zlib")
+			withZlib = strToBool(arg.substring(opt.length + 1, arg.length));
 		else if (opt == "xml_debug")
 			withDebug = strToBool(arg.substring(opt.length + 1, arg.length));
 		else if (opt == "mem_debug")
@@ -417,7 +424,8 @@
 txtOut += "     XPath support: " + boolToStr(withXpath) + "\n";
 txtOut += "  XPointer support: " + boolToStr(withXptr) + "\n";
 txtOut += "  XInclude support: " + boolToStr(withXinclude) + "\n";
-txtOut += "     ICONV support: " + boolToStr(withIconv) + "\n";
+txtOut += "     iconv support: " + boolToStr(withIconv) + "\n";
+txtOut += "      zlib support: " + boolToStr(withZlib) + "\n";
 txtOut += "  Debugging module: " + boolToStr(withDebug) + "\n";
 txtOut += "  Memory debugging: " + boolToStr(withMemDebug) + "\n";
 txtOut += "    Regexp support: " + boolToStr(withRegExps) + "\n";