diff -urN mxml-2.6-orig/configure mxml-2.6/configure
--- mxml-2.6-orig/configure	2009-04-18 10:05:52.000000000 -0700
+++ mxml-2.6/configure	2009-11-18 18:25:08.000000000 -0800
@@ -4715,6 +4715,14 @@
 echo "${ECHO_T}yes" >&6; }
 			LIBMXML="libmxml.so.1.4"
 			DSO="\$(CC)"
+			DSOFLAGS="$DSOFLAGS -Wl,-rpath,\$(libdir),-set_version,sgi1.0,-soname,libmxml.so.1 -shared \$(OPTIM)"
+			;;
+
+		BeOS | Haiku)
+			{ echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6; }
+			LIBMXML="libmxml.so.1.4"
+			DSO="\$(CC)"
 			DSOFLAGS="$DSOFLAGS -Wl,-soname,libmxml.so.1,-rpath,\$(libdir) -shared \$(OPTIM)"
                         LDFLAGS="$LDFLAGS -Wl,-rpath,\$(libdir)"
 			;;
@@ -4821,6 +4829,10 @@
         		# BSD, Darwin (MacOS X), and Linux
         		mandir="/usr/share/man"
         		;;
+        	BeOS* | Haiku*)
+        		# BeOS, Haiku
+        		mandir="/boot/common/share/man"
+        		;;
         	IRIX*)
         		# SGI IRIX
         		mandir="/usr/share/catman/u_man"
diff -urN mxml-2.6-orig/mxml.list mxml-2.6/mxml.list
--- mxml-2.6-orig/mxml.list	1969-12-31 16:00:00.000000000 -0800
+++ mxml-2.6/mxml.list	2009-11-18 18:25:08.000000000 -0800
@@ -0,0 +1,107 @@
+#
+# "$Id: mxml.list.in 399 2009-05-17 17:20:51Z mike $"
+#
+# EPM software list file for Mini-XML, a small XML library.
+#
+# Copyright 2003-2009 by Michael Sweet.
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Library General Public
+# License as published by the Free Software Foundation; either
+# version 2, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+
+# Directories...
+$prefix=/boot/common
+$exec_prefix=/boot/common
+$bindir=${exec_prefix}/bin
+$datarootdir=${prefix}/share
+$docdir=${datarootdir}/doc/mxml
+$includedir=${prefix}/include
+$libdir=${exec_prefix}/lib
+$mandir=${datarootdir}/man
+$srcdir=.
+
+$PICFLAG=1
+
+# Product information
+%product mxml
+%copyright 2003-2009 by Michael Sweet
+%vendor Michael Sweet
+%license ${srcdir}/COPYING
+%readme ${srcdir}/README
+%version 2.6
+
+%description <<EOF
+Mini-XML is a small XML parsing library that you can use to read
+XML and XML-like data files in your application without
+requiring large non-standard libraries.  Mini-XML provides the
+following functionality:
+
+    - Reading of UTF-8 and UTF-16 and writing of UTF-8 encoded
+      XML files and strings.
+    - Data is stored in a linked-list tree structure, preserving
+      the XML data hierarchy.
+    - Supports arbitrary element names, attributes, and
+      attribute values with no preset limits, just available
+      memory.
+    - Supports integer, real, opaque ("cdata"), and text data
+      types in "leaf" nodes.
+    - Functions for creating and managing trees of data.
+    - "Find" and "walk" functions for easily locating and
+      navigating trees of data.
+
+Mini-XML doesn't do validation or other types of processing on
+the data based upon schema files or other sources of definition
+information, nor does it support character entities other than
+those required by the XML specification.
+EOF
+
+# Executables
+f 0555 root sys ${bindir}/mxmldoc mxmldoc
+
+# Header files
+f 0444 root sys ${includedir}/mxml.h mxml.h
+
+# Libraries
+%if $PICFLAG
+%system hpux
+f 0555 root sys ${libdir}/libmxml.sl.1 libmxml.sl.1
+l 0555 root sys ${libdir}/libmxml.sl libmxml.sl.1
+
+%system darwin
+f 0555 root sys ${libdir}/libmxml.1.dylib libmxml.1.dylib
+l 0555 root sys ${libdir}/libmxml.dylib libmxml.1.dylib
+
+%system freebsd irix linux netbsd openbsd solaris tru64
+f 0555 root sys ${libdir}/libmxml.so.1.4 libmxml.so.1.4
+l 0555 root sys ${libdir}/libmxml.so.1 libmxml.so.1.4
+l 0555 root sys ${libdir}/libmxml.so libmxml.so.1.4
+
+%system all
+%endif
+
+f 0444 root sys ${libdir}/libmxml.a libmxml.a
+
+# pkg-config info
+f 0444 root sys $(libdir)/pkgconfig/mxml.pc mxml.pc
+
+# Documentation
+f 0444 root sys ${docdir}/README $srcdir/README
+f 0444 root sys ${docdir}/COPYING $srcdir/COPYING
+f 0444 root sys ${docdir}/CHANGES $srcdir/CHANGES
+f 0444 root sys ${docdir}/mxml.html $srcdir/doc/mxml.html
+f 0444 root sys ${docdir}/mxml.pdf $srcdir/doc/mxml.pdf
+
+# Man pages
+f 0444 root sys ${mandir}/man1/mxmldoc.1 $srcdir/mxmldoc.man
+f 0444 root sys ${mandir}/man3/mxml.3 $srcdir/mxml.man
+
+#
+# End of "$Id: mxml.list.in 399 2009-05-17 17:20:51Z mike $".
+#
diff -urN mxml-2.6-orig/mxml.pc mxml-2.6/mxml.pc
--- mxml-2.6-orig/mxml.pc	1969-12-31 16:00:00.000000000 -0800
+++ mxml-2.6/mxml.pc	2009-11-18 18:25:08.000000000 -0800
@@ -0,0 +1,10 @@
+prefix=/boot/common
+exec_prefix=/boot/common
+libdir=${exec_prefix}/lib
+includedir=${prefix}/include
+
+Name: Mini-XML
+Description: Lightweight XML support library
+Version: 2.6
+Libs: -L${exec_prefix}/lib -lmxml -pthread
+Cflags: -I${prefix}/include -D_THREAD_SAFE -D_REENTRANT
diff -urN mxml-2.6-orig/mxml.xml mxml-2.6/mxml.xml
--- mxml-2.6-orig/mxml.xml	2009-03-18 22:38:52.000000000 -0700
+++ mxml-2.6/mxml.xml	1969-12-31 16:00:00.000000000 -0800
@@ -1,1338 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<mxmldoc xmlns="http://www.easysw.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.minixml.org/mxmldoc.xsd">
-  <function name="mxmlAdd">
-    <description>Add a node to a tree.
-
-Adds the specified node to the parent. If the child argument is not
-NULL, puts the new node before or after the specified child depending
-on the value of the where argument. If the child argument is NULL,
-puts the new node at the beginning of the child list (MXML_ADD_BEFORE)
-or at the end of the child list (MXML_ADD_AFTER). The constant
-MXML_ADD_TO_PARENT can be used to specify a NULL child pointer.</description>
-    <argument name="parent" direction="I">
-      <type>mxml_node_t *</type>
-      <description>Parent node</description>
-    </argument>
-    <argument name="where" direction="I">
-      <type>int</type>
-      <description>Where to add, MXML_ADD_BEFORE or MXML_ADD_AFTER</description>
-    </argument>
-    <argument name="child" direction="I">
-      <type>mxml_node_t *</type>
-      <description>Child node for where or MXML_ADD_TO_PARENT</description>
-    </argument>
-    <argument name="node" direction="I">
-      <type>mxml_node_t *</type>
-      <description>Node to add</description>
-    </argument>
-  </function>
-  <function name="mxmlDelete">
-    <description>Delete a node and all of its children.
-
-If the specified node has a parent, this function first removes the
-node from its parent using the mxmlRemove() function.</description>
-    <argument name="node" direction="I">
-      <type>mxml_node_t *</type>
-      <description>Node to delete</description>
-    </argument>
-  </function>
-  <function name="mxmlElementDeleteAttr">
-    <description>Delete an attribute.
-
-@since Mini-XML 2.4@</description>
-    <argument name="node" direction="I">
-      <type>mxml_node_t *</type>
-      <description>Element</description>
-    </argument>
-    <argument name="name" direction="I">
-      <type>const char *</type>
-      <description>Attribute name</description>
-    </argument>
-  </function>
-  <function name="mxmlElementGetAttr">
-    <returnvalue>
-      <type>const char *</type>
-      <description>Attribute value or NULL</description>
-    </returnvalue>
-    <description>Get an attribute.
-
-This function returns NULL if the node is not an element or the
-named attribute does not exist.</description>
-    <argument name="node" direction="I">
-      <type>mxml_node_t *</type>
-      <description>Element node</description>
-    </argument>
-    <argument name="name" direction="I">
-      <type>const char *</type>
-      <description>Name of attribute</description>
-    </argument>
-  </function>
-  <function name="mxmlElementSetAttr">
-    <description>Set an attribute.
-
-If the named attribute already exists, the value of the attribute
-is replaced by the new string value. The string value is copied
-into the element node. This function does nothing if the node is
-not an element.</description>
-    <argument name="node" direction="I">
-      <type>mxml_node_t *</type>
-      <description>Element node</description>
-    </argument>
-    <argument name="name" direction="I">
-      <type>const char *</type>
-      <description>Name of attribute</description>
-    </argument>
-    <argument name="value" direction="I">
-      <type>const char *</type>
-      <description>Attribute value</description>
-    </argument>
-  </function>
-  <function name="mxmlElementSetAttrf">
-    <description>Set an attribute with a formatted value.
-
-If the named attribute already exists, the value of the attribute
-is replaced by the new formatted string. The formatted string value is
-copied into the element node. This function does nothing if the node
-is not an element.
-
-@since Mini-XML 2.3@</description>
-    <argument name="node" direction="I">
-      <type>mxml_node_t *</type>
-      <description>Element node</description>
-    </argument>
-    <argument name="name" direction="I">
-      <type>const char *</type>
-      <description>Name of attribute</description>
-    </argument>
-    <argument name="format" direction="I">
-      <type>const char *</type>
-      <description>Printf-style attribute value</description>
-    </argument>
-    <argument name="..." direction="I">
-      <type />      <description>Additional arguments as needed</description>
-    </argument>
-  </function>
-  <function name="mxmlEntityAddCallback">
-    <returnvalue>
-      <type>int</type>
-      <description>0 on success, -1 on failure</description>
-    </returnvalue>
-    <description>Add a callback to convert entities to Unicode.</description>
-    <argument name="cb" direction="I">
-      <type>mxml_entity_cb_t</type>
-      <description>Callback function to add</description>
-    </argument>
-  </function>
-  <function name="mxmlEntityGetName">
-    <returnvalue>
-      <type>const char *</type>
-      <description>Entity name or NULL</description>
-    </returnvalue>
-    <description>Get the name that corresponds to the character value.
-
-If val does not need to be represented by a named entity, NULL is returned.</description>
-    <argument name="val" direction="I">
-      <type>int</type>
-      <description>Character value</description>
-    </argument>
-  </function>
-  <function name="mxmlEntityGetValue">
-    <returnvalue>
-      <type>int</type>
-      <description>Character value or -1 on error</description>
-    </returnvalue>
-    <description>Get the character corresponding to a named entity.
-
-The entity name can also be a numeric constant. -1 is returned if the
-name is not known.</description>
-    <argument name="name" direction="I">
-      <type>const char *</type>
-      <description>Entity name</description>
-    </argument>
-  </function>
-  <function name="mxmlEntityRemoveCallback">
-    <description>Remove a callback.</description>
-    <argument name="cb" direction="I">
-      <type>mxml_entity_cb_t</type>
-      <description>Callback function to remove</description>
-    </argument>
-  </function>
-  <function name="mxmlFindElement">
-    <returnvalue>
-      <type>mxml_node_t *</type>
-      <description>Element node or NULL</description>
-    </returnvalue>
-    <description>Find the named element.
-
-The search is constrained by the name, attribute name, and value; any
-NULL names or values are treated as wildcards, so different kinds of
-searches can be implemented by looking for all elements of a given name
-or all elements with a specific attribute. The descend argument determines
-whether the search descends into child nodes; normally you will use
-MXML_DESCEND_FIRST for the initial search and MXML_NO_DESCEND to find
-additional direct descendents of the node. The top node argument
-constrains the search to a particular node's children.</description>
-    <argument name="node" direction="I">
-      <type>mxml_node_t *</type>
-      <description>Current node</description>
-    </argument>
-    <argument name="top" direction="I">
-      <type>mxml_node_t *</type>
-      <description>Top node</description>
-    </argument>
-    <argument name="name" direction="I">
-      <type>const char *</type>
-      <description>Element name or NULL for any</description>
-    </argument>
-    <argument name="attr" direction="I">
-      <type>const char *</type>
-      <description>Attribute name, or NULL for none</description>
-    </argument>
-    <argument name="value" direction="I">
-      <type>const char *</type>
-      <description>Attribute value, or NULL for any</description>
-    </argument>
-    <argument name="descend" direction="I">
-      <type>int</type>
-      <description>Descend into tree - MXML_DESCEND, MXML_NO_DESCEND, or MXML_DESCEND_FIRST</description>
-    </argument>
-  </function>
-  <function name="mxmlIndexDelete">
-    <description>Delete an index.</description>
-    <argument name="ind" direction="I">
-      <type>mxml_index_t *</type>
-      <description>Index to delete</description>
-    </argument>
-  </function>
-  <function name="mxmlIndexEnum">
-    <returnvalue>
-      <type>mxml_node_t *</type>
-      <description>Next node or NULL if there is none</description>
-    </returnvalue>
-    <description>Return the next node in the index.
-
-Nodes are returned in the sorted order of the index.</description>
-    <argument name="ind" direction="I">
-      <type>mxml_index_t *</type>
-      <description>Index to enumerate</description>
-    </argument>
-  </function>
-  <function name="mxmlIndexFind">
-    <returnvalue>
-      <type>mxml_node_t *</type>
-      <description>Node or NULL if none found</description>
-    </returnvalue>
-    <description>Find the next matching node.
-
-You should call mxmlIndexReset() prior to using this function for
-the first time with a particular set of &quot;element&quot; and &quot;value&quot;
-strings. Passing NULL for both &quot;element&quot; and &quot;value&quot; is equivalent
-to calling mxmlIndexEnum().</description>
-    <argument name="ind" direction="I">
-      <type>mxml_index_t *</type>
-      <description>Index to search</description>
-    </argument>
-    <argument name="element" direction="I">
-      <type>const char *</type>
-      <description>Element name to find, if any</description>
-    </argument>
-    <argument name="value" direction="I">
-      <type>const char *</type>
-      <description>Attribute value, if any</description>
-    </argument>
-  </function>
-  <function name="mxmlIndexNew">
-    <returnvalue>
-      <type>mxml_index_t *</type>
-      <description>New index</description>
-    </returnvalue>
-    <description>Create a new index.
-
-The index will contain all nodes that contain the named element and/or
-attribute. If both &quot;element&quot; and &quot;attr&quot; are NULL, then the index will
-contain a sorted list of the elements in the node tree.  Nodes are
-sorted by element name and optionally by attribute value if the &quot;attr&quot;
-argument is not NULL.</description>
-    <argument name="node" direction="I">
-      <type>mxml_node_t *</type>
-      <description>XML node tree</description>
-    </argument>
-    <argument name="element" direction="I">
-      <type>const char *</type>
-      <description>Element to index or NULL for all</description>
-    </argument>
-    <argument name="attr" direction="I">
-      <type>const char *</type>
-      <description>Attribute to index or NULL for none</description>
-    </argument>
-  </function>
-  <function name="mxmlIndexReset">
-    <returnvalue>
-      <type>mxml_node_t *</type>
-      <description>First node or NULL if there is none</description>
-    </returnvalue>
-    <description>Reset the enumeration/find pointer in the index and
-return the first node in the index.
-
-This function should be called prior to using mxmlIndexEnum() or
-mxmlIndexFind() for the first time.</description>
-    <argument name="ind" direction="I">
-      <type>mxml_index_t *</type>
-      <description>Index to reset</description>
-    </argument>
-  </function>
-  <function name="mxmlLoadFd">
-    <returnvalue>
-      <type>mxml_node_t *</type>
-      <description>First node or NULL if the file could not be read.</description>
-    </returnvalue>
-    <description>Load a file descriptor into an XML node tree.
-
-The nodes in the specified file are added to the specified top node.
-If no top node is provided, the XML file MUST be well-formed with a
-single parent node like &lt;?xml&gt; for the entire file. The callback
-function returns the value type that should be used for child nodes.
-If MXML_NO_CALLBACK is specified then all child nodes will be either
-MXML_ELEMENT or MXML_TEXT nodes.
-
-The constants MXML_INTEGER_CALLBACK, MXML_OPAQUE_CALLBACK,
-MXML_REAL_CALLBACK, and MXML_TEXT_CALLBACK are defined for loading
-child nodes of the specified type.</description>
-    <argument name="top" direction="I">
-      <type>mxml_node_t *</type>
-      <description>Top node</description>
-    </argument>
-    <argument name="fd" direction="I">
-      <type>int</type>
-      <description>File descriptor to read from</description>
-    </argument>
-    <argument name="cb" direction="I">
-      <type>mxml_load_cb_t</type>
-      <description>Callback function or MXML_NO_CALLBACK</description>
-    </argument>
-  </function>
-  <function name="mxmlLoadFile">
-    <returnvalue>
-      <type>mxml_node_t *</type>
-      <description>First node or NULL if the file could not be read.</description>
-    </returnvalue>
-    <description>Load a file into an XML node tree.
-
-The nodes in the specified file are added to the specified top node.
-If no top node is provided, the XML file MUST be well-formed with a
-single parent node like &lt;?xml&gt; for the entire file. The callback
-function returns the value type that should be used for child nodes.
-If MXML_NO_CALLBACK is specified then all child nodes will be either
-MXML_ELEMENT or MXML_TEXT nodes.
-
-The constants MXML_INTEGER_CALLBACK, MXML_OPAQUE_CALLBACK,
-MXML_REAL_CALLBACK, and MXML_TEXT_CALLBACK are defined for loading
-child nodes of the specified type.</description>
-    <argument name="top" direction="I">
-      <type>mxml_node_t *</type>
-      <description>Top node</description>
-    </argument>
-    <argument name="fp" direction="I">
-      <type>FILE *</type>
-      <description>File to read from</description>
-    </argument>
-    <argument name="cb" direction="I">
-      <type>mxml_load_cb_t</type>
-      <description>Callback function or MXML_NO_CALLBACK</description>
-    </argument>
-  </function>
-  <function name="mxmlLoadString">
-    <returnvalue>
-      <type>mxml_node_t *</type>
-      <description>First node or NULL if the string has errors.</description>
-    </returnvalue>
-    <description>Load a string into an XML node tree.
-
-The nodes in the specified string are added to the specified top node.
-If no top node is provided, the XML string MUST be well-formed with a
-single parent node like &lt;?xml&gt; for the entire string. The callback
-function returns the value type that should be used for child nodes.
-If MXML_NO_CALLBACK is specified then all child nodes will be either
-MXML_ELEMENT or MXML_TEXT nodes.
-
-The constants MXML_INTEGER_CALLBACK, MXML_OPAQUE_CALLBACK,
-MXML_REAL_CALLBACK, and MXML_TEXT_CALLBACK are defined for loading
-child nodes of the specified type.</description>
-    <argument name="top" direction="I">
-      <type>mxml_node_t *</type>
-      <description>Top node</description>
-    </argument>
-    <argument name="s" direction="I">
-      <type>const char *</type>
-      <description>String to load</description>
-    </argument>
-    <argument name="cb" direction="I">
-      <type>mxml_load_cb_t</type>
-      <description>Callback function or MXML_NO_CALLBACK</description>
-    </argument>
-  </function>
-  <function name="mxmlNewCDATA">
-    <returnvalue>
-      <type>mxml_node_t *</type>
-      <description>New node</description>
-    </returnvalue>
-    <description>Create a new CDATA node.
-
-The new CDATA node is added to the end of the specified parent's child
-list. The constant MXML_NO_PARENT can be used to specify that the new
-CDATA node has no parent. The data string must be nul-terminated and
-is copied into the new node. CDATA nodes use the MXML_ELEMENT type.
-
-@since Mini-XML 2.3@</description>
-    <argument name="parent" direction="I">
-      <type>mxml_node_t *</type>
-      <description>Parent node or MXML_NO_PARENT</description>
-    </argument>
-    <argument name="data" direction="I">
-      <type>const char *</type>
-      <description>Data string</description>
-    </argument>
-  </function>
-  <function name="mxmlNewCustom">
-    <returnvalue>
-      <type>mxml_node_t *</type>
-      <description>New node</description>
-    </returnvalue>
-    <description>Create a new custom data node.
-
-The new custom node is added to the end of the specified parent's child
-list. The constant MXML_NO_PARENT can be used to specify that the new
-element node has no parent. NULL can be passed when the data in the
-node is not dynamically allocated or is separately managed.
-
-@since Mini-XML 2.1@</description>
-    <argument name="parent" direction="I">
-      <type>mxml_node_t *</type>
-      <description>Parent node or MXML_NO_PARENT</description>
-    </argument>
-    <argument name="data" direction="I">
-      <type>void *</type>
-      <description>Pointer to data</description>
-    </argument>
-    <argument name="destroy" direction="I">
-      <type>mxml_custom_destroy_cb_t</type>
-      <description>Function to destroy data</description>
-    </argument>
-  </function>
-  <function name="mxmlNewElement">
-    <returnvalue>
-      <type>mxml_node_t *</type>
-      <description>New node</description>
-    </returnvalue>
-    <description>Create a new element node.
-
-The new element node is added to the end of the specified parent's child
-list. The constant MXML_NO_PARENT can be used to specify that the new
-element node has no parent.</description>
-    <argument name="parent" direction="I">
-      <type>mxml_node_t *</type>
-      <description>Parent node or MXML_NO_PARENT</description>
-    </argument>
-    <argument name="name" direction="I">
-      <type>const char *</type>
-      <description>Name of element</description>
-    </argument>
-  </function>
-  <function name="mxmlNewInteger">
-    <returnvalue>
-      <type>mxml_node_t *</type>
-      <description>New node</description>
-    </returnvalue>
-    <description>Create a new integer node.
-
-The new integer node is added to the end of the specified parent's child
-list. The constant MXML_NO_PARENT can be used to specify that the new
-integer node has no parent.</description>
-    <argument name="parent" direction="I">
-      <type>mxml_node_t *</type>
-      <description>Parent node or MXML_NO_PARENT</description>
-    </argument>
-    <argument name="integer" direction="I">
-      <type>int</type>
-      <description>Integer value</description>
-    </argument>
-  </function>
-  <function name="mxmlNewOpaque">
-    <returnvalue>
-      <type>mxml_node_t *</type>
-      <description>New node</description>
-    </returnvalue>
-    <description>Create a new opaque string.
-
-The new opaque node is added to the end of the specified parent's child
-list. The constant MXML_NO_PARENT can be used to specify that the new
-opaque node has no parent. The opaque string must be nul-terminated and
-is copied into the new node.</description>
-    <argument name="parent" direction="I">
-      <type>mxml_node_t *</type>
-      <description>Parent node or MXML_NO_PARENT</description>
-    </argument>
-    <argument name="opaque" direction="I">
-      <type>const char *</type>
-      <description>Opaque string</description>
-    </argument>
-  </function>
-  <function name="mxmlNewReal">
-    <returnvalue>
-      <type>mxml_node_t *</type>
-      <description>New node</description>
-    </returnvalue>
-    <description>Create a new real number node.
-
-The new real number node is added to the end of the specified parent's
-child list. The constant MXML_NO_PARENT can be used to specify that
-the new real number node has no parent.</description>
-    <argument name="parent" direction="I">
-      <type>mxml_node_t *</type>
-      <description>Parent node or MXML_NO_PARENT</description>
-    </argument>
-    <argument name="real" direction="I">
-      <type>double</type>
-      <description>Real number value</description>
-    </argument>
-  </function>
-  <function name="mxmlNewText">
-    <returnvalue>
-      <type>mxml_node_t *</type>
-      <description>New node</description>
-    </returnvalue>
-    <description>Create a new text fragment node.
-
-The new text node is added to the end of the specified parent's child
-list. The constant MXML_NO_PARENT can be used to specify that the new
-text node has no parent. The whitespace parameter is used to specify
-whether leading whitespace is present before the node. The text
-string must be nul-terminated and is copied into the new node.</description>
-    <argument name="parent" direction="I">
-      <type>mxml_node_t *</type>
-      <description>Parent node or MXML_NO_PARENT</description>
-    </argument>
-    <argument name="whitespace" direction="I">
-      <type>int</type>
-      <description>1 = leading whitespace, 0 = no whitespace</description>
-    </argument>
-    <argument name="string" direction="I">
-      <type>const char *</type>
-      <description>String</description>
-    </argument>
-  </function>
-  <function name="mxmlNewTextf">
-    <returnvalue>
-      <type>mxml_node_t *</type>
-      <description>New node</description>
-    </returnvalue>
-    <description>Create a new formatted text fragment node.
-
-The new text node is added to the end of the specified parent's child
-list. The constant MXML_NO_PARENT can be used to specify that the new
-text node has no parent. The whitespace parameter is used to specify
-whether leading whitespace is present before the node. The format
-string must be nul-terminated and is formatted into the new node.</description>
-    <argument name="parent" direction="I">
-      <type>mxml_node_t *</type>
-      <description>Parent node or MXML_NO_PARENT</description>
-    </argument>
-    <argument name="whitespace" direction="I">
-      <type>int</type>
-      <description>1 = leading whitespace, 0 = no whitespace</description>
-    </argument>
-    <argument name="format" direction="I">
-      <type>const char *</type>
-      <description>Printf-style frmat string</description>
-    </argument>
-    <argument name="..." direction="I">
-      <type />      <description>Additional args as needed</description>
-    </argument>
-  </function>
-  <function name="mxmlNewXML">
-    <returnvalue>
-      <type>mxml_node_t *</type>
-      <description>New ?xml node</description>
-    </returnvalue>
-    <description>Create a new XML document tree.
-
-The &quot;version&quot; argument specifies the version number to put in the
-?xml element node. If NULL, version 1.0 is assumed.
-
-@since Mini-XML 2.3@</description>
-    <argument name="version" direction="I">
-      <type>const char *</type>
-      <description>Version number to use</description>
-    </argument>
-  </function>
-  <function name="mxmlRelease">
-    <returnvalue>
-      <type>int</type>
-      <description>New reference count</description>
-    </returnvalue>
-    <description>Release a node.
-
-When the reference count reaches zero, the node (and any children)
-is deleted via mxmlDelete().
-
-@since Mini-XML 2.3@</description>
-    <argument name="node" direction="I">
-      <type>mxml_node_t *</type>
-      <description>Node</description>
-    </argument>
-  </function>
-  <function name="mxmlRemove">
-    <description>Remove a node from its parent.
-
-Does not free memory used by the node - use mxmlDelete() for that.
-This function does nothing if the node has no parent.</description>
-    <argument name="node" direction="I">
-      <type>mxml_node_t *</type>
-      <description>Node to remove</description>
-    </argument>
-  </function>
-  <function name="mxmlRetain">
-    <returnvalue>
-      <type>int</type>
-      <description>New reference count</description>
-    </returnvalue>
-    <description>Retain a node.
-
-@since Mini-XML 2.3@</description>
-    <argument name="node" direction="I">
-      <type>mxml_node_t *</type>
-      <description>Node</description>
-    </argument>
-  </function>
-  <function name="mxmlSAXLoadFd">
-    <returnvalue>
-      <type>mxml_node_t *</type>
-      <description>First node or NULL if the file could not be read.</description>
-    </returnvalue>
-    <description>Load a file descriptor into an XML node tree
-using a SAX callback.
-
-The nodes in the specified file are added to the specified top node.
-If no top node is provided, the XML file MUST be well-formed with a
-single parent node like &lt;?xml&gt; for the entire file. The callback
-function returns the value type that should be used for child nodes.
-If MXML_NO_CALLBACK is specified then all child nodes will be either
-MXML_ELEMENT or MXML_TEXT nodes.
-
-The constants MXML_INTEGER_CALLBACK, MXML_OPAQUE_CALLBACK,
-MXML_REAL_CALLBACK, and MXML_TEXT_CALLBACK are defined for loading
-child nodes of the specified type.
-
-The SAX callback must call mxmlRetain() for any nodes that need to
-be kept for later use. Otherwise, nodes are deleted when the parent
-node is closed or after each data, comment, CDATA, or directive node.
-
-@since Mini-XML 2.3@</description>
-    <argument name="top" direction="I">
-      <type>mxml_node_t *</type>
-      <description>Top node</description>
-    </argument>
-    <argument name="fd" direction="I">
-      <type>int</type>
-      <description>File descriptor to read from</description>
-    </argument>
-    <argument name="cb" direction="I">
-      <type>mxml_load_cb_t</type>
-      <description>Callback function or MXML_NO_CALLBACK</description>
-    </argument>
-    <argument name="sax_cb" direction="I">
-      <type>mxml_sax_cb_t</type>
-      <description>SAX callback or MXML_NO_CALLBACK</description>
-    </argument>
-    <argument name="sax_data" direction="I">
-      <type>void *</type>
-      <description>SAX user data</description>
-    </argument>
-  </function>
-  <function name="mxmlSAXLoadFile">
-    <returnvalue>
-      <type>mxml_node_t *</type>
-      <description>First node or NULL if the file could not be read.</description>
-    </returnvalue>
-    <description>Load a file into an XML node tree
-using a SAX callback.
-
-The nodes in the specified file are added to the specified top node.
-If no top node is provided, the XML file MUST be well-formed with a
-single parent node like &lt;?xml&gt; for the entire file. The callback
-function returns the value type that should be used for child nodes.
-If MXML_NO_CALLBACK is specified then all child nodes will be either
-MXML_ELEMENT or MXML_TEXT nodes.
-
-The constants MXML_INTEGER_CALLBACK, MXML_OPAQUE_CALLBACK,
-MXML_REAL_CALLBACK, and MXML_TEXT_CALLBACK are defined for loading
-child nodes of the specified type.
-
-The SAX callback must call mxmlRetain() for any nodes that need to
-be kept for later use. Otherwise, nodes are deleted when the parent
-node is closed or after each data, comment, CDATA, or directive node.
-
-@since Mini-XML 2.3@</description>
-    <argument name="top" direction="I">
-      <type>mxml_node_t *</type>
-      <description>Top node</description>
-    </argument>
-    <argument name="fp" direction="I">
-      <type>FILE *</type>
-      <description>File to read from</description>
-    </argument>
-    <argument name="cb" direction="I">
-      <type>mxml_load_cb_t</type>
-      <description>Callback function or MXML_NO_CALLBACK</description>
-    </argument>
-    <argument name="sax_cb" direction="I">
-      <type>mxml_sax_cb_t</type>
-      <description>SAX callback or MXML_NO_CALLBACK</description>
-    </argument>
-    <argument name="sax_data" direction="I">
-      <type>void *</type>
-      <description>SAX user data</description>
-    </argument>
-  </function>
-  <function name="mxmlSAXLoadString">
-    <returnvalue>
-      <type>mxml_node_t *</type>
-      <description>First node or NULL if the string has errors.</description>
-    </returnvalue>
-    <description>Load a string into an XML node tree
-using a SAX callback.
-
-The nodes in the specified string are added to the specified top node.
-If no top node is provided, the XML string MUST be well-formed with a
-single parent node like &lt;?xml&gt; for the entire string. The callback
-function returns the value type that should be used for child nodes.
-If MXML_NO_CALLBACK is specified then all child nodes will be either
-MXML_ELEMENT or MXML_TEXT nodes.
-
-The constants MXML_INTEGER_CALLBACK, MXML_OPAQUE_CALLBACK,
-MXML_REAL_CALLBACK, and MXML_TEXT_CALLBACK are defined for loading
-child nodes of the specified type.
-
-The SAX callback must call mxmlRetain() for any nodes that need to
-be kept for later use. Otherwise, nodes are deleted when the parent
-node is closed or after each data, comment, CDATA, or directive node.
-
-@since Mini-XML 2.3@</description>
-    <argument name="top" direction="I">
-      <type>mxml_node_t *</type>
-      <description>Top node</description>
-    </argument>
-    <argument name="s" direction="I">
-      <type>const char *</type>
-      <description>String to load</description>
-    </argument>
-    <argument name="cb" direction="I">
-      <type>mxml_load_cb_t</type>
-      <description>Callback function or MXML_NO_CALLBACK</description>
-    </argument>
-    <argument name="sax_cb" direction="I">
-      <type>mxml_sax_cb_t</type>
-      <description>SAX callback or MXML_NO_CALLBACK</description>
-    </argument>
-    <argument name="sax_data" direction="I">
-      <type>void *</type>
-      <description>SAX user data</description>
-    </argument>
-  </function>
-  <function name="mxmlSaveAllocString">
-    <returnvalue>
-      <type>char *</type>
-      <description>Allocated string or NULL</description>
-    </returnvalue>
-    <description>Save an XML node tree to an allocated string.
-
-This function returns a pointer to a string containing the textual
-representation of the XML node tree.  The string should be freed
-using the free() function when you are done with it.  NULL is returned
-if the node would produce an empty string or if the string cannot be
-allocated.
-
-The callback argument specifies a function that returns a whitespace
-string or NULL before and after each element. If MXML_NO_CALLBACK
-is specified, whitespace will only be added before MXML_TEXT nodes
-with leading whitespace and before attribute names inside opening
-element tags.</description>
-    <argument name="node" direction="I">
-      <type>mxml_node_t *</type>
-      <description>Node to write</description>
-    </argument>
-    <argument name="cb" direction="I">
-      <type>mxml_save_cb_t</type>
-      <description>Whitespace callback or MXML_NO_CALLBACK</description>
-    </argument>
-  </function>
-  <function name="mxmlSaveFd">
-    <returnvalue>
-      <type>int</type>
-      <description>0 on success, -1 on error.</description>
-    </returnvalue>
-    <description>Save an XML tree to a file descriptor.
-
-The callback argument specifies a function that returns a whitespace
-string or NULL before and after each element. If MXML_NO_CALLBACK
-is specified, whitespace will only be added before MXML_TEXT nodes
-with leading whitespace and before attribute names inside opening
-element tags.</description>
-    <argument name="node" direction="I">
-      <type>mxml_node_t *</type>
-      <description>Node to write</description>
-    </argument>
-    <argument name="fd" direction="I">
-      <type>int</type>
-      <description>File descriptor to write to</description>
-    </argument>
-    <argument name="cb" direction="I">
-      <type>mxml_save_cb_t</type>
-      <description>Whitespace callback or MXML_NO_CALLBACK</description>
-    </argument>
-  </function>
-  <function name="mxmlSaveFile">
-    <returnvalue>
-      <type>int</type>
-      <description>0 on success, -1 on error.</description>
-    </returnvalue>
-    <description>Save an XML tree to a file.
-
-The callback argument specifies a function that returns a whitespace
-string or NULL before and after each element. If MXML_NO_CALLBACK
-is specified, whitespace will only be added before MXML_TEXT nodes
-with leading whitespace and before attribute names inside opening
-element tags.</description>
-    <argument name="node" direction="I">
-      <type>mxml_node_t *</type>
-      <description>Node to write</description>
-    </argument>
-    <argument name="fp" direction="I">
-      <type>FILE *</type>
-      <description>File to write to</description>
-    </argument>
-    <argument name="cb" direction="I">
-      <type>mxml_save_cb_t</type>
-      <description>Whitespace callback or MXML_NO_CALLBACK</description>
-    </argument>
-  </function>
-  <function name="mxmlSaveString">
-    <returnvalue>
-      <type>int</type>
-      <description>Size of string</description>
-    </returnvalue>
-    <description>Save an XML node tree to a string.
-
-This function returns the total number of bytes that would be
-required for the string but only copies (bufsize - 1) characters
-into the specified buffer.
-
-The callback argument specifies a function that returns a whitespace
-string or NULL before and after each element. If MXML_NO_CALLBACK
-is specified, whitespace will only be added before MXML_TEXT nodes
-with leading whitespace and before attribute names inside opening
-element tags.</description>
-    <argument name="node" direction="I">
-      <type>mxml_node_t *</type>
-      <description>Node to write</description>
-    </argument>
-    <argument name="buffer" direction="I">
-      <type>char *</type>
-      <description>String buffer</description>
-    </argument>
-    <argument name="bufsize" direction="I">
-      <type>int</type>
-      <description>Size of string buffer</description>
-    </argument>
-    <argument name="cb" direction="I">
-      <type>mxml_save_cb_t</type>
-      <description>Whitespace callback or MXML_NO_CALLBACK</description>
-    </argument>
-  </function>
-  <function name="mxmlSetCDATA">
-    <returnvalue>
-      <type>int</type>
-      <description>0 on success, -1 on failure</description>
-    </returnvalue>
-    <description>Set the element name of a CDATA node.
-
-The node is not changed if it is not a CDATA element node.
-
-@since Mini-XML 2.3@</description>
-    <argument name="node" direction="I">
-      <type>mxml_node_t *</type>
-      <description>Node to set</description>
-    </argument>
-    <argument name="data" direction="I">
-      <type>const char *</type>
-      <description>New data string</description>
-    </argument>
-  </function>
-  <function name="mxmlSetCustom">
-    <returnvalue>
-      <type>int</type>
-      <description>0 on success, -1 on failure</description>
-    </returnvalue>
-    <description>Set the data and destructor of a custom data node.
-
-The node is not changed if it is not a custom node.
-
-@since Mini-XML 2.1@</description>
-    <argument name="node" direction="I">
-      <type>mxml_node_t *</type>
-      <description>Node to set</description>
-    </argument>
-    <argument name="data" direction="I">
-      <type>void *</type>
-      <description>New data pointer</description>
-    </argument>
-    <argument name="destroy" direction="I">
-      <type>mxml_custom_destroy_cb_t</type>
-      <description>New destructor function</description>
-    </argument>
-  </function>
-  <function name="mxmlSetCustomHandlers">
-    <description>Set the handling functions for custom data.
-
-The load function accepts a node pointer and a data string and must
-return 0 on success and non-zero on error.
-
-The save function accepts a node pointer and must return a malloc'd
-string on success and NULL on error.</description>
-    <argument name="load" direction="I">
-      <type>mxml_custom_load_cb_t</type>
-      <description>Load function</description>
-    </argument>
-    <argument name="save" direction="I">
-      <type>mxml_custom_save_cb_t</type>
-      <description>Save function</description>
-    </argument>
-  </function>
-  <function name="mxmlSetElement">
-    <returnvalue>
-      <type>int</type>
-      <description>0 on success, -1 on failure</description>
-    </returnvalue>
-    <description>Set the name of an element node.
-
-The node is not changed if it is not an element node.</description>
-    <argument name="node" direction="I">
-      <type>mxml_node_t *</type>
-      <description>Node to set</description>
-    </argument>
-    <argument name="name" direction="I">
-      <type>const char *</type>
-      <description>New name string</description>
-    </argument>
-  </function>
-  <function name="mxmlSetErrorCallback">
-    <description>Set the error message callback.</description>
-    <argument name="cb" direction="I">
-      <type>mxml_error_cb_t</type>
-      <description>Error callback function</description>
-    </argument>
-  </function>
-  <function name="mxmlSetInteger">
-    <returnvalue>
-      <type>int</type>
-      <description>0 on success, -1 on failure</description>
-    </returnvalue>
-    <description>Set the value of an integer node.
-
-The node is not changed if it is not an integer node.</description>
-    <argument name="node" direction="I">
-      <type>mxml_node_t *</type>
-      <description>Node to set</description>
-    </argument>
-    <argument name="integer" direction="I">
-      <type>int</type>
-      <description>Integer value</description>
-    </argument>
-  </function>
-  <function name="mxmlSetOpaque">
-    <returnvalue>
-      <type>int</type>
-      <description>0 on success, -1 on failure</description>
-    </returnvalue>
-    <description>Set the value of an opaque node.
-
-The node is not changed if it is not an opaque node.</description>
-    <argument name="node" direction="I">
-      <type>mxml_node_t *</type>
-      <description>Node to set</description>
-    </argument>
-    <argument name="opaque" direction="I">
-      <type>const char *</type>
-      <description>Opaque string</description>
-    </argument>
-  </function>
-  <function name="mxmlSetReal">
-    <returnvalue>
-      <type>int</type>
-      <description>0 on success, -1 on failure</description>
-    </returnvalue>
-    <description>Set the value of a real number node.
-
-The node is not changed if it is not a real number node.</description>
-    <argument name="node" direction="I">
-      <type>mxml_node_t *</type>
-      <description>Node to set</description>
-    </argument>
-    <argument name="real" direction="I">
-      <type>double</type>
-      <description>Real number value</description>
-    </argument>
-  </function>
-  <function name="mxmlSetText">
-    <returnvalue>
-      <type>int</type>
-      <description>0 on success, -1 on failure</description>
-    </returnvalue>
-    <description>Set the value of a text node.
-
-The node is not changed if it is not a text node.</description>
-    <argument name="node" direction="I">
-      <type>mxml_node_t *</type>
-      <description>Node to set</description>
-    </argument>
-    <argument name="whitespace" direction="I">
-      <type>int</type>
-      <description>1 = leading whitespace, 0 = no whitespace</description>
-    </argument>
-    <argument name="string" direction="I">
-      <type>const char *</type>
-      <description>String</description>
-    </argument>
-  </function>
-  <function name="mxmlSetTextf">
-    <returnvalue>
-      <type>int</type>
-      <description>0 on success, -1 on failure</description>
-    </returnvalue>
-    <description>Set the value of a text node to a formatted string.
-
-The node is not changed if it is not a text node.</description>
-    <argument name="node" direction="I">
-      <type>mxml_node_t *</type>
-      <description>Node to set</description>
-    </argument>
-    <argument name="whitespace" direction="I">
-      <type>int</type>
-      <description>1 = leading whitespace, 0 = no whitespace</description>
-    </argument>
-    <argument name="format" direction="I">
-      <type>const char *</type>
-      <description>Printf-style format string</description>
-    </argument>
-    <argument name="..." direction="I">
-      <type />      <description>Additional arguments as needed</description>
-    </argument>
-  </function>
-  <function name="mxmlSetWrapMargin">
-    <description>Set the the wrap margin when saving XML data.
-
-Wrapping is disabled when &quot;column&quot; is 0.
-
-@since Mini-XML 2.3@</description>
-    <argument name="column" direction="I">
-      <type>int</type>
-      <description>Column for wrapping, 0 to disable wrapping</description>
-    </argument>
-  </function>
-  <function name="mxmlWalkNext">
-    <returnvalue>
-      <type>mxml_node_t *</type>
-      <description>Next node or NULL</description>
-    </returnvalue>
-    <description>Walk to the next logical node in the tree.
-
-The descend argument controls whether the first child is considered
-to be the next node. The top node argument constrains the walk to
-the node's children.</description>
-    <argument name="node" direction="I">
-      <type>mxml_node_t *</type>
-      <description>Current node</description>
-    </argument>
-    <argument name="top" direction="I">
-      <type>mxml_node_t *</type>
-      <description>Top node</description>
-    </argument>
-    <argument name="descend" direction="I">
-      <type>int</type>
-      <description>Descend into tree - MXML_DESCEND, MXML_NO_DESCEND, or MXML_DESCEND_FIRST</description>
-    </argument>
-  </function>
-  <function name="mxmlWalkPrev">
-    <returnvalue>
-      <type>mxml_node_t *</type>
-      <description>Previous node or NULL</description>
-    </returnvalue>
-    <description>Walk to the previous logical node in the tree.
-
-The descend argument controls whether the previous node's last child
-is considered to be the previous node. The top node argument constrains
-the walk to the node's children.</description>
-    <argument name="node" direction="I">
-      <type>mxml_node_t *</type>
-      <description>Current node</description>
-    </argument>
-    <argument name="top" direction="I">
-      <type>mxml_node_t *</type>
-      <description>Top node</description>
-    </argument>
-    <argument name="descend" direction="I">
-      <type>int</type>
-      <description>Descend into tree - MXML_DESCEND, MXML_NO_DESCEND, or MXML_DESCEND_FIRST</description>
-    </argument>
-  </function>
-  <struct name="mxml_attr_s">
-    <description>An XML element attribute value.</description>
-    <variable name="name">
-      <type>char *</type>
-      <description>Attribute name</description>
-    </variable>
-    <variable name="value">
-      <type>char *</type>
-      <description>Attribute value</description>
-    </variable>
-  </struct>
-  <typedef name="mxml_attr_t">
-    <type>struct mxml_attr_s</type>
-    <description>An XML element attribute value.</description>
-  </typedef>
-  <typedef name="mxml_custom_destroy_cb_t">
-    <type>void(*)(void *)</type>
-    <description>Custom data destructor</description>
-  </typedef>
-  <typedef name="mxml_custom_load_cb_t">
-    <type>int(*)(mxml_node_t *, const char *)</type>
-    <description>Custom data load callback function</description>
-  </typedef>
-  <struct name="mxml_custom_s">
-    <description>An XML custom value. @since Mini-XML 2.1@</description>
-    <variable name="data">
-      <type>void *</type>
-      <description>Pointer to (allocated) custom data</description>
-    </variable>
-    <variable name="destroy">
-      <type>mxml_custom_destroy_cb_t</type>
-      <description>Pointer to destructor function</description>
-    </variable>
-  </struct>
-  <typedef name="mxml_custom_save_cb_t">
-    <type>char *(*)(mxml_node_t *)</type>
-    <description>Custom data save callback function</description>
-  </typedef>
-  <typedef name="mxml_custom_t">
-    <type>struct mxml_custom_s</type>
-    <description>An XML custom value. @since Mini-XML 2.1@</description>
-  </typedef>
-  <struct name="mxml_element_s">
-    <description>An XML element value.</description>
-    <variable name="attrs">
-      <type>mxml_attr_t *</type>
-      <description>Attributes</description>
-    </variable>
-    <variable name="name">
-      <type>char *</type>
-      <description>Name of element</description>
-    </variable>
-    <variable name="num_attrs">
-      <type>int</type>
-      <description>Number of attributes</description>
-    </variable>
-  </struct>
-  <typedef name="mxml_element_t">
-    <type>struct mxml_element_s</type>
-    <description>An XML element value.</description>
-  </typedef>
-  <typedef name="mxml_entity_cb_t">
-    <type>int(*)(const char *)</type>
-    <description>Entity callback function</description>
-  </typedef>
-  <typedef name="mxml_error_cb_t">
-    <type>void(*)(const char *)</type>
-    <description>Error callback function</description>
-  </typedef>
-  <struct name="mxml_index_s">
-    <description>An XML node index.</description>
-    <variable name="alloc_nodes">
-      <type>int</type>
-      <description>Allocated nodes in index</description>
-    </variable>
-    <variable name="attr">
-      <type>char *</type>
-      <description>Attribute used for indexing or NULL</description>
-    </variable>
-    <variable name="cur_node">
-      <type>int</type>
-      <description>Current node</description>
-    </variable>
-    <variable name="nodes">
-      <type>mxml_node_t **</type>
-      <description>Node array</description>
-    </variable>
-    <variable name="num_nodes">
-      <type>int</type>
-      <description>Number of nodes in index</description>
-    </variable>
-  </struct>
-  <typedef name="mxml_index_t">
-    <type>struct mxml_index_s</type>
-    <description>An XML node index.</description>
-  </typedef>
-  <typedef name="mxml_load_cb_t">
-    <type>mxml_type_t(*)(mxml_node_t *)</type>
-    <description>Load callback function</description>
-  </typedef>
-  <struct name="mxml_node_s">
-    <description>An XML node.</description>
-    <variable name="child">
-      <type>struct mxml_node_s *</type>
-      <description>First child node</description>
-    </variable>
-    <variable name="last_child">
-      <type>struct mxml_node_s *</type>
-      <description>Last child node</description>
-    </variable>
-    <variable name="next">
-      <type>struct mxml_node_s *</type>
-      <description>Next node under same parent</description>
-    </variable>
-    <variable name="parent">
-      <type>struct mxml_node_s *</type>
-      <description>Parent node</description>
-    </variable>
-    <variable name="prev">
-      <type>struct mxml_node_s *</type>
-      <description>Previous node under same parent</description>
-    </variable>
-    <variable name="ref_count">
-      <type>int</type>
-      <description>Use count</description>
-    </variable>
-    <variable name="type">
-      <type>mxml_type_t</type>
-      <description>Node type</description>
-    </variable>
-    <variable name="user_data">
-      <type>void *</type>
-      <description>User data</description>
-    </variable>
-    <variable name="value">
-      <type>mxml_value_t</type>
-      <description>Node value</description>
-    </variable>
-  </struct>
-  <typedef name="mxml_node_t">
-    <type>struct mxml_node_s</type>
-    <description>An XML node.</description>
-  </typedef>
-  <typedef name="mxml_save_cb_t">
-    <type>const char *(*)(mxml_node_t *, int)</type>
-    <description>Save callback function</description>
-  </typedef>
-  <typedef name="mxml_sax_cb_t">
-    <type>void(*)(mxml_node_t *, mxml_sax_event_t, void *)</type>
-    <description>SAX callback function</description>
-  </typedef>
-  <enumeration name="mxml_sax_event_e">
-    <description>SAX event type.</description>
-    <constant name="MXML_SAX_CDATA">
-      <description>CDATA node</description>
-    </constant>
-    <constant name="MXML_SAX_COMMENT">
-      <description>Comment node</description>
-    </constant>
-    <constant name="MXML_SAX_DATA">
-      <description>Data node</description>
-    </constant>
-    <constant name="MXML_SAX_DIRECTIVE">
-      <description>Processing directive node</description>
-    </constant>
-    <constant name="MXML_SAX_ELEMENT_CLOSE">
-      <description>Element closed</description>
-    </constant>
-    <constant name="MXML_SAX_ELEMENT_OPEN">
-      <description>Element opened</description>
-    </constant>
-  </enumeration>
-  <typedef name="mxml_sax_event_t">
-    <type>enum mxml_sax_event_e</type>
-    <description>SAX event type.</description>
-  </typedef>
-  <struct name="mxml_text_s">
-    <description>An XML text value.</description>
-    <variable name="string">
-      <type>char *</type>
-      <description>Fragment string</description>
-    </variable>
-    <variable name="whitespace">
-      <type>int</type>
-      <description>Leading whitespace?</description>
-    </variable>
-  </struct>
-  <typedef name="mxml_text_t">
-    <type>struct mxml_text_s</type>
-    <description>An XML text value.</description>
-  </typedef>
-  <enumeration name="mxml_type_e">
-    <description>The XML node type.</description>
-    <constant name="MXML_CUSTOM">
-      <description>Custom data @since Mini-XML 2.1@</description>
-    </constant>
-    <constant name="MXML_ELEMENT">
-      <description>XML element with attributes</description>
-    </constant>
-    <constant name="MXML_IGNORE">
-      <description>Ignore/throw away node @since Mini-XML 2.3@</description>
-    </constant>
-    <constant name="MXML_INTEGER">
-      <description>Integer value</description>
-    </constant>
-    <constant name="MXML_OPAQUE">
-      <description>Opaque string</description>
-    </constant>
-    <constant name="MXML_REAL">
-      <description>Real value</description>
-    </constant>
-    <constant name="MXML_TEXT">
-      <description>Text fragment</description>
-    </constant>
-  </enumeration>
-  <typedef name="mxml_type_t">
-    <description>The XML node type.</description>
-    <type>enum mxml_type_e</type>
-  </typedef>
-  <typedef name="mxml_value_t">
-    <type>union mxml_value_u</type>
-    <description>An XML node value.</description>
-  </typedef>
-  <union name="mxml_value_u">
-    <description>An XML node value.</description>
-    <variable name="custom">
-      <type>mxml_custom_t</type>
-      <description>Custom data @since Mini-XML 2.1@</description>
-    </variable>
-    <variable name="element">
-      <type>mxml_element_t</type>
-      <description>Element</description>
-    </variable>
-    <variable name="integer">
-      <type>int</type>
-      <description>Integer number</description>
-    </variable>
-    <variable name="opaque">
-      <type>char *</type>
-      <description>Opaque string</description>
-    </variable>
-    <variable name="real">
-      <type>double</type>
-      <description>Real number</description>
-    </variable>
-    <variable name="text">
-      <type>mxml_text_t</type>
-      <description>Text fragment</description>
-    </variable>
-  </union>
-</mxmldoc>
diff -urN mxml-2.6-orig/mxmldoc.c mxml-2.6/mxmldoc.c
--- mxml-2.6-orig/mxmldoc.c	2009-05-05 06:38:00.000000000 -0700
+++ mxml-2.6/mxmldoc.c	2009-11-18 18:21:26.000000000 -0800
@@ -57,7 +57,9 @@
 #ifndef WIN32
 #  include <dirent.h>
 #  include <unistd.h>
+#ifndef __HAIKU__
 #  include <spawn.h>
+#endif
 #  include <sys/wait.h>
 extern char **environ;
 #endif /* !WIN32 */
diff -urN mxml-2.6-orig/temp1.xmlfd mxml-2.6/temp1.xmlfd
--- mxml-2.6-orig/temp1.xmlfd	1969-12-31 16:00:00.000000000 -0800
+++ mxml-2.6/temp1.xmlfd	2009-11-18 18:25:08.000000000 -0800
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<group>
+	<option>
+		<keyword type="opaque">InputSlot</keyword>
+		<default type="opaque">Auto</default>
+		<text>Media Source</text>
+		<order type="real">10.000000</order>
+		<choice>
+			<keyword type="opaque">Auto</keyword>
+			<text>Auto Tray Selection</text>
+			<code type="opaque" />
+		</choice>
+		<choice>
+			<keyword type="opaque">Upper</keyword>
+			<text>Tray 1</text>
+			<code type="opaque">&lt;&lt;/MediaPosition 0&gt;&gt;setpagedevice</code>
+		</choice>
+		<choice>
+			<keyword type="opaque">Lower</keyword>
+			<text>Tray 2</text>
+			<code type="opaque">&lt;&lt;/MediaPosition 1&gt;&gt;setpagedevice</code>
+		</choice>
+	</option>
+	<integer>123</integer>
+	<string>Now is the time for all good men to come to the aid of their
+country.</string>
+	<!-- this is a comment -->
+	<![CDATA[this is CDATA 0123456789ABCDEF]]>
+</group>
