summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWaldemar Brodkorb <wbx@openadk.org>2017-03-31 05:14:20 +0200
committerWaldemar Brodkorb <wbx@openadk.org>2017-04-02 16:12:46 +0200
commitb21daaff573bb7e9780a599c1fda8aae3fcf87a0 (patch)
tree8f3b33e7c840fe99fd27aa396501b460128ebeea
parent63f42c2b01b7f1cca2077babf6ac6d27bec4d3b5 (diff)
mxml: update to 2.10
-rwxr-xr-xpackage/mxml/Makefile8
-rw-r--r--package/mxml/patches/patch-Makefile_in90
-rw-r--r--package/mxml/patches/patch-configure30
-rw-r--r--package/mxml/patches/patch-doc_reference_html1638
-rw-r--r--package/mxml/patches/patch-mxmldoc_c11
5 files changed, 17 insertions, 1760 deletions
diff --git a/package/mxml/Makefile b/package/mxml/Makefile
index bba467df6..f2d772da3 100755
--- a/package/mxml/Makefile
+++ b/package/mxml/Makefile
@@ -4,13 +4,13 @@
include ${ADK_TOPDIR}/rules.mk
PKG_NAME:= mxml
-PKG_VERSION:= 2.6
+PKG_VERSION:= 2.10
PKG_RELEASE:= 1
-PKG_HASH:= b0d347da1a0d5a8c9e82f66087d55cfe499728dacae563740d7e733648c69795
+PKG_HASH:= 267ff58b64ddc767170d71dab0c729c06f45e1df9a9b6f75180b564f09767891
PKG_DESCR:= lightweight xml library
PKG_SECTION:= libs/data
-PKG_URL:= http://www.msweet.org/projects.php?Z3
-PKG_SITES:= http://www.msweet.org/files/project3/
+PKG_URL:= http://www.msweet.org/
+PKG_SITES:= https://github.com/michaelrsweet/mxml/releases/download/release-2.10/
PKG_LIBNAME:= libmxml
PKG_OPTS:= dev
diff --git a/package/mxml/patches/patch-Makefile_in b/package/mxml/patches/patch-Makefile_in
index 5ed9231f1..ce6cdedca 100644
--- a/package/mxml/patches/patch-Makefile_in
+++ b/package/mxml/patches/patch-Makefile_in
@@ -1,7 +1,7 @@
---- mxml-2.6.orig/Makefile.in 2008-12-06 05:20:38.000000000 +0100
-+++ mxml-2.6/Makefile.in 2011-05-10 13:06:25.000000000 +0200
+--- mxml-2.10.orig/Makefile.in 2014-10-19 19:21:48.000000000 +0200
++++ mxml-2.10/Makefile.in 2017-03-30 19:52:58.195963935 +0200
@@ -88,7 +88,7 @@ PUBLIBOBJS = mxml-attr.o mxml-entity.o m
- mxml-node.o mxml-search.o mxml-set.o
+ mxml-index.o mxml-node.o mxml-search.o mxml-set.o
LIBOBJS = $(PUBLIBOBJS) mxml-private.o mxml-string.o
OBJS = mxmldoc.o testmxml.o $(LIBOBJS)
-TARGETS = $(LIBMXML) mxmldoc testmxml mxml.xml doc/mxml.man
@@ -9,95 +9,31 @@
#
-@@ -133,21 +133,21 @@ clang:
+@@ -139,26 +139,13 @@ clang-changes:
# Install everything...
#
-install: $(TARGETS) install-$(LIBMXML) install-libmxml.a
-+install: $(TARGETS) install-$(LIBMXML)
- $(INSTALL_DIR) $(BUILDROOT)$(bindir)
-- $(INSTALL_BIN) mxmldoc $(BUILDROOT)$(bindir)
+- echo Installing mxmldoc in $(BUILDROOT)$(bindir)...
+- $(INSTALL_DIR) $(BUILDROOT)$(bindir)
+- $(INSTALL_BIN) mxmldoc $(BUILDROOT)$(bindir)
+- echo Installing documentation in $(BUILDROOT)$(docdir)...
- $(INSTALL_DIR) $(BUILDROOT)$(docdir)
- for file in $(DOCFILES); do \
- $(INSTALL_MAN) $$file $(BUILDROOT)$(docdir); \
- done
-+ #$(INSTALL_BIN) mxmldoc $(BUILDROOT)$(bindir)
-+ #$(INSTALL_DIR) $(BUILDROOT)$(docdir)
-+ #for file in $(DOCFILES); do \
-+ # $(INSTALL_MAN) $$file $(BUILDROOT)$(docdir); \
-+ #done
++install: $(TARGETS) install-$(LIBMXML)
+ echo Installing header files in $(BUILDROOT)$(includedir)...
$(INSTALL_DIR) $(BUILDROOT)$(includedir)
$(INSTALL_DATA) mxml.h $(BUILDROOT)$(includedir)
+ echo Installing pkgconfig files in $(BUILDROOT)$(libdir)/pkgconfig...
$(INSTALL_DIR) $(BUILDROOT)$(libdir)/pkgconfig
$(INSTALL_DATA) mxml.pc $(BUILDROOT)$(libdir)/pkgconfig
+- echo Installing man pages in $(BUILDROOT)$(mandir)...
- $(INSTALL_DIR) $(BUILDROOT)$(mandir)/man1
- $(INSTALL_MAN) doc/mxmldoc.man $(BUILDROOT)$(mandir)/man1/mxmldoc.1
- $(INSTALL_DIR) $(BUILDROOT)$(mandir)/man3
- $(INSTALL_MAN) doc/mxml.man $(BUILDROOT)$(mandir)/man3/mxml.3
-+ #$(INSTALL_DIR) $(BUILDROOT)$(mandir)/man1
-+ #$(INSTALL_MAN) doc/mxmldoc.man $(BUILDROOT)$(mandir)/man1/mxmldoc.1
-+ #$(INSTALL_DIR) $(BUILDROOT)$(mandir)/man3
-+ #$(INSTALL_MAN) doc/mxml.man $(BUILDROOT)$(mandir)/man3/mxml.3
install-libmxml.a:
- $(INSTALL_DIR) $(BUILDROOT)$(libdir)
-@@ -294,7 +294,7 @@ mxmldoc: $(LIBMXML) mxmldoc.o
- $(CC) -L. $(LDFLAGS) -o $@ mxmldoc.o -lmxml $(LIBS)
-
- mxmldoc-static: libmxml.a mxmldoc.o
-- $(CC) $(LDFLAGS) -o $@ mxmldoc.o libmxml.a $(LIBS)
-+ $(CC_FOR_BUILD) $(LDFLAGS_FOR_BUILD) -o $@ mxmldoc.o libmxml.a $(LIBS)
-
- mxmldoc.o: mxml.h
-
-@@ -304,28 +304,7 @@ mxmldoc.o: mxml.h
- #
-
- testmxml: libmxml.a testmxml.o
-- $(CC) $(LDFLAGS) -o $@ testmxml.o libmxml.a $(LIBS)
-- @echo Testing library...
-- ./testmxml test.xml >temp1.xml 2>temp1s.xml
-- ./testmxml temp1.xml >temp2.xml 2>temp2s.xml
-- @if cmp temp1.xml temp2.xml; then \
-- echo Stdio file test passed!; \
-- $(RM) temp2.xml temp2s.xml; \
-- else \
-- echo Stdio file test failed!; \
-- fi
-- @if cmp temp1.xml temp1s.xml; then \
-- echo String test passed!; \
-- $(RM) temp1.xml temp1s.xml; \
-- else \
-- echo String test failed!; \
-- fi
-- @if cmp test.xml test.xmlfd; then \
-- echo File descriptor test passed!; \
-- $(RM) test.xmlfd; \
-- else \
-- echo File descriptor test failed!; \
-- fi
-+ $(CC_FOR_BUILD) $(LDFLAGS_FOR_BUILD) -o $@ testmxml.o libmxml.a $(LIBS)
-
- testmxml.o: mxml.h
-
-@@ -336,19 +315,7 @@ testmxml.o: mxml.h
-
- mxml.xml: mxmldoc-static mxml.h $(PUBLIBOBJS:.o=.c)
- $(RM) mxml.xml
-- ./mxmldoc-static --header doc/reference.heading mxml.xml mxml.h $(PUBLIBOBJS:.o=.c) >doc/reference.html
-- if test "x`uname`" = xDarwin; then \
-- ./mxmldoc-static --docset org.minixml.docset \
-- --docversion @VERSION@ --feedname minixml.org \
-- --feedurl http://www.minixml.org/org.minixml.atom \
-- --header doc/docset.header --intro doc/docset.intro \
-- --css doc/docset.css --title "Mini-XML API Reference" \
-- mxml.xml || exit 1; \
-- /Developer/usr/bin/docsetutil package --output org.minixml.xar \
-- --atom org.minixml.atom \
-- --download-url http://www.minixml.org/org.minixml.xar \
-- org.minixml.docset || exit 1; \
-- fi
-+ #./mxmldoc-static --header doc/reference.heading mxml.xml mxml.h $(PUBLIBOBJS:.o=.c) >doc/reference.html
-
- valgrind: mxmldoc-static
- $(RM) valgrind.xml
+ echo Installing libmxml.a to $(BUILDROOT)$(libdir)...
diff --git a/package/mxml/patches/patch-configure b/package/mxml/patches/patch-configure
deleted file mode 100644
index 5c8b5da9f..000000000
--- a/package/mxml/patches/patch-configure
+++ /dev/null
@@ -1,30 +0,0 @@
---- mxml-2.6.orig/configure 2009-04-18 19:05:52.000000000 +0200
-+++ mxml-2.6/configure 2011-05-10 12:55:05.000000000 +0200
-@@ -1778,8 +1778,8 @@ else
- fi
-
-
--uname=`uname`
--uversion=`uname -r | sed -e '1,$s/[^0-9]//g'`
-+uname=Linux
-+uversion=2.6
- if test x$uname = xIRIX64; then
- uname="IRIX"
- fi
-@@ -3479,15 +3479,7 @@ fi
-
-
-
--case "$uname" in
-- Darwin* | *BSD*)
-- ARFLAGS="-rcv"
-- ;;
-- *)
-- ARFLAGS="crvs"
-- ;;
--esac
--
-+ARFLAGS="crvs"
-
-
-
diff --git a/package/mxml/patches/patch-doc_reference_html b/package/mxml/patches/patch-doc_reference_html
deleted file mode 100644
index 0fa8d3521..000000000
--- a/package/mxml/patches/patch-doc_reference_html
+++ /dev/null
@@ -1,1638 +0,0 @@
---- mxml-2.6.orig/doc/reference.html 2009-03-19 06:38:52.000000000 +0100
-+++ mxml-2.6/doc/reference.html 2011-05-10 12:57:21.000000000 +0200
-@@ -1,1635 +0,0 @@
--<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
--<html>
--<head>
--<title>Documentation</title>
--<meta name="creator" content="Mini-XML v2.6">
--<style type="text/css"><!--
--body, p, h1, h2, h3, h4 {
-- font-family: lucida grande, geneva, helvetica, arial, sans-serif;
--}
--div.body h1 {
-- font-size: 250%;
-- font-weight: bold;
-- margin: 0;
--}
--div.body h2 {
-- font-size: 250%;
-- margin-top: 1.5em;
--}
--div.body h3 {
-- font-size: 150%;
-- margin-bottom: 0.5em;
-- margin-top: 1.5em;
--}
--div.body h4 {
-- font-size: 110%;
-- margin-bottom: 0.5em;
-- margin-top: 1.5em;
--}
--div.body h5 {
-- font-size: 100%;
-- margin-bottom: 0.5em;
-- margin-top: 1.5em;
--}
--div.contents {
-- background: #e8e8e8;
-- border: solid thin black;
-- padding: 10px;
--}
--div.contents h1 {
-- font-size: 110%;
--}
--div.contents h2 {
-- font-size: 100%;
--}
--div.contents ul.contents {
-- font-size: 80%;
--}
--.class {
-- border-bottom: solid 2px gray;
--}
--.constants {
--}
--.description {
-- margin-top: 0.5em;
--}
--.discussion {
--}
--.enumeration {
-- border-bottom: solid 2px gray;
--}
--.function {
-- border-bottom: solid 2px gray;
-- margin-bottom: 0;
--}
--.members {
--}
--.method {
--}
--.parameters {
--}
--.returnvalue {
--}
--.struct {
-- border-bottom: solid 2px gray;
--}
--.typedef {
-- border-bottom: solid 2px gray;
--}
--.union {
-- border-bottom: solid 2px gray;
--}
--.variable {
--}
--code, p.code, pre, ul.code li {
-- font-family: monaco, courier, monospace;
-- font-size: 90%;
--}
--a:link, a:visited {
-- text-decoration: none;
--}
--span.info {
-- background: black;
-- border: solid thin black;
-- color: white;
-- font-size: 80%;
-- font-style: italic;
-- font-weight: bold;
-- white-space: nowrap;
--}
--h3 span.info, h4 span.info {
-- float: right;
-- font-size: 100%;
--}
--ul.code, ul.contents, ul.subcontents {
-- list-style-type: none;
-- margin: 0;
-- padding-left: 0;
--}
--ul.code li {
-- margin: 0;
--}
--ul.contents > li {
-- margin-top: 1em;
--}
--ul.contents li ul.code, ul.contents li ul.subcontents {
-- padding-left: 2em;
--}
--div.body dl {
-- margin-top: 0;
--}
--div.body dt {
-- font-style: italic;
-- margin-top: 0;
--}
--div.body dd {
-- margin-bottom: 0.5em;
--}
--h1.title {
--}
--h2.title {
-- border-bottom: solid 2px black;
--}
--h3.title {
-- border-bottom: solid 2px black;
--}
----></style>
--</head>
--<body>
--<div class='body'>
--<h1 align='right'><a name='REFERENCE'><img src="C.gif" align="right"
--hspace="10" width="100" height="100" alt="C"></a>Library
--Reference</h1>
--
--<h2 class="title">Contents</h2>
--<ul class="contents">
--<li><a href="#FUNCTIONS">Functions</a><ul class="code">
--<li><a href="#mxmlAdd" title="Add a node to a tree.">mxmlAdd</a></li>
--<li><a href="#mxmlDelete" title="Delete a node and all of its children.">mxmlDelete</a></li>
--<li><a href="#mxmlElementDeleteAttr" title="Delete an attribute.">mxmlElementDeleteAttr</a></li>
--<li><a href="#mxmlElementGetAttr" title="Get an attribute.">mxmlElementGetAttr</a></li>
--<li><a href="#mxmlElementSetAttr" title="Set an attribute.">mxmlElementSetAttr</a></li>
--<li><a href="#mxmlElementSetAttrf" title="Set an attribute with a formatted value.">mxmlElementSetAttrf</a></li>
--<li><a href="#mxmlEntityAddCallback" title="Add a callback to convert entities to Unicode.">mxmlEntityAddCallback</a></li>
--<li><a href="#mxmlEntityGetName" title="Get the name that corresponds to the character value.">mxmlEntityGetName</a></li>
--<li><a href="#mxmlEntityGetValue" title="Get the character corresponding to a named entity.">mxmlEntityGetValue</a></li>
--<li><a href="#mxmlEntityRemoveCallback" title="Remove a callback.">mxmlEntityRemoveCallback</a></li>
--<li><a href="#mxmlFindElement" title="Find the named element.">mxmlFindElement</a></li>
--<li><a href="#mxmlIndexDelete" title="Delete an index.">mxmlIndexDelete</a></li>
--<li><a href="#mxmlIndexEnum" title="Return the next node in the index.">mxmlIndexEnum</a></li>
--<li><a href="#mxmlIndexFind" title="Find the next matching node.">mxmlIndexFind</a></li>
--<li><a href="#mxmlIndexNew" title="Create a new index.">mxmlIndexNew</a></li>
--<li><a href="#mxmlIndexReset" title="Reset the enumeration/find pointer in the index and
--return the first node in the index.">mxmlIndexReset</a></li>
--<li><a href="#mxmlLoadFd" title="Load a file descriptor into an XML node tree.">mxmlLoadFd</a></li>
--<li><a href="#mxmlLoadFile" title="Load a file into an XML node tree.">mxmlLoadFile</a></li>
--<li><a href="#mxmlLoadString" title="Load a string into an XML node tree.">mxmlLoadString</a></li>
--<li><a href="#mxmlNewCDATA" title="Create a new CDATA node.">mxmlNewCDATA</a></li>
--<li><a href="#mxmlNewCustom" title="Create a new custom data node.">mxmlNewCustom</a></li>
--<li><a href="#mxmlNewElement" title="Create a new element node.">mxmlNewElement</a></li>
--<li><a href="#mxmlNewInteger" title="Create a new integer node.">mxmlNewInteger</a></li>
--<li><a href="#mxmlNewOpaque" title="Create a new opaque string.">mxmlNewOpaque</a></li>
--<li><a href="#mxmlNewReal" title="Create a new real number node.">mxmlNewReal</a></li>
--<li><a href="#mxmlNewText" title="Create a new text fragment node.">mxmlNewText</a></li>
--<li><a href="#mxmlNewTextf" title="Create a new formatted text fragment node.">mxmlNewTextf</a></li>
--<li><a href="#mxmlNewXML" title="Create a new XML document tree.">mxmlNewXML</a></li>
--<li><a href="#mxmlRelease" title="Release a node.">mxmlRelease</a></li>
--<li><a href="#mxmlRemove" title="Remove a node from its parent.">mxmlRemove</a></li>
--<li><a href="#mxmlRetain" title="Retain a node.">mxmlRetain</a></li>
--<li><a href="#mxmlSAXLoadFd" title="Load a file descriptor into an XML node tree
--using a SAX callback.">mxmlSAXLoadFd</a></li>
--<li><a href="#mxmlSAXLoadFile" title="Load a file into an XML node tree
--using a SAX callback.">mxmlSAXLoadFile</a></li>
--<li><a href="#mxmlSAXLoadString" title="Load a string into an XML node tree
--using a SAX callback.">mxmlSAXLoadString</a></li>
--<li><a href="#mxmlSaveAllocString" title="Save an XML node tree to an allocated string.">mxmlSaveAllocString</a></li>
--<li><a href="#mxmlSaveFd" title="Save an XML tree to a file descriptor.">mxmlSaveFd</a></li>
--<li><a href="#mxmlSaveFile" title="Save an XML tree to a file.">mxmlSaveFile</a></li>
--<li><a href="#mxmlSaveString" title="Save an XML node tree to a string.">mxmlSaveString</a></li>
--<li><a href="#mxmlSetCDATA" title="Set the element name of a CDATA node.">mxmlSetCDATA</a></li>
--<li><a href="#mxmlSetCustom" title="Set the data and destructor of a custom data node.">mxmlSetCustom</a></li>
--<li><a href="#mxmlSetCustomHandlers" title="Set the handling functions for custom data.">mxmlSetCustomHandlers</a></li>
--<li><a href="#mxmlSetElement" title="Set the name of an element node.">mxmlSetElement</a></li>
--<li><a href="#mxmlSetErrorCallback" title="Set the error message callback.">mxmlSetErrorCallback</a></li>
--<li><a href="#mxmlSetInteger" title="Set the value of an integer node.">mxmlSetInteger</a></li>
--<li><a href="#mxmlSetOpaque" title="Set the value of an opaque node.">mxmlSetOpaque</a></li>
--<li><a href="#mxmlSetReal" title="Set the value of a real number node.">mxmlSetReal</a></li>
--<li><a href="#mxmlSetText" title="Set the value of a text node.">mxmlSetText</a></li>
--<li><a href="#mxmlSetTextf" title="Set the value of a text node to a formatted string.">mxmlSetTextf</a></li>
--<li><a href="#mxmlSetWrapMargin" title="Set the the wrap margin when saving XML data.">mxmlSetWrapMargin</a></li>
--<li><a href="#mxmlWalkNext" title="Walk to the next logical node in the tree.">mxmlWalkNext</a></li>
--<li><a href="#mxmlWalkPrev" title="Walk to the previous logical node in the tree.">mxmlWalkPrev</a></li>
--</ul></li>
--<li><a href="#TYPES">Data Types</a><ul class="code">
-- <li><a href="#mxml_attr_t" title="An XML element attribute value.">mxml_attr_t</a></li>
-- <li><a href="#mxml_custom_destroy_cb_t" title="Custom data destructor">mxml_custom_destroy_cb_t</a></li>
-- <li><a href="#mxml_custom_load_cb_t" title="Custom data load callback function">mxml_custom_load_cb_t</a></li>
-- <li><a href="#mxml_custom_save_cb_t" title="Custom data save callback function">mxml_custom_save_cb_t</a></li>
-- <li><a href="#mxml_custom_t" title="An XML custom value. ">mxml_custom_t</a></li>
-- <li><a href="#mxml_element_t" title="An XML element value.">mxml_element_t</a></li>
-- <li><a href="#mxml_entity_cb_t" title="Entity callback function">mxml_entity_cb_t</a></li>
-- <li><a href="#mxml_error_cb_t" title="Error callback function">mxml_error_cb_t</a></li>
-- <li><a href="#mxml_index_t" title="An XML node index.">mxml_index_t</a></li>
-- <li><a href="#mxml_load_cb_t" title="Load callback function">mxml_load_cb_t</a></li>
-- <li><a href="#mxml_node_t" title="An XML node.">mxml_node_t</a></li>
-- <li><a href="#mxml_save_cb_t" title="Save callback function">mxml_save_cb_t</a></li>
-- <li><a href="#mxml_sax_cb_t" title="SAX callback function">mxml_sax_cb_t</a></li>
-- <li><a href="#mxml_sax_event_t" title="SAX event type.">mxml_sax_event_t</a></li>
-- <li><a href="#mxml_text_t" title="An XML text value.">mxml_text_t</a></li>
-- <li><a href="#mxml_type_t" title="The XML node type.">mxml_type_t</a></li>
-- <li><a href="#mxml_value_t" title="An XML node value.">mxml_value_t</a></li>
--</ul></li>
--<li><a href="#STRUCTURES">Structures</a><ul class="code">
-- <li><a href="#mxml_attr_s" title="An XML element attribute value.">mxml_attr_s</a></li>
-- <li><a href="#mxml_custom_s" title="An XML custom value. ">mxml_custom_s</a></li>
-- <li><a href="#mxml_element_s" title="An XML element value.">mxml_element_s</a></li>
-- <li><a href="#mxml_index_s" title="An XML node index.">mxml_index_s</a></li>
-- <li><a href="#mxml_node_s" title="An XML node.">mxml_node_s</a></li>
-- <li><a href="#mxml_text_s" title="An XML text value.">mxml_text_s</a></li>
--</ul></li>
--<li><a href="#UNIONS">Unions</a><ul class="code">
-- <li><a href="#mxml_value_u" title="An XML node value.">mxml_value_u</a></li>
--</ul></li>
--<li><a href="#ENUMERATIONS">Constants</a><ul class="code">
-- <li><a href="#mxml_sax_event_e" title="SAX event type.">mxml_sax_event_e</a></li>
-- <li><a href="#mxml_type_e" title="The XML node type.">mxml_type_e</a></li>
--</ul></li>
--<h2 class="title"><a name="FUNCTIONS">Functions</a></h2>
--<h3 class="function"><a name="mxmlAdd">mxmlAdd</a></h3>
--<p class="description">Add a node to a tree.</p>
--<p class="code">
--void mxmlAdd (<br>
--&nbsp;&nbsp;&nbsp;&nbsp;<a href="#mxml_node_t">mxml_node_t</a> *parent,<br>
--&nbsp;&nbsp;&nbsp;&nbsp;int where,<br>
--&nbsp;&nbsp;&nbsp;&nbsp;<a href="#mxml_node_t">mxml_node_t</a> *child,<br>
--&nbsp;&nbsp;&nbsp;&nbsp;<a href="#mxml_node_t">mxml_node_t</a> *node<br>
--);</p>
--<h4 class="parameters">Parameters</h4>
--<dl>
--<dt>parent</dt>
--<dd class="description">Parent node</dd>
--<dt>where</dt>
--<dd class="description">Where to add, MXML_ADD_BEFORE or MXML_ADD_AFTER</dd>
--<dt>child</dt>
--<dd class="description">Child node for where or MXML_ADD_TO_PARENT</dd>
--<dt>node</dt>
--<dd class="description">Node to add</dd>
--</dl>
--<h4 class="discussion">Discussion</h4>
--<p class="discussion">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.</p>
--<h3 class="function"><a name="mxmlDelete">mxmlDelete</a></h3>
--<p class="description">Delete a node and all of its children.</p>
--<p class="code">
--void mxmlDelete (<br>
--&nbsp;&nbsp;&nbsp;&nbsp;<a href="#mxml_node_t">mxml_node_t</a> *node<br>
--);</p>
--<h4 class="parameters">Parameters</h4>
--<dl>
--<dt>node</dt>
--<dd class="description">Node to delete</dd>
--</dl>
--<h4 class="discussion">Discussion</h4>
--<p class="discussion">If the specified node has a parent, this function first removes the
--node from its parent using the mxmlRemove() function.</p>
--<h3 class="function"><span class="info">&nbsp;Mini-XML 2.4&nbsp;</span><a name="mxmlElementDeleteAttr">mxmlElementDeleteAttr</a></h3>
--<p class="description">Delete an attribute.</p>
--<p class="code">
--void mxmlElementDeleteAttr (<br>
--&nbsp;&nbsp;&nbsp;&nbsp;<a href="#mxml_node_t">mxml_node_t</a> *node,<br>
--&nbsp;&nbsp;&nbsp;&nbsp;const char *name<br>
--);</p>
--<h4 class="parameters">Parameters</h4>
--<dl>
--<dt>node</dt>
--<dd class="description">Element</dd>
--<dt>name</dt>
--<dd class="description">Attribute name</dd>
--</dl>
--<h3 class="function"><a name="mxmlElementGetAttr">mxmlElementGetAttr</a></h3>
--<p class="description">Get an attribute.</p>
--<p class="code">
--const char *mxmlElementGetAttr (<br>
--&nbsp;&nbsp;&nbsp;&nbsp;<a href="#mxml_node_t">mxml_node_t</a> *node,<br>
--&nbsp;&nbsp;&nbsp;&nbsp;const char *name<br>
--);</p>
--<h4 class="parameters">Parameters</h4>
--<dl>
--<dt>node</dt>
--<dd class="description">Element node</dd>
--<dt>name</dt>
--<dd class="description">Name of attribute</dd>
--</dl>
--<h4 class="returnvalue">Return Value</h4>
--<p class="description">Attribute value or NULL</p>
--<h4 class="discussion">Discussion</h4>
--<p class="discussion">This function returns NULL if the node is not an element or the
--named attribute does not exist.</p>
--<h3 class="function"><a name="mxmlElementSetAttr">mxmlElementSetAttr</a></h3>
--<p class="description">Set an attribute.</p>
--<p class="code">
--void mxmlElementSetAttr (<br>
--&nbsp;&nbsp;&nbsp;&nbsp;<a href="#mxml_node_t">mxml_node_t</a> *node,<br>
--&nbsp;&nbsp;&nbsp;&nbsp;const char *name,<br>
--&nbsp;&nbsp;&nbsp;&nbsp;const char *value<br>
--);</p>
--<h4 class="parameters">Parameters</h4>
--<dl>
--<dt>node</dt>
--<dd class="description">Element node</dd>
--<dt>name</dt>
--<dd class="description">Name of attribute</dd>
--<dt>value</dt>
--<dd class="description">Attribute value</dd>
--</dl>
--<h4 class="discussion">Discussion</h4>
--<p class="discussion">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.</p>
--<h3 class="function"><span class="info">&nbsp;Mini-XML 2.3&nbsp;</span><a name="mxmlElementSetAttrf">mxmlElementSetAttrf</a></h3>
--<p class="description">Set an attribute with a formatted value.</p>
--<p class="code">
--void mxmlElementSetAttrf (<br>
--&nbsp;&nbsp;&nbsp;&nbsp;<a href="#mxml_node_t">mxml_node_t</a> *node,<br>
--&nbsp;&nbsp;&nbsp;&nbsp;const char *name,<br>
--&nbsp;&nbsp;&nbsp;&nbsp;const char *format,<br>
--&nbsp;&nbsp;&nbsp;&nbsp;...<br>
--);</p>
--<h4 class="parameters">Parameters</h4>
--<dl>
--<dt>node</dt>
--<dd class="description">Element node</dd>
--<dt>name</dt>
--<dd class="description">Name of attribute</dd>
--<dt>format</dt>
--<dd class="description">Printf-style attribute value</dd>
--<dt>...</dt>
--<dd class="description">Additional arguments as needed</dd>
--</dl>
--<h4 class="discussion">Discussion</h4>
--<p class="discussion">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.
--
--</p>
--<h3 class="function"><a name="mxmlEntityAddCallback">mxmlEntityAddCallback</a></h3>
--<p class="description">Add a callback to convert entities to Unicode.</p>
--<p class="code">
--int mxmlEntityAddCallback (<br>
--&nbsp;&nbsp;&nbsp;&nbsp;<a href="#mxml_entity_cb_t">mxml_entity_cb_t</a> cb<br>
--);</p>
--<h4 class="parameters">Parameters</h4>
--<dl>
--<dt>cb</dt>
--<dd class="description">Callback function to add</dd>
--</dl>
--<h4 class="returnvalue">Return Value</h4>
--<p class="description">0 on success, -1 on failure</p>
--<h3 class="function"><a name="mxmlEntityGetName">mxmlEntityGetName</a></h3>
--<p class="description">Get the name that corresponds to the character value.</p>
--<p class="code">
--const char *mxmlEntityGetName (<br>
--&nbsp;&nbsp;&nbsp;&nbsp;int val<br>
--);</p>
--<h4 class="parameters">Parameters</h4>
--<dl>
--<dt>val</dt>
--<dd class="description">Character value</dd>
--</dl>
--<h4 class="returnvalue">Return Value</h4>
--<p class="description">Entity name or NULL</p>
--<h4 class="discussion">Discussion</h4>
--<p class="discussion">If val does not need to be represented by a named entity, NULL is returned.</p>
--<h3 class="function"><a name="mxmlEntityGetValue">mxmlEntityGetValue</a></h3>
--<p class="description">Get the character corresponding to a named entity.</p>
--<p class="code">
--int mxmlEntityGetValue (<br>
--&nbsp;&nbsp;&nbsp;&nbsp;const char *name<br>
--);</p>
--<h4 class="parameters">Parameters</h4>
--<dl>
--<dt>name</dt>
--<dd class="description">Entity name</dd>
--</dl>
--<h4 class="returnvalue">Return Value</h4>
--<p class="description">Character value or -1 on error</p>
--<h4 class="discussion">Discussion</h4>
--<p class="discussion">The entity name can also be a numeric constant. -1 is returned if the
--name is not known.</p>
--<h3 class="function"><a name="mxmlEntityRemoveCallback">mxmlEntityRemoveCallback</a></h3>
--<p class="description">Remove a callback.</p>
--<p class="code">
--void mxmlEntityRemoveCallback (<br>
--&nbsp;&nbsp;&nbsp;&nbsp;<a href="#mxml_entity_cb_t">mxml_entity_cb_t</a> cb<br>
--);</p>
--<h4 class="parameters">Parameters</h4>
--<dl>
--<dt>cb</dt>
--<dd class="description">Callback function to remove</dd>
--</dl>
--<h3 class="function"><a name="mxmlFindElement">mxmlFindElement</a></h3>
--<p class="description">Find the named element.</p>
--<p class="code">
--<a href="#mxml_node_t">mxml_node_t</a> *mxmlFindElement (<br>
--&nbsp;&nbsp;&nbsp;&nbsp;<a href="#mxml_node_t">mxml_node_t</a> *node,<br>
--&nbsp;&nbsp;&nbsp;&nbsp;<a href="#mxml_node_t">mxml_node_t</a> *top,<br>
--&nbsp;&nbsp;&nbsp;&nbsp;const char *name,<br>
--&nbsp;&nbsp;&nbsp;&nbsp;const char *attr,<br>
--&nbsp;&nbsp;&nbsp;&nbsp;const char *value,<br>
--&nbsp;&nbsp;&nbsp;&nbsp;int descend<br>
--);</p>
--<h4 class="parameters">Parameters</h4>
--<dl>
--<dt>node</dt>
--<dd class="description">Current node</dd>
--<dt>top</dt>
--<dd class="description">Top node</dd>
--<dt>name</dt>
--<dd class="description">Element name or NULL for any</dd>
--<dt>attr</dt>
--<dd class="description">Attribute name, or NULL for none</dd>
--<dt>value</dt>
--<dd class="description">Attribute value, or NULL for any</dd>
--<dt>descend</dt>
--<dd class="description">Descend into tree - MXML_DESCEND, MXML_NO_DESCEND, or MXML_DESCEND_FIRST</dd>
--</dl>
--<h4 class="returnvalue">Return Value</h4>
--<p class="description">Element node or NULL</p>
--<h4 class="discussion">Discussion</h4>
--<p class="discussion">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.</p>
--<h3 class="function"><a name="mxmlIndexDelete">mxmlIndexDelete</a></h3>
--<p class="description">Delete an index.</p>
--<p class="code">
--void mxmlIndexDelete (<br>
--&nbsp;&nbsp;&nbsp;&nbsp;<a href="#mxml_index_t">mxml_index_t</a> *ind<br>
--);</p>
--<h4 class="parameters">Parameters</h4>
--<dl>
--<dt>ind</dt>
--<dd class="description">Index to delete</dd>
--</dl>
--<h3 class="function"><a name="mxmlIndexEnum">mxmlIndexEnum</a></h3>
--<p class="description">Return the next node in the index.</p>
--<p class="code">
--<a href="#mxml_node_t">mxml_node_t</a> *mxmlIndexEnum (<br>
--&nbsp;&nbsp;&nbsp;&nbsp;<a href="#mxml_index_t">mxml_index_t</a> *ind<br>
--);</p>
--<h4 class="parameters">Parameters</h4>
--<dl>
--<dt>ind</dt>
--<dd class="description">Index to enumerate</dd>
--</dl>
--<h4 class="returnvalue">Return Value</h4>
--<p class="description">Next node or NULL if there is none</p>
--<h4 class="discussion">Discussion</h4>
--<p class="discussion">Nodes are returned in the sorted order of the index.</p>
--<h3 class="function"><a name="mxmlIndexFind">mxmlIndexFind</a></h3>
--<p class="description">Find the next matching node.</p>
--<p class="code">
--<a href="#mxml_node_t">mxml_node_t</a> *mxmlIndexFind (<br>
--&nbsp;&nbsp;&nbsp;&nbsp;<a href="#mxml_index_t">mxml_index_t</a> *ind,<br>
--&nbsp;&nbsp;&nbsp;&nbsp;const char *element,<br>
--&nbsp;&nbsp;&nbsp;&nbsp;const char *value<br>
--);</p>
--<h4 class="parameters">Parameters</h4>
--<dl>
--<dt>ind</dt>
--<dd class="description">Index to search</dd>
--<dt>element</dt>
--<dd class="description">Element name to find, if any</dd>
--<dt>value</dt>
--<dd class="description">Attribute value, if any</dd>
--</dl>
--<h4 class="returnvalue">Return Value</h4>
--<p class="description">Node or NULL if none found</p>
--<h4 class="discussion">Discussion</h4>
--<p class="discussion">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().</p>
--<h3 class="function"><a name="mxmlIndexNew">mxmlIndexNew</a></h3>
--<p class="description">Create a new index.</p>
--<p class="code">
--<a href="#mxml_index_t">mxml_index_t</a> *mxmlIndexNew (<br>
--&nbsp;&nbsp;&nbsp;&nbsp;<a href="#mxml_node_t">mxml_node_t</a> *node,<br>
--&nbsp;&nbsp;&nbsp;&nbsp;const char *element,<br>
--&nbsp;&nbsp;&nbsp;&nbsp;const char *attr<br>
--);</p>
--<h4 class="parameters">Parameters</h4>
--<dl>
--<dt>node</dt>
--<dd class="description">XML node tree</dd>
--<dt>element</dt>
--<dd class="description">Element to index or NULL for all</dd>
--<dt>attr</dt>
--<dd class="description">Attribute to index or NULL for none</dd>
--</dl>
--<h4 class="returnvalue">Return Value</h4>
--<p class="description">New index</p>
--<h4 class="discussion">Discussion</h4>
--<p class="discussion">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.</p>
--<h3 class="function"><a name="mxmlIndexReset">mxmlIndexReset</a></h3>
--<p class="description">Reset the enumeration/find pointer in the index and
--return the first node in the index.</p>
--<p class="code">
--<a href="#mxml_node_t">mxml_node_t</a> *mxmlIndexReset (<br>
--&nbsp;&nbsp;&nbsp;&nbsp;<a href="#mxml_index_t">mxml_index_t</a> *ind<br>
--);</p>
--<h4 class="parameters">Parameters</h4>
--<dl>
--<dt>ind</dt>
--<dd class="description">Index to reset</dd>
--</dl>
--<h4 class="returnvalue">Return Value</h4>
--<p class="description">First node or NULL if there is none</p>
--<h4 class="discussion">Discussion</h4>
--<p class="discussion">This function should be called prior to using mxmlIndexEnum() or
--mxmlIndexFind() for the first time.</p>
--<h3 class="function"><a name="mxmlLoadFd">mxmlLoadFd</a></h3>
--<p class="description">Load a file descriptor into an XML node tree.</p>
--<p class="code">
--<a href="#mxml_node_t">mxml_node_t</a> *mxmlLoadFd (<br>
--&nbsp;&nbsp;&nbsp;&nbsp;<a href="#mxml_node_t">mxml_node_t</a> *top,<br>
--&nbsp;&nbsp;&nbsp;&nbsp;int fd,<br>
--&nbsp;&nbsp;&nbsp;&nbsp;<a href="#mxml_load_cb_t">mxml_load_cb_t</a> cb<br>
--);</p>
--<h4 class="parameters">Parameters</h4>
--<dl>
--<dt>top</dt>
--<dd class="description">Top node</dd>
--<dt>fd</dt>
--<dd class="description">File descriptor to read from</dd>
--<dt>cb</dt>
--<dd class="description">Callback function or MXML_NO_CALLBACK</dd>
--</dl>
--<h4 class="returnvalue">Return Value</h4>
--<p class="description">First node or NULL if the file could not be read.</p>
--<h4 class="discussion">Discussion</h4>
--<p class="discussion">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.<br>
--<br>
--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.</p>
--<h3 class="function"><a name="mxmlLoadFile">mxmlLoadFile</a></h3>
--<p class="description">Load a file into an XML node tree.</p>
--<p class="code">
--<a href="#mxml_node_t">mxml_node_t</a> *mxmlLoadFile (<br>
--&nbsp;&nbsp;&nbsp;&nbsp;<a href="#mxml_node_t">mxml_node_t</a> *top,<br>
--&nbsp;&nbsp;&nbsp;&nbsp;FILE *fp,<br>
--&nbsp;&nbsp;&nbsp;&nbsp;<a href="#mxml_load_cb_t">mxml_load_cb_t</a> cb<br>
--);</p>
--<h4 class="parameters">Parameters</h4>
--<dl>
--<dt>top</dt>
--<dd class="description">Top node</dd>
--<dt>fp</dt>
--<dd class="description">File to read from</dd>
--<dt>cb</dt>
--<dd class="description">Callback function or MXML_NO_CALLBACK</dd>
--</dl>
--<h4 class="returnvalue">Return Value</h4>
--<p class="description">First node or NULL if the file could not be read.</p>
--<h4 class="discussion">Discussion</h4>
--<p class="discussion">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.<br>
--<br>
--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.</p>
--<h3 class="function"><a name="mxmlLoadString">mxmlLoadString</a></h3>
--<p class="description">Load a string into an XML node tree.</p>
--<p class="code">
--<a href="#mxml_node_t">mxml_node_t</a> *mxmlLoadString (<br>