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/build_glob.py b/build_glob.py
new file mode 100755
index 0000000..fbf45c1
--- /dev/null
+++ b/build_glob.py
@@ -0,0 +1,107 @@
+#! /usr/bin/env python
+###
+#
+#       build_glob.py : Build the global_functions.h and global_functions.c
+#                       files which are required to implement the user
+#                       interface to global variables now that thread specific
+#                       data (TSD) is used to emulate global state.
+#
+#       See Copyright for the status of this software.
+#       Gary.Pennington@sun.com
+###
+import os, string
+
+class globvar:
+    def __init__(self, type, name):
+        self.type=type
+        self.name=name
+
+def writeline(file, line=None):
+    if line:
+        file.write(line)
+    file.write(os.linesep)
+
+if __name__ == "__main__":
+    globals={}
+    global_data=open("global.data").readlines()
+    global_code=open("globals.c").readlines()
+    global_hdr=open("include/libxml/globals.h").readlines()
+    global_functions_hdr=open("include/libxml/globals.h", "w+")
+    global_functions_impl=open("globals.c", "w+")
+
+    #
+    # Rebuild the beginning of the file up to the
+    # Automatically generated string
+    # 
+    for line in global_hdr:
+        if line[-len(os.linesep):] == os.linesep:
+            line = line[:-len(os.linesep)]
+        if line == " * Automatically generated by build_glob.py.":
+	    break
+	writeline(global_functions_hdr, line)
+
+    writeline(global_functions_hdr, " * Automatically generated by build_glob.py.")
+    writeline(global_functions_hdr, " * Do not modify the previous line.")
+    writeline(global_functions_hdr, " */")
+    writeline(global_functions_hdr)
+
+    for line in global_code:
+        if line[-len(os.linesep):] == os.linesep:
+            line = line[:-len(os.linesep)]
+        if line == " * Automatically generated by build_glob.py.":
+	    break
+	writeline(global_functions_impl, line)
+
+    writeline(global_functions_impl, " * Automatically generated by build_glob.py.")
+    writeline(global_functions_impl, " * Do not modify the previous line.")
+    writeline(global_functions_impl, " */")
+    writeline(global_functions_impl)
+
+    # Now process the data and write it to the appropriate output file
+    for line in global_data:
+        if line[0]=='#':
+            continue
+        if line[-len(os.linesep):] == os.linesep:
+            line = line[:-len(os.linesep)]
+        fields = string.split(line, ",")
+        # Update the header file
+        writeline(global_functions_hdr)
+        writeline(global_functions_hdr, "#ifdef LIBXML_THREAD_ENABLED")
+        global_functions_hdr.write("extern "+fields[0]+" *")
+        if len(fields) == 3:
+            global_functions_hdr.write("(*")
+        global_functions_hdr.write("__"+fields[1]+"(void)")
+        if len(fields) == 3:
+            global_functions_hdr.write(")"+fields[2])
+        writeline(global_functions_hdr,";")
+        writeline(global_functions_hdr,"#define "+fields[1]+" \\")
+        writeline(global_functions_hdr,"(*(__"+fields[1]+"()))")
+        writeline(global_functions_hdr,"#else")
+        if len(fields) == 3:
+            writeline(global_functions_hdr,"extern "+fields[0]+" "+fields[1]+fields[2]+";")
+        else:
+            writeline(global_functions_hdr,"extern "+fields[0]+" "+fields[1]+";")
+        writeline(global_functions_hdr,"#endif")
+        # Update the implementation file
+        writeline(global_functions_impl)
+        writeline(global_functions_impl, "extern "+fields[0]+" "+fields[1]+";")
+        writeline(global_functions_impl, "#undef\t"+fields[1])
+        writeline(global_functions_impl, fields[0]+" *")
+        if len(fields) == 3:
+            global_functions_impl.write("(*")
+        global_functions_impl.write("__"+fields[1]+"(void)")
+        if len(fields) == 3:
+            writeline(global_functions_impl, ")[]")
+        writeline(global_functions_impl, " {")
+        writeline(global_functions_impl, "    if (IS_MAIN_THREAD)")
+        writeline(global_functions_impl, "\treturn (&"+fields[1]+");")
+        writeline(global_functions_impl, "    else")
+        writeline(global_functions_impl, "\treturn (&get_glob_struct()->"+fields[1]+");")
+        writeline(global_functions_impl, "}")
+    # Terminate the header file with appropriate boilerplate
+    writeline(global_functions_hdr)
+    writeline(global_functions_hdr, "#ifdef __cplusplus")
+    writeline(global_functions_hdr, "}")
+    writeline(global_functions_hdr, "#endif")
+    writeline(global_functions_hdr)
+    writeline(global_functions_hdr, "#endif /* __XML_GLOBALS_H */")