Cleanups, 1 bug fix:
- HTMLparser.c: fixed htmlStartCloseIndexinitialized init
- entities.h: exported xmlInitializePredefinedEntities
- parser.[ch] : added xmlInitParser()
- parserInternals.h : had to export htmlInitAutoClose()
Daniel
diff --git a/ChangeLog b/ChangeLog
index 8ce8e95..eae1eea 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+Sun Oct  1 20:19:39 CEST 2000 Daniel Veillard <Daniel.Veillard@w3.org>
+
+	* HTMLparser.c: fixed htmlStartCloseIndexinitialized init
+	* entities.h: exported xmlInitializePredefinedEntities
+	* parser.[ch] : added xmlInitParser()
+	* parserInternals.h : had to export htmlInitAutoClose()
+
 Sun Oct  1 16:28:22 CEST 2000 Daniel Veillard <Daniel.Veillard@w3.org>
 
 	* xpath.[ch] : fixed some serious XPath Predicate evaluation
diff --git a/HTMLparser.c b/HTMLparser.c
index 2bafa72..6866c4b 100644
--- a/HTMLparser.c
+++ b/HTMLparser.c
@@ -579,7 +579,8 @@
  * htmlInitAutoClose:
  *
  * Initialize the htmlStartCloseIndex for fast lookup of closing tags names.
- *
+ * This is not reentrant. Call xmlInitParser() once before processing in
+ * case of use in multithreaded programs.
  */
 void
 htmlInitAutoClose(void) {
@@ -594,6 +595,7 @@
 	while (htmlStartClose[i] != NULL) i++;
 	i++;
     }
+    htmlStartCloseIndexinitialized = 1;
 }
 
 /**
diff --git a/entities.h b/entities.h
index e5bcc1b..2fad326 100644
--- a/entities.h
+++ b/entities.h
@@ -86,6 +86,7 @@
  * External functions :
  */
 
+void		xmlInitializePredefinedEntities	(void);
 xmlEntityPtr		xmlAddDocEntity		(xmlDocPtr doc,
 						 const xmlChar *name,
 						 int type,
diff --git a/include/libxml/entities.h b/include/libxml/entities.h
index e5bcc1b..2fad326 100644
--- a/include/libxml/entities.h
+++ b/include/libxml/entities.h
@@ -86,6 +86,7 @@
  * External functions :
  */
 
+void		xmlInitializePredefinedEntities	(void);
 xmlEntityPtr		xmlAddDocEntity		(xmlDocPtr doc,
 						 const xmlChar *name,
 						 int type,
diff --git a/include/libxml/parser.h b/include/libxml/parser.h
index 7e0a37a..740d202 100644
--- a/include/libxml/parser.h
+++ b/include/libxml/parser.h
@@ -310,8 +310,9 @@
 
 
 /**
- * Cleanup
+ * Init/Cleanup
  */
+void		xmlInitParser		(void);
 void		xmlCleanupParser	(void);
 
 /**
diff --git a/include/libxml/parserInternals.h b/include/libxml/parserInternals.h
index 8e64113..7b85b8a 100644
--- a/include/libxml/parserInternals.h
+++ b/include/libxml/parserInternals.h
@@ -287,6 +287,13 @@
 						 int val);
 void			xmlNextChar		(xmlParserCtxtPtr ctxt);
 void			xmlParserInputShrink	(xmlParserInputPtr in);
+
+#ifdef LIBXML_HTML_ENABLED
+/*
+ * Actually comes from the HTML parser but launched from the init stuff
+ */
+void			htmlInitAutoClose	(void);
+#endif
 #ifdef __cplusplus
 }
 #endif
diff --git a/parser.c b/parser.c
index 83e2350..3d9a2e7 100644
--- a/parser.c
+++ b/parser.c
@@ -6909,7 +6909,7 @@
     xmlChar start[4];
     xmlCharEncoding enc;
 
-    xmlDefaultSAXHandlerInit();
+    xmlInitParser();
 
     GROW;
 
@@ -9477,6 +9477,30 @@
  *									*
  ************************************************************************/
 
+static int xmlParserInitialized = 0;
+
+/**
+ * xmlInitParser:
+ *
+ * Initialization function for the XML parser.
+ * This is not reentrant. Call once before processing in case of
+ * use in multithreaded programs.
+ */
+
+void
+xmlInitParser(void) {
+    if (xmlParserInitialized) return;
+
+    xmlInitCharEncodingHandlers();
+    xmlInitializePredefinedEntities();
+    xmlDefaultSAXHandlerInit();
+#ifdef LIBXML_HTML_ENABLED
+    htmlInitAutoClose();
+    htmlDefaultSAXHandlerInit();
+#endif
+    xmlParserInitialized = 1;
+}
+
 /**
  * xmlCleanupParser:
  *
@@ -9488,6 +9512,7 @@
 
 void
 xmlCleanupParser(void) {
+    xmlParserInitialized = 0;
     xmlCleanupCharEncodingHandlers();
     xmlCleanupPredefinedEntities();
 }
diff --git a/parser.h b/parser.h
index 7e0a37a..740d202 100644
--- a/parser.h
+++ b/parser.h
@@ -310,8 +310,9 @@
 
 
 /**
- * Cleanup
+ * Init/Cleanup
  */
+void		xmlInitParser		(void);
 void		xmlCleanupParser	(void);
 
 /**
diff --git a/parserInternals.h b/parserInternals.h
index 8e64113..7b85b8a 100644
--- a/parserInternals.h
+++ b/parserInternals.h
@@ -287,6 +287,13 @@
 						 int val);
 void			xmlNextChar		(xmlParserCtxtPtr ctxt);
 void			xmlParserInputShrink	(xmlParserInputPtr in);
+
+#ifdef LIBXML_HTML_ENABLED
+/*
+ * Actually comes from the HTML parser but launched from the init stuff
+ */
+void			htmlInitAutoClose	(void);
+#endif
 #ifdef __cplusplus
 }
 #endif