CHANGES - 2011-01-02 -------------------- CHANGES IN Mini-XML 2.7 - Added data accessor ("get") functions and made the mxml_node_t and mxml_index_t structures private but still available in the Mini-XML header to preserve source compatibility (STR #118) - Updated the source headers to reference the Mini-XML license and its exceptions to the LGPL2 (STR #108) - Added a new mxmlFindPath() function to find the value node of a named element (STR #110) - Building a static version of the library did not work on Windows (STR #112) - The shared library did not include a destructor for the thread- specific data key on UNIX-based operating systems (STR #103) - mxmlLoad* did not error out on XML with multiple root nodes (STR #101) - Fixed an issue with the _mxml_vstrdupf function (STR #107) - mxmlSave* no longer write all siblings of the passed node, just that node and its children (STR #109) CHANGES IN Mini-XML 2.6 - Documentation fixes (STR #91, STR #92) - The mxmldoc program did not handle typedef comments properly (STR #72) - Added support for "long long" printf formats. - The XML parser now ignores BOMs in UTF-8 XML files (STR #89) - The mxmldoc program now supports generating Xcode documentation sets. - mxmlSave*() did not output UTF-8 correctly on some platforms. - mxmlNewXML() now adds encoding="utf-8" in the ?xml directive to avoid problems with non-conformant XML parsers that assume something other than UTF-8 as the default encoding. - Wrapping was not disabled when mxmlSetWrapMargin(0) was called, and "" was always followed by a newline (STR #76) - The mxml.pc.in file was broken (STR #79) - The mxmldoc program now handles "typedef enum name {} name" correctly (STR #72) CHANGES IN Mini-XML 2.5 - The mxmldoc program now makes greater use of CSS and supports a --css option to embed an alternate stylesheet. - The mxmldoc program now supports --header and --footer options to insert documentation content before and after the generated content. - The mxmldoc program now supports a --framed option to generate framed HTML output. - The mxmldoc program now creates a table of contents including any headings in the --intro file when generating HTML output. - The man pages and man page output from mxmldoc did not use "\-" for dashes (STR #68) - The debug version of the Mini-XML DLL could not be built (STR #65) - Processing instructions and directives did not work when not at the top level of a document (STR #67) - Spaces around the "=" in attributes were not supported (STR #67) CHANGES IN Mini-XML 2.4 - Fixed shared library build problems on HP-UX and Mac OS X. - The mxmldoc program did not output argument descriptions for functions properly. - All global settings (custom, error, and entity callbacks and the wrap margin) are now managed separately for each thread. - Added mxmlElementDeleteAttr() function (STR #59) - mxmlElementSetAttrf() did not work (STR #57) - mxmlLoad*() incorrectly treated declarations as parent elements (STR #56) - mxmlLoad*() incorrectly allowed attributes without values (STR #47) - Fixed Visual C++ build problems (STR #49) - mxmlLoad*() did not return NULL when an element contained an error (STR #46) - Added support for the apos character entity (STR #54) - Fixed whitespace detection with Unicode characters (STR #48) - mxmlWalkNext() and mxmlWalkPrev() did not work correctly when called with a node with no children as the top node (STR #53) CHANGES IN Mini-XML 2.3 - Added two exceptions to the LGPL to support static linking of applications against Mini-XML - The mxmldoc utility can now generate man pages, too. - Added a mxmlNewXML() function - Added a mxmlElementSetAttrf() function (STR #43) - Added snprintf() emulation function for test program (STR #32) - Added the _CRT_SECURE_NO_DEPRECATE definition when building on VC++ 2005 (STR #36) - mxmlLoad*() did not detect missing > characters in elements (STR #41) - mxmlLoad*() did not detect missing close tags at the end of an XML document (STR #45) - Added user_data and ref_count members to mxml_node_t structure - Added mxmlReleaseNode() and mxmlRetainNode() APIs for reference-counted nodes - Added mxmlSetWrapMargin() to control the wrapping of XML output - Added conditional check for EINTR error code for certain Windows compilers that do not define it (STR #33) - The mxmldoc program now generates correct HTML 4.0 output - previously it generated invalid XHTML - The mxmldoc program now supports "@deprecated@, "@private@", and "@since version@" comments - Fixed function and enumeration type bugs in mxmldoc. - Fixed the XML schema for mxmldoc - The mxmldoc program now supports --intro, --section, and --title options - The mxmlLoad*() functions could leak a node on an error (STR #27) - The mxml_vsnprintf() function could get in an infinite loop on a buffer overflow (STR #25) - Added new mxmlNewCDATA() and mxmlSetCDATA() functions to create and set CDATA nodes, which are really just special element nodes - Added new MXML_IGNORE type and MXML_IGNORE_CB callback to ignore non-element nodes, e.g. whitespace - mxmlLoad*() crashed when reporting an error in some invalid XML (STR #23) CHANGES IN Mini-XML 2.2.2 - mxmlLoad*() did not treat custom data as opaque, so whitespace characters would be lost. CHANGES IN Mini-XML 2.2.1 - mxmlLoadFd(), mxmlLoadFile(), and mxmlLoadString() now correctly return NULL on error (STR #21) - mxmlNewInteger(), mxmlNewOpaque(), mxmlNewReal(), mxmlNewText(), and mxmlNewTextf() incorrectly required a parent node (STR #22) - Fixed an XML output bug in mxmldoc. - The "make install" target now uses the install command to set the proper permissions on UNIX/Linux/OSX. - Fixed a MingW/Cygwin compilation problem (STR #18) CHANGES IN Mini-XML 2.2 - Added shared library support (STR #17) - mxmlLoad*() now returns an error when an XML stream contains illegal control characters (STR #10) - mxmlLoad*() now returns an error when an element contains two attributes with the same name in conformance with the XML spec (STR #16) - Added support for CDATA (STR #14, STR #15) - Updated comment and processing instruction handling - no entity support per XML specification. - Added checking for invalid comment termination ("--->" is not allowed) CHANGES IN Mini-XML 2.1 - Added support for custom data nodes (STR #6) - Now treat UTF-8 sequences which are longer than necessary as an error (STR #4) - Fixed entity number support (STR #8) - Fixed mxmlLoadString() bug with UTF-8 (STR #7) - Fixed entity lookup bug (STR #5) - Added mxmlLoadFd() and mxmlSaveFd() functions. - Fixed multi-word UTF-16 handling. CHANGES IN Mini-XML 2.0 - New programmers manual. - Added Visual C++ project files for Microsoft Windows users. - Added optimizations to mxmldoc, mxmlSaveFile(), and mxmlIndexNew() (STR #2) - mxmlEntityAddCallback() now returns an integer status (STR #2) - Added UTF-16 support (input only; all output is UTF-8) - Added index functions to build a searchable index of XML nodes. - Added character entity callback interface to support additional character entities beyond those defined in the XHTML specification. - Added support for XHTML character entities. - The mxmldoc utility now produces XML output which conforms to an updated XML schema, described in the file "doc/mxmldoc.xsd". - Changed the whitespace callback interface to return strings instead of a single character, allowing for greater control over the formatting of XML files written using Mini-XML. THIS CHANGE WILL REQUIRE CHANGES TO YOUR 1.x CODE IF YOU USE WHITESPACE CALLBACKS. - The mxmldoc utility is now capable of documenting C++ classes, functions, and structures, and correctly handles C++ comments. - Added new modular tests for mxmldoc. - Updated the mxmldoc output to be more compatible with embedding in manuals produced with HTMLDOC. - The makefile incorrectly included a "/" separator between the destination path and install path. This caused problems when building and installing with MingW. CHANGES IN Mini-XML 1.3 - Fixes for mxmldoc. - Added support for reading standard HTML entity names. - mxmlLoadString/File() did not decode character entities in element names, attribute names, or attribute values. - mxmlLoadString/File() would crash when loading non- conformant XML data under an existing parent (top) node. - Fixed several bugs in the mxmldoc utility. - Added new error callback function to catch a variety of errors and log them to someplace other than stderr. - The mxmlElementSetAttr() function now allows for NULL attribute values. - The load and save functions now properly handle quoted element and attribute name strings properly, e.g. for !DOCTYPE declarations. CHANGES IN Mini-XML 1.2 - Added new "set" methods to set the value of a node. - Added new formatted text methods mxmlNewTextf() and mxmlSetTextf() to create/set a text node value using printf-style formats. - Added new standard callbacks for use with the mxmlLoad functions. - Updated the HTML documentation to include examples of the walk and load function output. - Added --with/without-ansi configure option to control the strdup() function check. - Added --with/without-snprintf configure option to control the snprintf() and vsnprintf() function checks. CHANGES IN Mini-XML 1.1.2 - The mxml(3) man page wasn't updated for the string functions. - mxmlSaveString() returned the wrong number of characters. - mxml_add_char() updated the buffer pointer in the wrong place. CHANGES IN Mini-XML 1.1.1 - The private mxml_add_ch() function did not update the start-of-buffer pointer which could cause a crash when using mxmlSaveString(). - The private mxml_write_ws() function called putc() instead of using the proper callback which could cause a crash when using mxmlSaveString(). - Added a mxmlSaveAllocString() convenience function for saving an XML node tree to an allocated string. CHANGES IN Mini-XML 1.1 - The mxmlLoadFile() function now uses dynamically allocated string buffers for element names, attribute names, and attribute values. Previously they were capped at 16383, 255, and 255 bytes, respectively. - Added a new mxmlLoadString() function for loading an XML node tree from a string. - Added a new mxmlSaveString() function for saving an XML node tree to a string. - Add emulation of strdup() if the local platform does not provide the function. CHANGES IN Mini-XML 1.0 - The mxmldoc program now handles function arguments, structures, unions, enumerations, classes, and typedefs properly. - Documentation provided via mxmldoc and more in-line comments in the code. - Added man pages and packaging files. CHANGES IN Mini-XML 0.93 - New mxmldoc example program that is also used to create and update code documentation using XML and produce HTML reference pages. - Added mxmlAdd() and mxmlRemove() functions to add and remove nodes from a tree. This provides more flexibility over where the nodes are inserted and allows nodes to be moved within the tree as needed. - mxmlLoadFile() now correctly handles comments. - mxmlLoadFile() now supports the required "gt", "quot", and "nbsp" character entities. - mxmlSaveFile() now uses newlines as whitespace when valid to do so. - mxmlFindElement() now also takes attribute name and attribute value string arguments to limit the search to specific elements with attributes and/or values. NULL pointers can be used as "wildcards". - Added uninstall target to makefile, and auto-reconfig if Makefile.in or configure.in are changed. - mxmlFindElement(), mxmlWalkNext(), and mxmlWalkPrev() now all provide "descend" arguments to control whether they descend into child nodes in the tree. - Fixed some whitespace issues in mxmlLoadFile(). - Fixed Unicode output and whitespace issues in mxmlSaveFile(). - mxmlSaveFile() now supports a whitespace callback to provide more human-readable XML output under program control. CHANGES IN Mini-XML 0.92 - mxmlSaveFile() didn't return a value on success. CHANGES IN Mini-XML 0.91 - mxmlWalkNext() would go into an infinite loop. CHANGES IN Mini-XML 0.9 - Initial public release.