more code cleanup, especially around error messages, the HTML parser has

* HTMLparser.c Makefile.am legacy.c parser.c parserInternals.c
  include/libxml/xmlerror.h: more code cleanup, especially around
  error messages, the HTML parser has now been upgraded to the new
  handling.
* result/HTML/*: a few changes in the resulting error messages
Daniel
diff --git a/parser.c b/parser.c
index 7197a44..b3f2f11 100644
--- a/parser.c
+++ b/parser.c
@@ -128,7 +128,6 @@
  *									*
  ************************************************************************/
 
-
 /**
  * xmlErrMemory:
  * @ctxt:  an XML parser context
@@ -472,6 +471,32 @@
 }
 
 /**
+ * xmlFatalErrMsgStrIntStr:
+ * @ctxt:  an XML parser context
+ * @error:  the error number
+ * @msg:  the error message
+ * @str1:  an string info
+ * @val:  an integer value
+ * @str2:  an string info
+ *
+ * Handle a fatal parser error, i.e. violating Well-Formedness constraints
+ */
+static void
+xmlFatalErrMsgStrIntStr(xmlParserCtxtPtr ctxt, xmlParserErrors error,
+                  const char *msg, const xmlChar *str1, int val, 
+		  const xmlChar *str2)
+{
+    ctxt->errNo = error;
+    __xmlRaiseError(NULL, NULL,
+                    ctxt, NULL, XML_FROM_PARSER, error, XML_ERR_FATAL,
+                    NULL, 0, (const char *) str1, (const char *) str2,
+		    NULL, val, 0, msg, str1, val, str2);
+    ctxt->wellFormed = 0;
+    if (ctxt->recovery == 0)
+        ctxt->disableSAX = 1;
+}
+
+/**
  * xmlFatalErrMsgStr:
  * @ctxt:  an XML parser context
  * @error:  the error number
@@ -495,6 +520,26 @@
 }
 
 /**
+ * xmlErrMsgStr:
+ * @ctxt:  an XML parser context
+ * @error:  the error number
+ * @msg:  the error message
+ * @val:  a string value
+ *
+ * Handle a non fatal parser error
+ */
+static void
+xmlErrMsgStr(xmlParserCtxtPtr ctxt, xmlParserErrors error,
+                  const char *msg, const xmlChar * val)
+{
+    ctxt->errNo = error;
+    __xmlRaiseError(NULL, NULL, ctxt, NULL,
+                    XML_FROM_PARSER, error, XML_ERR_ERROR,
+                    NULL, 0, (const char *) val, NULL, NULL, 0, 0, msg,
+                    val);
+}
+
+/**
  * xmlNsErr:
  * @ctxt:  an XML parser context
  * @error:  the error number
@@ -1849,9 +1894,8 @@
 		if (ent->content != NULL) {
 		    COPY_BUF(0,buffer,nbchars,ent->content[0]);
 		} else {
-		    if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
-			ctxt->sax->error(ctxt->userData,
-			    "internal error entity has no content\n");
+		    xmlFatalErrMsg(ctxt, XML_ERR_INTERNAL_ERROR,
+			    "predefined entity has no content\n");
 		}
 	    } else if ((ent != NULL) && (ent->content != NULL)) {
 		xmlChar *rep;
@@ -4244,12 +4288,8 @@
 
 		    uri = xmlParseURI((const char *) URI);
 		    if (uri == NULL) {
-			ctxt->errNo = XML_ERR_INVALID_URI;
-			if ((ctxt->sax != NULL) &&
-			    (!ctxt->disableSAX) &&
-			    (ctxt->sax->error != NULL))
-			    ctxt->sax->error(ctxt->userData,
-				        "Invalid URI: %s\n", URI);
+		        xmlErrMsgStr(ctxt, XML_ERR_INVALID_URI,
+				     "Invalid URI: %s\n", URI);
 			/*
 			 * This really ought to be a well formedness error
 			 * but the XML Core WG decided otherwise c.f. issue
@@ -4307,12 +4347,8 @@
 
 		    uri = xmlParseURI((const char *)URI);
 		    if (uri == NULL) {
-			ctxt->errNo = XML_ERR_INVALID_URI;
-			if ((ctxt->sax != NULL) &&
-			    (!ctxt->disableSAX) &&
-			    (ctxt->sax->error != NULL))
-			    ctxt->sax->error(ctxt->userData,
-				        "Invalid URI: %s\n", URI);
+		        xmlErrMsgStr(ctxt, XML_ERR_INVALID_URI,
+				     "Invalid URI: %s\n", URI);
 			/*
 			 * This really ought to be a well formedness error
 			 * but the XML Core WG decided otherwise c.f. issue
@@ -5361,18 +5397,12 @@
 	     */
 	    if ((RAW == '%') && (ctxt->external == 0) &&
 	        (ctxt->inputNr == 1)) {
-		ctxt->errNo = XML_ERR_PEREF_IN_INT_SUBSET;
-		if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
-		    ctxt->sax->error(ctxt->userData, 
+		xmlFatalErrMsg(ctxt, XML_ERR_PEREF_IN_INT_SUBSET,
 	  "PEReference: forbidden within markup decl in internal subset\n");
 	    } else {
-		ctxt->errNo = XML_ERR_ELEMCONTENT_NOT_STARTED;
-		if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
-		    ctxt->sax->error(ctxt->userData, 
+		xmlFatalErrMsg(ctxt, XML_ERR_ELEMCONTENT_NOT_STARTED,
 		      "xmlParseElementDecl: 'EMPTY', 'ANY' or '(' expected\n");
             }
-	    ctxt->wellFormed = 0;
-	    if (ctxt->recovery == 0) ctxt->disableSAX = 1;
 	    return(-1);
 	}
 
@@ -5886,9 +5916,8 @@
 			ctxt->depth--;
 		    } else {
 			ret = XML_ERR_ENTITY_PE_INTERNAL;
-			if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
-			    ctxt->sax->error(ctxt->userData,
-				"Internal: invalid entity type\n");
+			xmlErrMsgStr(ctxt, XML_ERR_INTERNAL_ERROR,
+				     "invalid entity type found\n", NULL);
 		    }
 		    if (ret == XML_ERR_ENTITY_LOOP) {
 			xmlFatalErr(ctxt, XML_ERR_ENTITY_LOOP, NULL);
@@ -6161,14 +6190,11 @@
 			 (ctxt->hasPErefs == 0))) {
 			xmlFatalErrMsgStr(ctxt, XML_ERR_UNDECLARED_ENTITY,
 				 "Entity '%s' not defined\n", name);
-			ctxt->valid = 0;
 		    } else {
-			ctxt->errNo = XML_WAR_UNDECLARED_ENTITY;
-			if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
-			    ctxt->sax->error(ctxt->userData, 
+		        xmlErrMsgStr(ctxt, XML_WAR_UNDECLARED_ENTITY,
 				 "Entity '%s' not defined\n", name);
-			ctxt->valid = 0;
 		    }
+		    ctxt->valid = 0;
 		}
 
 		/*
@@ -6330,9 +6356,9 @@
 			xmlFatalErrMsgStr(ctxt, XML_ERR_UNDECLARED_ENTITY,
 				 "Entity '%s' not defined\n", name);
 		    } else {
-			xmlWarningMsg(ctxt, XML_WAR_UNDECLARED_ENTITY,
+			xmlErrMsgStr(ctxt, XML_WAR_UNDECLARED_ENTITY,
 				      "Entity '%s' not defined\n",
-				      name, NULL);
+				      name);
 		    }
 		    /* TODO ? check regressions ctxt->valid = 0; */
 		}
@@ -6343,12 +6369,8 @@
 		 * unparsed entity
 		 */
 		else if (ent->etype == XML_EXTERNAL_GENERAL_UNPARSED_ENTITY) {
-		    ctxt->errNo = XML_ERR_UNPARSED_ENTITY;
-		    if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
-			ctxt->sax->error(ctxt->userData, 
+		    xmlFatalErrMsgStr(ctxt, XML_ERR_UNPARSED_ENTITY,
 			     "Entity reference to unparsed entity %s\n", name);
-		    ctxt->wellFormed = 0;
-		    if (ctxt->recovery == 0) ctxt->disableSAX = 1;
 		}
 
 		/*
@@ -6358,12 +6380,8 @@
 		 */
 		else if ((ctxt->instate == XML_PARSER_ATTRIBUTE_VALUE) &&
 		         (ent->etype == XML_EXTERNAL_GENERAL_PARSED_ENTITY)) {
-		    ctxt->errNo = XML_ERR_ENTITY_IS_EXTERNAL;
-		    if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
-			ctxt->sax->error(ctxt->userData, 
+		    xmlFatalErrMsgStr(ctxt, XML_ERR_ENTITY_IS_EXTERNAL,
 		     "Attribute references external entity '%s'\n", name);
-		    ctxt->wellFormed = 0;
-		    if (ctxt->recovery == 0) ctxt->disableSAX = 1;
 		}
 		/*
 		 * [ WFC: No < in Attribute Values ]
@@ -6376,12 +6394,9 @@
 			 (!xmlStrEqual(ent->name, BAD_CAST "lt")) &&
 		         (ent->content != NULL) &&
 			 (xmlStrchr(ent->content, '<'))) {
-		    ctxt->errNo = XML_ERR_LT_IN_ATTRIBUTE;
-		    if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
-			ctxt->sax->error(ctxt->userData, 
-	 "'<' in entity '%s' is not allowed in attributes values\n", name);
-		    ctxt->wellFormed = 0;
-		    if (ctxt->recovery == 0) ctxt->disableSAX = 1;
+		    xmlFatalErrMsgStr(ctxt, XML_ERR_LT_IN_ATTRIBUTE,
+		 "'<' in entity '%s' is not allowed in attributes values\n",
+	                              name);
 		}
 
 		/*
@@ -6391,12 +6406,9 @@
 		    switch (ent->etype) {
 			case XML_INTERNAL_PARAMETER_ENTITY:
 			case XML_EXTERNAL_PARAMETER_ENTITY:
-			ctxt->errNo = XML_ERR_ENTITY_IS_PARAMETER;
-			if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
-			    ctxt->sax->error(ctxt->userData, 
-		     "Attempt to reference the parameter entity '%s'\n", name);
-			ctxt->wellFormed = 0;
-			if (ctxt->recovery == 0) ctxt->disableSAX = 1;
+			    xmlFatalErrMsgStr(ctxt, XML_ERR_ENTITY_IS_PARAMETER,
+			 "Attempt to reference the parameter entity '%s'\n",
+			                      name);
 			break;
 			default:
 			break;
@@ -6820,7 +6832,7 @@
     GROW;
     name = xmlParseName(ctxt);
     if (name == NULL) {
-	xmlFatalErrMsg(ctxt, XML_ERR_SPACE_REQUIRED,
+	xmlFatalErrMsg(ctxt, XML_ERR_NAME_REQUIRED,
 	               "error parsing attribute name\n");
         return(NULL);
     }
@@ -7049,7 +7061,7 @@
 
     GROW;
     if ((RAW != '<') || (NXT(1) != '/')) {
-	xmlFatalErrMsg(ctxt, XML_ERR_SPACE_REQUIRED,
+	xmlFatalErrMsg(ctxt, XML_ERR_LTSLASH_REQUIRED,
 		       "xmlParseEndTag: '</' not found\n");
 	return;
     }
@@ -7074,20 +7086,10 @@
      *
      */
     if (name != (xmlChar*)1) {
-	ctxt->errNo = XML_ERR_TAG_NAME_MISMATCH;
-	if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL)) {
-	    if (name != NULL) {
-		ctxt->sax->error(ctxt->userData,
+        if (name == NULL) name = BAD_CAST "unparseable";
+        xmlFatalErrMsgStrIntStr(ctxt, XML_ERR_TAG_NAME_MISMATCH,
 		     "Opening and ending tag mismatch: %s line %d and %s\n",
-		                 ctxt->name, line, name);
-            } else {
-		ctxt->sax->error(ctxt->userData,
-		     "Ending tag error for: %s line %d\n", ctxt->name, line);
-	    }
-
-	}     
-	ctxt->wellFormed = 0;
-	if (ctxt->recovery == 0) ctxt->disableSAX = 1;
+		                ctxt->name, line, name);
     }
 
     /*
@@ -8033,20 +8035,10 @@
      *
      */
     if (name != (xmlChar*)1) {
-	ctxt->errNo = XML_ERR_TAG_NAME_MISMATCH;
-	if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL)) {
-	    if (name != NULL) {
-		ctxt->sax->error(ctxt->userData,
+        if (name == NULL) name = BAD_CAST "unparseable";
+        xmlFatalErrMsgStrIntStr(ctxt, XML_ERR_TAG_NAME_MISMATCH,
 		     "Opening and ending tag mismatch: %s line %d and %s\n",
-		                 ctxt->name, line, name);
-            } else {
-		ctxt->sax->error(ctxt->userData,
-		     "Ending tag error for: %s line %d\n", ctxt->name, line);
-	    }
-
-	}     
-	ctxt->wellFormed = 0;
-	if (ctxt->recovery == 0) ctxt->disableSAX = 1;
+		                ctxt->name, line, name);
     }
 
     /*
@@ -8341,13 +8333,9 @@
     if (RAW == '>') {
         NEXT1;
     } else {
-	ctxt->errNo = XML_ERR_GT_REQUIRED;
-	if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
-	    ctxt->sax->error(ctxt->userData,
-	                     "Couldn't find end of Start Tag %s line %d\n",
-	                     name, line);
-	ctxt->wellFormed = 0;
-	if (ctxt->recovery == 0) ctxt->disableSAX = 1;
+        xmlFatalErrMsgStrIntStr(ctxt, XML_ERR_GT_REQUIRED,
+		     "Couldn't find end of Start Tag %s line %d\n",
+		                name, line, NULL);
 
 	/*
 	 * end of parsing of this node.
@@ -8376,12 +8364,10 @@
      */
     xmlParseContent(ctxt);
     if (!IS_BYTE_CHAR(RAW)) {
-	ctxt->errNo = XML_ERR_TAG_NOT_FINISHED;
-	if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
-	    ctxt->sax->error(ctxt->userData,
-	         "Premature end of data in tag %s line %d\n", name, line);
-	ctxt->wellFormed = 0;
-	if (ctxt->recovery == 0) ctxt->disableSAX = 1;
+        xmlFatalErrMsgStrIntStr(ctxt, XML_ERR_TAG_NOT_FINISHED,
+		     "Premature end of data in tag %s line %d\n"
+		     "Couldn't find end of Start Tag %s line %d\n",
+		                name, line, NULL);
 
 	/*
 	 * end of parsing of this node.
@@ -8649,9 +8635,7 @@
 	    if (handler != NULL) {
 		xmlSwitchToEncoding(ctxt, handler);
 	    } else {
-		ctxt->errNo = XML_ERR_UNSUPPORTED_ENCODING;
-		if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
-		    ctxt->sax->error(ctxt->userData,
+		xmlFatalErrMsgStr(ctxt, XML_ERR_UNSUPPORTED_ENCODING,
 			"Unsupported encoding %s\n", encoding);
 		return(NULL);
 	    }