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/xpointer.c b/xpointer.c
index 37c13a6..cfd3ee4 100644
--- a/xpointer.c
+++ b/xpointer.c
@@ -15,6 +15,18 @@
 #include "config.h"
 #endif
 
+/************************************************************************
+ *									*
+ * 		When running GCC in vaacum cleaner mode			*
+ *									*
+ ************************************************************************/
+
+#ifdef __GNUC__
+#define UNUSED __attribute__((__unused__))
+#else
+#define UNUSED
+#endif
+
 /**
  * TODO: better handling of error cases, the full expression should
  *       be parsed beforehand instead of a progressive evaluation
@@ -66,7 +78,7 @@
  *
  * Returns the number of child for an element, -1 in case of error
  */
-int
+static int
 xmlXPtrGetArity(xmlNodePtr cur) {
     int i;
     if (cur == NULL) 
@@ -89,7 +101,7 @@
  * Returns the index of the node in its parent children list, -1
  *         in case of error
  */
-int
+static int
 xmlXPtrGetIndex(xmlNodePtr cur) {
     int i;
     if (cur == NULL) 
@@ -111,7 +123,7 @@
  *
  * Returns the @no'th element child of @cur or NULL
  */
-xmlNodePtr
+static xmlNodePtr
 xmlXPtrGetNthChild(xmlNodePtr cur, int no) {
     int i;
     if (cur == NULL) 
@@ -149,7 +161,7 @@
  * Returns -2 in case of error 1 if first point < second point, 0 if
  *         that's the same point, -1 otherwise
  */
-int
+static int
 xmlXPtrCmpPoints(xmlNodePtr node1, int index1, xmlNodePtr node2, int index2) {
     if ((node1 == NULL) || (node2 == NULL))
 	return(-2);
@@ -169,19 +181,19 @@
 /**
  * xmlXPtrNewPoint:
  * @node:  the xmlNodePtr
- * @index:  the index within the node
+ * @indx:  the indx within the node
  *
  * Create a new xmlXPathObjectPtr of type point
  *
  * Returns the newly created object.
  */
-xmlXPathObjectPtr
-xmlXPtrNewPoint(xmlNodePtr node, int index) {
+static xmlXPathObjectPtr
+xmlXPtrNewPoint(xmlNodePtr node, int indx) {
     xmlXPathObjectPtr ret;
 
     if (node == NULL)
 	return(NULL);
-    if (index < 0)
+    if (indx < 0)
 	return(NULL);
 
     ret = (xmlXPathObjectPtr) xmlMalloc(sizeof(xmlXPathObject));
@@ -193,7 +205,7 @@
     memset(ret, 0 , (size_t) sizeof(xmlXPathObject));
     ret->type = XPATH_POINT;
     ret->user = (void *) node;
-    ret->index = index;
+    ret->index = indx;
     return(ret);
 }
 
@@ -203,7 +215,7 @@
  *
  * Make sure the points in the range are in the right order
  */
-void
+static void
 xmlXPtrRangeCheckOrder(xmlXPathObjectPtr range) {
     int tmp;
     xmlNodePtr tmp2;
@@ -234,7 +246,7 @@
  *
  * Return 1 if equal, 0 otherwise
  */
-int
+static int
 xmlXPtrRangesEqual(xmlXPathObjectPtr range1, xmlXPathObjectPtr range2) {
     if (range1 == range2)
 	return(1);
@@ -862,8 +874,8 @@
  * Move the current node of the nodeset on the stack to the
  * given child if found
  */
-void
-xmlXPtrGetChildNo(xmlXPathParserContextPtr ctxt, int index) {
+static void
+xmlXPtrGetChildNo(xmlXPathParserContextPtr ctxt, int indx) {
     xmlNodePtr cur = NULL;
     xmlXPathObjectPtr obj;
     xmlNodeSetPtr oldset;
@@ -871,12 +883,12 @@
     CHECK_TYPE(XPATH_NODESET);
     obj = valuePop(ctxt);
     oldset = obj->nodesetval;
-    if ((index <= 0) || (oldset == NULL) || (oldset->nodeNr != 1)) {
+    if ((indx <= 0) || (oldset == NULL) || (oldset->nodeNr != 1)) {
 	xmlXPathFreeObject(obj);
 	valuePush(ctxt, xmlXPathNewNodeSet(NULL));
 	return;
     }
-    cur = xmlXPtrGetNthChild(oldset->nodeTab[0], index);
+    cur = xmlXPtrGetNthChild(oldset->nodeTab[0], indx);
     if (cur == NULL) {
 	xmlXPathFreeObject(obj);
 	valuePush(ctxt, xmlXPathNewNodeSet(NULL));
@@ -920,7 +932,7 @@
  * TODO: there is no new scheme registration mechanism
  */
 
-void
+static void
 xmlXPtrEvalXPtrPart(xmlXPathParserContextPtr ctxt, xmlChar *name) {
     xmlChar *buffer, *cur;
     int len;
@@ -1062,7 +1074,7 @@
  * Parse and evaluate a Full XPtr i.e. possibly a cascade of XPath based
  * expressions or other shemes.
  */
-void
+static void
 xmlXPtrEvalFullXPtr(xmlXPathParserContextPtr ctxt, xmlChar *name) {
     if (name == NULL)
     name = xmlXPathParseName(ctxt);
@@ -1130,7 +1142,7 @@
  * Parse and evaluate a Child Sequence. This routine also handle the
  * case of a Bare Name used to get a document ID.
  */
-void
+static void
 xmlXPtrEvalChildSeq(xmlXPathParserContextPtr ctxt, xmlChar *name) {
     /*
      * XPointer don't allow by syntax to adress in mutirooted trees
@@ -1171,7 +1183,7 @@
  *
  * Parse and evaluate an XPointer
  */
-void
+static void
 xmlXPtrEvalXPointer(xmlXPathParserContextPtr ctxt) {
     if (ctxt->valueTab == NULL) {
 	/* Allocate the value stack */
@@ -1346,13 +1358,13 @@
  * Returns an xmlNodePtr list or NULL.
  *         the caller has to free the node tree.
  */
-xmlNodePtr
+static xmlNodePtr
 xmlXPtrBuildRangeNodeList(xmlXPathObjectPtr range) {
     /* pointers to generated nodes */
     xmlNodePtr list = NULL, last = NULL, parent = NULL, tmp;
     /* pointers to traversal nodes */
     xmlNodePtr start, cur, end;
-    int index, index2;
+    int index1, index2;
 
     if (range == NULL)
 	return(NULL);
@@ -1367,7 +1379,7 @@
 	return(xmlCopyNode(start, 1));
 
     cur = start;
-    index = range->index;
+    index1 = range->index;
     index2 = range->index2;
     while (cur != NULL) {
 	if (cur == end) {
@@ -1379,10 +1391,10 @@
 		    tmp = xmlNewTextLen(NULL, 0);
 		} else {
 		    len = index2;
-		    if ((cur == start) && (index > 1)) {
-			content += (index - 1);
-			len -= (index - 1);
-			index = 0;
+		    if ((cur == start) && (index1 > 1)) {
+			content += (index1 - 1);
+			len -= (index1 - 1);
+			index1 = 0;
 		    } else {
 			len = index2;
 		    }
@@ -1414,9 +1426,9 @@
 		    end = xmlXPtrGetNthChild(cur, index2 - 1);
 		    index2 = 0;
 		}
-		if ((cur == start) && (index > 1)) {
-		    cur = xmlXPtrGetNthChild(cur, index - 1);
-		    index = 0;
+		if ((cur == start) && (index1 > 1)) {
+		    cur = xmlXPtrGetNthChild(cur, index1 - 1);
+		    index1 = 0;
 		} else {
 		    cur = cur->children;
 		}
@@ -1433,20 +1445,20 @@
 		if (content == NULL) {
 		    tmp = xmlNewTextLen(NULL, 0);
 		} else {
-		    if (index > 1) {
-			content += (index - 1);
+		    if (index1 > 1) {
+			content += (index1 - 1);
 		    }
 		    tmp = xmlNewText(content);
 		}
 		last = list = tmp;
 	    } else {
-		if ((cur == start) && (index > 1)) {
+		if ((cur == start) && (index1 > 1)) {
 		    tmp = xmlCopyNode(cur, 0);
 		    list = tmp;
 		    parent = tmp;
 		    last = NULL;
-		    cur = xmlXPtrGetNthChild(cur, index - 1);
-		    index = 0;
+		    cur = xmlXPtrGetNthChild(cur, index1 - 1);
+		    index1 = 0;
 		    /*
 		     * Now gather the remaining nodes from cur to end
 		     */
@@ -1580,7 +1592,7 @@
  *
  * Returns the number of location children
  */
-int
+static int
 xmlXPtrNbLocChildren(xmlNodePtr node) {
     int ret = 0;
     if (node == NULL)
@@ -1619,12 +1631,15 @@
 /**
  * xmlXPtrHereFunction:
  * @ctxt:  the XPointer Parser context
+ * @nargs:  the number of args
  *
  * Function implementing here() operation 
  * as described in 5.4.3
  */
 void
 xmlXPtrHereFunction(xmlXPathParserContextPtr ctxt, int nargs) {
+    CHECK_ARITY(0);
+
     if (ctxt->context->here == NULL)
 	XP_ERROR(XPTR_SYNTAX_ERROR);
     
@@ -1634,12 +1649,15 @@
 /**
  * xmlXPtrOriginFunction:
  * @ctxt:  the XPointer Parser context
+ * @nargs:  the number of args
  *
  * Function implementing origin() operation 
  * as described in 5.4.3
  */
 void
 xmlXPtrOriginFunction(xmlXPathParserContextPtr ctxt, int nargs) {
+    CHECK_ARITY(0);
+
     if (ctxt->context->origin == NULL)
 	XP_ERROR(XPTR_SYNTAX_ERROR);
     
@@ -1649,6 +1667,7 @@
 /**
  * xmlXPtrStartPointFunction:
  * @ctxt:  the XPointer Parser context
+ * @nargs:  the number of args
  *
  * Function implementing start-point() operation 
  * as described in 5.4.3
@@ -1740,6 +1759,7 @@
 /**
  * xmlXPtrEndPointFunction:
  * @ctxt:  the XPointer Parser context
+ * @nargs:  the number of args
  *
  * Function implementing end-point() operation 
  * as described in 5.4.3
@@ -1841,7 +1861,7 @@
  *
  * Returns a new location or NULL in case of error
  */
-xmlXPathObjectPtr
+static xmlXPathObjectPtr
 xmlXPtrCoveringRange(xmlXPathParserContextPtr ctxt, xmlXPathObjectPtr loc) {
     if (loc == NULL)
 	return(NULL);
@@ -1876,11 +1896,11 @@
 			case XML_DOCUMENT_NODE:
 			case XML_NOTATION_NODE:
 			case XML_HTML_DOCUMENT_NODE: {
-			    int index = xmlXPtrGetIndex(node);
+			    int indx = xmlXPtrGetIndex(node);
 			     
 			    node = node->parent;
-			    return(xmlXPtrNewRange(node, index - 1,
-					           node, index + 1));
+			    return(xmlXPtrNewRange(node, indx - 1,
+					           node, indx + 1));
 			}
 			default:
 			    return(NULL);
@@ -1896,6 +1916,7 @@
 /**
  * xmlXPtrRangeFunction:
  * @ctxt:  the XPointer Parser context
+ * @nargs:  the number of args
  *
  * Function implementing the range() function 5.4.3
  *  location-set range(location-set )
@@ -1956,7 +1977,7 @@
  *
  * Returns a new location or NULL in case of error
  */
-xmlXPathObjectPtr
+static xmlXPathObjectPtr
 xmlXPtrInsideRange(xmlXPathParserContextPtr ctxt, xmlXPathObjectPtr loc) {
     if (loc == NULL)
 	return(NULL);
@@ -2044,6 +2065,7 @@
 /**
  * xmlXPtrRangeInsideFunction:
  * @ctxt:  the XPointer Parser context
+ * @nargs:  the number of args
  *
  * Function implementing the range-inside() function 5.4.3
  *  location-set range-inside(location-set )
@@ -2105,6 +2127,7 @@
 /**
  * xmlXPtrRangeToFunction:
  * @ctxt:  the XPointer Parser context
+ * @nargs:  the number of args
  *
  * Implement the range-to() XPointer function
  */
@@ -2225,25 +2248,25 @@
 /**
  * xmlXPtrAdvanceChar:
  * @node:  the node
- * @index:  the index
+ * @indx:  the indx
  * @bytes:  the number of bytes
  *
  * Advance a point of the associated number of bytes (not UTF8 chars)
  *
  * Returns -1 in case of failure, 0 otherwise
  */
-int
-xmlXPtrAdvanceChar(xmlNodePtr *node, int *index, int bytes) {
+static int
+xmlXPtrAdvanceChar(xmlNodePtr *node, int *indx, int bytes) {
     xmlNodePtr cur;
     int pos;
     int len;
 
-    if ((node == NULL) || (index == NULL))
+    if ((node == NULL) || (indx == NULL))
 	return(-1);
     cur = *node;
     if (cur == NULL)
 	return(-1);
-    pos = *index;
+    pos = *indx;
 
     while (bytes >= 0) {
 	/*
@@ -2265,7 +2288,7 @@
 
 	if (cur == NULL) {
 	    *node = NULL;
-	    *index = 0;
+	    *indx = 0;
 	    return(-1);
 	}
 
@@ -2275,7 +2298,7 @@
 	if (pos == 0) pos = 1;
 	if (bytes == 0) {
 	    *node = cur;
-	    *index = pos;
+	    *indx = pos;
 	    return(0);
 	}
 	/*
@@ -2290,7 +2313,7 @@
 #endif
 	}
 	if (pos > len) {
-	    /* Strange, the index in the text node is greater than it's len */
+	    /* Strange, the indx in the text node is greater than it's len */
 	    STRANGE
 	    pos = len;
 	}
@@ -2301,7 +2324,7 @@
 	} else if (pos + bytes < len) {
 	    pos += bytes;
 	    *node = cur;
-	    *index = pos;
+	    *indx = pos;
 	    return(0);
 	}
     }
@@ -2324,7 +2347,7 @@
  *            of the range and (@end, @endindex) will endicate the end
  *            of the range
  */
-int
+static int
 xmlXPtrMatchString(const xmlChar *string, xmlNodePtr start, int startindex,
 	            xmlNodePtr *end, int *endindex) {
     xmlNodePtr cur;
@@ -2422,7 +2445,7 @@
  *            of the range and (@end, @endindex) will endicate the end
  *            of the range
  */
-int
+static int
 xmlXPtrSearchString(const xmlChar *string, xmlNodePtr *start, int *startindex,
 	            xmlNodePtr *end, int *endindex) {
     xmlNodePtr cur;
@@ -2519,15 +2542,15 @@
  *
  * Returns -1 in case of failure, 0 otherwise
  */
-int
-xmlXPtrGetLastChar(xmlNodePtr *node, int *index) {
+static int
+xmlXPtrGetLastChar(xmlNodePtr *node, int *indx) {
     xmlNodePtr cur;
     int pos, len = 0;
 
-    if ((node == NULL) || (index == NULL))
+    if ((node == NULL) || (indx == NULL))
 	return(-1);
     cur = *node;
-    pos = *index;
+    pos = *indx;
 
     if (cur == NULL)
 	return(-1);
@@ -2557,7 +2580,7 @@
     if (cur == NULL)
 	return(-1);
     *node = cur;
-    *index = len;
+    *indx = len;
     return(0);
 }
 
@@ -2565,31 +2588,31 @@
  * xmlXPtrGetStartPoint:
  * @obj:  an range
  * @node:  the resulting node
- * @index:  the resulting index
+ * @indx:  the resulting index
  *
  * read the object and return the start point coordinates.
  *
  * Returns -1 in case of failure, 0 otherwise
  */
-int
-xmlXPtrGetStartPoint(xmlXPathObjectPtr obj, xmlNodePtr *node, int *index) {
-    if ((obj == NULL) || (node == NULL) || (index == NULL))
+static int
+xmlXPtrGetStartPoint(xmlXPathObjectPtr obj, xmlNodePtr *node, int *indx) {
+    if ((obj == NULL) || (node == NULL) || (indx == NULL))
 	return(-1);
 
     switch (obj->type) {
         case XPATH_POINT:
 	    *node = obj->user;
 	    if (obj->index <= 0)
-		*index = 0;
+		*indx = 0;
 	    else
-		*index = obj->index;
+		*indx = obj->index;
 	    return(0);
         case XPATH_RANGE:
 	    *node = obj->user;
 	    if (obj->index <= 0)
-		*index = 0;
+		*indx = 0;
 	    else
-		*index = obj->index;
+		*indx = obj->index;
 	    return(0);
 	default:
 	    return(-1);
@@ -2601,31 +2624,31 @@
  * xmlXPtrGetEndPoint:
  * @obj:  an range
  * @node:  the resulting node
- * @index:  the resulting index
+ * @indx:  the resulting indx
  *
  * read the object and return the end point coordinates.
  *
  * Returns -1 in case of failure, 0 otherwise
  */
-int
-xmlXPtrGetEndPoint(xmlXPathObjectPtr obj, xmlNodePtr *node, int *index) {
-    if ((obj == NULL) || (node == NULL) || (index == NULL))
+static int
+xmlXPtrGetEndPoint(xmlXPathObjectPtr obj, xmlNodePtr *node, int *indx) {
+    if ((obj == NULL) || (node == NULL) || (indx == NULL))
 	return(-1);
 
     switch (obj->type) {
         case XPATH_POINT:
 	    *node = obj->user;
 	    if (obj->index <= 0)
-		*index = 0;
+		*indx = 0;
 	    else
-		*index = obj->index;
+		*indx = obj->index;
 	    return(0);
         case XPATH_RANGE:
 	    *node = obj->user;
 	    if (obj->index <= 0)
-		*index = 0;
+		*indx = 0;
 	    else
-		*index = obj->index;
+		*indx = obj->index;
 	    return(0);
 	default:
 	    return(-1);
@@ -2636,6 +2659,7 @@
 /**
  * xmlXPtrStringRangeFunction:
  * @ctxt:  the XPointer Parser context
+ * @nargs:  the number of args
  *
  * Function implementing the string-range() function
  * range as described in 5.4.2 
@@ -2678,7 +2702,7 @@
     xmlXPathObjectPtr string;
     xmlXPathObjectPtr position = NULL;
     xmlXPathObjectPtr number = NULL;
-    int found, pos, num;
+    int found, pos = 0, num = 0;
 
     /*
      * Grab the arguments
@@ -2755,15 +2779,15 @@
 		} else if (xmlXPtrAdvanceChar(&start, &startindex,
 			                      pos - 1) == 0) {
 		    if ((number != NULL) && (num > 0)) {
-			int rindex;
+			int rindx;
 			xmlNodePtr rend;
 			rend = start;
-			rindex = startindex - 1;
-			if (xmlXPtrAdvanceChar(&rend, &rindex,
+			rindx = startindex - 1;
+			if (xmlXPtrAdvanceChar(&rend, &rindx,
 				               num) == 0) {
 			    xmlXPtrLocationSetAdd(newset,
 					xmlXPtrNewRange(start, startindex,
-							rend, rindex));
+							rend, rindx));
 			}
 		    } else if ((number != NULL) && (num <= 0)) {
 			xmlXPtrLocationSetAdd(newset,