Prep for 2.6 release.

This commit is contained in:
Michael R Sweet 2009-05-17 17:17:46 +00:00
parent f3475bf739
commit e1b9f509fe
17 changed files with 1860 additions and 1821 deletions

117
README
View File

@ -1,4 +1,4 @@
README - 2009-01-12
README - 2009-05-17
-------------------
@ -6,90 +6,82 @@ INTRODUCTION
This README file describes the Mini-XML library version 2.6.
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 only
requires an ANSI C compatible compiler (GCC works, as do
most vendors' ANSI C compilers) and a "make" program.
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 only requires an ANSI C compatible compiler (GCC works,
as do most vendors' ANSI C compilers) and a "make" program.
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.
- 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.
- "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.
Mini-XML doesn't do validation or other types of processing on the data
based upon schema files or other sources of definition information.
BUILDING Mini-XML
Mini-XML comes with an autoconf-based configure script; just
type the following command to get things going:
Mini-XML comes with an autoconf-based configure script; just type the
following command to get things going:
./configure
The default install prefix is /usr/local, which can be
overridden using the --prefix option:
The default install prefix is /usr/local, which can be overridden using the
--prefix option:
./configure --prefix=/foo
Other configure options can be found using the --help
option:
Other configure options can be found using the --help option:
./configure --help
Once you have configured the software, type "make" to do the
build and run the test program to verify that things are
working, as follows:
Once you have configured the software, type "make" to do the build and run
the test program to verify that things are working, as follows:
make
If you are using Mini-XML under Microsoft Windows with
Visual C++, use the included project files in the "vcnet"
subdirectory to build the library instead.
If you are using Mini-XML under Microsoft Windows with Visual C++ 2008, use
the included project files in the "vcnet" subdirectory to build the library
instead.
INSTALLING Mini-XML
The "install" target will install Mini-XML in the lib and
include directories:
The "install" target will install Mini-XML in the lib and include
directories:
make install
Once you have installed it, use the "-lmxml" option to link
your application against it.
Once you have installed it, use the "-lmxml" option to link your application
against it.
DOCUMENTATION
The documentation is available in the "doc" subdirectory in
the files "mxml.html" (HTML) and "mxml.pdf" (PDF). You can
also look at the "testmxml.c" and "mxmldoc.c" source files
for examples of using Mini-XML.
The documentation is available in the "doc" subdirectory in the files
"mxml.html" (HTML) and "mxml.pdf" (PDF). You can also look at the
"testmxml.c" and "mxmldoc.c" source files for examples of using Mini-XML.
Mini-XML provides a single header file which you include:
#include <mxml.h>
Nodes are defined by the "mxml_node_t" structure; the "type"
member defines the node type (element, integer, opaque,
real, or text) which determines which value you want to look
at in the "value" union. New nodes can be created using the
"mxmlNewElement()", "mxmlNewInteger()", "mxmlNewOpaque()",
"mxmlNewReal()", and "mxmlNewText()" functions. Only
elements can have child nodes, and the top node must be an
element, usually "?xml".
Nodes are defined by the "mxml_node_t" structure; the "type" member defines
the node type (element, integer, opaque, real, or text) which determines
which value you want to look at in the "value" union. New nodes can be
created using the "mxmlNewElement()", "mxmlNewInteger()", "mxmlNewOpaque()",
"mxmlNewReal()", and "mxmlNewText()" functions. Only elements can have
child nodes, and the top node must be an element, usually "?xml".
You load an XML file using the "mxmlLoadFile()" function:
@ -100,8 +92,7 @@ DOCUMENTATION
tree = mxmlLoadFile(NULL, fp, MXML_NO_CALLBACK);
fclose(fp);
Similarly, you save an XML file using the "mxmlSaveFile()"
function:
Similarly, you save an XML file using the "mxmlSaveFile()" function:
FILE *fp;
mxml_node_t *tree;
@ -110,9 +101,8 @@ DOCUMENTATION
mxmlSaveFile(tree, fp, MXML_NO_CALLBACK);
fclose(fp);
The "mxmlLoadString()", "mxmlSaveAllocString()", and
"mxmlSaveString()" functions load XML node trees from and
save XML node trees to strings:
The "mxmlLoadString()", "mxmlSaveAllocString()", and "mxmlSaveString()"
functions load XML node trees from and save XML node trees to strings:
char buffer[8192];
char *ptr;
@ -127,14 +117,13 @@ DOCUMENTATION
...
ptr = mxmlSaveAllocString(tree, MXML_NO_CALLBACK);
You can find a named element/node using the
"mxmlFindElement()" function:
You can find a named element/node using the "mxmlFindElement()" function:
mxml_node_t *node = mxmlFindElement(tree, tree, "name", "attr",
"value", MXML_DESCEND);
The "name", "attr", and "value" arguments can be passed as
NULL to act as wildcards, e.g.:
The "name", "attr", and "value" arguments can be passed as NULL to act as
wildcards, e.g.:
/* Find the first "a" element */
node = mxmlFindElement(tree, tree, "a", NULL, NULL, MXML_DESCEND);
@ -167,22 +156,22 @@ DOCUMENTATION
... do something ...
}
Finally, once you are done with the XML data, use the
"mxmlDelete()" function to recursively free the memory that
is used for a particular node or the entire tree:
Finally, once you are done with the XML data, use the "mxmlDelete()"
function to recursively free the memory that is used for a particular node
or the entire tree:
mxmlDelete(tree);
GETTING HELP AND REPORTING PROBLEMS
The Mini-XML web site provides access to a discussion forum
and bug reporting page:
The Mini-XML web site provides access to a discussion forum and bug
reporting page:
http://www.minixml.org/
LEGAL STUFF
The Mini-XML library is Copyright 2003-2009 by Michael Sweet.
License terms are described in the file "COPYING".
The Mini-XML library is Copyright 2003-2009 by Michael Sweet. License terms
are described in the file "COPYING".

View File

@ -1,16 +1,2 @@
f706377fba630b39fa02fd63642b17e5 2.5 mxml/2.5/mxml-2.5.tar.gz
8dfa3d25d9a0146bd24324f5111d9db0 2.4 mxml/2.4/mxml-2.4.tar.gz
9b343cd7c7c139a24a382afc31a9a4e6 2.3 mxml/2.3/mxml-2.3-1.i386.rpm
2b0d69c35ada70ba9982f15cb05d006b 2.3 mxml/2.3/mxml-2.3.tar.gz
ab4ce33a866fc3e0d959e7e208a30acb 2.2.2 mxml/2.2.2/mxml-2.2.2-1.i386.rpm
ef69862ad30ef2fe66457415db5b5ab4 2.2.2 mxml/2.2.2/mxml-2.2.2.tar.gz
8b8aef306fa58cb693b89399d576864f 2.2.1 mxml/2.2.1/mxml-2.2.1-1.i386.rpm
ae8f134cc6e89ca66c0f098068516dbe 2.2.1 mxml/2.2.1/mxml-2.2.1.tar.gz
136f9dc7e44aaacc15747bd42222197c 2.2 mxml/2.2/mxml-2.2-1.i386.rpm
2c28aedee8a06eac173104a3fccce096 2.2 mxml/2.2/mxml-2.2.tar.gz
e30ff88b15f74964e20d80c6577a1cb9 2.1 mxml/2.1/mxml-2.1-1.i386.rpm
35f829a907c0319f83a3661591788ed3 2.1 mxml/2.1/mxml-2.1.tar.gz
2d010aa0cfc1058aa48b3c03bc3781ec 2.0 mxml/2.0/mxml-2.0-1.i386.rpm
bd9194cdbf717550a130789802e5b81c 2.0 mxml/2.0/mxml-2.0.tar.gz
9dfb974bd31d60c97bfa394b7f6ca63e 1.3 mxml/1.3/mxml-1.3-1.i386.rpm
9b116daa370bf647447d6ffe70e73534 1.3 mxml/1.3/mxml-1.3.tar.gz

View File

@ -1,9 +1,9 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<HTML>
<HEAD>
<TITLE>Mini-XML Programmers Manual, Version 2.5</TITLE>
<TITLE>Mini-XML Programmers Manual, Version 2.6</TITLE>
<META NAME="author" CONTENT="Michael R. Sweet">
<META NAME="copyright" CONTENT="Copyright 2003-2008">
<META NAME="copyright" CONTENT="Copyright 2003-2009">
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; CHARSET=iso-iso-8859-1">
<LINK REL="Start" HREF="index.html">
<LINK REL="Contents" HREF="index.html">
@ -471,10 +471,10 @@ mxmlIndexEnum</TT>.</P>
<LI><TT>MXML_SAX_DATA</TT> - Data (custom, integer, opaque, real, or
text) was just read</LI>
<LI><TT>MXML_SAX_DIRECTIVE</TT> - A processing directive was just read</LI>
<LI><TT>MXML_SAX_ELEMENT_CLOSE</TT> - An open element was just read (<TT>
&lt;element&gt;</TT>)</LI>
<LI><TT>MXML_SAX_ELEMENT_OPEN</TT> - A close element was just read (<TT>
<LI><TT>MXML_SAX_ELEMENT_CLOSE</TT> - A close element was just read (<TT>
&lt;/element&gt;</TT>)</LI>
<LI><TT>MXML_SAX_ELEMENT_OPEN</TT> - An open element was just read (<TT>
&lt;element&gt;</TT>)</LI>
</UL>
<P>Elements are<EM> released</EM> after the close element is processed.
All other nodes are released after they are processed. The SAX callback

View File

@ -1,9 +1,9 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<HTML>
<HEAD>
<TITLE>Mini-XML Programmers Manual, Version 2.5</TITLE>
<TITLE>Mini-XML Programmers Manual, Version 2.6</TITLE>
<META NAME="author" CONTENT="Michael R. Sweet">
<META NAME="copyright" CONTENT="Copyright 2003-2008">
<META NAME="copyright" CONTENT="Copyright 2003-2009">
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; CHARSET=iso-iso-8859-1">
<LINK REL="Start" HREF="index.html">
<LINK REL="Contents" HREF="index.html">
@ -68,10 +68,10 @@ hspace="10" src="2.gif" width="100"></A>Getting Started with Mini-XML</H1>
<H2><A NAME="3_2">Nodes</A></H2>
<P>Every piece of information in an XML file (elements, text, numbers)
is stored in memory in &quot;nodes&quot;. Nodes are defined by the <A href="reference.html#mxml_node_t">
<TT>mxml_node_t</TT></A> structure. The <A href="#mxml_type_t"><TT>type</TT>
</A> member defines the node type (element, integer, opaque, real, or
text) which determines which value you want to look at in the <A href="reference.html#mxml_value_t">
<TT>value</TT></A> union.</P>
<TT>mxml_node_t</TT></A> structure. The <A href="reference.html#mxml_type_t">
<TT>type</TT></A> member defines the node type (element, integer,
opaque, real, or text) which determines which value you want to look at
in the <A href="reference.html#mxml_value_t"><TT>value</TT></A> union.</P>
<!-- NEED 10 -->
<CENTER>

View File

@ -1,9 +1,9 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<HTML>
<HEAD>
<TITLE>Mini-XML Programmers Manual, Version 2.5</TITLE>
<TITLE>Mini-XML Programmers Manual, Version 2.6</TITLE>
<META NAME="author" CONTENT="Michael R. Sweet">
<META NAME="copyright" CONTENT="Copyright 2003-2008">
<META NAME="copyright" CONTENT="Copyright 2003-2009">
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; CHARSET=iso-iso-8859-1">
<LINK REL="Start" HREF="index.html">
<LINK REL="Contents" HREF="index.html">
@ -70,7 +70,12 @@ A { text-decoration: none }
</UL>
<B><A HREF="mxmldoc.html#MXMLDOC">Using the mxmldoc Utility</A></B>
<UL>
<LI><A HREF="mxmldoc.html#5_1">The Basics</A></LI>
<LI><A HREF="mxmldoc.html#5_1">The Basics</A>
<UL>
<LI><A HREF="mxmldoc.html#5_1_1">Creating Man Pages</A></LI>
<LI><A HREF="mxmldoc.html#5_1_2">Creating Xcode Documentation Sets</A></LI>
</UL>
</LI>
<LI><A HREF="mxmldoc.html#5_2">Commenting Your Code</A></LI>
<LI><A HREF="mxmldoc.html#5_3">Titles, Sections, and Introductions</A></LI>
</UL>
@ -151,6 +156,7 @@ mxml_custom_destroy_cb_t</A></LI>
</LI>
<LI><A HREF="reference.html#8_3_5">mxml_custom_t</A></LI>
<LI><A HREF="reference.html#mxml_element_t">mxml_element_t</A></LI>
<LI><A HREF="reference.html#mxml_entity_cb_t">mxml_entity_cb_t</A></LI>
<LI><A HREF="reference.html#mxml_error_cb_t">mxml_error_cb_t</A></LI>
<LI><A HREF="reference.html#mxml_index_t">mxml_index_t</A></LI>
<LI><A HREF="reference.html#mxml_load_cb_t">mxml_load_cb_t</A></LI>
@ -159,6 +165,7 @@ mxml_custom_destroy_cb_t</A></LI>
<LI><A HREF="reference.html#mxml_sax_cb_t">mxml_sax_cb_t</A></LI>
<LI><A HREF="reference.html#mxml_sax_event_t">mxml_sax_event_t</A></LI>
<LI><A HREF="reference.html#mxml_text_t">mxml_text_t</A></LI>
<LI><A HREF="reference.html#mxml_type_t">mxml_type_t</A></LI>
<LI><A HREF="reference.html#mxml_value_t">mxml_value_t</A></LI>
</UL>
</LI>

View File

@ -1,9 +1,9 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<HTML>
<HEAD>
<TITLE>Mini-XML Programmers Manual, Version 2.5</TITLE>
<TITLE>Mini-XML Programmers Manual, Version 2.6</TITLE>
<META NAME="author" CONTENT="Michael R. Sweet">
<META NAME="copyright" CONTENT="Copyright 2003-2008">
<META NAME="copyright" CONTENT="Copyright 2003-2009">
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; CHARSET=iso-iso-8859-1">
<LINK REL="Start" HREF="index.html">
<LINK REL="Contents" HREF="index.html">

View File

@ -1,9 +1,9 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<HTML>
<HEAD>
<TITLE>Mini-XML Programmers Manual, Version 2.5</TITLE>
<TITLE>Mini-XML Programmers Manual, Version 2.6</TITLE>
<META NAME="author" CONTENT="Michael R. Sweet">
<META NAME="copyright" CONTENT="Copyright 2003-2008">
<META NAME="copyright" CONTENT="Copyright 2003-2009">
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; CHARSET=iso-iso-8859-1">
<LINK REL="Start" HREF="index.html">
<LINK REL="Contents" HREF="index.html">
@ -28,7 +28,7 @@ A { text-decoration: none }
<HR NOSHADE>
<H1 align="right"><A name="INTRO"><IMG align="right" alt="0" height="100"
hspace="10" src="0.gif" width="100"></A>Introduction</H1>
<P>This programmers manual describes Mini-XML version 2.5, a small XML
<P>This programmers manual describes Mini-XML version 2.6, a small XML
parsing library that you can use to read and write XML data files in
your C and C++ applications.</P>
<P>Mini-XML was initially developed for the <A href="http://gutenprint.sf.net/">
@ -54,12 +54,13 @@ libxml2</TT> library with something substantially smaller and
projects/software applications:</P>
<UL>
<LI><A href="http://www.cups.org/">Common UNIX Printing System</A></LI>
<LI><A href="http://www.cups.org/ddk/">CUPS Driver Development Kit</A></LI>
<LI><A href="http://zynaddsubfx.sourceforge.net">ZynAddSubFX</A></LI>
</UL>
<P>Please email me (mxml @ easysw . com) if you would like your project
added or removed from this list, or if you have any comments/quotes you
would like me to publish about your experiences with Mini-XML.</P>
<!-- NEED 1in -->
<H2><A NAME="1_1">Organization of This Document</A></H2>
<P>This manual is organized into the following chapters and appendices:</P>
<UL>
@ -90,14 +91,14 @@ libxml2</TT> library with something substantially smaller and
<P>Various font and syntax conventions are used in this guide. Examples
and their meanings and uses are explained below:</P>
<DL>
<DT><CODE>lpstat</CODE>
<BR> <CODE>lpstat(1)</CODE></DT>
<DT><CODE>mxmldoc</CODE>
<BR> <CODE>mxmldoc(1)</CODE></DT>
<DD>The names of commands; the first mention of a command or function in
a chapter is followed by a manual page section number.
<BR>
<BR></DD>
<DT><VAR>/var</VAR>
<BR><VAR> /usr/share/cups/data/testprint.ps</VAR></DT>
<BR><VAR> /etc/hosts</VAR></DT>
<DD>File and directory names.
<BR>
<BR></DD>
@ -164,16 +165,9 @@ libxml2</TT> library with something substantially smaller and
<!-- NEED 6 -->
<H2><A NAME="1_5">Legal Stuff</A></H2>
<P>The Mini-XML library is copyright 2003-2008 by Michael Sweet.</P>
<P>This library is free software; you can redistribute it and/or modify
it under the terms of the <A href="license.html#LICENSE">GNU Library
General Public License</A> as published by the Free Software
Foundation; either version 2 of the License, or (at your option) any
later version.</P>
<P>This library 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
Library General Public License for more details.</P>
<P>The Mini-XML library is copyright 2003-2009 by Michael Sweet. License
terms are described in <A href="license.html#LICENSE">Appendix A -
Mini-XML License</A>.</P>
<HR NOSHADE>
<A HREF="index.html">Contents</A>
<A HREF="install.html">Next</A>

View File

@ -1,9 +1,9 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<HTML>
<HEAD>
<TITLE>Mini-XML Programmers Manual, Version 2.5</TITLE>
<TITLE>Mini-XML Programmers Manual, Version 2.6</TITLE>
<META NAME="author" CONTENT="Michael R. Sweet">
<META NAME="copyright" CONTENT="Copyright 2003-2008">
<META NAME="copyright" CONTENT="Copyright 2003-2009">
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; CHARSET=iso-iso-8859-1">
<LINK REL="Start" HREF="index.html">
<LINK REL="Contents" HREF="index.html">
@ -47,6 +47,8 @@ hspace="10" src="A.gif" width="100"></A>Mini-XML License</H1>
identify the Mini-XML license in your program or documentation as
required by section 6 of the LGPL.</LI>
</OL>
<!-- NEW PAGE -->
<P align="center"><B>GNU LIBRARY GENERAL PUBLIC LICENSE</B></P>
<P align="center">Version 2, June 1991
<BR> Copyright (C) 1991 Free Software Foundation, Inc.

View File

@ -1,9 +1,9 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<HTML>
<HEAD>
<TITLE>Mini-XML Programmers Manual, Version 2.5</TITLE>
<TITLE>Mini-XML Programmers Manual, Version 2.6</TITLE>
<META NAME="author" CONTENT="Michael R. Sweet">
<META NAME="copyright" CONTENT="Copyright 2003-2008">
<META NAME="copyright" CONTENT="Copyright 2003-2009">
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; CHARSET=iso-iso-8859-1">
<LINK REL="Start" HREF="index.html">
<LINK REL="Contents" HREF="index.html">
@ -64,6 +64,7 @@ hspace="10" src="4.gif" width="100"></A>Using the mxmldoc Utility</H1>
<PRE>
<KBD>mxmldoc filename.xml &gt;filename.html ENTER</KBD>
</PRE>
<H3><A NAME="5_1_1">Creating Man Pages</A></H3>
<P>The <TT>--man filename</TT> option tells <TT>mxmldoc</TT> to create a
man page instead of HTML documentation, for example:</P>
<PRE>
@ -72,10 +73,16 @@ hspace="10" src="4.gif" width="100"></A>Using the mxmldoc Utility</H1>
<KBD>mxmldoc --man filename *.h *.c \
&gt;filename.man ENTER</KBD>
<KBD>mxmldoc --man filename filename.xml *.h *.c \
&gt;filename.man ENTER</KBD>
</PRE>
<H3><A NAME="5_1_2">Creating Xcode Documentation Sets</A></H3>
<P>The <TT>--docset directory.docset</TT> option tells <TT>mxmldoc</TT>
to create an Xcode documentation set containing the HTML documentation,
for example:</P>
<PRE>
<KBD>mxmldoc --docset foo.docset *.h *.c foo.xml ENTER</KBD>
</PRE>
<P>Xcode documentation sets can only be built on Mac OS X with Xcode 3.0
or higher installed.</P>
<H2><A NAME="5_2">Commenting Your Code</A></H2>
<P>As noted previously, <TT>mxmldoc</TT> looks for in-line comments to
describe the functions, types, and constants in your code. <TT>Mxmldoc</TT>

File diff suppressed because it is too large Load Diff

View File

@ -1,9 +1,9 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<HTML>
<HEAD>
<TITLE>Mini-XML Programmers Manual, Version 2.5</TITLE>
<TITLE>Mini-XML Programmers Manual, Version 2.6</TITLE>
<META NAME="author" CONTENT="Michael R. Sweet">
<META NAME="copyright" CONTENT="Copyright 2003-2008">
<META NAME="copyright" CONTENT="Copyright 2003-2009">
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; CHARSET=iso-iso-8859-1">
<LINK REL="Start" HREF="index.html">
<LINK REL="Contents" HREF="index.html">
@ -30,7 +30,27 @@ A { text-decoration: none }
<HR NOSHADE>
<H1 align="right"><A name="RELNOTES"><IMG align="right" alt="B" height="100"
hspace="10" src="B.gif" width="100"></A>Release Notes</H1>
<H2><A NAME="7_1">Changes in Mini-XML 2.5</A></H2>
<H2><A NAME="7_1">Changes in Mini-XML 2.6</A></H2>
<UL>
<LI>Documentation fixes (STR #91, STR #92)</LI>
<LI>The mxmldoc program did not handle typedef comments properly (STR
#72)</LI>
<LI>Added support for &quot;long long&quot; printf formats.</LI>
<LI>The XML parser now rejects UTF-8 XML files that start with a BOM
(STR #89)</LI>
<LI>The mxmldoc program now supports generating Xcode documentation
sets.</LI>
<LI>mxmlSave*() did not output UTF-8 correctly on some platforms.</LI>
<LI>mxmlNewXML() now adds encoding=&quot;utf-8&quot; in the ?xml directive to
avoid problems with non-conformant XML parsers that assume something
other than UTF-8 as the default encoding.</LI>
<LI>Wrapping was not disabled when mxmlSetWrapMargin(0) was called, and
&quot;&lt;?xml ... ?&gt;&quot; was always followed by a newline (STR #76)</LI>
<LI>The mxml.pc.in file was broken (STR #79)</LI>
<LI>The mxmldoc program now handles &quot;typedef enum name {} name&quot;
correctly (STR #72)</LI>
</UL>
<H2><A NAME="7_2">Changes in Mini-XML 2.5</A></H2>
<UL>
<LI>The mxmldoc program now makes greater use of CSS and supports a
--css option to embed an alternate stylesheet.</LI>
@ -47,7 +67,7 @@ hspace="10" src="B.gif" width="100"></A>Release Notes</H1>
top level of a document (STR #67)</LI>
<LI>Spaces around the &quot;=&quot; in attributes were not supported (STR #67)</LI>
</UL>
<H2><A NAME="7_2">Changes in Mini-XML 2.4</A></H2>
<H2><A NAME="7_3">Changes in Mini-XML 2.4</A></H2>
<UL>
<LI>Fixed shared library build problems on HP-UX and Mac OS X.</LI>
<LI>The mxmldoc program did not output argument descriptions for
@ -67,7 +87,7 @@ hspace="10" src="B.gif" width="100"></A>Release Notes</H1>
<LI>mxmlWalkNext() and mxmlWalkPrev() did not work correctly when called
with a node with no children as the top node (STR #53)</LI>
</UL>
<H2><A NAME="7_3">Changes in Mini-XML 2.3</A></H2>
<H2><A NAME="7_4">Changes in Mini-XML 2.3</A></H2>
<UL>
<LI>Added two exceptions to the LGPL to support static linking of
applications against Mini-XML</LI>
@ -105,12 +125,12 @@ hspace="10" src="B.gif" width="100"></A>Release Notes</H1>
<LI>mxmlLoad*() did not treat custom data as opaque, so whitespace
characters would be lost</LI>
</UL>
<H2><A NAME="7_4">Changes in Mini-XML 2.2.2</A></H2>
<H2><A NAME="7_5">Changes in Mini-XML 2.2.2</A></H2>
<UL>
<LI>mxmlLoad*() did not treat custom data as opaque, so whitespace
characters would be lost.</LI>
</UL>
<H2><A NAME="7_5">Changes in Mini-XML 2.2.1</A></H2>
<H2><A NAME="7_6">Changes in Mini-XML 2.2.1</A></H2>
<UL>
<LI>mxmlLoadFd(), mxmlLoadFile(), and mxmlLoadString() now correctly
return NULL on error (STR #21)</LI>
@ -121,7 +141,7 @@ hspace="10" src="B.gif" width="100"></A>Release Notes</H1>
proper permissions on UNIX/Linux/OSX.</LI>
<LI>Fixed a MingW/Cygwin compilation problem (STR #18)</LI>
</UL>
<H2><A NAME="7_6">Changes in Mini-XML 2.2</A></H2>
<H2><A NAME="7_7">Changes in Mini-XML 2.2</A></H2>
<UL>
<LI>Added shared library support (STR #17)</LI>
<LI>mxmlLoad*() now returns an error when an XML stream contains illegal
@ -135,7 +155,7 @@ hspace="10" src="B.gif" width="100"></A>Release Notes</H1>
<LI>Added checking for invalid comment termination (&quot;---&gt;&quot; is not
allowed)</LI>
</UL>
<H2><A NAME="7_7">Changes in Mini-XML 2.1</A></H2>
<H2><A NAME="7_8">Changes in Mini-XML 2.1</A></H2>
<UL>
<LI>Added support for custom data nodes (STR #6)</LI>
<LI>Now treat UTF-8 sequences which are longer than necessary as an
@ -146,7 +166,7 @@ hspace="10" src="B.gif" width="100"></A>Release Notes</H1>
<LI>Added mxmlLoadFd() and mxmlSaveFd() functions.</LI>
<LI>Fixed multi-word UTF-16 handling.</LI>
</UL>
<H2><A NAME="7_8">Changes in Mini-XML 2.0</A></H2>
<H2><A NAME="7_9">Changes in Mini-XML 2.0</A></H2>
<UL>
<LI>New programmers manual.</LI>
<LI>Added Visual C++ project files for Microsoft Windows users.</LI>
@ -179,7 +199,7 @@ hspace="10" src="B.gif" width="100"></A>Release Notes</H1>
destination path and install path. This caused problems when building
and installing with MingW.</LI>
</UL>
<H2><A NAME="7_9">Changes in Mini-XML 1.3</A></H2>
<H2><A NAME="7_10">Changes in Mini-XML 1.3</A></H2>
<UL>
<LI>Fixes for mxmldoc.</LI>
<LI>Added support for reading standard HTML entity names.</LI>
@ -195,7 +215,7 @@ hspace="10" src="B.gif" width="100"></A>Release Notes</H1>
<LI>The load and save functions now properly handle quoted element and
attribute name strings properly, e.g. for !DOCTYPE declarations.</LI>
</UL>
<H2><A NAME="7_10">Changes in Mini-XML 1.2</A></H2>
<H2><A NAME="7_11">Changes in Mini-XML 1.2</A></H2>
<UL>
<LI>Added new &quot;set&quot; methods to set the value of a node.</LI>
<LI>Added new formatted text methods mxmlNewTextf() and mxmlSetTextf()
@ -208,13 +228,13 @@ hspace="10" src="B.gif" width="100"></A>Release Notes</H1>
<LI>Added --with/without-snprintf configure option to control the
snprintf() and vsnprintf() function checks.</LI>
</UL>
<H2><A NAME="7_11">Changes in Mini-XML 1.1.2</A></H2>
<H2><A NAME="7_12">Changes in Mini-XML 1.1.2</A></H2>
<UL>
<LI>The mxml(3) man page wasn't updated for the string functions.</LI>
<LI>mxmlSaveString() returned the wrong number of characters.</LI>
<LI>mxml_add_char() updated the buffer pointer in the wrong place.</LI>
</UL>
<H2><A NAME="7_12">Changes in Mini-XML 1.1.1</A></H2>
<H2><A NAME="7_13">Changes in Mini-XML 1.1.1</A></H2>
<UL>
<LI>The private mxml_add_ch() function did not update the
start-of-buffer pointer which could cause a crash when using
@ -225,7 +245,7 @@ hspace="10" src="B.gif" width="100"></A>Release Notes</H1>
<LI>Added a mxmlSaveAllocString() convenience function for saving an XML
node tree to an allocated string.</LI>
</UL>
<H2><A NAME="7_13">Changes in Mini-XML 1.1</A></H2>
<H2><A NAME="7_14">Changes in Mini-XML 1.1</A></H2>
<UL>
<LI>The mxmlLoadFile() function now uses dynamically allocated string
buffers for element names, attribute names, and attribute values.
@ -237,7 +257,7 @@ hspace="10" src="B.gif" width="100"></A>Release Notes</H1>
<LI>Add emulation of strdup() if the local platform does not provide the
function.</LI>
</UL>
<H2><A NAME="7_14">Changes in Mini-XML 1.0</A></H2>
<H2><A NAME="7_15">Changes in Mini-XML 1.0</A></H2>
<UL>
<LI>The mxmldoc program now handles function arguments, structures,
unions, enumerations, classes, and typedefs properly.</LI>
@ -245,7 +265,7 @@ hspace="10" src="B.gif" width="100"></A>Release Notes</H1>
code.</LI>
<LI>Added man pages and packaging files.</LI>
</UL>
<H2><A NAME="7_15">Changes in Mini-XML 0.93</A></H2>
<H2><A NAME="7_16">Changes in Mini-XML 0.93</A></H2>
<UL>
<LI>New mxmldoc example program that is also used to create and update
code documentation using XML and produce HTML reference pages.</LI>
@ -270,15 +290,15 @@ hspace="10" src="B.gif" width="100"></A>Release Notes</H1>
<LI>mxmlSaveFile() now supports a whitespace callback to provide more
human-readable XML output under program control.</LI>
</UL>
<H2><A NAME="7_16">Changes in Mini-XML 0.92</A></H2>
<H2><A NAME="7_17">Changes in Mini-XML 0.92</A></H2>
<UL>
<LI>mxmlSaveFile() didn't return a value on success.</LI>
</UL>
<H2><A NAME="7_17">Changes in Mini-XML 0.91</A></H2>
<H2><A NAME="7_18">Changes in Mini-XML 0.91</A></H2>
<UL>
<LI>mxmlWalkNext() would go into an infinite loop.</LI>
</UL>
<H2><A NAME="7_18">Changes in Mini-XML 0.9</A></H2>
<H2><A NAME="7_19">Changes in Mini-XML 0.9</A></H2>
<UL>
<LI>Initial public release.</LI>
</UL>

View File

@ -1,9 +1,9 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<HTML>
<HEAD>
<TITLE>Mini-XML Programmers Manual, Version 2.5</TITLE>
<TITLE>Mini-XML Programmers Manual, Version 2.6</TITLE>
<META NAME="author" CONTENT="Michael R. Sweet">
<META NAME="copyright" CONTENT="Copyright 2003-2008">
<META NAME="copyright" CONTENT="Copyright 2003-2009">
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; CHARSET=iso-iso-8859-1">
<LINK REL="Start" HREF="index.html">
<LINK REL="Contents" HREF="index.html">

View File

@ -11,11 +11,23 @@ include_once "phplib/poll.php";
html_header();
$fp = fopen("data/software.md5", "r");
$line = fgets($fp, 255);
$data = explode(" ", $line);
fclose($fp);
$version = $data[1];
$file = $data[2];
?>
<h1><img src='images/logo-large.gif' style='margin-left: 20px; float: right;'
width='150' height='150' alt='Mini-XML logo'>Mini-XML: Lightweight XML
Library</h1>
<div style='margin-left: 20px; float: right; line-height: 200%;
text-align: center;'><a
href='software.php?FILE=<?print($file);?>&amp;VERSION=<?print($version);?>'><img
src='images/logo-large.gif' width='150' height='150' alt='Mini-XML logo'><br>
Download v<?print($version);?></a></div>
<h1>Mini-XML: Lightweight XML Library</h1>
<p>Mini-XML is a small XML library that you can use to read and write XML and
XML-like data files in your application without requiring large non-standard

View File

@ -1,9 +1,9 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<HTML>
<HEAD>
<TITLE>Mini-XML Programmers Manual, Version 2.5</TITLE>
<TITLE>Mini-XML Programmers Manual, Version 2.6</TITLE>
<META NAME="author" CONTENT="Michael R. Sweet">
<META NAME="copyright" CONTENT="Copyright 2003-2008">
<META NAME="copyright" CONTENT="Copyright 2003-2009">
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; CHARSET=iso-iso-8859-1">
<STYLE TYPE="text/css"><!--
BODY { font-family: sans-serif }
@ -66,7 +66,12 @@ A { text-decoration: none }
</UL>
<B><A HREF="#MXMLDOC">Using the mxmldoc Utility</A></B>
<UL>
<LI><A HREF="#5_1">The Basics</A></LI>
<LI><A HREF="#5_1">The Basics</A>
<UL>
<LI><A HREF="#5_1_1">Creating Man Pages</A></LI>
<LI><A HREF="#5_1_2">Creating Xcode Documentation Sets</A></LI>
</UL>
</LI>
<LI><A HREF="#5_2">Commenting Your Code</A></LI>
<LI><A HREF="#5_3">Titles, Sections, and Introductions</A></LI>
</UL>
@ -140,6 +145,7 @@ A { text-decoration: none }
<LI><A HREF="#mxml_custom_save_cb_t">mxml_custom_save_cb_t</A></LI>
<LI><A HREF="#8_3_5">mxml_custom_t</A></LI>
<LI><A HREF="#mxml_element_t">mxml_element_t</A></LI>
<LI><A HREF="#mxml_entity_cb_t">mxml_entity_cb_t</A></LI>
<LI><A HREF="#mxml_error_cb_t">mxml_error_cb_t</A></LI>
<LI><A HREF="#mxml_index_t">mxml_index_t</A></LI>
<LI><A HREF="#mxml_load_cb_t">mxml_load_cb_t</A></LI>
@ -148,6 +154,7 @@ A { text-decoration: none }
<LI><A HREF="#mxml_sax_cb_t">mxml_sax_cb_t</A></LI>
<LI><A HREF="#mxml_sax_event_t">mxml_sax_event_t</A></LI>
<LI><A HREF="#mxml_text_t">mxml_text_t</A></LI>
<LI><A HREF="#mxml_type_t">mxml_type_t</A></LI>
<LI><A HREF="#mxml_value_t">mxml_value_t</A></LI>
</UL>
</LI>
@ -178,7 +185,7 @@ A { text-decoration: none }
<HR NOSHADE>
<H1 align="right"><A name="INTRO"><IMG align="right" alt="0" height="100"
hspace="10" src="0.gif" width="100"></A>Introduction</H1>
<P>This programmers manual describes Mini-XML version 2.5, a small XML
<P>This programmers manual describes Mini-XML version 2.6, a small XML
parsing library that you can use to read and write XML data files in
your C and C++ applications.</P>
<P>Mini-XML was initially developed for the <A href="http://gutenprint.sf.net/">
@ -204,12 +211,13 @@ libxml2</TT> library with something substantially smaller and
projects/software applications:</P>
<UL>
<LI><A href="http://www.cups.org/">Common UNIX Printing System</A></LI>
<LI><A href="http://www.cups.org/ddk/">CUPS Driver Development Kit</A></LI>
<LI><A href="http://zynaddsubfx.sourceforge.net">ZynAddSubFX</A></LI>
</UL>
<P>Please email me (mxml @ easysw . com) if you would like your project
added or removed from this list, or if you have any comments/quotes you
would like me to publish about your experiences with Mini-XML.</P>
<!-- NEED 1in -->
<H2><A NAME="1_1">Organization of This Document</A></H2>
<P>This manual is organized into the following chapters and appendices:</P>
<UL>
@ -238,14 +246,14 @@ libxml2</TT> library with something substantially smaller and
<P>Various font and syntax conventions are used in this guide. Examples
and their meanings and uses are explained below:</P>
<DL>
<DT><CODE>lpstat</CODE>
<BR> <CODE>lpstat(1)</CODE></DT>
<DT><CODE>mxmldoc</CODE>
<BR> <CODE>mxmldoc(1)</CODE></DT>
<DD>The names of commands; the first mention of a command or function in
a chapter is followed by a manual page section number.
<BR>
<BR></DD>
<DT><VAR>/var</VAR>
<BR><VAR> /usr/share/cups/data/testprint.ps</VAR></DT>
<BR><VAR> /etc/hosts</VAR></DT>
<DD>File and directory names.
<BR>
<BR></DD>
@ -312,15 +320,9 @@ libxml2</TT> library with something substantially smaller and
<!-- NEED 6 -->
<H2><A NAME="1_5">Legal Stuff</A></H2>
<P>The Mini-XML library is copyright 2003-2008 by Michael Sweet.</P>
<P>This library is free software; you can redistribute it and/or modify
it under the terms of the <A href="#LICENSE">GNU Library General Public
License</A> as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.</P>
<P>This library 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
Library General Public License for more details.</P>
<P>The Mini-XML library is copyright 2003-2009 by Michael Sweet. License
terms are described in <A href="#LICENSE">Appendix A - Mini-XML License</A>
.</P>
<HR NOSHADE>
<H1 align="right"><A name="INSTALL"><IMG align="right" alt="1" height="100"
hspace="10" src="1.gif" width="100"></A>Building, Installing, and
@ -1246,10 +1248,10 @@ mxmlSAXLoadString</TT></A> functions provide the SAX loading APIs. Each
<LI><TT>MXML_SAX_DATA</TT> - Data (custom, integer, opaque, real, or
text) was just read</LI>
<LI><TT>MXML_SAX_DIRECTIVE</TT> - A processing directive was just read</LI>
<LI><TT>MXML_SAX_ELEMENT_CLOSE</TT> - An open element was just read (<TT>
&lt;element&gt;</TT>)</LI>
<LI><TT>MXML_SAX_ELEMENT_OPEN</TT> - A close element was just read (<TT>
<LI><TT>MXML_SAX_ELEMENT_CLOSE</TT> - A close element was just read (<TT>
&lt;/element&gt;</TT>)</LI>
<LI><TT>MXML_SAX_ELEMENT_OPEN</TT> - An open element was just read (<TT>
&lt;element&gt;</TT>)</LI>
</UL>
<P>Elements are<EM> released</EM> after the close element is processed.
All other nodes are released after they are processed. The SAX callback
@ -1381,6 +1383,7 @@ hspace="10" src="4.gif" width="100"></A>Using the mxmldoc Utility</H1>
<PRE>
<KBD>mxmldoc filename.xml &gt;filename.html ENTER</KBD>
</PRE>
<H3><A NAME="5_1_1">Creating Man Pages</A></H3>
<P>The <TT>--man filename</TT> option tells <TT>mxmldoc</TT> to create a
man page instead of HTML documentation, for example:</P>
<PRE>
@ -1389,10 +1392,16 @@ hspace="10" src="4.gif" width="100"></A>Using the mxmldoc Utility</H1>
<KBD>mxmldoc --man filename *.h *.c \
&gt;filename.man ENTER</KBD>
<KBD>mxmldoc --man filename filename.xml *.h *.c \
&gt;filename.man ENTER</KBD>
</PRE>
<H3><A NAME="5_1_2">Creating Xcode Documentation Sets</A></H3>
<P>The <TT>--docset directory.docset</TT> option tells <TT>mxmldoc</TT>
to create an Xcode documentation set containing the HTML documentation,
for example:</P>
<PRE>
<KBD>mxmldoc --docset foo.docset *.h *.c foo.xml ENTER</KBD>
</PRE>
<P>Xcode documentation sets can only be built on Mac OS X with Xcode 3.0
or higher installed.</P>
<H2><A NAME="5_2">Commenting Your Code</A></H2>
<P>As noted previously, <TT>mxmldoc</TT> looks for in-line comments to
describe the functions, types, and constants in your code. <TT>Mxmldoc</TT>
@ -1509,6 +1518,8 @@ hspace="10" src="A.gif" width="100"></A>Mini-XML License</H1>
identify the Mini-XML license in your program or documentation as
required by section 6 of the LGPL.</LI>
</OL>
<!-- NEW PAGE -->
<P align="center"><B>GNU LIBRARY GENERAL PUBLIC LICENSE</B></P>
<P align="center">Version 2, June 1991
<BR> Copyright (C) 1991 Free Software Foundation, Inc.
@ -1925,7 +1936,27 @@ hspace="10" src="A.gif" width="100"></A>Mini-XML License</H1>
<HR NOSHADE>
<H1 align="right"><A name="RELNOTES"><IMG align="right" alt="B" height="100"
hspace="10" src="B.gif" width="100"></A>Release Notes</H1>
<H2><A NAME="7_1">Changes in Mini-XML 2.5</A></H2>
<H2><A NAME="7_1">Changes in Mini-XML 2.6</A></H2>
<UL>
<LI>Documentation fixes (STR #91, STR #92)</LI>
<LI>The mxmldoc program did not handle typedef comments properly (STR
#72)</LI>
<LI>Added support for &quot;long long&quot; printf formats.</LI>
<LI>The XML parser now rejects UTF-8 XML files that start with a BOM
(STR #89)</LI>
<LI>The mxmldoc program now supports generating Xcode documentation
sets.</LI>
<LI>mxmlSave*() did not output UTF-8 correctly on some platforms.</LI>
<LI>mxmlNewXML() now adds encoding=&quot;utf-8&quot; in the ?xml directive to
avoid problems with non-conformant XML parsers that assume something
other than UTF-8 as the default encoding.</LI>
<LI>Wrapping was not disabled when mxmlSetWrapMargin(0) was called, and
&quot;&lt;?xml ... ?&gt;&quot; was always followed by a newline (STR #76)</LI>
<LI>The mxml.pc.in file was broken (STR #79)</LI>
<LI>The mxmldoc program now handles &quot;typedef enum name {} name&quot;
correctly (STR #72)</LI>
</UL>
<H2><A NAME="7_2">Changes in Mini-XML 2.5</A></H2>
<UL>
<LI>The mxmldoc program now makes greater use of CSS and supports a
--css option to embed an alternate stylesheet.</LI>
@ -1942,7 +1973,7 @@ hspace="10" src="B.gif" width="100"></A>Release Notes</H1>
top level of a document (STR #67)</LI>
<LI>Spaces around the &quot;=&quot; in attributes were not supported (STR #67)</LI>
</UL>
<H2><A NAME="7_2">Changes in Mini-XML 2.4</A></H2>
<H2><A NAME="7_3">Changes in Mini-XML 2.4</A></H2>
<UL>
<LI>Fixed shared library build problems on HP-UX and Mac OS X.</LI>
<LI>The mxmldoc program did not output argument descriptions for
@ -1962,7 +1993,7 @@ hspace="10" src="B.gif" width="100"></A>Release Notes</H1>
<LI>mxmlWalkNext() and mxmlWalkPrev() did not work correctly when called
with a node with no children as the top node (STR #53)</LI>
</UL>
<H2><A NAME="7_3">Changes in Mini-XML 2.3</A></H2>
<H2><A NAME="7_4">Changes in Mini-XML 2.3</A></H2>
<UL>
<LI>Added two exceptions to the LGPL to support static linking of
applications against Mini-XML</LI>
@ -2000,12 +2031,12 @@ hspace="10" src="B.gif" width="100"></A>Release Notes</H1>
<LI>mxmlLoad*() did not treat custom data as opaque, so whitespace
characters would be lost</LI>
</UL>
<H2><A NAME="7_4">Changes in Mini-XML 2.2.2</A></H2>
<H2><A NAME="7_5">Changes in Mini-XML 2.2.2</A></H2>
<UL>
<LI>mxmlLoad*() did not treat custom data as opaque, so whitespace
characters would be lost.</LI>
</UL>
<H2><A NAME="7_5">Changes in Mini-XML 2.2.1</A></H2>
<H2><A NAME="7_6">Changes in Mini-XML 2.2.1</A></H2>
<UL>
<LI>mxmlLoadFd(), mxmlLoadFile(), and mxmlLoadString() now correctly
return NULL on error (STR #21)</LI>
@ -2016,7 +2047,7 @@ hspace="10" src="B.gif" width="100"></A>Release Notes</H1>
proper permissions on UNIX/Linux/OSX.</LI>
<LI>Fixed a MingW/Cygwin compilation problem (STR #18)</LI>
</UL>
<H2><A NAME="7_6">Changes in Mini-XML 2.2</A></H2>
<H2><A NAME="7_7">Changes in Mini-XML 2.2</A></H2>
<UL>
<LI>Added shared library support (STR #17)</LI>
<LI>mxmlLoad*() now returns an error when an XML stream contains illegal
@ -2030,7 +2061,7 @@ hspace="10" src="B.gif" width="100"></A>Release Notes</H1>
<LI>Added checking for invalid comment termination (&quot;---&gt;&quot; is not
allowed)</LI>
</UL>
<H2><A NAME="7_7">Changes in Mini-XML 2.1</A></H2>
<H2><A NAME="7_8">Changes in Mini-XML 2.1</A></H2>
<UL>
<LI>Added support for custom data nodes (STR #6)</LI>
<LI>Now treat UTF-8 sequences which are longer than necessary as an
@ -2041,7 +2072,7 @@ hspace="10" src="B.gif" width="100"></A>Release Notes</H1>
<LI>Added mxmlLoadFd() and mxmlSaveFd() functions.</LI>
<LI>Fixed multi-word UTF-16 handling.</LI>
</UL>
<H2><A NAME="7_8">Changes in Mini-XML 2.0</A></H2>
<H2><A NAME="7_9">Changes in Mini-XML 2.0</A></H2>
<UL>
<LI>New programmers manual.</LI>
<LI>Added Visual C++ project files for Microsoft Windows users.</LI>
@ -2074,7 +2105,7 @@ hspace="10" src="B.gif" width="100"></A>Release Notes</H1>
destination path and install path. This caused problems when building
and installing with MingW.</LI>
</UL>
<H2><A NAME="7_9">Changes in Mini-XML 1.3</A></H2>
<H2><A NAME="7_10">Changes in Mini-XML 1.3</A></H2>
<UL>
<LI>Fixes for mxmldoc.</LI>
<LI>Added support for reading standard HTML entity names.</LI>
@ -2090,7 +2121,7 @@ hspace="10" src="B.gif" width="100"></A>Release Notes</H1>
<LI>The load and save functions now properly handle quoted element and
attribute name strings properly, e.g. for !DOCTYPE declarations.</LI>
</UL>
<H2><A NAME="7_10">Changes in Mini-XML 1.2</A></H2>
<H2><A NAME="7_11">Changes in Mini-XML 1.2</A></H2>
<UL>
<LI>Added new &quot;set&quot; methods to set the value of a node.</LI>
<LI>Added new formatted text methods mxmlNewTextf() and mxmlSetTextf()
@ -2103,13 +2134,13 @@ hspace="10" src="B.gif" width="100"></A>Release Notes</H1>
<LI>Added --with/without-snprintf configure option to control the
snprintf() and vsnprintf() function checks.</LI>
</UL>
<H2><A NAME="7_11">Changes in Mini-XML 1.1.2</A></H2>
<H2><A NAME="7_12">Changes in Mini-XML 1.1.2</A></H2>
<UL>
<LI>The mxml(3) man page wasn't updated for the string functions.</LI>
<LI>mxmlSaveString() returned the wrong number of characters.</LI>
<LI>mxml_add_char() updated the buffer pointer in the wrong place.</LI>
</UL>
<H2><A NAME="7_12">Changes in Mini-XML 1.1.1</A></H2>
<H2><A NAME="7_13">Changes in Mini-XML 1.1.1</A></H2>
<UL>
<LI>The private mxml_add_ch() function did not update the
start-of-buffer pointer which could cause a crash when using
@ -2120,7 +2151,7 @@ hspace="10" src="B.gif" width="100"></A>Release Notes</H1>
<LI>Added a mxmlSaveAllocString() convenience function for saving an XML
node tree to an allocated string.</LI>
</UL>
<H2><A NAME="7_13">Changes in Mini-XML 1.1</A></H2>
<H2><A NAME="7_14">Changes in Mini-XML 1.1</A></H2>
<UL>
<LI>The mxmlLoadFile() function now uses dynamically allocated string
buffers for element names, attribute names, and attribute values.
@ -2132,7 +2163,7 @@ hspace="10" src="B.gif" width="100"></A>Release Notes</H1>
<LI>Add emulation of strdup() if the local platform does not provide the
function.</LI>
</UL>
<H2><A NAME="7_14">Changes in Mini-XML 1.0</A></H2>
<H2><A NAME="7_15">Changes in Mini-XML 1.0</A></H2>
<UL>
<LI>The mxmldoc program now handles function arguments, structures,
unions, enumerations, classes, and typedefs properly.</LI>
@ -2140,7 +2171,7 @@ hspace="10" src="B.gif" width="100"></A>Release Notes</H1>
code.</LI>
<LI>Added man pages and packaging files.</LI>
</UL>
<H2><A NAME="7_15">Changes in Mini-XML 0.93</A></H2>
<H2><A NAME="7_16">Changes in Mini-XML 0.93</A></H2>
<UL>
<LI>New mxmldoc example program that is also used to create and update
code documentation using XML and produce HTML reference pages.</LI>
@ -2165,15 +2196,15 @@ hspace="10" src="B.gif" width="100"></A>Release Notes</H1>
<LI>mxmlSaveFile() now supports a whitespace callback to provide more
human-readable XML output under program control.</LI>
</UL>
<H2><A NAME="7_16">Changes in Mini-XML 0.92</A></H2>
<H2><A NAME="7_17">Changes in Mini-XML 0.92</A></H2>
<UL>
<LI>mxmlSaveFile() didn't return a value on success.</LI>
</UL>
<H2><A NAME="7_17">Changes in Mini-XML 0.91</A></H2>
<H2><A NAME="7_18">Changes in Mini-XML 0.91</A></H2>
<UL>
<LI>mxmlWalkNext() would go into an infinite loop.</LI>
</UL>
<H2><A NAME="7_18">Changes in Mini-XML 0.9</A></H2>
<H2><A NAME="7_19">Changes in Mini-XML 0.9</A></H2>
<UL>
<LI>Initial public release.</LI>
</UL>
@ -2299,6 +2330,8 @@ mxml_custom_save_cb_t</A></LI>
</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>
@ -2312,6 +2345,7 @@ mxml_save_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>
@ -2340,7 +2374,6 @@ mxml_element_s</A></LI>
<LI><A href="#mxml_type_e" title="The XML node type.">mxml_type_e</A></LI>
</UL>
</LI>
</UL>
<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>
@ -2466,7 +2499,14 @@ mxml_element_s</A></LI>
<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 (void);</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>
@ -2504,7 +2544,14 @@ mxmlEntityAddCallback</A></H3>
<H3 class="function"><A name="mxmlEntityRemoveCallback">
mxmlEntityRemoveCallback</A></H3>
<P class="description">Remove a callback.</P>
<P class="code"> void mxmlEntityRemoveCallback (void);</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
@ -3405,10 +3452,10 @@ mxmlSetCustomHandlers</A></H3>
<H4 class="parameters">Parameters</H4>
<DL>
<DT>column</DT>
<DD class="description">Column for wrapping</DD>
<DD class="description">Column for wrapping, 0 to disable wrapping</DD>
</DL>
<H4 class="discussion">Discussion</H4>
<P class="discussion">Wrapping is disabled when &quot;column&quot; is &lt;= 0.</P>
<P class="discussion">Wrapping is disabled when &quot;column&quot; is 0.</P>
<H3 class="function"><A name="mxmlWalkNext">mxmlWalkNext</A></H3>
<P class="description">Walk to the next logical node in the tree.</P>
<P class="code"> <A href="#mxml_node_t">mxml_node_t</A> *mxmlWalkNext (
@ -3484,6 +3531,9 @@ mxml_node_t</A> *);</P>
<P class="description">An XML element value.</P>
<P class="code"> typedef struct <A href="#mxml_element_s">mxml_element_s</A>
mxml_element_t;</P>
<H3 class="typedef"><A name="mxml_entity_cb_t">mxml_entity_cb_t</A></H3>
<P class="description">Entity callback function</P>
<P class="code"> typedef int (*mxml_entity_cb_t)(const char *);</P>
<H3 class="typedef"><A name="mxml_error_cb_t">mxml_error_cb_t</A></H3>
<P class="description">Error callback function</P>
<P class="code"> typedef void (*mxml_error_cb_t)(const char *);</P>
@ -3493,8 +3543,8 @@ mxml_node_t</A> *);</P>
mxml_index_t;</P>
<H3 class="typedef"><A name="mxml_load_cb_t">mxml_load_cb_t</A></H3>
<P class="description">Load callback function</P>
<P class="code"> typedef mxml_type_t (*mxml_load_cb_t)(<A href="#mxml_node_t">
mxml_node_t</A> *);</P>
<P class="code"> typedef <A href="#mxml_type_t">mxml_type_t</A>
(*mxml_load_cb_t)(<A href="#mxml_node_t">mxml_node_t</A> *);</P>
<H3 class="typedef"><A name="mxml_node_t">mxml_node_t</A></H3>
<P class="description">An XML node.</P>
<P class="code"> typedef struct <A href="#mxml_node_s">mxml_node_s</A>
@ -3515,6 +3565,10 @@ mxml_sax_event_e</A> mxml_sax_event_t;</P>
<P class="description">An XML text value.</P>
<P class="code"> typedef struct <A href="#mxml_text_s">mxml_text_s</A>
mxml_text_t;</P>
<H3 class="typedef"><A name="mxml_type_t">mxml_type_t</A></H3>
<P class="description">The XML node type.</P>
<P class="code"> typedef enum <A href="#mxml_type_e">mxml_type_e</A>
mxml_type_t;</P>
<H3 class="typedef"><A name="mxml_value_t">mxml_value_t</A></H3>
<P class="description">An XML node value.</P>
<P class="code"> typedef union <A href="#mxml_value_u">mxml_value_u</A>
@ -3596,7 +3650,7 @@ mxml_sax_event_e</A> mxml_sax_event_t;</P>
<BR> &nbsp;&nbsp;&nbsp;&nbsp;struct <A href="#mxml_node_s">mxml_node_s</A> *parent;
<BR> &nbsp;&nbsp;&nbsp;&nbsp;struct <A href="#mxml_node_s">mxml_node_s</A> *prev;
<BR> &nbsp;&nbsp;&nbsp;&nbsp;int ref_count;
<BR> &nbsp;&nbsp;&nbsp;&nbsp;mxml_type_t type;
<BR> &nbsp;&nbsp;&nbsp;&nbsp;<A href="#mxml_type_t">mxml_type_t</A> type;
<BR> &nbsp;&nbsp;&nbsp;&nbsp;void *user_data;
<BR> &nbsp;&nbsp;&nbsp;&nbsp;<A href="#mxml_value_t">mxml_value_t</A> value;
<BR> };</P>
@ -3703,6 +3757,7 @@ mxml_sax_event_e</A> mxml_sax_event_t;</P>
<DT>MXML_TEXT</DT>
<DD class="description">Text fragment</DD>
</DL>
</UL>
</DIV><HR NOSHADE>
<H1 align="right"><A name="SCHEMA"><IMG align="right" alt="D" height="100"
hspace="10" src="D.gif" width="100"></A>XML Schema</H1>

View File

@ -32,8 +32,15 @@ mirror_closest()
// Get the current longitude for the client...
$current = geoip_record_by_name($_SERVER["REMOTE_ADDR"]);
$lon = $current["longitude"];
if (!extension_loaded("geoip.so") ||
$_SERVER["REMOTE_ADDR"] == "::1" ||
$_SERVER["REMOTE_ADDR"] == "127.0.0.1")
$lon = -120;
else
{
$current = geoip_record_by_name($_SERVER["REMOTE_ADDR"]);
$lon = $current["longitude"];
}
// Loop through the mirrors to find the closest one, currently just using
// the longitude...

View File

@ -33,17 +33,7 @@ if (array_key_exists("FILE", $_GET))
else
$file = "";
if (array_key_exists("SITE", $_GET) &&
array_key_exists($_GET["SITE"], $PROJECT_SITELIST))
{
$site = $_GET["SITE"];
setcookie("SITE", $site, time() + 90 * 86400, "/");
}
else if (array_key_exists("SITE", $_COOKIE) &&
array_key_exists($_COOKIE["SITE"], $MIRRORS))
$site = $_COOKIE["SITE"];
else
$site = mirror_closest();
$site = mirror_closest();
if (array_key_exists("VERSION", $_GET))
$version = $_GET["VERSION"];

View File

@ -52,8 +52,8 @@ $versions = array(
"+None",
"Trunk",
"+3.0",
"+2.6",
"+2.5.1",
"+2.6.1",
"2.6",
"2.5",
"2.4",
"2.3",