Changes in Mini-XML =================== Changes in Mini-XML 4.0.3 ------------------------- - Now default the `DSOFLAGS` value to `LDFLAGS` in the configure script (Issue #325) - Now install the man page as "mxml4" to allow parallel installation of Mini-XML 4.x and 3.x (Issue #324) - Added `MXML_ALLOC_SIZE` define to control the allocation increment for attributes and indices (Issue #318) - Fixed `mxmlSetDeclarationf` implementation (Issue #322) Changes in Mini-XML 4.0.2 ------------------------- - Fixed an issue with GNU make and parallel builds (Issue #314) Changes in Mini-XML 4.0.1 ------------------------- - Fixed missing "docdir" definition in makefile (Issue #313) - Fixed missing CPPFLAGS, OPTIM, and WARNINGS in CFLAGS in makefile. - Fixed configure script issues. Changes in Mini-XML 4.0.0 ------------------------- - Now require C99 support (Issue #300) - Now install as "libmxml4" to support installing both Mini-XML 3.x and 4.x at the same time (use `--disable-libmxml4-prefix` configure option to disable) - Added `mxmlLoadIO` and `mxmlSaveIO` functions to load and save XML via callbacks (Issue #98) - Added new `MXML_TYPE_CDATA`, `MXML_TYPE_COMMENT`, `MXML_TYPE_DECLARATION`, and `MXML_TYPE_DIRECTIVE` node types (Issue #250) - Added `mxmlLoadFilename` and `mxmlSaveFilename` functions (Issue #291) - Added AFL fuzzing support (Issue #306) - Added `mxmlOptions` APIs to replace the long list of callbacks and options for each of the load and save functions (Issue #312) - Added string copy/free callbacks to support alternate memory management of strings. - Renamed `mxml_type_t` enumerations to `MXML_TYPE_xxx` (Issue #251) - Updated APIs to use bool type instead of an int representing a boolean value. - Updated the SAX callback to return a `bool` value to control processing (Issue #51) - Updated the load and save callbacks to include a context pointer (Issue #106) - Fixed some warnings (Issue #301) - Fixed real number support in non-English locales (Issue #311) Changes in Mini-XML 3.3.2 ------------------------- - Updated the autoconf `config.guess` and `config.sub` scripts to support cross compilation for newer platforms (Issue #296) Changes in Mini-XML 3.3.1 ------------------------- - Fixed POSIX thread cleanup bugs (Issue #293) Changes in Mini-XML 3.3 ----------------------- - Cleaned up usage of `free` throughout the library (Issue #276) - Added more error handling to the library (Issue #277) - Fixed potential memory leak in `mxmlLoad*` functions (Issue #278, Issue #279) - Fixed `mxmlSaveString` with a buffer size of 0 (Issue #284) - Fixed `MXML_MINOR_VERSION` value in "mxml.h" (Issue #285) - Fixed POSIX threading support for MingW (Issue #287) - Fixed some minor memory leaks found by Coverity. Changes in Mini-XML 3.2 ----------------------- - Added support for shared libraries on Haiku (Issue #262) - Fixed handling of unquoted attribute values that start with a Unicode character (Issue #264) - Fixed handling of elements that start with a Unicode character (Issue #267) - Fixed some minor issues identified by the LGTM security scanner. Changes in Mini-XML 3.1 ----------------------- - The `mxmlLoad*` functions now print an error when the XML does not start with `<` and no parent node is supplied (Issue #256, Issue #259) - Fixed an issue with "make install" trying to install old files (Issue #257) - Fixed some DSO installation issues on Linux. Changes in Mini-XML 3.0 ----------------------- - Changed the license to Apache 2.0 with exceptions (Issue #239) - All of the internal node structures are now moved out of the public header (Issue #240) - Fixed a potential buffer overflow when writing floating point data (Issue #233) - Moved `mxmldoc` to a new `codedoc` project whose focus is on generating code documentation (Issue #235, Issue #236, Issue #237) - Error messages now include the line number of the error (Issue #230) - The `mxmlSetCDATA`, `mxmlSetElement`, `mxmlSetOpaque`, `mxmlSetOpaquef`, `mxmlSetText`, and `mxmlSetTextf` functions caused a use-after-free bug if the value came from the same node (Issue #241) - The `mxmlSetOpaquef` and `mxmlSetTextf` functions did not work (Issue #244) - The `_mxml_strdupf` function did not work on Windows (Issue #245) Changes in Mini-XML 2.12 ------------------------ - Added yet more documentation about using `MXML_OPAQUE_CALLBACK` when you want to get full strings for inline text instead of separated words (Issue #190) - No longer build documentation sets on macOS since Xcode no longer supports them (Issue #198) - Updated the `va_copy` macro for use with BCC (Issue #211) - The `mxmlNewCDATA` and `mxmlSetCDATA` functions incorrectly added the XML trailer "]]" to the string (Issue #216) - Cross-compiling failed on install (Issue #218) - Fixed a crash bug in the `mxmlWrite` functions (Issue #228) - The `mxmlWrite` functions no longer write the siblings of the passed node (Issue #228) - Updated the markdown and ZIP container libraries used for mxmldoc. Changes in Mini-XML 2.11 ------------------------ - CDATA nodes now omit the trailing "]]" for convenience (Issue #170) - Fixed a memory leak in mxmlDelete (Issue #183) - `mxmlElementSetAttrf` did not work with some versions of Visual Studio (Issue #184) - Added `mxmlElementGetAttrByIndex` and `mxmlELementGetAttrCount` functions (Issue #185) - The configure script now properly supports cross-compilation (Issue #188) - The mxmldoc utility now supports generation of EPUB files (Issue #189) - The mxmldoc utility now supports the `SOURCE_DATE_EPOCH` environment variable for reproducible builds (Issue #193) - The mxmldoc utility now supports Markdown (Issue #194) - Fixed writing of custom data values (Issue #201) - Added `mxmlNewOpaquef` and `mxmlSetOpaquef` functions to add and set formatted opaque string values. - The mxmldoc utility scanned and loaded descriptive text differently, causing the detailed descriptions ("discussion") to be lost in generated documentation. - The mxmldoc utility now supports `@exclude format@` comments to exclude documentation based on the output format. The format string can be `all` to exclude documentation for all formats or a comma-delimited list such as `@exclude man,html@`. Changes in Mini-XML 2.10 ------------------------ - The version number in mxml.h was wrong. - The mxml.spec file was out of date. - Mini-XML no longer allows malformed element names. - `mxmlLoad*` and `mxmlSAXLoad*` did not properly create text nodes when MXML_TEXT_CALLBACK was specified. - `mxmlDelete` used a recursive algorithm which could require large amounts of stack space depending on the file. (CVE-2016-4570) - `mxmlWrite*` used a recursive algorithm which could require large amounts of stack space depending on the file. (CVE-2016-4571) Changes in Mini-XML 2.9 ----------------------- - `mxmlLoad*` did not correctly load value nodes with `MXML_NO_CALLBACK` or `MXML_TEXT_CALLBACK`. Changes in Mini-XML 2.8 ----------------------- - Now call docsetutil using xcrun on macOS. - mxmldoc did not escape special HTML characters inside @code foo@ comments. - Fixed a memory leak in `mxmlElementDeleteAttr`. - Added `MXML_MAJOR/MINOR_VERSION` definitions to mxml.h. - Fixed a bug reading UTF-16 characters from a file. - Fixed a memory leak when loading invalid XML. - Fixed an XML fragment loading problem. Changes in Mini-XML 2.7 ----------------------- - Added 64-bit configurations to the VC++ project files. - Fixed conformance of mxmldoc's HTML and CSS output. - 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. - Updated the source headers to reference the Mini-XML license and its exceptions to the LGPL2. - Fixed a memory leak when loading a badly-formed XML file. - Added a new mxmlFindPath function to find the value node of a named element. - Building a static version of the library did not work on Windows. - The shared library did not include a destructor for the thread-specific data key on UNIX-based operating systems. - mxmlLoad* did not error out on XML with multiple root nodes. - Fixed an issue with the `_mxml_vstrdupf` function. - `mxmlSave*` no longer write all siblings of the passed node, just that node and its children. Changes in Mini-XML 2.6 ----------------------- - Documentation fixes. - The mxmldoc program did not handle typedef comments properly. - Added support for "long long" printf formats. - The XML parser now ignores BOMs in UTF-8 XML files. - 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. - The mxml.pc.in file was broken. - The mxmldoc program now handles "typedef enum name {} name" correctly. 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. - The debug version of the Mini-XML DLL could not be built. - Processing instructions and directives did not work when not at the top level of a document. - Spaces around the "=" in attributes were not supported. Changes in Mini-XML 2.4 ----------------------- - Fixed shared library build problems on HP-UX and Mac macOS. - 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. - `mxmlElementSetAttrf` did not work. - `mxmlLoad*` incorrectly treated declarations as parent elements. - `mxmlLoad*` incorrectly allowed attributes without values. - Fixed Visual C++ build problems. - `mxmlLoad*` did not return NULL when an element contained an error. - Added support for the apos character entity. - Fixed whitespace detection with Unicode characters. - `mxmlWalkNext` and `mxmlWalkPrev` did not work correctly when called with a node with no children as the top node. 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. - Added snprintf() emulation function for test program. - Added the _CRT_SECURE_NO_DEPRECATE definition when building on VC++ 2005. - mxmlLoad* did not detect missing > characters in elements. - mxmlLoad* did not detect missing close tags at the end of an XML document. - 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. - 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. - The `mxml_vsnprintf` function could get in an infinite loop on a buffer overflow. - 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. 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 ------------------------- - `mxmlLoad*` now correctly return NULL on error. - `mxmlNewInteger`, `mxmlNewOpaque`, `mxmlNewReal`, `mxmlNewText`, and `mxmlNewTextf` incorrectly required a parent node. - Fixed an XML output bug in mxmldoc. - The "make install" target now uses the install command to set the proper permissions on UNIX/Linux/macOS. - Fixed a MingW/Cygwin compilation problem. Changes in Mini-XML 2.2 ----------------------- - Added shared library support. - `mxmlLoad*` now return an error when an XML stream contains illegal control characters. - `mxmlLoad*` now return an error when an element contains two attributes with the same name in conformance with the XML spec. - Added support for CDATA. - 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. - Now treat UTF-8 sequences which are longer than necessary as an error. - Fixed entity number support. - Fixed mxmlLoadString() bug with UTF-8. - Fixed entity lookup bug. - 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`. - `mxmlEntityAddCallback` now returns an integer status. - 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.