Huge cleanup, I switched to compile with
-Wall -g -O -ansi -pedantic -W -Wunused -Wimplicit
-Wreturn-type -Wswitch -Wcomment -Wtrigraphs -Wformat
-Wchar-subscripts -Wuninitialized -Wparentheses -Wshadow
-Wpointer-arith -Wcast-align -Wwrite-strings -Waggregate-return
-Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Winline
- HTMLparser.[ch] HTMLtree.c SAX.c debugXML.c encoding.[ch]
  encoding.h entities.c error.c list.[ch] nanoftp.c
  nanohttp.c parser.[ch] parserInternals.[ch] testHTML.c
  testSAX.c testURI.c testXPath.c tree.[ch] uri.c
  valid.[ch] xinclude.c xmlIO.[ch] xmllint.c xmlmemory.c
  xpath.c xpathInternals.h xpointer.[ch] example/gjobread.c:
  Cleanup, staticfied a number of non-exported functions,
  detected and cleaned up a dozen of problem found this way,
  avoided a lot of public function name/typedef/system names clashes
- doc/xml.html: updated
- configure.in: switched private flags to the really pedantic ones.
Daniel
diff --git a/parserInternals.c b/parserInternals.c
index 281b75f..0f6dfcc 100644
--- a/parserInternals.c
+++ b/parserInternals.c
@@ -48,6 +48,19 @@
 #include <libxml/xmlIO.h>
 #include <libxml/uri.h>
 
+/************************************************************************
+ *									*
+ * 		When running GCC in vaacum cleaner mode			*
+ *									*
+ ************************************************************************/
+
+#ifdef __GNUC__
+#define UNUSED __attribute__((__unused__))
+#else
+#define UNUSED
+#endif
+
+void xmlUpgradeOldNs(xmlDocPtr doc);
 
 /************************************************************************
  *									*
@@ -932,7 +945,7 @@
 xmlParserInputRead(xmlParserInputPtr in, int len) {
     int ret;
     int used;
-    int index;
+    int indx;
 
 #ifdef DEBUG_INPUT
     xmlGenericError(xmlGenericErrorContext, "Read\n");
@@ -956,9 +969,9 @@
         /*
 	 * the buffer has been realloced
 	 */
-	index = in->cur - in->base;
+	indx = in->cur - in->base;
 	in->base = in->buf->buffer->content;
-	in->cur = &in->buf->buffer->content[index];
+	in->cur = &in->buf->buffer->content[indx];
     }
     in->end = &in->buf->buffer->content[in->buf->buffer->use];
 
@@ -981,7 +994,7 @@
 int
 xmlParserInputGrow(xmlParserInputPtr in, int len) {
     int ret;
-    int index;
+    int indx;
 
 #ifdef DEBUG_INPUT
     xmlGenericError(xmlGenericErrorContext, "Grow\n");
@@ -993,8 +1006,8 @@
 
     CHECK_BUFFER(in);
 
-    index = in->cur - in->base;
-    if (in->buf->buffer->use > (unsigned int) index + INPUT_CHUNK) {
+    indx = in->cur - in->base;
+    if (in->buf->buffer->use > (unsigned int) indx + INPUT_CHUNK) {
 
 	CHECK_BUFFER(in);
 
@@ -1015,9 +1028,9 @@
         /*
 	 * the buffer has been realloced
 	 */
-	index = in->cur - in->base;
+	indx = in->cur - in->base;
 	in->base = in->buf->buffer->content;
-	in->cur = &in->buf->buffer->content[index];
+	in->cur = &in->buf->buffer->content[indx];
     }
     in->end = &in->buf->buffer->content[in->buf->buffer->use];
 
@@ -1036,7 +1049,7 @@
 xmlParserInputShrink(xmlParserInputPtr in) {
     int used;
     int ret;
-    int index;
+    int indx;
 
 #ifdef DEBUG_INPUT
     xmlGenericError(xmlGenericErrorContext, "Shrink\n");
@@ -1053,7 +1066,7 @@
      * Do not shrink on large buffers whose only a tiny fraction
      * was consumned
      */
-    if (in->buf->buffer->use > used + 2 * INPUT_CHUNK)
+    if ((int) in->buf->buffer->use > used + 2 * INPUT_CHUNK)
 	return;
     if (used > INPUT_CHUNK) {
 	ret = xmlBufferShrink(in->buf->buffer, used - LINE_LEN);
@@ -1074,9 +1087,9 @@
         /*
 	 * the buffer has been realloced
 	 */
-	index = in->cur - in->base;
+	indx = in->cur - in->base;
 	in->base = in->buf->buffer->content;
-	in->cur = &in->buf->buffer->content[index];
+	in->cur = &in->buf->buffer->content[indx];
     }
     in->end = &in->buf->buffer->content[in->buf->buffer->use];
 
@@ -1481,18 +1494,16 @@
 }
 
 /**
- * xmlCopyChar:
- * @len:  pointer to the length of the char read (or zero)
- * @array:  pointer to an arry of xmlChar
+ * xmlCopyCharMultiByte:
+ * @out:  pointer to an arry of xmlChar
  * @val:  the char value
  *
  * append the char value in the array 
  *
  * Returns the number of xmlChar written
  */
-
 int
-xmlCopyChar(int len, xmlChar *out, int val) {
+xmlCopyCharMultiByte(xmlChar *out, int val) {
     /*
      * We are supposed to handle UTF8, check it's valid
      * From rfc2044: encoding of the Unicode values on UTF-8:
@@ -1502,34 +1513,45 @@
      * 0000 0080-0000 07FF   110xxxxx 10xxxxxx
      * 0000 0800-0000 FFFF   1110xxxx 10xxxxxx 10xxxxxx 
      */
-    if (len == 0) {
-	if (val < 0) len = 0;
-	else if (val < 0x80) len = 1;
-	else if (val < 0x800) len = 2;
-	else if (val < 0x10000) len = 3;
-	else if (val < 0x110000) len = 4;
-	if (len == 0) {
+    if  (val >= 0x80) {
+	xmlChar *savedout = out;
+	int bits;
+	if (val <   0x800) { *out++= (val >>  6) | 0xC0;  bits=  0; }
+	else if (val < 0x10000) { *out++= (val >> 12) | 0xE0;  bits=  6;}
+	else if (val < 0x110000)  { *out++= (val >> 18) | 0xF0;  bits=  12; }
+	else {
 	    xmlGenericError(xmlGenericErrorContext,
 		    "Internal error, xmlCopyChar 0x%X out of bound\n",
 		    val);
 	    return(0);
 	}
-    }
-    if (len > 1) {
-	int bits; 
-
-        if      (val <    0x80) {  *out++=  val;                bits= -6; }
-        else if (val <   0x800) {  *out++= (val >>  6) | 0xC0;  bits=  0; }
-        else if (val < 0x10000) {  *out++= (val >> 12) | 0xE0;  bits=  6; }
-        else                  {    *out++= (val >> 18) | 0xF0;  bits= 12; }
- 
-        for ( ; bits >= 0; bits-= 6)
-            *out++= ((val >> bits) & 0x3F) | 0x80 ;
-
-        return(len);
+	for ( ; bits >= 0; bits-= 6)
+	    *out++= ((val >> bits) & 0x3F) | 0x80 ;
+	return (out - savedout);
     }
     *out = (xmlChar) val;
-    return(1);
+    return 1;
+}
+
+/**
+ * xmlCopyChar:
+ * @len:  Ignored, compatibility
+ * @out:  pointer to an arry of xmlChar
+ * @val:  the char value
+ *
+ * append the char value in the array 
+ *
+ * Returns the number of xmlChar written
+ */
+
+int
+xmlCopyChar(int len UNUSED, xmlChar *out, int val) {
+    /* the len parameter is ignored */
+    if  (val >= 0x80) {
+	return(xmlCopyCharMultiByte (out, val));
+    }
+    *out = (xmlChar) val;
+    return 1;
 }
 
 /************************************************************************
@@ -2575,8 +2597,8 @@
  *      must deallocate it !
  */
 xmlChar *
-xmlDecodeEntities(xmlParserCtxtPtr ctxt, int len, int what,
-                  xmlChar end, xmlChar  end2, xmlChar end3) {
+xmlDecodeEntities(xmlParserCtxtPtr ctxt UNUSED, int len UNUSED, int what UNUSED,
+	      xmlChar end UNUSED, xmlChar  end2 UNUSED, xmlChar end3 UNUSED) {
 #if 0
     xmlChar *buffer = NULL;
     unsigned int buffer_size = 0;
@@ -2709,7 +2731,7 @@
  */
 
 xmlChar *
-xmlNamespaceParseNCName(xmlParserCtxtPtr ctxt) {
+xmlNamespaceParseNCName(xmlParserCtxtPtr ctxt UNUSED) {
 #if 0
     xmlChar buf[XML_MAX_NAMELEN + 5];
     int len = 0, l;
@@ -2778,7 +2800,7 @@
  */
 
 xmlChar *
-xmlNamespaceParseQName(xmlParserCtxtPtr ctxt, xmlChar **prefix) {
+xmlNamespaceParseQName(xmlParserCtxtPtr ctxt UNUSED, xmlChar **prefix UNUSED) {
 
     static int deprecated = 0;
     if (!deprecated) {
@@ -2820,7 +2842,7 @@
  */
 
 xmlChar *
-xmlNamespaceParseNSDef(xmlParserCtxtPtr ctxt) {
+xmlNamespaceParseNSDef(xmlParserCtxtPtr ctxt UNUSED) {
     static int deprecated = 0;
     if (!deprecated) {
 	xmlGenericError(xmlGenericErrorContext,
@@ -2855,7 +2877,7 @@
  * Returns the string parser or NULL.
  */
 xmlChar *
-xmlParseQuotedString(xmlParserCtxtPtr ctxt) {
+xmlParseQuotedString(xmlParserCtxtPtr ctxt UNUSED) {
     static int deprecated = 0;
     if (!deprecated) {
 	xmlGenericError(xmlGenericErrorContext,
@@ -2953,7 +2975,7 @@
  */
 
 void
-xmlParseNamespace(xmlParserCtxtPtr ctxt) {
+xmlParseNamespace(xmlParserCtxtPtr ctxt UNUSED) {
     static int deprecated = 0;
     if (!deprecated) {
 	xmlGenericError(xmlGenericErrorContext,
@@ -3080,7 +3102,7 @@
  */
 
 xmlChar *
-xmlScanName(xmlParserCtxtPtr ctxt) {
+xmlScanName(xmlParserCtxtPtr ctxt UNUSED) {
     static int deprecated = 0;
     if (!deprecated) {
 	xmlGenericError(xmlGenericErrorContext,
@@ -3153,7 +3175,7 @@
  *      http://www.w3.org/TR/REC-xml#entproc
  */
 void
-xmlParserHandleReference(xmlParserCtxtPtr ctxt) {
+xmlParserHandleReference(xmlParserCtxtPtr ctxt UNUSED) {
     static int deprecated = 0;
     if (!deprecated) {
 	xmlGenericError(xmlGenericErrorContext,
@@ -3399,7 +3421,7 @@
  */
 
 void
-xmlHandleEntity(xmlParserCtxtPtr ctxt, xmlEntityPtr entity) {
+xmlHandleEntity(xmlParserCtxtPtr ctxt UNUSED, xmlEntityPtr entity UNUSED) {
     static int deprecated = 0;
     if (!deprecated) {
 	xmlGenericError(xmlGenericErrorContext,
@@ -3452,7 +3474,8 @@
  * Returns NULL this functionnality had been removed
  */
 xmlNsPtr
-xmlNewGlobalNs(xmlDocPtr doc, const xmlChar *href, const xmlChar *prefix) {
+xmlNewGlobalNs(xmlDocPtr doc UNUSED, const xmlChar *href UNUSED,
+	       const xmlChar *prefix UNUSED) {
     static int deprecated = 0;
     if (!deprecated) {
 	xmlGenericError(xmlGenericErrorContext,
@@ -3513,7 +3536,7 @@
  * DEPRECATED
  */
 void
-xmlUpgradeOldNs(xmlDocPtr doc) {
+xmlUpgradeOldNs(xmlDocPtr doc UNUSED) {
     static int deprecated = 0;
     if (!deprecated) {
 	xmlGenericError(xmlGenericErrorContext,