diff --git a/ChangeLog b/ChangeLog
index 0920659..0acb383 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,4 +1,11 @@
-Tue Sep 28 13:07:37 CEST 2004 Daniel Veillard <daniel@veillard.com
+Tue Sep 28 14:30:22 CEST 2004 Daniel Veillard <daniel@veillard.com>
+
+	* acconfig.h config.h.in configure.in xmlIO.c xmlregexp.c xmlschemas.c
+	  xmlschemastypes.c: another patch from Malcolm Tredinnick fixing
+	  warning generated by the Nonstop Kernel Open System Services 
+	  compiler #151710
+
+Tue Sep 28 13:07:37 CEST 2004 Daniel Veillard <daniel@veillard.com>
 
 	* python/libxml.py: applied patch from Malcolm Tredinnick fixing
 	  python exception hierarchy #139824
diff --git a/acconfig.h b/acconfig.h
index 7e4d9b8..dedcf1d 100644
--- a/acconfig.h
+++ b/acconfig.h
@@ -6,7 +6,6 @@
 #undef HAVE_ISNAN
 #undef HAVE_LIBHISTORY
 #undef HAVE_LIBREADLINE
-#undef SOCKLEN_T
 #undef HAVE_LIBPTHREAD
 #undef HAVE_PTHREAD_H
 
diff --git a/config.h.in b/config.h.in
index 915ef0c..8a65287 100644
--- a/config.h.in
+++ b/config.h.in
@@ -7,7 +7,6 @@
 #undef HAVE_ISNAN
 #undef HAVE_LIBHISTORY
 #undef HAVE_LIBREADLINE
-#undef SOCKLEN_T
 #undef HAVE_LIBPTHREAD
 #undef HAVE_PTHREAD_H
 
@@ -256,7 +255,7 @@
 /* Define to the version of this package. */
 #undef PACKAGE_VERSION
 
-/* Define if compiler has function prototypes */
+/* Define to 1 if the C compiler supports function prototypes. */
 #undef PROTOTYPES
 
 /* Determine what socket length (socklen_t) data type is */
@@ -274,6 +273,9 @@
 /* Using the Win32 Socket implementation */
 #undef _WINSOCKAPI_
 
+/* Define like PROTOTYPES; this can be used by system headers. */
+#undef __PROTOTYPES
+
 /* Win32 Std C name mangling work-around */
 #undef snprintf
 
diff --git a/configure.in b/configure.in
index 24d2619..db83c92 100644
--- a/configure.in
+++ b/configure.in
@@ -217,7 +217,7 @@
       AC_MSG_RESULT(int *)
       SOCKLEN_T=int],[
       AC_MSG_WARN(could not determine)
-      SOCKLEN_T="unsigned int"])])])
+      SOCKLEN_T="int"])])])
 AC_DEFINE_UNQUOTED(SOCKLEN_T, $SOCKLEN_T, [Determine what socket length (socklen_t) data type is])
 
 dnl ***********************Checking for availability of IPv6*******************
diff --git a/xmlIO.c b/xmlIO.c
index 13a57e7..198fb15 100644
--- a/xmlIO.c
+++ b/xmlIO.c
@@ -2217,7 +2217,9 @@
     int i = 0;
     void *context = NULL;
     char *unescaped = NULL;
+#ifdef HAVE_ZLIB_H
     int is_file_uri = 1;
+#endif
 
     if (xmlOutputCallbackInitialized == 0)
 	xmlRegisterDefaultOutputCallbacks();
@@ -2228,7 +2230,9 @@
     if (puri != NULL) {
         if ((puri->scheme != NULL) &&
 	    (!xmlStrEqual(BAD_CAST puri->scheme, BAD_CAST "file")))
+#ifdef HAVE_ZLIB_H
 	    is_file_uri = 0;
+#endif
 	/*
 	 * try to limit the damages of the URI unescaping code.
 	 */
diff --git a/xmlregexp.c b/xmlregexp.c
index 0435d67..ac23db2 100644
--- a/xmlregexp.c
+++ b/xmlregexp.c
@@ -4008,11 +4008,8 @@
  */
 static void
 xmlFAParseRegExp(xmlRegParserCtxtPtr ctxt, int top) {
-    xmlRegStatePtr start, end, oldend, oldstart;
+    xmlRegStatePtr start, end;
 
-    oldend = ctxt->end;
-
-    oldstart = ctxt->state;
     /* if not top start should have been generated by an epsilon trans */
     start = ctxt->state;
     ctxt->end = NULL;
diff --git a/xmlschemas.c b/xmlschemas.c
index 2592dc3..1878505 100644
--- a/xmlschemas.c
+++ b/xmlschemas.c
@@ -12534,7 +12534,6 @@
     xmlSchemaPtr ret = NULL;
     xmlDocPtr doc;
     xmlNodePtr root;
-    int nberrors;
     int preserve = 0;
 
     /*
@@ -12547,7 +12546,6 @@
     if (ctxt == NULL)
         return (NULL);
 
-    nberrors = ctxt->nberrors;
     ctxt->nberrors = 0;
     ctxt->counter = 0;
     ctxt->container = NULL;
@@ -12895,7 +12893,7 @@
     xmlSchemaTypePtr  biType; /* The build-in type. */
     xmlSchemaTypePtr tmpType;
     xmlSchemaFacetLinkPtr facetLink;
-    int retFacet, hasFacet;
+    int retFacet;
     xmlSchemaFacetPtr facet;
     unsigned long len = 0;
 
@@ -12997,7 +12995,6 @@
 	* Process patters. Pattern facets are ORed at type level 
 	* and ANDed if derived. Walk the base type axis.
 	*/
-	hasFacet = 0;
 	tmpType = type;
 	facet = NULL;
 	do {
diff --git a/xmlschemastypes.c b/xmlschemastypes.c
index d04a99b..c5a0342 100644
--- a/xmlschemastypes.c
+++ b/xmlschemastypes.c
@@ -529,7 +529,7 @@
 	    else
 		return (0);	    				 
 	default:
-	    return (0);
+	    break;
     }
     return (0);
 }
