started integrating the core of the thread support not activated yet but

* Makefile.am include/libxml/Makefile.am
  include/libxml/globals.h globals.c  include/libxml/threads.h
  threads.c build_glob.py global.data xmlcatalog.c acconfig.h
  configure.in: started integrating the core of the thread support
  not activated yet but half integrated. The code should still
  compile and work anyway.
Daniel
diff --git a/globals.c b/globals.c
new file mode 100644
index 0000000..c509287
--- /dev/null
+++ b/globals.c
@@ -0,0 +1,498 @@
+/*
+ * globals.c: definition and handling of the set of global variables
+ *            of the library
+ *
+ * The bottom of this file is automatically generated by build_glob.py
+ * based on the description file global.data
+ *
+ * See Copyright for the status of this software.
+ *
+ * Gary Pennington <Gary.Pennington@uk.sun.com>
+ * daniel@veillard.com
+ */
+
+#include "libxml.h"
+
+#include <libxml/threads.h>
+#include <libxml/globals.h>
+
+/*
+ * Helpful Macro
+ */
+#ifdef WITH_PTHREAD_H
+#if defined(SOLARIS)
+#define THR_MAIN(tid) (-1 == thr_main() || tid == thr_main())
+#else
+#define THR_MAIN(tid) (tid == 0 || tid == 1024)
+#endif
+
+#define IS_MAIN_THREAD (THR_MAIN(pthread_self()))
+#else
+#define IS_MAIN_THREAD 1
+#endif
+
+/************************************************************************
+ * 									*
+ *	All the user accessible global variables of the library		*
+ * 									*
+ ************************************************************************/
+
+const char *xmlParserVersion = LIBXML_VERSION_STRING;
+/*
+ * Memory allocation routines
+ */
+#if defined(DEBUG_MEMORY_LOCATION) | defined(DEBUG_MEMORY)
+xmlFreeFunc xmlFree = (xmlFreeFunc) xmlMemFree;
+xmlMallocFunc xmlMalloc = (xmlMallocFunc) xmlMemMalloc;
+xmlReallocFunc xmlRealloc = (xmlReallocFunc) xmlMemRealloc;
+xmlStrdupFunc xmlMemStrdup = (xmlStrdupFunc) xmlMemoryStrdup;
+#else
+xmlFreeFunc xmlFree = (xmlFreeFunc) free;
+xmlMallocFunc xmlMalloc = (xmlMallocFunc) malloc;
+xmlReallocFunc xmlRealloc = (xmlReallocFunc) realloc;
+xmlStrdupFunc xmlMemStrdup = (xmlStrdupFunc) strdup;
+#endif
+
+/*
+ * Buffers stuff
+ */
+xmlBufferAllocationScheme xmlBufferAllocScheme = XML_BUFFER_ALLOC_EXACT;
+int xmlDefaultBufferSize = BASE_BUFFER_SIZE;
+
+/*
+ * Parser defaults
+ */
+int oldXMLWDcompatibility = 0; /* DEPRECATED */
+int xmlParserDebugEntities = 0;
+int xmlDoValidityCheckingDefaultValue = 0;
+int xmlGetWarningsDefaultValue = 1;
+int xmlLoadExtDtdDefaultValue = 0;
+int xmlPedanticParserDefaultValue = 0;
+int xmlLineNumbersDefaultValue = 0;
+int xmlKeepBlanksDefaultValue = 1;
+int xmlSubstituteEntitiesDefaultValue = 0;
+
+/*
+ * Error handling
+ */
+
+/* xmlGenericErrorFunc xmlGenericError = xmlGenericErrorDefaultFunc; */
+/* Must initialize xmlGenericError in xmlInitParser */
+xmlGenericErrorFunc xmlGenericError;
+void *xmlGenericErrorContext = NULL;
+
+/*
+ * output defaults
+ */
+int xmlIndentTreeOutput = 0;
+int xmlSaveNoEmptyTags = 0;
+
+/*
+ * Default handler for XML, builds the DOM tree
+ */
+xmlSAXHandler xmlDefaultSAXHandler = {
+    internalSubset,
+    isStandalone,
+    hasInternalSubset,
+    hasExternalSubset,
+    resolveEntity,
+    getEntity,
+    entityDecl,
+    notationDecl,
+    attributeDecl,
+    elementDecl,
+    unparsedEntityDecl,
+    setDocumentLocator,
+    startDocument,
+    endDocument,
+    startElement,
+    endElement,
+    reference,
+    characters,
+    characters,
+    processingInstruction,
+    comment,
+    xmlParserWarning,
+    xmlParserError,
+    xmlParserError,
+    getParameterEntity,
+    cdataBlock,
+    externalSubset,
+    0
+};
+
+/*
+ * The default SAX Locator.
+ */
+
+xmlSAXLocator xmlDefaultSAXLocator = {
+    getPublicId, getSystemId, getLineNumber, getColumnNumber
+};
+
+#ifdef LIBXML_HTML_ENABLED
+/*
+ * Default handler for HTML, builds the DOM tree
+ */
+xmlSAXHandler htmlDefaultSAXHandler = {
+    internalSubset,
+    NULL,
+    NULL,
+    NULL,
+    NULL,
+    getEntity,
+    NULL,
+    NULL,
+    NULL,
+    NULL,
+    NULL,
+    setDocumentLocator,
+    startDocument,
+    endDocument,
+    startElement,
+    endElement,
+    NULL,
+    characters,
+    ignorableWhitespace,
+    NULL,
+    comment,
+    xmlParserWarning,
+    xmlParserError,
+    xmlParserError,
+    getParameterEntity,
+    cdataBlock,
+    NULL,
+    0
+};
+#endif /* LIBXML_HTML_ENABLED */
+
+#ifdef LIBXML_DOCB_ENABLED
+/*
+ * Default handler for SGML DocBook, builds the DOM tree
+ */
+xmlSAXHandler docbDefaultSAXHandler = {
+    internalSubset,
+    isStandalone,
+    hasInternalSubset,
+    hasExternalSubset,
+    resolveEntity,
+    getEntity,
+    entityDecl,
+    NULL,
+    NULL,
+    NULL,
+    NULL,
+    setDocumentLocator,
+    startDocument,
+    endDocument,
+    startElement,
+    endElement,
+    reference,
+    characters,
+    ignorableWhitespace,
+    NULL,
+    comment,
+    xmlParserWarning,
+    xmlParserError,
+    xmlParserError,
+    getParameterEntity,
+    NULL,
+    NULL,
+    0
+};
+#endif /* LIBXML_DOCB_ENABLED */
+
+/**
+ * xmlInitializeGlobalState:
+ * @gs: a pointer to a newly allocated global state
+ *
+ * xmlInitializeGlobalState() initialize a global state with all the
+ * default values of the library.
+ */
+void
+xmlInitializeGlobalState(xmlGlobalStatePtr gs)
+{
+    /*
+     * Perform initialisation as required by libxml
+     */
+    initdocbDefaultSAXHandler(&gs->docbDefaultSAXHandler);
+    inithtmlDefaultSAXHandler(&gs->htmlDefaultSAXHandler);
+    gs->oldXMLWDcompatibility = 0;
+    gs->xmlBufferAllocScheme = XML_BUFFER_ALLOC_EXACT;
+    gs->xmlDefaultBufferSize = BASE_BUFFER_SIZE;
+    initxmlDefaultSAXHandler(&gs->xmlDefaultSAXHandler, 1);
+    gs->xmlDefaultSAXLocator.getPublicId = getPublicId;
+    gs->xmlDefaultSAXLocator.getSystemId = getSystemId;
+    gs->xmlDefaultSAXLocator.getLineNumber = getLineNumber;
+    gs->xmlDefaultSAXLocator.getColumnNumber = getColumnNumber;
+    gs->xmlDoValidityCheckingDefaultValue = 0;
+#if defined(DEBUG_MEMORY_LOCATION) | defined(DEBUG_MEMORY)
+    gs->xmlFree = (xmlFreeFunc) xmlMemFree;
+    gs->xmlMalloc = (xmlMallocFunc) xmlMemMalloc;
+    gs->xmlRealloc = (xmlReallocFunc) xmlMemRealloc;
+    gs->xmlMemStrdup = (xmlStrdupFunc) xmlMemoryStrdup;
+#else
+    gs->xmlFree = (xmlFreeFunc) free;
+    gs->xmlMalloc = (xmlMallocFunc) malloc;
+    gs->xmlRealloc = (xmlReallocFunc) realloc;
+    gs->xmlMemStrdup = (xmlStrdupFunc) strdup;
+#endif
+    initGenericErrorDefaultFunc(&gs->xmlGenericError);
+    gs->xmlGenericErrorContext = NULL;
+    gs->xmlGetWarningsDefaultValue = 1;
+    gs->xmlIndentTreeOutput = 0;
+    gs->xmlKeepBlanksDefaultValue = 1;
+    gs->xmlLineNumbersDefaultValue = 0;
+    gs->xmlLoadExtDtdDefaultValue = 0;
+    gs->xmlParserDebugEntities = 0;
+    gs->xmlParserVersion = LIBXML_VERSION_STRING;
+    gs->xmlPedanticParserDefaultValue = 0;
+    gs->xmlSaveNoEmptyTags = 0;
+    gs->xmlSubstituteEntitiesDefaultValue = 0;
+}
+
+/*
+ * Everything starting from the line below is
+ * Automatically generated by build_glob.py.
+ * Do not modify the previous line.
+ */
+
+
+extern xmlSAXHandler docbDefaultSAXHandler;
+#undef	docbDefaultSAXHandler
+xmlSAXHandler *
+__docbDefaultSAXHandler(void) {
+    if (IS_MAIN_THREAD)
+	return (&docbDefaultSAXHandler);
+    else
+	return (&get_glob_struct()->docbDefaultSAXHandler);
+}
+
+extern xmlSAXHandler htmlDefaultSAXHandler;
+#undef	htmlDefaultSAXHandler
+xmlSAXHandler *
+__htmlDefaultSAXHandler(void) {
+    if (IS_MAIN_THREAD)
+	return (&htmlDefaultSAXHandler);
+    else
+	return (&get_glob_struct()->htmlDefaultSAXHandler);
+}
+
+extern int oldXMLWDcompatibility;
+#undef	oldXMLWDcompatibility
+int *
+__oldXMLWDcompatibility(void) {
+    if (IS_MAIN_THREAD)
+	return (&oldXMLWDcompatibility);
+    else
+	return (&get_glob_struct()->oldXMLWDcompatibility);
+}
+
+extern xmlBufferAllocationScheme xmlBufferAllocScheme;
+#undef	xmlBufferAllocScheme
+xmlBufferAllocationScheme *
+__xmlBufferAllocScheme(void) {
+    if (IS_MAIN_THREAD)
+	return (&xmlBufferAllocScheme);
+    else
+	return (&get_glob_struct()->xmlBufferAllocScheme);
+}
+
+extern int xmlDefaultBufferSize;
+#undef	xmlDefaultBufferSize
+int *
+__xmlDefaultBufferSize(void) {
+    if (IS_MAIN_THREAD)
+	return (&xmlDefaultBufferSize);
+    else
+	return (&get_glob_struct()->xmlDefaultBufferSize);
+}
+
+extern xmlSAXHandler xmlDefaultSAXHandler;
+#undef	xmlDefaultSAXHandler
+xmlSAXHandler *
+__xmlDefaultSAXHandler(void) {
+    if (IS_MAIN_THREAD)
+	return (&xmlDefaultSAXHandler);
+    else
+	return (&get_glob_struct()->xmlDefaultSAXHandler);
+}
+
+extern xmlSAXLocator xmlDefaultSAXLocator;
+#undef	xmlDefaultSAXLocator
+xmlSAXLocator *
+__xmlDefaultSAXLocator(void) {
+    if (IS_MAIN_THREAD)
+	return (&xmlDefaultSAXLocator);
+    else
+	return (&get_glob_struct()->xmlDefaultSAXLocator);
+}
+
+extern int xmlDoValidityCheckingDefaultValue;
+#undef	xmlDoValidityCheckingDefaultValue
+int *
+__xmlDoValidityCheckingDefaultValue(void) {
+    if (IS_MAIN_THREAD)
+	return (&xmlDoValidityCheckingDefaultValue);
+    else
+	return (&get_glob_struct()->xmlDoValidityCheckingDefaultValue);
+}
+
+extern xmlFreeFunc xmlFree;
+#undef	xmlFree
+xmlFreeFunc *
+__xmlFree(void) {
+    if (IS_MAIN_THREAD)
+	return (&xmlFree);
+    else
+	return (&get_glob_struct()->xmlFree);
+}
+
+extern xmlGenericErrorFunc xmlGenericError;
+#undef	xmlGenericError
+xmlGenericErrorFunc *
+__xmlGenericError(void) {
+    if (IS_MAIN_THREAD)
+	return (&xmlGenericError);
+    else
+	return (&get_glob_struct()->xmlGenericError);
+}
+
+extern void * xmlGenericErrorContext;
+#undef	xmlGenericErrorContext
+void * *
+__xmlGenericErrorContext(void) {
+    if (IS_MAIN_THREAD)
+	return (&xmlGenericErrorContext);
+    else
+	return (&get_glob_struct()->xmlGenericErrorContext);
+}
+
+extern int xmlGetWarningsDefaultValue;
+#undef	xmlGetWarningsDefaultValue
+int *
+__xmlGetWarningsDefaultValue(void) {
+    if (IS_MAIN_THREAD)
+	return (&xmlGetWarningsDefaultValue);
+    else
+	return (&get_glob_struct()->xmlGetWarningsDefaultValue);
+}
+
+extern int xmlIndentTreeOutput;
+#undef	xmlIndentTreeOutput
+int *
+__xmlIndentTreeOutput(void) {
+    if (IS_MAIN_THREAD)
+	return (&xmlIndentTreeOutput);
+    else
+	return (&get_glob_struct()->xmlIndentTreeOutput);
+}
+
+extern int xmlKeepBlanksDefaultValue;
+#undef	xmlKeepBlanksDefaultValue
+int *
+__xmlKeepBlanksDefaultValue(void) {
+    if (IS_MAIN_THREAD)
+	return (&xmlKeepBlanksDefaultValue);
+    else
+	return (&get_glob_struct()->xmlKeepBlanksDefaultValue);
+}
+
+extern int xmlLineNumbersDefaultValue;
+#undef	xmlLineNumbersDefaultValue
+int *
+__xmlLineNumbersDefaultValue(void) {
+    if (IS_MAIN_THREAD)
+	return (&xmlLineNumbersDefaultValue);
+    else
+	return (&get_glob_struct()->xmlLineNumbersDefaultValue);
+}
+
+extern int xmlLoadExtDtdDefaultValue;
+#undef	xmlLoadExtDtdDefaultValue
+int *
+__xmlLoadExtDtdDefaultValue(void) {
+    if (IS_MAIN_THREAD)
+	return (&xmlLoadExtDtdDefaultValue);
+    else
+	return (&get_glob_struct()->xmlLoadExtDtdDefaultValue);
+}
+
+extern xmlMallocFunc xmlMalloc;
+#undef	xmlMalloc
+xmlMallocFunc *
+__xmlMalloc(void) {
+    if (IS_MAIN_THREAD)
+	return (&xmlMalloc);
+    else
+	return (&get_glob_struct()->xmlMalloc);
+}
+
+extern xmlStrdupFunc xmlMemStrdup;
+#undef	xmlMemStrdup
+xmlStrdupFunc *
+__xmlMemStrdup(void) {
+    if (IS_MAIN_THREAD)
+	return (&xmlMemStrdup);
+    else
+	return (&get_glob_struct()->xmlMemStrdup);
+}
+
+extern int xmlParserDebugEntities;
+#undef	xmlParserDebugEntities
+int *
+__xmlParserDebugEntities(void) {
+    if (IS_MAIN_THREAD)
+	return (&xmlParserDebugEntities);
+    else
+	return (&get_glob_struct()->xmlParserDebugEntities);
+}
+
+extern const char * xmlParserVersion;
+#undef	xmlParserVersion
+const char * *
+__xmlParserVersion(void) {
+    if (IS_MAIN_THREAD)
+	return (&xmlParserVersion);
+    else
+	return (&get_glob_struct()->xmlParserVersion);
+}
+
+extern int xmlPedanticParserDefaultValue;
+#undef	xmlPedanticParserDefaultValue
+int *
+__xmlPedanticParserDefaultValue(void) {
+    if (IS_MAIN_THREAD)
+	return (&xmlPedanticParserDefaultValue);
+    else
+	return (&get_glob_struct()->xmlPedanticParserDefaultValue);
+}
+
+extern xmlReallocFunc xmlRealloc;
+#undef	xmlRealloc
+xmlReallocFunc *
+__xmlRealloc(void) {
+    if (IS_MAIN_THREAD)
+	return (&xmlRealloc);
+    else
+	return (&get_glob_struct()->xmlRealloc);
+}
+
+extern int xmlSaveNoEmptyTags;
+#undef	xmlSaveNoEmptyTags
+int *
+__xmlSaveNoEmptyTags(void) {
+    if (IS_MAIN_THREAD)
+	return (&xmlSaveNoEmptyTags);
+    else
+	return (&get_glob_struct()->xmlSaveNoEmptyTags);
+}
+
+extern int xmlSubstituteEntitiesDefaultValue;
+#undef	xmlSubstituteEntitiesDefaultValue
+int *
+__xmlSubstituteEntitiesDefaultValue(void) {
+    if (IS_MAIN_THREAD)
+	return (&xmlSubstituteEntitiesDefaultValue);
+    else
+	return (&get_glob_struct()->xmlSubstituteEntitiesDefaultValue);
+}