- doc/encoding.html doc/xml.html: added I18N doc
- encoding.[ch] HTMLtree.[ch] parser.c HTMLparser.c: I18N encoding
  improvements, both parser and filters, added ASCII & HTML,
  fixed the ISO-Latin-1 one
- xmllint.c testHTML.c: added/made visible --encode
- debugXML.c : cleanup
- most .c files: applied patches due to warning on Windows and
  when using Sun Pro cc compiler
- xpath.c : cleanup memleaks
- nanoftp.c : added a TESTING preprocessor flag for standalong
  compile so that people can report bugs more easilly
- nanohttp.c : ditched socklen_t which was a portability mess
  and replaced it with unsigned int.
- tree.[ch]: added xmlHasProp()
- TODO: updated
- test/ : added more test for entities, NS, encoding, HTML, wap
- configure.in: preparing for 2.2.0 release
Daniel
diff --git a/entities.c b/entities.c
index c541d67..7505943 100644
--- a/entities.c
+++ b/entities.c
@@ -128,7 +128,7 @@
      * fill the structure.
      */
     ret->name = xmlStrdup(name);
-    ret->etype = type;
+    ret->etype = (xmlEntityType) type;
     if (ExternalID != NULL)
 	ret->ExternalID = xmlStrdup(ExternalID);
     if (SystemID != NULL)
@@ -754,9 +754,6 @@
  * Contrary to xmlEncodeEntities, this routine is reentrant, and result
  * must be deallocated.
  *
- * TODO !!!! Once moved to UTF-8 internal encoding, the encoding of non-ascii
- *           get erroneous.
- *
  * Returns A newly allocated string with the substitution done.
  */
 xmlChar *
@@ -832,20 +829,7 @@
 	     */
 	    *out++ = *cur;
 	} else if (*cur >= 0x80) {
-	    if (html) {
-		char buf[15], *ptr;
-
-		/*
-		 * TODO: improve by searching in html40EntitiesTable
-		 */
-#ifdef HAVE_SNPRINTF
-		snprintf(buf, 9, "&#%d;", *cur);
-#else
-		sprintf(buf, "&#%d;", *cur);
-#endif
-		ptr = buf;
-		while (*ptr != 0) *out++ = *ptr++;
-	    } else if (doc->encoding != NULL) {
+	    if ((doc->encoding != NULL) || (html)) {
 		/*
 		 * TODO !!!
 		 */
@@ -900,6 +884,7 @@
 #else
 		    sprintf(buf, "&#%d;", *cur);
 #endif
+		    buf[9] = 0;
 		    ptr = buf;
 		    while (*ptr != 0) *out++ = *ptr++;
 		    cur++;
@@ -909,11 +894,11 @@
 		 * We could do multiple things here. Just save as a char ref
 		 */
 #ifdef HAVE_SNPRINTF
-		snprintf(buf, 14, "&#x%X;", val);
+		snprintf(buf, 9, "&#x%X;", val);
 #else
 		sprintf(buf, "&#x%X;", val);
 #endif
-		buf[14] = 0;
+		buf[9] = 0;
 		ptr = buf;
 		while (*ptr != 0) *out++ = *ptr++;
 		cur += l;
@@ -927,6 +912,7 @@
 #else
 	    sprintf(buf, "&#%d;", *cur);
 #endif
+	    buf[9] = 0;
             ptr = buf;
 	    while (*ptr != 0) *out++ = *ptr++;
 	}